專利名稱:在設(shè)備中向預(yù)訂客戶端分發(fā)相關(guān)路由選擇信息庫(kù)更新的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)實(shí)施例涉及通信和計(jì)算機(jī)系統(tǒng),尤其是路由器、分組交 換系統(tǒng)和其他設(shè)備;更具體而言, 一個(gè)實(shí)施例涉及在某一設(shè)備中維護(hù)向預(yù) 訂客戶端分發(fā)相關(guān)路由選擇信息庫(kù)更新的操作,所述設(shè)備例如是(但不局 限于)路由器、分組交換或其他通信和/或計(jì)算設(shè)備。
背景技術(shù):
通信工業(yè)正在迅速變化以適應(yīng)于新興的技術(shù)和不斷增長(zhǎng)的客戶需求。 這種對(duì)于新應(yīng)用和現(xiàn)有應(yīng)用的性能增長(zhǎng)的客戶需求正在驅(qū)動(dòng)著通信網(wǎng)絡(luò)和 系統(tǒng)提供商采用具有更快速度和容量(例如更大的帶寬)的網(wǎng)絡(luò)和系統(tǒng)。 在嘗試實(shí)現(xiàn)這些目標(biāo)時(shí),許多通信提供商常用的方法是使用分組交換技 術(shù)。公共和專用通信網(wǎng)絡(luò)正被越來(lái)越多地用諸如因特網(wǎng)協(xié)議(IP)的各種 分組技術(shù)來(lái)構(gòu)建和擴(kuò)展??蓴U(kuò)展性和性能對(duì)于路由器是極其重要的特征,在因特網(wǎng)流量增大時(shí) 尤其如此。路由選擇信息庫(kù)(RIB)是路由器系統(tǒng)上的基本軟件組件。其 維護(hù)來(lái)自各種路由選擇協(xié)議的路由的數(shù)據(jù)庫(kù)并充當(dāng)其客戶端的路由選擇信 息的中心源,包括轉(zhuǎn)發(fā)信息庫(kù)(FIB)、諸如開(kāi)放最短路徑優(yōu)先(OSPF) 和中間系統(tǒng)對(duì)中間系統(tǒng)(IS-IS)之類的單播路由選擇協(xié)議和諸如協(xié)議獨(dú)立 多播(PIM)和多播源發(fā)現(xiàn)協(xié)議(MSDP)之類的多播路由選擇協(xié)議。RIB 提供客戶端用以接收所有更新的路由的接口以及客戶端用以在RIB中查詢 特定路由和接收相應(yīng)路由選擇結(jié)果的接口,如圖1所示。這些路由選擇查 詢的示例包括查找到達(dá)目的地的下一跳地址和接口以及獲得將在發(fā)送分組 時(shí)使用的最佳源地址。諸如PIM、 BGP之類的協(xié)議需要最新的路由選擇信息來(lái)執(zhí)行操作。例 如,PIM需要跟蹤其多播拓?fù)浔碇械乃袉尾P地址(即多播分布樹(shù)的根 節(jié)點(diǎn))的單播可達(dá)性信息的改變。PIM獲知改變的速度越快,多播收斂所 花的時(shí)間就越少。輪詢(pool) RIB是一種跟蹤所需改變的可能方法。但 是,這導(dǎo)致計(jì)算效率很低,并且傳播改變的等待時(shí)間很長(zhǎng),尤其是對(duì)于大規(guī)模應(yīng)用更是如此。而且,輪詢RIB以從RIB中提取所需路由的做法既消 耗RIB資源,也消耗客戶端處理資源,這在客戶端協(xié)議數(shù)目和所維護(hù)的路 由數(shù)目由于利用特定路由選擇協(xié)議的節(jié)點(diǎn)數(shù)目增長(zhǎng)或其他因素而增長(zhǎng)時(shí), 可能導(dǎo)致性能問(wèn)題。需要的是向客戶端提供路由更新的新機(jī)制。發(fā)明內(nèi)容本發(fā)明公開(kāi)了用于在諸如但不局限于路由器、分組交換或其他通信和/ 或計(jì)算設(shè)備之類的設(shè)備中為預(yù)訂客戶端維護(hù)和分發(fā)相關(guān)路由選擇改變的方 法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等等。 一個(gè)實(shí)施例從 客戶端接收指示客戶端感興趣的路由更新的地址集合和感興趣的路由選擇 改變類型集合,并據(jù)此以該信息填充一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。響應(yīng)于接收到 路由更新,對(duì)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)查找操作,以識(shí)別該特定路由是否 是特定客戶端感興趣的路由,和/或任何依賴于特定路由的路由是否是客戶 端感興趣的??蛻舳吮桓嬷信d趣的改變。在一個(gè)實(shí)施例中,路由改變類 型也被與感興趣的路由選擇改變類型集合進(jìn)行匹配,并僅在感興趣的路由 改變也匹配感興趣的路由選擇改變類型的情況下通知客戶端。路由的可擴(kuò) 展路由選擇改變類型的示例可以包括但不局限于下一跳地址的改變、下一 跳地址接口的改變、到該路由的路徑的改變、關(guān)于該路由是否直接可達(dá)的 改變、到該路由的距離的改變、到該路由的代價(jià)的改變或者在另一度量或 路由選擇信息方面的改變。
所附權(quán)利要求詳細(xì)地闡述本發(fā)明的特征。從以下結(jié)合附圖的詳細(xì)描述中,可以最好地理解本發(fā)明及其優(yōu)點(diǎn),在附圖中圖1是示出客戶端在路由選擇信息庫(kù)(RIB)中查詢當(dāng)前路由選擇信 息的現(xiàn)有技術(shù)系統(tǒng)的框圖; 圖2是示出一種示例性系統(tǒng)的框圖,其中客戶端預(yù)訂請(qǐng)求與特定路由 和路由選擇改變類型相關(guān)的更新;圖3是在一個(gè)實(shí)施例中使用的系統(tǒng)或其組件的框圖,例如但不局限于 相關(guān)路由更新機(jī)制、RIB、客戶端或其多個(gè)部分和/或其他進(jìn)程;圖4A-C是示出其中客戶端預(yù)訂請(qǐng)求與特定路由和路由選擇改變類型 相關(guān)的更新的示例性系統(tǒng)的框圖;圖5A-C示出了在一個(gè)實(shí)施例中使用的進(jìn)程,其用于維護(hù)一個(gè)或多個(gè)客戶端感興趣的特定路由和路由選擇改變類型的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu),以 及用于處理路由更新以識(shí)別是否進(jìn)行了感興趣的改變并且作為響應(yīng)通知對(duì)此感興趣的一個(gè)或多個(gè)客戶端;圖5D示出在一個(gè)實(shí)施例中使用的路由更新消息;圖6A是示出在一個(gè)實(shí)施例中用于維護(hù)路由選擇信息的數(shù)據(jù)結(jié)構(gòu)的框 圖;以及圖6B是示出在一個(gè)實(shí)施例中包括在用于維護(hù)路由選擇信息的數(shù)據(jù)結(jié) 構(gòu)的條目中的字段的框圖。
具體實(shí)施方式
本發(fā)明公開(kāi)了用于在諸如但不局限于路由器、分組交換系統(tǒng)和其他通 信和/或計(jì)算設(shè)備之類的設(shè)備中為預(yù)訂客戶端維護(hù)和分發(fā)相關(guān)路由選擇信 息庫(kù)更新的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等等。這里所描述的實(shí)施例包括各種元素和限制,其中沒(méi)有一個(gè)元素或限制 被視為關(guān)鍵的元素或限制。每項(xiàng)權(quán)利要求單獨(dú)全面地完整陳述本發(fā)明的一 個(gè)方面。此外,這里所描述的某些實(shí)施例可以包括但不限于系統(tǒng)、網(wǎng)絡(luò)、 集成電路芯片、嵌入式處理器、ASIC、方法和包含指令的計(jì)算機(jī)可讀介質(zhì) 等等。 一個(gè)或多個(gè)系統(tǒng)、設(shè)備、組件等可構(gòu)成一個(gè)或多個(gè)實(shí)施例,這些實(shí) 施例可包括由相同或不同系統(tǒng)、設(shè)備、組件等執(zhí)行的權(quán)利要求的某些元素 或限制。下文中所描述的實(shí)施例體現(xiàn)了本發(fā)明的范圍和精神內(nèi)的各種方面 和配置,其中附圖示出了示例性而非限制性的配置。這里所使用的術(shù)語(yǔ)"分組"是指任何類型的分組或任何其他信息和數(shù) 據(jù)單元,包括但不限于固定長(zhǎng)度信元和可變長(zhǎng)度分組,其中每一個(gè)可以或 不可以被劃分成更小的分組或信元。這里所使用的術(shù)語(yǔ)"分組"還指分組 本身或分組指示,例如但不限于分組的全部或部分或者分組頭部、數(shù)據(jù)結(jié) 構(gòu)值、指針或索引或者分組或與其相關(guān)聯(lián)的信息的任何其他部分或直接或 間接標(biāo)識(shí)。例如,路由器通常對(duì)分組(尤其是頭部)的一個(gè)或多個(gè)字段進(jìn) 行操作,因此在分組狀況被操縱的同時(shí)分組的主體通常被存儲(chǔ)在單獨(dú)的存 儲(chǔ)器中,并且基于分組(即本示例中的分組頭部)處理的結(jié)果,整個(gè)分組 被轉(zhuǎn)發(fā)或丟棄,等等。此外,這些分組可包含一種或多種類型的信息,包 括但不限于語(yǔ)音、數(shù)據(jù)、視頻和音頻信息。這里一般使用的術(shù)語(yǔ)"項(xiàng)目" 是指分組或其他信息或數(shù)據(jù)單元或片段、設(shè)備、組件、元件或任何其他實(shí) 體。短語(yǔ)"處理分組"和"分組處理" 一般是指基于分組內(nèi)容(例如分組 頭部或其他字段)執(zhí)行某些步驟或動(dòng)作,這種步驟或動(dòng)作可能包括或不包 括修改、存儲(chǔ)、丟棄和/或轉(zhuǎn)發(fā)分組和/或相關(guān)聯(lián)的數(shù)據(jù)。術(shù)語(yǔ)"地址"在這里一般是指設(shè)備、網(wǎng)絡(luò)、其他實(shí)體或其部分的標(biāo)識(shí) 值。例如,當(dāng)使用分級(jí)的網(wǎng)絡(luò)地址時(shí),地址可以指前綴(例如IP地址10.0.0."或完全指定的地址(例如IP地址10.0.0.44)。而且,地址(例如前綴或完全指定的地址)可以由前綴和長(zhǎng)度值代表。"路由"或"路 徑"在這里一般是指介于第一節(jié)點(diǎn)和第二節(jié)點(diǎn)(例如通信或計(jì)算設(shè)備、路 由器、其他實(shí)體或其一部分)之間的途徑。在第一和第二節(jié)點(diǎn)之間可能存 在中間節(jié)點(diǎn),并且在兩個(gè)節(jié)點(diǎn)之間可能存在多條路由或路徑。而且,"路 由(to route)" —般指路由或路徑的標(biāo)識(shí)或通過(guò)網(wǎng)絡(luò)、路徑或設(shè)備發(fā)送信 息(例如分組)。在一個(gè)實(shí)施例中,路由可以由目的地地址、下一跳地址(即為到達(dá)目 的地而穿過(guò)的下一節(jié)點(diǎn)的地址或目的地本身的地址)和從其發(fā)送信息以到 達(dá)下一跳的外出接口標(biāo)識(shí)的組合來(lái)標(biāo)識(shí);而在一個(gè)實(shí)施例中,路由可以由單個(gè)地址或一系列地址和/或其他值來(lái)標(biāo)識(shí)。在一個(gè)實(shí)施例中,用外出接 口標(biāo)識(shí)值為零或另一特定值來(lái)標(biāo)識(shí)從本地節(jié)點(diǎn)無(wú)法直接到達(dá)下一跳地址。 在一個(gè)實(shí)施例中,另一指示機(jī)制(例如標(biāo)志或其他值)被用于標(biāo)識(shí)下一跳 地址是否直接可達(dá)。在一個(gè)實(shí)施例中,對(duì)一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一系列
路由査找操作(有時(shí)也稱之為遞歸查找操作)以識(shí)別開(kāi)始和目的地節(jié)點(diǎn)之 間的路由。在一個(gè)實(shí)施例中,基于目的地地址執(zhí)行查找操作以返回路由。 如果識(shí)別出的下一跳地址不是直接可達(dá),則基于返回的下一跳地址執(zhí)行查 找操作,如此反復(fù),直到下一跳地址直接可達(dá)為止。術(shù)語(yǔ)"系統(tǒng)"在這里一般用于描述任何數(shù)目的組件、元件、子系統(tǒng)、 設(shè)備、分組交換元件、分組交換機(jī)、路由器、網(wǎng)絡(luò)、計(jì)算機(jī)和/或通信設(shè) 備或機(jī)構(gòu),或者其組件的組合。術(shù)語(yǔ)"計(jì)算機(jī)"在這里一般用于描述任何 數(shù)目的計(jì)算機(jī),包括但不限于個(gè)人計(jì)算機(jī)、嵌入式處理元件和系統(tǒng)、控制 邏輯、ASIC、芯片、工作站、大型機(jī)等。術(shù)語(yǔ)"處理元件"在這里一般用于描述任何類型的處理機(jī)構(gòu)或設(shè)備,例如處理器、ASIC、現(xiàn)場(chǎng)可編程門(mén)陣列、計(jì)算機(jī)等。術(shù)語(yǔ)"設(shè)備"在這里一般用于描述任何類型的機(jī)構(gòu), 包括計(jì)算機(jī)或系統(tǒng)或其組件。術(shù)語(yǔ)"任務(wù)"和"進(jìn)程"在這里一般是用于 描述任何類型的運(yùn)行程序,包括但不限于計(jì)算機(jī)進(jìn)程、任務(wù)、線程、執(zhí)行 應(yīng)用程序、操作系統(tǒng)、用戶進(jìn)程、設(shè)備驅(qū)動(dòng)器、原碼、機(jī)器或其他語(yǔ)言等 等,并且可以是交互式的和/或非交互式的、在本地和/或遠(yuǎn)程執(zhí)行的、在 前臺(tái)和/或后臺(tái)執(zhí)行的、在用戶和/或操作系統(tǒng)地址空間中執(zhí)行的、程序庫(kù) 例程和/或獨(dú)立應(yīng)用,并且不限于任何特定的存儲(chǔ)器分區(qū)技術(shù)。在附圖 (包括但不限于任何框圖和流程圖以及消息序列圖)中示出的步驟、連 接、信號(hào)和信息處理一般可以按相同或不同的串行或并行順序來(lái)執(zhí)行,和 /或由不同的組件和/或進(jìn)程、線程等來(lái)執(zhí)行,和/或在不同連接上執(zhí)行,并 且可與其他實(shí)施例中的功能相組合,除非這使實(shí)施例無(wú)法實(shí)現(xiàn)或?qū)π蛄杏?明示或暗示的要求(例如對(duì)于讀取值、處理值的序列,值必須在處理前首 先被獲取,但是某些相關(guān)處理也可能在讀操作之前、之后和/或同時(shí)被執(zhí) 行)。此外,術(shù)語(yǔ)"識(shí)別"一般用于描述直接或間接確認(rèn)某事物的任何方 式或機(jī)制,這可以包括但不局限于接收、從存儲(chǔ)器取得、確定、限定、計(jì) 算、生成等等。術(shù)語(yǔ)"通知"一般用于描述利用任何通信機(jī)制向某一實(shí)體 直接或間接告知某事的任何方式或機(jī)制。此外,術(shù)語(yǔ)"網(wǎng)絡(luò)"和"通信機(jī)制"在這里一般用于描述一個(gè)或多個(gè) 網(wǎng)絡(luò)、通信介質(zhì)或通信系統(tǒng),包括但不局限于因特網(wǎng)、私有或公共電話、
蜂窩、無(wú)線、衛(wèi)星、線纜、局域、城域和/或廣域網(wǎng)絡(luò)、線纜、電連接、 總線等等以及諸如消息傳遞、進(jìn)程間通信、共享存儲(chǔ)器等等的內(nèi)部通信機(jī) 制。術(shù)語(yǔ)"消息"在這里一般用于描述信息塊,該信息塊可以或不可以但 一般是經(jīng)由一個(gè)或多個(gè)任何類型的通信機(jī)制來(lái)通信的。術(shù)語(yǔ)"存儲(chǔ)機(jī)制"包括任何類型的存儲(chǔ)器、存儲(chǔ)設(shè)備或用于維護(hù)任何 格式的指令或數(shù)據(jù)的其他機(jī)制。"計(jì)算機(jī)可讀介質(zhì)"是可擴(kuò)展的術(shù)語(yǔ),包 括任何存儲(chǔ)器、存儲(chǔ)設(shè)備、存儲(chǔ)機(jī)制和其他存儲(chǔ)和信令機(jī)制,包括諸如網(wǎng) 絡(luò)接口卡之類的接口和設(shè)備以及其中的緩沖器,還有任何通信設(shè)備和接收 和發(fā)送的信號(hào)和計(jì)算機(jī)化的系統(tǒng)可以解釋、接收和/或發(fā)送的其他當(dāng)前和 發(fā)展中的技術(shù)。術(shù)語(yǔ)"存儲(chǔ)器"包括任何隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電路和/或其他存儲(chǔ)組件或元件。術(shù)語(yǔ)"存儲(chǔ)設(shè)備"包括任何固態(tài)存儲(chǔ)介質(zhì)、盤(pán)驅(qū)動(dòng)器、磁碟、聯(lián)網(wǎng)的服務(wù)、磁帶驅(qū)動(dòng)器和其它存儲(chǔ)設(shè)備。存儲(chǔ)器和存儲(chǔ)設(shè)備可以存儲(chǔ)將由處理元件和/或控制邏輯執(zhí)行地計(jì)算機(jī)可執(zhí)行指令,以及由處理元件和/或控制邏輯操縱的數(shù)據(jù)。術(shù)語(yǔ)"數(shù)據(jù)結(jié)構(gòu)"是一種可擴(kuò)展術(shù)語(yǔ),其指可被應(yīng)用于數(shù)據(jù)以輔助解釋數(shù)據(jù)并對(duì)數(shù)據(jù)執(zhí)行操作的任何數(shù)據(jù)元素、變量、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)和/或一個(gè)或多個(gè)組織方案,例如但不局限于存儲(chǔ)器位置或設(shè)備、集合、隊(duì)列、樹(shù)、堆棧、列表、鏈表、陣列、表、指針等等。數(shù)據(jù)結(jié)構(gòu)一般被維持在存儲(chǔ)機(jī)制中。術(shù)語(yǔ)"指針"和"鏈接"在這里一般指用于引用或標(biāo)識(shí)另一元件、組件或其他實(shí)體的某種機(jī)制,它們可以包括但不局限于對(duì) 存儲(chǔ)器或其他存儲(chǔ)機(jī)制或其中的位置的引用、數(shù)據(jù)結(jié)構(gòu)中的索引、值等等。術(shù)語(yǔ)"一個(gè)實(shí)施例"在這里是指特定實(shí)施例,其中對(duì)"一個(gè)實(shí)施例" 的每次提及可以指不同實(shí)施例,并且在描述相關(guān)聯(lián)的特征、元素和/或限 制時(shí)對(duì)該術(shù)語(yǔ)的重復(fù)使用不是建立每個(gè)和所有實(shí)施例必須包括的相關(guān)聯(lián)的 特征、元素和/或限制的累積集合,但是實(shí)施例一般可以包括所有這些特征、元素和/或限制。另外,短語(yǔ)"用于xxx的裝置" 一般包括包含用于執(zhí)行XXX的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。另外,術(shù)語(yǔ)"第一"、"第二"等等在這里一般是指不同單元(例如第一元件、第二元件)。這些術(shù)語(yǔ)的使用不一定意味著某種順序,例如一 個(gè)單元或事件發(fā)生在另一單元或事件之前,而是提供一種用于在特定單元 間進(jìn)行區(qū)分的機(jī)制。另外,名詞單數(shù)的使用并非限制性的,其使用一般包 括一個(gè)或多個(gè)特定事物,而并非僅有一個(gè)(例如單詞"存儲(chǔ)器"的使用一 般指一個(gè)或多個(gè)存儲(chǔ)器,而無(wú)需指定"一個(gè)或多個(gè)存儲(chǔ)器"或"至少一個(gè) 存儲(chǔ)器"等等)。此外,短語(yǔ)"基于X"和"響應(yīng)于X"被用于指示從其 導(dǎo)出或?qū)е履撤N事物的項(xiàng)目X的最小集合,其中"X"是可擴(kuò)展的并且不 一定描述被執(zhí)行操作的項(xiàng)目的完整列表等。另外,短語(yǔ)"耦合到"被用于 指示兩個(gè)元件或設(shè)備之間的某種級(jí)別上的直接或間接連接,其中耦合的設(shè) 備修改或不修改被耦合的信號(hào)或被傳輸?shù)男畔?。術(shù)語(yǔ)"子集"被用于指示 一個(gè)集合的全部或部分元素的群組。術(shù)語(yǔ)"子樹(shù)"被用于指示一個(gè)樹(shù)的全 部或部分。此外,術(shù)語(yǔ)"或者"被用于標(biāo)識(shí)對(duì)一個(gè)或多個(gè)(包括全部)聯(lián) 合項(xiàng)目的選擇。一個(gè)實(shí)施例在路由器或其他設(shè)備內(nèi)分發(fā)路由選擇信息。來(lái)自客戶端的 一組指示客戶端感興趣的路由更新的地址被接收,并被用于填充一個(gè)或多 個(gè)數(shù)據(jù)結(jié)構(gòu)。響應(yīng)于路由更新的接收,對(duì)一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或 多個(gè)查找操作,以識(shí)別該路由選擇更新是否是其客戶端之一感興趣的路由 選擇更新,如果是,則將該特定路由更新告知相應(yīng)的一個(gè)或多個(gè)對(duì)此感興 趣的客戶端(而對(duì)此更信不感興趣的客戶端一般不會(huì)得到該路由選擇更新 的通知)。在一個(gè)實(shí)施例中,路由更新對(duì)應(yīng)于感興趣的已注冊(cè)地址或?qū)Ω?興趣的已注冊(cè)地址依賴于的路由的更新。在一個(gè)實(shí)施例中, 一組感興趣(例如具有路由選擇屬性)的路由選擇 改變的類型被接收并被維護(hù)在一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)中;并且客戶端僅被告 知該路由更新是否是客戶端感興趣的路由更新,以及是否具有感興趣的路 由選擇改變的類型。這些類型的路由選擇改變一般可以包括但不局限于用 于到達(dá)感興趣的地址的接口的改變、去往感興趣的地址的路徑的改變、感 興趣的地址是直接可達(dá)還是不直接可達(dá)的改變、到達(dá)感興趣的地址的距離 的改變、到達(dá)感興趣的地址的代價(jià)度量的改變等等。取決于實(shí)施例,這些 類型的路由選擇改變是基于每個(gè)地址、每個(gè)客戶端、每個(gè)地址每個(gè)客戶 端、每個(gè)系統(tǒng)或基于其它來(lái)維護(hù)的。在一個(gè)實(shí)施例中,每個(gè)系統(tǒng)或每個(gè)地 址地維護(hù)感興趣的路由選擇改變的類型,這時(shí)客戶端可能接收到不感興趣 的更新。在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制只通知客戶端該客戶端感興趣的 路由更新。因此,在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制維護(hù)與關(guān)于其客戶 端的路由選擇信息相關(guān)的信息。這些客戶端可以是任何實(shí)體,例如但不局 限于協(xié)議、應(yīng)用、轉(zhuǎn)發(fā)引擎和/或任何其它進(jìn)程。相關(guān)路由更新機(jī)制一般維護(hù)指示每個(gè)客戶端感興趣的那些路由的數(shù)據(jù) 結(jié)構(gòu)。不同實(shí)施例使用不同技術(shù)來(lái)維護(hù)該信息。例如, 一個(gè)實(shí)施例為每個(gè) 客戶端維護(hù)不同的數(shù)據(jù)結(jié)構(gòu),以便響應(yīng)于特定路由改變來(lái)識(shí)別哪個(gè)客戶端 需要通知。 一個(gè)實(shí)施例維護(hù)對(duì)于將響應(yīng)于改變向哪個(gè)或哪些客戶端通知特 定路由的指示。 一個(gè)實(shí)施例使用相關(guān)路由更新機(jī)制的多個(gè)實(shí)例,例如對(duì)于 每個(gè)客戶端使用一個(gè)實(shí)例。另外, 一個(gè)實(shí)施例維護(hù)用于標(biāo)識(shí)客戶端之一感 興趣的改變類型的附加信息。例如,客戶端可能對(duì)可達(dá)性信息改變(例如 下一跳地址或接口的改變)、距離值改變或某種其它路由選擇特性、地 址、值、度量等的改變感興趣。該信息可以基于每個(gè)地址、每個(gè)客戶端、 每個(gè)地址每個(gè)客戶端、每個(gè)系統(tǒng)或基于其它來(lái)維護(hù)。在一個(gè)實(shí)施例中,客戶端向相關(guān)路由更新機(jī)制注冊(cè)關(guān)于到特定地址的 路由選擇信息的改變通知。注意,客戶端可注冊(cè)的地址的數(shù)目可以很小或 甚至相當(dāng)大。例如,諸如PIM的客戶端通常需要注冊(cè)若干集中點(diǎn)和成千 上萬(wàn)個(gè)源地址。相關(guān)路由更新機(jī)制監(jiān)視針對(duì)影響由其客戶端注冊(cè)的地址的 改變的路由更新,如果存在改變,則響應(yīng)于檢測(cè)到的改變向受影響的客戶 端發(fā)送即時(shí)通知。在一個(gè)實(shí)施例中,針對(duì)每個(gè)地址,相關(guān)路由更新機(jī)制一般設(shè)置一個(gè)條 目并利用客戶端信息(例如路由選擇屬性、感興趣的路由選擇改變的類型等等)來(lái)注釋該條目。然后相關(guān)路由更新機(jī)制在RIB中查詢到該地址的路 由,如果路由是遞歸的,則繼續(xù)查詢RIB,直到路由被解析出為止。然后,將路由選擇信息返回到客戶端。在進(jìn)行路由解析時(shí),相關(guān)路由更新機(jī) 制還為沿路徑的每個(gè)路由(例如甚至未被注冊(cè)為感興趣的地址的地址)創(chuàng)
建條目,并設(shè)置條目之間的依賴性信息。該客戶端信息允許客戶端向相關(guān)路由更新機(jī)制指定客戶端感興趣的路 由選擇改變的類型。可能的客戶端信息的示例包括但不局限于直接連接的 下一跳IP地址、到下一跳的接口、路由矩陣、路由距離和提供該路由的 路由選擇協(xié)議?;诼酚蛇x擇屬性,客戶端進(jìn)行選擇,相關(guān)路由更新機(jī)制 為該客戶端設(shè)置通知策略。這使客戶端不僅能夠基于針對(duì)他們感興趣的地 址的路由的改變得到通知,還能夠僅就針對(duì)感興趣的地址的路由選擇屬性 方面的具有相應(yīng)的指定或缺省的路由選擇改變類型的改變得到通知。這是 一種基于可擴(kuò)展策略的方案,因此策略可以是基于每個(gè)客戶端的、每個(gè)地 址、每個(gè)客戶端/每個(gè)地址或基于特定實(shí)施例所需的任何其他基礎(chǔ)的。在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制維護(hù)對(duì)地址感興趣的一個(gè)或多個(gè) 客戶端的索引或其他指示,從而多個(gè)客戶端可以注冊(cè)對(duì)相同或不同的地址 的興趣。當(dāng)然,存在無(wú)限多種方式(例如集合、列表、陣列、矩陣、位圖 等等)可用于維護(hù)地址和對(duì)與該地址相關(guān)聯(lián)的路由選擇改變感興趣的一個(gè) 或多個(gè)客戶端之間的對(duì)應(yīng)關(guān)系(反之亦然)。而且, 一個(gè)實(shí)施例為每個(gè)條 目維護(hù)一個(gè)參考計(jì)數(shù),以便于標(biāo)識(shí)一個(gè)條目在何時(shí)不再引起任何客戶端的 興趣。在一個(gè)實(shí)施例中,客戶端首先進(jìn)行綁定以在相關(guān)路由更新機(jī)制內(nèi)建立 該客戶端專有的上下文(例如用于與另一進(jìn)程中的客戶端通信的連接信 息,或者由客戶端指定的函數(shù)回調(diào))。在該綁定進(jìn)程期間,相關(guān)路由更新 機(jī)制還為該客戶端分配一個(gè)客戶端句柄。該客戶端句柄唯一地映射到客戶 端位圖結(jié)構(gòu)中的比特位置并在本質(zhì)上預(yù)留該比特位置。每個(gè)條目包含一個(gè) 客戶端位圖,以將該條目與客戶端所有者的集合相關(guān)聯(lián)。如果在位圖中設(shè) 置了多于一個(gè)比特,則條目被兩個(gè)或更多個(gè)客戶端所擁有。同樣,如果位 圖中的所有比特都被清除,則條目不再使用并應(yīng)該被刪除。當(dāng)存在導(dǎo)致地 址的路由選擇信息改變的路由更新時(shí),相關(guān)路由更新機(jī)制使用位圖結(jié)構(gòu)來(lái) 確定應(yīng)該向哪些客戶端發(fā)送通知。在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制利用它的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)來(lái)就 相關(guān)性對(duì)所有路由更新進(jìn)行檢查。如果路有更新是對(duì)現(xiàn)有路由的添加/改
變事件或刪除事件,相關(guān)路由更新機(jī)制則搜索其數(shù)據(jù)結(jié)構(gòu),如果更新是無(wú) 關(guān)的,則簡(jiǎn)單地忽略該更新。否則,確定哪些地址將受該更新影響并通知 已注冊(cè)對(duì)該地址的興趣的相應(yīng)客戶端。如果通知具有進(jìn)程間通信(IPC) 的形式,則考慮到效率可將針對(duì)每個(gè)客戶端的多個(gè)路由更新聚集在一起。 相關(guān)路由更新機(jī)制例如可以作為RIB功能的一部分或協(xié)議進(jìn)程功能的一部 分來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制被優(yōu)化,以僅僅保留必需路由來(lái) 導(dǎo)出針對(duì)感興趣的地址的路由選擇信息改變。這可以包括在路由是遞歸的 的情況下解析路由并針對(duì)在解析進(jìn)程中使用的每個(gè)路由創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)條 百。在一個(gè)實(shí)施例中,條目被存儲(chǔ)在radix樹(shù)中,因此可響應(yīng)于接收到路 由選擇更新而快速識(shí)別出匹配地址。為了跟蹤路由依賴性,每個(gè)條目保存 一個(gè)依賴隊(duì)列(例如依賴地址/條目的列表)。當(dāng)更新影響特定路由時(shí), 所有依賴條目/地址都被重解析/更新。如果這導(dǎo)致已注冊(cè)地址的路由選擇 信息的任何改變,則通知相應(yīng)的一個(gè)或多個(gè)客戶端。利用依賴隊(duì)列(或其 他依賴性標(biāo)識(shí)機(jī)制),相關(guān)路由更新機(jī)制可以在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中快速 定位針對(duì)任何地址的任何路由選擇屬性改變,并因而觸發(fā)到一個(gè)或多個(gè)客 戶端的通知消息。相關(guān)路由更新機(jī)制的一個(gè)實(shí)施例支持多路由選擇源,這種多路由選擇 源一般是某些客戶端的期望特征,例如但不局限于多播協(xié)議。 一般對(duì)于多 播協(xié)議,可以存在單播可達(dá)性信息的多個(gè)源,例如但不局限于靜態(tài)多播特 有的單播路由、單播IGP/BGP路由和多播特有的IGP/EGP路由。相關(guān)路 由更新機(jī)制可以通過(guò)在多個(gè)路由選擇源之間進(jìn)行仲裁來(lái)充當(dāng)?shù)狡淇蛻舳说?路由選擇信息的中心源。在返回附圖之前,需要記住并在上下文中遵循這里描述的是很多不 同的和可擴(kuò)展的實(shí)施例中的一個(gè)或多個(gè)的很多不同方面。當(dāng)然,特定特征 和實(shí)現(xiàn)方式的細(xì)節(jié)可能隨相同或不同實(shí)施例的實(shí)現(xiàn)方式的變化而變化,尤 其是在響應(yīng)于特定應(yīng)用的需求(例如協(xié)議客戶端、設(shè)備能力等等)時(shí),和 甚至基于諸如實(shí)現(xiàn)實(shí)施例的每個(gè)人的設(shè)計(jì)偏好之類的因素。
相關(guān)路由更新機(jī)制一般不只接收客戶端感興趣的路由更新。例如,圖 2示出一個(gè)實(shí)施例,其中相關(guān)路由更新機(jī)制210從一個(gè)或多個(gè)路由選擇數(shù)據(jù)庫(kù)220接收路由更新223,所述路由選擇數(shù)據(jù)庫(kù)220可能(也可能不) 與圖1所示的路由信息庫(kù)相同或類似,或者包括圖1所示的路由信息庫(kù)。雖然不是必須的,但一個(gè)實(shí)施例一般從RIB接收更新,因?yàn)镽IB當(dāng) 前是來(lái)自多個(gè)源的大多數(shù)路由信息的倉(cāng)庫(kù)并且被用路由改變來(lái)更新。在一 個(gè)實(shí)施例中,無(wú)法從RIB或其他主路由選擇信息源獲得所有路由選擇信 息,在此情況下,路由更新223是從多個(gè)路由選擇數(shù)據(jù)庫(kù)220接收到的, 并且一般路由選擇查詢和結(jié)果222與這多個(gè)路由選擇數(shù)據(jù)庫(kù)220通信。圖2示出的是一個(gè)或多個(gè)客戶端200、相關(guān)路由更新機(jī)制210和一個(gè) 或多個(gè)路由選擇數(shù)據(jù)庫(kù)220。 一個(gè)或多個(gè)客戶端200經(jīng)由消息203與相關(guān) 路由更新機(jī)制210通信以注冊(cè)其預(yù)訂,從而接收感興趣的路由更新,并傳 達(dá)哪些是感興趣的路由以及傳達(dá)感興趣的路由選擇改變的可能的相關(guān)性參 數(shù)/類型(例如通知路由改變、通知可達(dá)性信息的改變、通知下一跳地址 或接口的改變、通知跳距離的改變等等)。一個(gè)或多個(gè)路由選擇數(shù)據(jù)庫(kù)220通過(guò)向其他設(shè)備發(fā)送和從其他設(shè)備接 收路由更新225來(lái)進(jìn)行通信,以標(biāo)識(shí)通信和末端設(shè)備之間的路由。相關(guān)路 由更新機(jī)制210接收來(lái)自一個(gè)或多個(gè)路由選擇數(shù)據(jù)庫(kù)220的路由更新 223,其中這些路由更新一般是由一個(gè)或多個(gè)路由選擇數(shù)據(jù)庫(kù)220標(biāo)識(shí)的 所有路由更新。相關(guān)路由更新機(jī)制210處理這些路由更新223以一般過(guò)濾 掉或以其他方式減少特定客戶端不感興趣的某些或全部路由,從而使每個(gè) 客戶端200 —般接收相關(guān)路由更新213 (例如一般比所有路由更新223要 少,并一般只有特定客戶端感興趣的路由,或基本上只有特定客戶端感興 趣的路由)。在一個(gè)實(shí)施例中,相關(guān)路由更新機(jī)制210在改變發(fā)生時(shí)向客 戶換提供事件驅(qū)動(dòng)通知,并因而為客戶端提供快速獲得最新路由選擇信息 的可縮放的方式。另外,相關(guān)路由更新機(jī)制210可以傳輸路由查詢和結(jié)果消息222以獲 得和接收所需路由信息。例如,當(dāng)感興趣的路由被注冊(cè)時(shí),相關(guān)路由更新 機(jī)制210可能需要該路由和任何中間路由的當(dāng)前路由選擇信息。
圖3是用于運(yùn)行一個(gè)或多個(gè)進(jìn)程的系統(tǒng)及其組件300的框圖,所述進(jìn)程例如是但不局限于在一個(gè)實(shí)施例中使用的相關(guān)路由更新機(jī)制、RIB、客 戶端或其某些部分和/或其他進(jìn)程。在一個(gè)實(shí)施例中,系統(tǒng)或組件300執(zhí) 行與這里示出或以其他方式描述的流程圖之一相對(duì)應(yīng)的一個(gè)或多個(gè)進(jìn)程。在一個(gè)實(shí)施例中,組件300包括處理元件301、存儲(chǔ)器302、存儲(chǔ)設(shè) 備303和用于傳輸信息和/或發(fā)送分組、項(xiàng)目和/或其他信息的接口 304, 這些元件一般經(jīng)由一個(gè)或多個(gè)通信機(jī)制309 (為圖示目的被示為總線)耦 合。組件300的各種實(shí)施例可以包括更多或更少的元件。組件300的操作 一般被處理元件301利用存儲(chǔ)器302和存儲(chǔ)設(shè)備303來(lái)控制,以執(zhí)行一個(gè) 或多個(gè)排定的任務(wù)或進(jìn)程。存儲(chǔ)器302是一種類型的計(jì)算機(jī)可讀介質(zhì),一 般包括隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電 路和/或其他存儲(chǔ)器組件。存儲(chǔ)器302 —般存儲(chǔ)將被處理元件301執(zhí)行的 計(jì)算機(jī)可執(zhí)行指令和/或處理元件301所操縱的數(shù)據(jù),用于實(shí)現(xiàn)根據(jù)實(shí)施 例的功能。存儲(chǔ)設(shè)備3Q3是另一類型的計(jì)算機(jī)可讀介質(zhì), 一般包括固態(tài)存 儲(chǔ)介質(zhì)、盤(pán)驅(qū)動(dòng)器、磁碟、聯(lián)網(wǎng)服務(wù)、磁帶驅(qū)動(dòng)器和其他存儲(chǔ)設(shè)備。根據(jù) 實(shí)施例,存儲(chǔ)設(shè)備303 —般存儲(chǔ)將被處理元件301執(zhí)行的計(jì)算機(jī)可執(zhí)行指 令和/或處理元件301所操縱的數(shù)據(jù),用于實(shí)現(xiàn)根據(jù)實(shí)施例的功能。圖4A-C示出無(wú)限多個(gè)系統(tǒng)中的一些示例性系統(tǒng),其中根據(jù)本發(fā)明的 范圍和精神,客戶端預(yù)訂請(qǐng)求與特定路由和路由選擇改變類型相關(guān)的更 新。首先,圖4A示出在一個(gè)實(shí)施例中使用的相關(guān)路由更新機(jī)制410。如 圖所示,相關(guān)路由更新機(jī)制410包括本地路由選擇數(shù)據(jù)庫(kù)416,其可以是 RIB或另一路由選擇數(shù)據(jù)庫(kù)進(jìn)程的復(fù)制。本地路由選擇數(shù)據(jù)庫(kù)416允許相 關(guān)路由改變通知器412在不使用原始RIB或其他路由選擇數(shù)據(jù)庫(kù)進(jìn)程的任 何資源的情況下査詢本地路由選擇數(shù)據(jù)庫(kù)416。當(dāng)然, 一個(gè)實(shí)施例不包括 本地路由選擇數(shù)據(jù)庫(kù)416,而是與原始RIB或其他路由選擇數(shù)據(jù)庫(kù)進(jìn)程交 互。在一個(gè)實(shí)施例中,本地路由選擇數(shù)據(jù)庫(kù)416從外部RIB、多播邊界網(wǎng) 關(guān)協(xié)議(MGBP)進(jìn)程或其他路由選擇數(shù)據(jù)庫(kù)進(jìn)程接收RIB路由更新,本地路由選擇數(shù)據(jù)庫(kù)416向外部RIB或其他路由 選擇數(shù)據(jù)庫(kù)進(jìn)程發(fā)送和從其接收査詢和結(jié)果423。相關(guān)路由改變通知器412從本地路由選擇數(shù)據(jù)庫(kù)416接收路由更新 415,該路由更新415 —般是由本地路由選擇數(shù)據(jù)庫(kù)416接收到的所有路 由更新421。一個(gè)或多個(gè)客戶端400經(jīng)由通信403向相關(guān)路由改變通知器412預(yù)訂 路由更新服務(wù)。而且, 一個(gè)或多個(gè)客戶端400中的每一個(gè)傳達(dá)哪些是感興 趣的路由以及感興趣的路由選擇改變的可能的相關(guān)性參數(shù)/類型(例如通 知路由改變、通知可達(dá)性信息的改變、通知下一跳地址或接口的改變、通 知跳距離的改變等等)。然后,相關(guān)路由改變通知器412可以過(guò)濾或以其 他方式識(shí)別和發(fā)送路由更新407到特定的一個(gè)或多個(gè)客戶端,其中發(fā)送的 一般是(基本上是)特定的一個(gè)或多個(gè)客戶端感興趣的那些路由更新。相關(guān)路由改變通知器412處理路由更新415,從而一般過(guò)濾掉或以其 他方式減少特定客戶端不感興趣的某些或全部路由,以使得每個(gè)客戶端 400 —般只接收相關(guān)的路由更新407 (例如一般比所有路由更新421/415 要少,并一般只有感興趣的路由,或基本上只有感興趣的路由)。在一個(gè) 實(shí)施例中,相關(guān)路由改變通知器412在發(fā)生改變時(shí)向客戶端提供事件驅(qū)動(dòng) 通知,并因此為客戶端提供獲得最新路由選擇信息的可縮放的方式。另外,相關(guān)路由改變通知器412可以傳輸路由查詢和結(jié)果消息413, 以獲得所需路由信息。例如,當(dāng)感興趣的路由經(jīng)由信號(hào)403被注冊(cè)時(shí),相 關(guān)路由改變通知器412可能需要獲得針對(duì)該路由和已注冊(cè)的地址所依賴于 的任何中間路由的路由選擇信息。接下來(lái),圖4B示出相關(guān)路由更新機(jī)制450,其包括RIB 456和相關(guān) 路由改變通知器412。 RIB 456是基于協(xié)議路由選擇更新451來(lái)更新的, 而相關(guān)路由改變通知器412基于路由更新415和路由查詢和結(jié)果413來(lái)通 知一個(gè)或多個(gè)客戶端400??蛻舳?00經(jīng)由通信403向相關(guān)路由改變通知 器412預(yù)訂路由更新服務(wù)。而且, 一個(gè)或多個(gè)客戶端400中的每一個(gè)傳達(dá) 哪些是感興趣的路由以及感興趣的路由選擇改變的可能的相關(guān)性參數(shù)/類 型(例如通知路由改變、通知可達(dá)性信息的改變、通知下一跳地址或接口的改變、通知跳距離的改變等等)。然后,相關(guān)路由改變通知器412可以過(guò)濾或以其他方式識(shí)別和發(fā)送路由更新407到特定的一個(gè)或多個(gè)客戶端,其中發(fā)送的一般是(基本上是)特定的一個(gè)或多個(gè)客戶端感興趣的那些路由更新。接下來(lái),圖4C示出相關(guān)路由更新機(jī)制480,其包括相關(guān)路由改變通 知器482。如圖所示,相關(guān)路由更新機(jī)制480不包括其自己的本地RIB或 其他本地?cái)?shù)據(jù)庫(kù);相反,相關(guān)路由改變通知器482從外部路由選擇數(shù)據(jù)庫(kù) 490接收路由更新495,并可選地與外部路由選擇數(shù)據(jù)庫(kù)490傳輸路由查 詢和結(jié)果493。相關(guān)路由改變通知器482基于路由更新415和路由查詢和 結(jié)果413來(lái)通知一個(gè)或多個(gè)客戶端400??蛻舳?00經(jīng)由通信403向相關(guān) 路由改變通知器412預(yù)訂路由更新服務(wù)。而且, 一個(gè)或多個(gè)客戶端400中 的每一個(gè)傳達(dá)哪些是感興趣的路由以及感興趣的路由選擇改變的可能的相 關(guān)性參數(shù)/類型(例如通知路由改變、通知可達(dá)性信息的改變、通知下一 跳地址或接口的改變、通知跳距離的改變等等)。然后,相關(guān)路由改變通 知器412可以過(guò)濾或以其他方式識(shí)別和發(fā)送路由更新407到特定的一個(gè)或 多個(gè)客戶端,其中發(fā)送的一般是(基本上是)特定的一個(gè)或多個(gè)客戶端感 興趣的那些路由更新。圖5A-C示出了在一個(gè)實(shí)施例中使用的進(jìn)程,其用于維護(hù)一個(gè)或多個(gè) 客戶端感興趣的特定路由和路由選擇改變類型的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu),以 及用于處理路由更新以識(shí)別是否進(jìn)行了感興趣的改變并且作為響應(yīng)通知對(duì) 此感興趣的一個(gè)或多個(gè)客戶端。圖5A示出在一個(gè)實(shí)施例中使用的用于接收和處理對(duì)可能具有感興趣 的路由改變類型的地址的客戶端通知的請(qǐng)求的進(jìn)程。處理開(kāi)始于進(jìn)程塊 500,并前進(jìn)至進(jìn)程塊502,其中感興趣的路由被接收,其中可能具有對(duì) 感興趣的路由選擇改變的一個(gè)或多個(gè)類型的指示。接下來(lái),在進(jìn)程塊504 中,針對(duì)接收到的具有路由選擇類型指示的地址創(chuàng)建一個(gè)條目。在進(jìn)程塊 506中,該條目被插入到數(shù)據(jù)結(jié)構(gòu)中,這包括在所有已注冊(cè)的感興趣的路 由的數(shù)據(jù)結(jié)構(gòu)(例如radix樹(shù))中添加一個(gè)鏈接條目。在進(jìn)程塊508中, 基于接收到的地址在數(shù)據(jù)結(jié)構(gòu)中執(zhí)行查找操作。如進(jìn)程塊510所確定的,
在返回直接連接的路由之前,針對(duì)取得的下一跳地址的條目在進(jìn)程塊514中被創(chuàng)建;該條目在進(jìn)程塊516中被插入到數(shù)據(jù)結(jié)構(gòu)中,其中關(guān)于對(duì)先前地址的依賴性的指示和到其父的鏈接也一起被插入;在進(jìn)程塊518中對(duì)取得的地址執(zhí)行査找操作,并且進(jìn)程返回進(jìn)程塊510。當(dāng)進(jìn)程塊510確定完 成時(shí),在進(jìn)程塊512中,下一跳值和到達(dá)下一跳的接口被返回。如進(jìn)程塊 513所指示的,處理完成。圖5B示出在一個(gè)實(shí)施例中使用的用于接收和處理不再接收可能具有 感興趣的路由改變類型的地址的客戶端通知的請(qǐng)求的進(jìn)程。處理開(kāi)始于進(jìn) 程塊530,并前進(jìn)至進(jìn)程塊532,其中感興趣的路由被接收。如進(jìn)程塊 534所確定的,如果沒(méi)有定位到條目,則處理完成,如進(jìn)程塊536所指 示。否則,對(duì)特定路由感興趣的客戶端的數(shù)目的參考計(jì)數(shù)被減小。 一個(gè)實(shí) 施例使用這樣的參考計(jì)數(shù);而一個(gè)實(shí)施例不使用。如進(jìn)程塊540所確定 的,如果該條目未被其他節(jié)點(diǎn)所使用(例如參考計(jì)數(shù)為0或經(jīng)由其他機(jī) 制),則在進(jìn)程塊542中,該條目被刪除。如進(jìn)程塊544所確定的,如果 該條目具有父條目,則在進(jìn)程塊548中,父條目被取得并且處理返回進(jìn)程 塊538以基于父條目重復(fù)該進(jìn)程。否則,如進(jìn)程塊546所指示的那樣,處 理完成。圖5C示出在一個(gè)實(shí)施例中使用的用于處理路由更新以識(shí)別是否應(yīng)該 發(fā)送通知指示并在應(yīng)該發(fā)送的情況下識(shí)別應(yīng)將其發(fā)送到哪個(gè)或哪些客戶端 的進(jìn)程。處理開(kāi)始于進(jìn)程塊560,并前進(jìn)至進(jìn)程塊562,其中路由更新被 接收并且執(zhí)行查找操作。如進(jìn)程塊564所確定的,如果沒(méi)有定位到條目, 則處理完成,如進(jìn)程塊566所指示的。否則,如進(jìn)程塊570所確定的,如 果路由更新對(duì)應(yīng)于感興趣的特定類型的路由選擇改變,則在進(jìn)程塊572 中,相應(yīng)的一個(gè)或多個(gè)客戶端被通知。在一個(gè)實(shí)施例中,當(dāng)路由選擇改變 的類型不被使用或它們被忽略時(shí),進(jìn)程塊572不被執(zhí)行,處理直接前進(jìn)至 進(jìn)程塊572,因而針對(duì)所有匹配的感興趣的路由更新發(fā)送通知消息。返回圖5C所示的處理,如進(jìn)程塊574所確定的,如果在一個(gè)或多個(gè) 數(shù)據(jù)結(jié)構(gòu)中存在任何依賴路由,則在進(jìn)程塊578中,該依賴路由被獲取并 且處理返回進(jìn)程塊570,以對(duì)每個(gè)依賴路由重復(fù)該進(jìn)程。當(dāng)在進(jìn)程塊574 中確定不存在更多依賴路由時(shí),如進(jìn)程塊576所指示的,處理完成。圖5D是出在一個(gè)實(shí)施例中使用的路由更新590。如圖所示,路由更 新590包括地址591和其相應(yīng)的下一跳地址592和下一跳接口 59。在一個(gè) 實(shí)施例中,相關(guān)路由更新機(jī)制從一個(gè)或多個(gè)路由選擇數(shù)據(jù)庫(kù)接收到包括值 591-593的路由更新消息590。在一個(gè)實(shí)施例中,包括值591-593的路由更 新消息590被用于將相關(guān)路由更新通知給客戶端。在一個(gè)實(shí)施例中,路由 更新消息590包括某些附加值(例如路由選擇屬性、距離、代價(jià)等等) 594。在一個(gè)實(shí)施例中,路由更新消息590包括一組與路由更新消息590 匹配的一個(gè)或多個(gè)已注冊(cè)的地址595 (即用于向客戶端通知路由更新和通 知路由更新的原因)。圖6A是示出在一個(gè)實(shí)施例中用于維護(hù)路由選擇信息的數(shù)據(jù)結(jié)構(gòu)600 的框圖。Radix樹(shù)610被用于維護(hù)每個(gè)已注冊(cè)的路由和其每個(gè)依賴路由。 Radix樹(shù)公知是用于存儲(chǔ)地址的,并提供了在查找操作期間識(shí)別匹配地址 的快速而有效的方式。Radix樹(shù)610中的每個(gè)條目被鏈接(如指針615所 示)到其在數(shù)據(jù)結(jié)構(gòu)600的第二部分617中的相應(yīng)條目。數(shù)據(jù)結(jié)構(gòu)600的第二部分617維護(hù)對(duì)路由依賴性的指示,以使得針對(duì) 給定的路由更新,相應(yīng)的受影響的已注冊(cè)地址可以被容易地識(shí)別出。示出 的是根條目620和地址條目63G、 640、 650和660,它們相應(yīng)的指針631、 641、 651和661指向它們各自的父條目,而它們相應(yīng)的依賴鏈接632、 642、 652和662及其相應(yīng)的鏈接633、 643、 653和663鏈接到它們 各自的兄弟條目。例如,如果對(duì)應(yīng)于地址條目640的路由更新被識(shí)別出, 則一個(gè)或多個(gè)客戶端需要基于對(duì)應(yīng)于地址條目540及其依賴條目650的路 由更新的通知。當(dāng)然,存在無(wú)限多個(gè)可用于維護(hù)路由選擇信息的一個(gè)或多 個(gè)數(shù)據(jù)結(jié)構(gòu)。圖6B是示出在一個(gè)實(shí)施例中用于維護(hù)路由選擇信息的數(shù)據(jù)結(jié)構(gòu)的條 目680中包括的字段的框圖。如圖所示,條目680包括地址681;下一跳 地址682;下一跳接口 683;附加值684 (例如當(dāng)前距離、代價(jià)等等,用 于確定是否存在由于路由更新所導(dǎo)致的改變);感興趣的客戶端的指示 685 (例如列表、位圖、數(shù)組等等);感興趣的路由選擇改變類型的指示 686;父、依賴和兄弟指針687;以及參考計(jì)數(shù)688??紤]到本發(fā)明的原理可被應(yīng)用到很多可能的實(shí)施例,將意識(shí)到,這里 參考附圖描述的實(shí)施例及其方面僅僅是示例性的,不應(yīng)被看作對(duì)本發(fā)明范 圍的限制。例如,本領(lǐng)域技術(shù)人員將發(fā)現(xiàn),很多進(jìn)程塊操作可被重新排 序,以在其他操作之前、之后或與它們基本同時(shí)被執(zhí)行。而且,在各種實(shí) 施例中可以使用很多不同形式的數(shù)據(jù)結(jié)構(gòu)。這里描述的本發(fā)明想到了落入 所附權(quán)利要求及其等同物范圍內(nèi)的所有這樣的實(shí)施例。
權(quán)利要求
1.一種在路由器內(nèi)執(zhí)行的用于在所述路由器內(nèi)分發(fā)路由選擇信息的方法,該方法包括接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合和感興趣的路由選擇改變類型集合;維護(hù)一個(gè)或多個(gè)包括與所述地址集合和所述感興趣的路由選擇改變類型集合相對(duì)應(yīng)的信息的數(shù)據(jù)結(jié)構(gòu);接收特定路由更新;以及響應(yīng)于識(shí)別出所述特定路由更新既對(duì)應(yīng)于所述地址集合中的至少一個(gè)地址又對(duì)應(yīng)于所述感興趣的路由選擇改變類型集合中的至少一個(gè)路由選擇屬性,來(lái)將所述特定路由更新通知給所述客戶端。
2. 如權(quán)利要求1所述的方法,其中所述至少一個(gè)路由選擇屬性包括用 于到達(dá)所述地址集合中的地址的接口的改變。
3. 如權(quán)利要求2所述的方法,其中所述將所述特定路由更新通知給所 述客戶端的步驟包括將所述地址通知給所述客戶端。
4. 如權(quán)利要求1所述的方法,其中所述至少一個(gè)路由選擇屬性包括從 所述路由器到所述地址集合中的地址的路徑的改變。
5. 如權(quán)利要求4所述的方法,其中所述地址是從所述路由器直接可達(dá)的。
6. 如權(quán)利要求1所述的方法,其中所述至少一個(gè)路由選擇屬性包括關(guān) 于所述地址集合中的地址是直接可達(dá)還是不直接可達(dá)的改變。
7. 如權(quán)利要求1所述的方法,其中所述至少一個(gè)路由選擇屬性包括到 達(dá)所述地址集合中的地址的距離的改變。
8. 如權(quán)利要求1所述的方法,其中所述至少一個(gè)路由選擇屬性包括到 達(dá)所述地址集合中的地址的代價(jià)度量的改變。
9. 一種在設(shè)備內(nèi)執(zhí)行的用于在所述設(shè)備內(nèi)分發(fā)路由選擇信息的方法, 該方法包括接收來(lái)自第一客戶端的指示所述第一客戶端感興趣的路由更新的第一 地址集合和所述第一客戶端感興趣的第一路由選擇改變類型集合;接收來(lái)自第二客戶端的指示所述第二客戶端感興趣的路由更新的第二地址集合和所述第二客戶端感興趣的第二路由選擇改變類型集合;維護(hù)一個(gè)或多個(gè)包括與所述第一和第二地址集合和所述感興趣的第一和第二路由選擇改變類型集合相對(duì)應(yīng)的信息的數(shù)據(jù)結(jié)構(gòu); 接收特定路由更新;以及對(duì)所述一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)查找操作,以識(shí)別與所述 特定路由更新相對(duì)應(yīng)的結(jié)果,該結(jié)果標(biāo)識(shí)所述第一客戶端而非所述第二客 戶端,并且所述特定路由更新對(duì)應(yīng)于在所述感興趣的第一路由選擇改變類 型集合中標(biāo)識(shí)的特定路由選擇改變類型;以及響應(yīng)于所述結(jié)果標(biāo)識(shí)所述第一客戶端而非所述第二客戶端并且所述特 定路由更新對(duì)應(yīng)于在所述感興趣的第一路由選擇改變類型集合中標(biāo)識(shí)的特 定路由選擇改變類型,來(lái)將所述特定路由更新通知給所述第一客戶端而非 所述第二客戶端。
10. 如權(quán)利要求9所述的方法,其中所述一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)基于所述 感興趣的第一和第二路由選擇改變類型集合來(lái)維護(hù)所述第一和第二客戶端 感興趣的單個(gè)路由選擇改變類型集合。
11. 如權(quán)利要求9所述的方法,其中由所述一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)維護(hù)的 所述信息標(biāo)識(shí)客戶端興趣的不同狀態(tài),其中所述興趣的不同狀態(tài)包括所 述第一客戶端對(duì)特定路由選擇改變類型感興趣、所述第二客戶端對(duì)特定路 由選擇改變類型感興趣、所述第一和第二客戶端兩者都對(duì)特定路由選擇改 變類型感興趣,以及所述第一和第二客戶端兩者都不對(duì)特定路由選擇改變 類型感興趣。
12. 如權(quán)利要求11所述的方法,其中所述客戶端感興趣的不同狀態(tài)的 單個(gè)指示是針對(duì)所述第一和第二地址集合中的所有地址來(lái)維護(hù)的。
13. 如權(quán)利要求11所述的方法,其中所述客戶端興趣的不同狀態(tài)的指 示是針對(duì)所述第一和第二地址集合中的每個(gè)地址來(lái)維護(hù)的。
14. 一種在設(shè)備內(nèi)執(zhí)行的用于在所述設(shè)備內(nèi)分發(fā)路由選擇信息的方法,該方法包括 維護(hù)包括一個(gè)或多個(gè)客戶端感興趣的路由的路由依賴性的數(shù)據(jù)結(jié)構(gòu); 接收標(biāo)識(shí)特定路由的路由選擇更新;識(shí)別出所述一個(gè)或多個(gè)客戶端中沒(méi)有一個(gè)客戶端已經(jīng)預(yù)訂接收對(duì)應(yīng)于 所述特定路由的更新;識(shí)別出依賴于所述特定路由的第二特定路由;識(shí)別出所述一個(gè)或多個(gè)客戶端中的特定客戶端已經(jīng)預(yù)訂接收對(duì)應(yīng)于所 述第二特定路由的更新;以及響應(yīng)于所述識(shí)別出所述特定客戶端已經(jīng)預(yù)訂接收對(duì)應(yīng)于所述第二特定 路由的更新,而將對(duì)所述特定路由的所述更新通知給所述特定客戶端。
15. 如權(quán)利要求14所述的方法,包括識(shí)別出對(duì)應(yīng)于所述第二特定路由 的改變匹配所述特定客戶端感興趣的路由選擇改變類型;并且其中所述通知特定客戶端的步驟是響應(yīng)于所述識(shí)別出特定客戶端已經(jīng)預(yù)訂接收對(duì)應(yīng)于 所述第二特定路由的更新以及所述識(shí)別出對(duì)應(yīng)于所述第二特定路由的改變 匹配所述特定客戶端感興趣的路由選擇改變類型,來(lái)執(zhí)行的。
16. —種用于在設(shè)備內(nèi)分發(fā)路由選擇信息的裝置,該裝置包括 用于接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合和感興趣的路由選擇改變類型集合的裝置;用于維護(hù)一個(gè)或多個(gè)包括與所述地址集合和所述感興趣的路由選擇改 變類型集合相對(duì)應(yīng)的信息的數(shù)據(jù)結(jié)構(gòu)的裝置;用于接收特定路由更新的裝置;以及用于響應(yīng)于識(shí)別出所述特定路由更新既對(duì)應(yīng)于所述地址集合中的至少 一個(gè)地址又對(duì)應(yīng)于所述感興趣的路由選擇改變類型集合中的至少一個(gè)路由 選擇屬性來(lái)將所述特定路由更新通知給所述客戶端的裝置。
17. —種包含用于執(zhí)行用于在設(shè)備內(nèi)分發(fā)路由選擇信息的步驟的計(jì)算 機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述步驟包括-接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合和感 興趣的路由選擇改變類型集合;維護(hù)一個(gè)或多個(gè)包括與所述地址集合和所述感興趣的路由選擇改變類 型集合相對(duì)應(yīng)的信息的數(shù)據(jù)結(jié)構(gòu); 接收特定路由更新;以及響應(yīng)于識(shí)別出所述特定路由更新既對(duì)應(yīng)于所述地址集合中的至少一個(gè) 地址又對(duì)應(yīng)于所述感興趣的路由選擇改變類型集合中的至少一個(gè)路由選擇 屬性,來(lái)將所述特定路由更新通知給所述客戶端。
18. —種在路由器內(nèi)執(zhí)行的用于在所述路由器內(nèi)分發(fā)路由選擇信息的方法,該方法包括接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合; 識(shí)別出所述地址集合中的地址依賴于的至少一個(gè)依賴路由; 維護(hù)一個(gè)或多個(gè)包括對(duì)應(yīng)于所述地址集合和所述至少一個(gè)依賴路由的信息的數(shù)據(jù)結(jié)構(gòu);接收對(duì)應(yīng)于所述至少一個(gè)依賴路由中的特定路由的特定路由更新;以及響應(yīng)于識(shí)別出所述特定路由更新對(duì)應(yīng)于所述至少一個(gè)依賴路由中的所 述特定路由,來(lái)將所述特定路由更新通知給所述客戶端。
19. 如權(quán)利要求18所述的方法,其中所述識(shí)別出所述特定路由更新對(duì) 應(yīng)于所述至少一個(gè)依賴路由中的所述特定路由的步驟包括對(duì)所述一個(gè)或多 個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)查找操作以識(shí)別一個(gè)或多個(gè)條目,其中所述一 個(gè)或多個(gè)條目中的至少一個(gè)標(biāo)識(shí)所述客戶端對(duì)所述至少一個(gè)依賴路由的改 變感興趣。
20. —種包含用于執(zhí)行用于在設(shè)備內(nèi)分發(fā)路由選擇信息的步驟的計(jì)算 機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述步驟包括接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合; 識(shí)別出所述地址集合中的地址依賴于的至少一個(gè)依賴路由; 維護(hù)一個(gè)或多個(gè)包括對(duì)應(yīng)于所述地址集合和所述至少一個(gè)依賴路由的 信息的數(shù)據(jù)結(jié)構(gòu);接收對(duì)應(yīng)于所述至少一個(gè)依賴路由中的特定路由的特定路由更新;以及響應(yīng)于識(shí)別出所述特定路由更新對(duì)應(yīng)于所述至少一個(gè)依賴路由中的所 述特定路由,來(lái)將所述特定路由更新通知給所述客戶端。
21. 如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其中所述識(shí)別出所述特定 路由更新對(duì)應(yīng)于所述至少一個(gè)依賴路由中的所述特定路由的步驟包括對(duì)所 述一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)査找操作以識(shí)別一個(gè)或多個(gè)條目, 其中所述一個(gè)或多個(gè)條目中的至少一個(gè)標(biāo)識(shí)所述客戶端對(duì)所述至少一個(gè)依 賴路由的改變感興趣。
22. —種用于在設(shè)備內(nèi)分發(fā)路由選擇信息的裝置,該裝置包括 用于接收來(lái)自客戶端的指示所述客戶端感興趣的路由更新的地址集合的裝置;用于識(shí)別出所述地址集合中的地址依賴于的至少一個(gè)依賴路由的裝置;用于維護(hù)一個(gè)或多個(gè)包括對(duì)應(yīng)于所述地址集合和所述至少一個(gè)依賴路 由的信息的數(shù)據(jù)結(jié)構(gòu)的裝置;用于接收對(duì)應(yīng)于所述至少一個(gè)依賴路由中的特定路由的特定路由更新 的裝置;以及用于響應(yīng)于識(shí)別出所述特定路由更新對(duì)應(yīng)于所述至少一個(gè)依賴路由中 的所述特定路由來(lái)將所述特定路由更新通知給所述客戶端的裝置。
23. 如權(quán)利要求22所述的裝置,其中所述用于識(shí)別出所述特定路由更 新對(duì)應(yīng)于所述至少一個(gè)依賴路由中的所述特定路由的裝置包括用于對(duì)所述 一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)査找操作以識(shí)別一個(gè)或多個(gè)條目的裝 置,其中所述一個(gè)或多個(gè)條目中的至少一個(gè)標(biāo)識(shí)所述客戶端對(duì)所述至少一 個(gè)依賴路由的改變感興趣。
全文摘要
路由改變被處理和過(guò)濾,以向客戶端通知客戶端感興趣的那些路由選擇更新。在一種配置中,從客戶端接收到指示客戶端感興趣的路由更新的網(wǎng)絡(luò)地址集合和感興趣的路由選擇改變類型集合(203)。一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)據(jù)此被填充以該信息(210)。響應(yīng)于接收到路由更新,對(duì)數(shù)據(jù)結(jié)構(gòu)執(zhí)行一個(gè)或多個(gè)查找操作,以識(shí)別該特定路由是否是特定客戶端感興趣的路由,和/或依賴于該特定路由的任何路由是否是客戶端感興趣的(222)??蛻舳吮桓嬷信d趣的改變。在一個(gè)實(shí)施例中,路由改變類型也被與感興趣的路由選擇改變類型集合進(jìn)行匹配,并僅在感興趣的路由改變也匹配感興趣的路由選擇改變類型的情況下通知客戶端(213)。
文檔編號(hào)H04L12/56GK101133412SQ200480033679
公開(kāi)日2008年2月27日 申請(qǐng)日期2004年9月30日 優(yōu)先權(quán)日2003年12月10日
發(fā)明者保羅·亞瑟·延森, 林敏潔, 洛倫佐·維西薩諾, 雷尹·莫漢提 申請(qǐng)人:思科技術(shù)公司