專利名稱:Rpf多方可靠傳輸?shù)闹谱鞣椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)網(wǎng)絡(luò),更具體地說涉及用于在多方之間傳播信息的協(xié)議。
通過因特網(wǎng)的分組通信一般會涉及被稱為TCP的特定傳輸協(xié)議的使用。TCP向較高層應(yīng)用提供本質(zhì)上不由IP單獨提供的某些服務(wù)。例如,TCP保證消息的傳遞、保證將分組以其發(fā)送順序傳送到接收者應(yīng)用、提供流控制以防止接收者緩沖器溢出,而且當網(wǎng)絡(luò)流量條件將導致分組丟失時,TCP減緩分組的發(fā)送。
TCP協(xié)議假設(shè)單獨的結(jié)點對,其中一個是發(fā)送器,另一個是接收者。發(fā)送器和接收者可以彼此相距多個跳,而且作為同一TCP會話的一部分而運送的分組不需要總是經(jīng)過同一路徑。為了便于保證消息傳遞,發(fā)送器維護先前發(fā)送的分組的緩存,以允許必要的重發(fā)。
TCP是因特網(wǎng)的“主力軍”,為郵件應(yīng)用、web應(yīng)用等運輸流量。但是,TCP不能很好地服務(wù)于具有某些特性的應(yīng)用。例如,考慮數(shù)據(jù)庫更新傳播應(yīng)用。希望由一個被選擇的節(jié)點來向若干節(jié)點包括那些不是直接連接的節(jié)點傳播數(shù)據(jù)庫更新。需要被保證的消息傳遞是有序傳遞。還希望能夠向會話增加節(jié)點,并使得它們能夠接收會話開始以來所發(fā)送的所有信息。
這種被傳播的數(shù)據(jù)庫更新的一個具體的例子是使用BGP(邊界網(wǎng)關(guān)協(xié)議),從自治系統(tǒng)(AS)的邊界處的邊界路由器將路由信息更新傳播給AS內(nèi)部的路由器。用于向AS內(nèi)部傳播該信息的協(xié)議稱為內(nèi)部BGP或IBGP。使用IBGP協(xié)議的內(nèi)部節(jié)點必須獲得來自邊界路由器的路由更新。為了解決這一需要,當前的IBGP技術(shù)形成了在具有將要共享的更新的每個邊界路由器和每個內(nèi)部路由器之間的TCP連接的全網(wǎng)格??墒褂寐酚煞瓷淦骰虬盥?lián)(如BGP-4協(xié)議文獻所規(guī)定的那樣)來獲得TCP連接數(shù)量在某種程度上的減少。這些簡化造成了例如路由回路這樣的問題,而且TCP連接的數(shù)量可能還是很大。但是,使用大量TCP連接產(chǎn)生了其它問題。
一個重要的問題是每個邊界路由器必須單獨地緩沖每個單獨地用于重傳輸目的的TCP連接。每個TCP連接必須緩沖所有未確認的數(shù)據(jù)。TCP將維護單獨的重傳輸緩沖器,即使同樣的數(shù)據(jù)被發(fā)送到所有接收者。每個TCP連接還將需要額外的CPU處理和其它系統(tǒng)資源額外開銷。這對本地的高速存儲器和處理資源的使用是極低效而且麻煩的。
還存在網(wǎng)絡(luò)帶寬的極大浪費。多個TCP會話一般將在它們前往不同目標內(nèi)部節(jié)點的途中,在相同鏈路上運輸同樣的數(shù)據(jù)。因為TCP連接的雙方特性,中間節(jié)點不能很容易地從它們所支持的會話中抽取希望的數(shù)據(jù),而是需要它們自己的會話。
需要適用于向多個接收者傳播數(shù)據(jù)庫更新,同時有效率地使用存儲器、處理資源和網(wǎng)絡(luò)帶寬的傳輸協(xié)議。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了多方可靠傳輸協(xié)議以用于較高層應(yīng)用。單個的會話源通過傳播樹向多個接收者傳播數(shù)據(jù)庫更新。希望加入會話的節(jié)點通過訪問單播路由協(xié)議信息來選擇上游到源的路徑上的直接連接的節(jié)點,并向該上游鄰居發(fā)送“加入”消息。參加該方案的每個節(jié)點處理來自其直接連接的下游鄰居的重傳輸請求。被支持的應(yīng)用為潛在的重傳輸提供先前所傳輸?shù)男畔⒌拇鎯Α?br>
本發(fā)明的第一方面提供了一種用于操作所選擇的節(jié)點以在網(wǎng)絡(luò)中傳播數(shù)據(jù)庫更新的方法。所述方法包括標識參與傳輸層會話的一個或多個直接連接的鄰居節(jié)點;接收來自在所述所選擇的節(jié)點處運行的應(yīng)用的應(yīng)用數(shù)據(jù)單元;將所述應(yīng)用數(shù)據(jù)單元封裝在傳輸協(xié)議數(shù)據(jù)單元內(nèi);以及僅向所述所標識的一個或多個直接連接的鄰居節(jié)點發(fā)送所述傳輸協(xié)議數(shù)據(jù)單元,作為所述傳輸層會話的一部分。
本發(fā)明的第二方面提供了一種用于操作所選擇的節(jié)點來支持傳輸層會話的方法。所述方法包括標識在朝向傳輸層會話源的路徑上的直接連接的節(jié)點,所述直接連接的節(jié)點是所述路徑上的上游節(jié)點;接收來自所述上游節(jié)點的傳輸協(xié)議數(shù)據(jù)單元;從所述傳輸協(xié)議數(shù)據(jù)單元中抽取應(yīng)用數(shù)據(jù)單元;以及將所述應(yīng)用數(shù)據(jù)單元傳遞到在所述所選擇的節(jié)點處運行的應(yīng)用。
本發(fā)明的第三方面提供了一種用于操作所選擇的節(jié)點以支持具有至少3方的傳輸層會話的方法。所述方法包括標識朝向傳輸層會話源的路徑上的第一直接連接的節(jié)點;接收來自所述第一直接連接的節(jié)點的傳輸協(xié)議數(shù)據(jù)單元;將所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到作為所述傳輸層會話源和所述所選擇的節(jié)點的下游的第二直接連接的節(jié)點;在本地緩存中存儲所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容;接收來自所述第二直接連接的節(jié)點的重傳輸請求;以及通過從所述本地緩存獲取來響應(yīng)于所述請求而進行重傳輸。
參照本說明書的其余部分和附圖可獲得對本發(fā)明的特性和優(yōu)點的進一步理解。
圖1根據(jù)本發(fā)明的一個實施例,示出了向應(yīng)用逐跳傳播和傳遞數(shù)據(jù)庫內(nèi)容。
圖2根據(jù)本發(fā)明的一個實施例,示出了傳輸層模塊和其它路由器軟件組件之間的交互。
圖3根據(jù)本發(fā)明的一個實施例,示出了傳輸層模塊的內(nèi)部結(jié)構(gòu)。
圖4根據(jù)本發(fā)明的一個實施例,示出了應(yīng)用數(shù)據(jù)序列號的使用。
圖5根據(jù)本發(fā)明的一個實施例,示出了選擇性丟失重傳輸和良序應(yīng)用數(shù)據(jù)單元傳遞。
圖6根據(jù)本發(fā)明的一個實施例,示出了啞應(yīng)用數(shù)據(jù)單元的間開。
圖7根據(jù)本發(fā)明的一個實施例,示出了多方傳輸協(xié)議中過境路由器(transit router)的使用。
圖8根據(jù)本發(fā)明的一個實施例,示出了通過過境路由器的隧道穿越。
圖9根據(jù)本發(fā)明的一個實施例,示出了同步重定向。
圖10根據(jù)本發(fā)明的一個實施例,示出了過境路由器參與同步。
圖11A示出了根據(jù)本發(fā)明的一個實施例的網(wǎng)絡(luò)設(shè)備。
圖11B示出了可以如何在路由處理器和線路卡之間劃分本發(fā)明的功能。
具體實施例方式
參照有代表性的環(huán)境來描述本發(fā)明,所述有代表性的環(huán)境為采用公知協(xié)議例如IP、TCP、UDP等的節(jié)點(例如路由器)網(wǎng)格網(wǎng)絡(luò)。在一個實施例中,本發(fā)明所提供的傳輸協(xié)議向該網(wǎng)絡(luò)的節(jié)點提供可靠的數(shù)據(jù)庫傳播服務(wù)。該傳輸協(xié)議將被稱為“逆路徑轉(zhuǎn)發(fā)多方可靠傳輸(RMRT)”。每個RMRT會話建立在源路由器的單個服務(wù)器應(yīng)用和其中的每個都在接收路由器上的一組客戶端應(yīng)用之間。服務(wù)器和客戶端應(yīng)用可以是共同提交的申請中提到的內(nèi)部BGP下載器。
RMRT概況圖1示出了根據(jù)本發(fā)明一個實施例的按照RMRT的逐跳傳播和應(yīng)用傳遞。在圖1中,路由器102是會話源,并將數(shù)據(jù)庫更新傳播到在接收者路由器104、106和108處運行的客戶端。按照RMRT,源路由器102上的服務(wù)器應(yīng)用提供將以一系列應(yīng)用數(shù)據(jù)單元(ADU)傳輸?shù)臄?shù)據(jù)。服務(wù)器應(yīng)用產(chǎn)生的每個ADU與一個序列號相關(guān)聯(lián)。RMRT構(gòu)建傳輸協(xié)議數(shù)據(jù)單元(TPDU),它們是包含一個或多個ADU的分組。TPDU由參與RMRT會話的路由器逐跳傳播通過網(wǎng)絡(luò)。
按照RMRT,在正被描述的實施例中,所有用來傳播TPDU通過網(wǎng)絡(luò)的路由器還參與為RMRT會話中的接收者。另外,當一個參與路由器接收新TPDU時,它將所包含的ADU按順序傳遞給本地客戶端接收應(yīng)用。
如圖1的簡單例子所示,RMRT會話通過傳播樹來傳輸信息。每個RMRT參與者(除了源之外)在樹上具有一個上游鄰居,還可具有一個或多個下游鄰居。每個RMRT參與者都可以是用于多個關(guān)聯(lián)的上游端點。但是,每個RMRT接收者只有一個上游路由器。根據(jù)本發(fā)明的實施例,UDP(或某種其他不可靠的數(shù)據(jù)報協(xié)議)被用來在路由器之間傳播TPDU。優(yōu)選不可靠的數(shù)據(jù)報協(xié)議(與可靠的協(xié)議例如TCP相對)是因為RMRT包括它自己的重傳輸機制,下面將解釋。每個RMRT會話參與者可在多個下游接收者之間共享重傳輸緩沖空間,這是對使用多個TCP連接的一項重大改進。
在穩(wěn)定狀態(tài)工作期間,每個非源參與者執(zhí)行4項基本任務(wù)1.接收上游鄰居路由器發(fā)送的RMRT TPDU分組。
2.從TPDU抽取ADU。
3.將ADU傳遞給本地應(yīng)用。
4.構(gòu)建TPDU并將之傳播給樹上的下游鄰居。
傳播樹的連接性依賴于逆路徑轉(zhuǎn)發(fā)(RPF),這是一種通常用于多播路由的技術(shù)。希望加入RMRT會話并將其本身連接到所述會話的傳播樹的路由器依賴于單播路由協(xié)議信息來建立到源的連接。假設(shè)參與路由器運行本領(lǐng)域公知的單播路由協(xié)議例如IS-IS、OSPF或EIGRP。假設(shè)參與路由器例如通過預配置而知道會話源的IP地址。RMRT接收者使用單播路由協(xié)議信息來獲得到源的路徑以及該路徑上的下一跳路由器。TPDU的轉(zhuǎn)發(fā)將發(fā)生在該路徑上,只不過其方向與單播路由協(xié)議所看到的方向相反。這樣,作為朝向源的單播下一跳的路由器是RMRT傳播樹上的前一跳。
確定了朝向源的前一跳后,RMRT接收者接收所有的TPDU,并請求來自該路由器的所有重傳輸。RMRT接收者對前一跳的確定是動態(tài)的,并跟蹤了單播路由協(xié)議所提供的連接信息中的改變。同一RMRT會話中在不同前一跳之間的切換對ADU接收來說是透明的,因為參與會話的所有RMRT路由器都將ADU維護成在源路由器上初始指定的序列號映射。
TPDU的傳輸使用了UDP/IP最大努力(best-effort)數(shù)據(jù)報服務(wù)。當接收路由器缺失一個或多個TPDU時,由緊鄰的前一跳而非源來提供所有必需的重傳輸。
在一個實施例中,RMRT使用基于NAK的機制來請求重傳輸。RMRT不必為了能夠重傳輸ADU數(shù)據(jù)而緩沖它。相反,它可以依賴于下述駐留應(yīng)用,所述駐留應(yīng)用能夠在向之提供ADU的序列號時根據(jù)需要而再現(xiàn)所述ADU?;谔囟ㄓ趹?yīng)用的參數(shù),應(yīng)用本身可決定它為了服務(wù)于重傳輸而愿意維護的ADU序列歷史量。如果所述歷史量不足以重建所需的重傳輸分組,則RMRT可選擇后退到直接相連的鄰居之間的全數(shù)據(jù)庫同步。另外,為了提高效率,RMRT可維護它自己的以前發(fā)送的ADU的緩存。
軟件體系結(jié)構(gòu)圖2根據(jù)本發(fā)明的一個實施例,示出了RMRT模塊202和其他路由器軟件組件之間的交互。圖2示出了RMRT模塊202、應(yīng)用204、RMRT會話管理器(RSM)206、路由信息庫(RIB)208以及運行IGP例如OSPF、IS-IS等等的單播路由協(xié)議組件210。還存在與路由器的UDP棧212和TCP棧214的交互。
下面將描述的應(yīng)用程序接口(API)被用于RMRT模塊202和應(yīng)用204之間的交互。所述API用來交換ADU,并使得RMRT可請求以前傳輸?shù)腁DU以用于重傳輸和同步。RMRT通過RIB 208來得知到源的路徑,而RIB 208由單播協(xié)議組件210填充。RSM 206提供控制信道服務(wù)來與直接相連的鄰居路由器交換會話控制信息,包括加入和剪枝(prune)消息。TPDU本身經(jīng)由UDP棧212來發(fā)送和接收。RSM 206使用TCP棧214來維護控制信道。
圖3示出了RMRT模塊202的內(nèi)部結(jié)構(gòu)。RPF鄰居跟蹤組件302與RIB 208交互以確定朝向RMRT會話源的上游路徑上的直接相連節(jié)點。當然,RIB先前已由在接收者路由器上運行的單播路由協(xié)議填充了。成員資格跟蹤組件304處理通過RSM控制信道來自下游直接相連節(jié)點的加入和剪枝消息。這一所接收的信息被用來維護下游成員資格數(shù)據(jù)庫,即所接收的TPDU將被轉(zhuǎn)發(fā)到的節(jié)點。
TPDU接收組件306處理傳入數(shù)據(jù),并將之傳遞給應(yīng)用,同時還處理丟失的TPDU的檢測,并通過作出任何必需的重傳輸請求來進行響應(yīng)。TPDU傳播組件308將所接收的TPDU傳播到由成員資格跟蹤組件304獲得的、作出訂閱的下游直接相連鄰居。從所接收的ADU信息來重構(gòu)所傳輸?shù)腡PDU,但是一些實現(xiàn)方式通??赡軆H僅是拷貝所接收的TPDU的內(nèi)容,并重寫IP源地址和目的地地址。TPDU傳播組件308還響應(yīng)來自下游鄰居的重傳輸請求。ADU緩存310存儲最近接收的ADU,它們將被TPDU傳播組件所需要。ADU緩存310可以不是嚴格必需的,因為可從應(yīng)用204獲得ADU,但ADU緩存310對于緩存特定數(shù)量的最近傳輸?shù)腁DU來說是更加優(yōu)化的。
標識出所述RPF上游鄰居后,RMRT模塊202繼續(xù)通知該鄰居需要會話數(shù)據(jù)。RPF鄰居跟蹤組件302調(diào)用RSM 206來上行發(fā)送加入控制消息到上游鄰居。這一發(fā)送使用了RSM控制信道。成員資格跟蹤組件304接收來自下游路由器的加入和剪枝消息,并維護TPDU將要傳播到的鄰居的列表。
RPF鄰居跟蹤組件302持續(xù)監(jiān)視RIB 208,以總是知道哪個節(jié)點是朝向源的單播下一跳鄰居(RMRT傳播樹上的前一跳)。單播路由協(xié)議所發(fā)現(xiàn)的網(wǎng)絡(luò)拓撲改變可能會導致朝向會話源的下一跳的改變。當存在這種改變時,RPF鄰居跟蹤組件302調(diào)用RSM 206來發(fā)送剪枝消息到舊的單播下一跳鄰居,以表明不再需要來自先前的下一跳的會話轉(zhuǎn)發(fā)。另外,RPF鄰居跟蹤組件302調(diào)用RSM 206來發(fā)送加入消息到新的單播下一跳節(jié)點。
將可認識到,對于會話源,ADU只是從應(yīng)用獲得的,并不傳遞給該應(yīng)用。另外,會話源并不選擇上游鄰居,而是像任何其他會話參與者那樣跟蹤下游成員資格。
序列號對于所有從會話源傳播到參與接收者的ADU,使用一致的序列號空間。在會話源,服務(wù)器應(yīng)用產(chǎn)生的每個ADU被所述應(yīng)用或RMRT分配一個新的序列號。序列號和ADU之間的映射被包含在所構(gòu)建的TPDU分組中,并被傳送通過會話接收者。當接收路由器將ADU傳遞給駐留的客戶端應(yīng)用時,也傳送相關(guān)聯(lián)的序列號。接收應(yīng)用維護這一映射來輔助RMRT的運行。傳遞ADU到客戶端應(yīng)用后,RMRT模塊可通過指定ADU的序列號來請求回該ADU以用于重傳輸。
ADU序列號是從有限空間中分配的,該空間在RMRT會話的生命期中可能會耗盡。RMRT通過允許序列空間重卷(wrap)來處理耗盡的可能性。
為了避免重卷后共享相同序列號的多個ADU之間的歧義,遠在重用序列號之前就解除ADU和序列號之間的關(guān)聯(lián)。這一關(guān)聯(lián)解除發(fā)生在當向新的ADU分配從舊的ADU起,跨越序列空間半程的序列號時的最接近處。
圖4根據(jù)本發(fā)明的一個實施例,示出了序列號的關(guān)聯(lián)解除處理。黑點表示ADU。旋轉(zhuǎn)圓表示序列號空間。平直線上(圓外)的ADU表示舊ADU,不再對這些ADU維護序列號關(guān)聯(lián)。一旦分配了圓頂部的序列號,圓底部的ADU的序列號就退休。按照這種方式,確保了單個序列號在任何時刻只表示單個ADU。這一關(guān)聯(lián)解除處理的發(fā)生跨越參與RMRT會話的所有路由器。
ADU跨越參與會話的所有路由器的一致的序列號標定使得RMRT組件避免了不必要的ADU緩沖。一旦將ADU傳遞給本地應(yīng)用,RMRT就可以通過該應(yīng)用提供的API,使用ADU序列號作為鍵值來獲取它。因此,為了支持TPDU傳播和重傳輸,可以從應(yīng)用數(shù)據(jù)庫獲得所有的ADU。
可靠的良序傳遞不像TCP,由于UDP不包括可靠性機制,因此RMRT規(guī)定了在UDP上面建立可靠性機制。圖5示出了根據(jù)本發(fā)明的一個實施例的重傳輸。TPDU接收組件306跟蹤所接收的ADU序列號。任何缺失的序列號都被標記為丟失,并引發(fā)對上游鄰居的重傳輸請求。TPDU接收組件306通過發(fā)送封裝在UDP數(shù)據(jù)報內(nèi)的否定性確認(NAK)來請求重傳輸。
當下一個TPDU分組被正確地接收,并注意到所接收的ADU序列號中的間距時,檢測到缺失的ADU。這是通過將最近的TPDU中的起始ADU序列號與最近正確接收的ADU序列號進行比較來實現(xiàn)的。
每個NAK分組包括缺失的ADU序列號范圍的列表。接收到NAK后,上游鄰居中止當前ADU傳播,優(yōu)先進行缺失ADU的重傳輸。可構(gòu)建新的TPDU來用于重傳輸。所述ADU可來自ADU緩存310,或者可向所述應(yīng)用來請求它們。當已重傳輸所有的缺失ADU時,從當前ADU的停止點處恢復當前ADU的傳輸。
為了提高靜止期間丟失檢測的速度,發(fā)送啞TPDU。啞TPDU不包含實際的ADU數(shù)據(jù),只傳送最后發(fā)送的ADU序列號,以使得接收者可意識到它們已經(jīng)錯過了一個或多個先前的ADU。
圖6根據(jù)本發(fā)明的一個實施例,示出了靜止期間開始后啞ADU的傳輸間開。當靜止期間繼續(xù)時,傳輸速率隨時間指數(shù)下降。常規(guī)地傳輸正常TPDU期間不發(fā)送啞TPDU。每個傳輸路由器獨立地控制啞TPDU的傳輸速率。
一些實施例還可包括低頻周期性肯定性確認機制。從下游路由器接收到NAK可用來推導出在其之前下游當前已收到所有ADU的最早序列號。但是,當所有ADU都被正確接收時,不發(fā)出NAK。使用肯定性確認可以使得會話參與者安全地從其緩存丟棄已知正確接收的ADU。
另外,當接收到表明靜止期間前最后發(fā)送的ADU被正確接收的肯定性確認時,不再需要進行啞TPDU發(fā)送。因此,肯定性確認(ACK)可由每個會話成員以可配置的頻率向其上游鄰居發(fā)送。每個ACK包含下述第一個ADU的ADU序列號,直到所述ADU之前的所有會話ADU都已被正確接收。只是在存在來自上游鄰居的TPDU活動,并且未發(fā)出NAK時才進行周期性ACK的發(fā)送。
數(shù)據(jù)庫同步接收者RMRT會話可能會錯過這樣的ADU,其中不能通過指定其序列號來請求所述ADU的重傳輸。所述ADU要么已解除與其序列號的關(guān)聯(lián),要么已從上游路由器數(shù)據(jù)庫中刪除。例如,這可能發(fā)生在兩種情形中1.當新接收者加入會話,并且會話已活動了足夠長的時間以致可能已經(jīng)存在沒有關(guān)聯(lián)序列號的ADU時。
2.如果網(wǎng)絡(luò)在會話期間被分開,則從源斷開連接的接收者不再能接收ADU。如果這一分開持續(xù)得足夠長,以致將耗盡一半的序列庫,則將解除缺失的ADU的序列號關(guān)聯(lián)。
本發(fā)明的實施例規(guī)定了RMRT數(shù)據(jù)庫同步過程,以使這兩種情形中的接收者與會話保持一樣的新。所述同步過程由上游路由器調(diào)用,這發(fā)生在當該上游路由器接收到來自下游路由器的重傳輸請求時,其中,由于所請求的ADU與它們的序列號的關(guān)聯(lián)解除,所述上游路由器不能服務(wù)于所述下游路由器。同步期間,進行完全的應(yīng)用數(shù)據(jù)庫傳輸,而不干擾常規(guī)的ADU傳播。
同步過程依賴于RMRT組件和本地應(yīng)用之間的協(xié)作。同步是通過傳輸會話ADU數(shù)據(jù)庫的完整內(nèi)容來實現(xiàn)的。該數(shù)據(jù)庫包括所有不再與序列號相關(guān)聯(lián),但是仍被需要來重建應(yīng)用數(shù)據(jù)庫的當前全局狀態(tài)的ADU。這些ADU仍被所述應(yīng)用良序存儲著,盡管沒有了它們的序列號。該數(shù)據(jù)庫還包括仍具有序列號關(guān)聯(lián),并因此由所述RMRT組件或應(yīng)用與其關(guān)聯(lián)序列號一起存儲的ADU。同步后,恢復中的路由器將具有由會話源在會話生命期中曾發(fā)起的所有ADU。這些ADU按照它們最初被產(chǎn)生的順序,被傳送并傳遞給本地應(yīng)用和恢復中的路由器。在ADU數(shù)據(jù)之外,現(xiàn)有的ADU序列號關(guān)聯(lián)也被傳輸,以使得恢復中的路由器可以成為完全的會話參與者。
同步期間,所述應(yīng)用被配置來在RMRT模塊的指示下,在其本身的控制下發(fā)送所述數(shù)據(jù)庫內(nèi)容。為了輔助這一控制,RMRT模塊和應(yīng)用之間的應(yīng)用編程接口(API)包括兩個特殊的上行調(diào)用(up-call)。一個上行調(diào)用啟動遍及該數(shù)據(jù)庫的漫游。所述漫游由一個句柄標識,以在由于對不同下游客戶端同時發(fā)生同步會話而可能并行發(fā)生的多個漫游之間進行區(qū)分。一旦建立了漫游,就調(diào)用另一個上行調(diào)用來從該應(yīng)用的數(shù)據(jù)庫獲得下一個ADU。每次調(diào)用這一調(diào)用時,所述應(yīng)用都按照會話源最初產(chǎn)生的順序來提供下一個ADU。對于在應(yīng)用數(shù)據(jù)庫中仍具有序列號關(guān)聯(lián)的ADU,還將該序列號提供給RMRT。
還可以提供一些上行調(diào)用來輔助同一漫游內(nèi)的回卷(rewinding)和快速前進(fast forwarding)。對回卷和快速前進的支持使得RMRT組件可以避免緩沖在漫游期間獲得的ADU數(shù)據(jù),直到它確定所述數(shù)據(jù)已經(jīng)被正確接收并被傳遞給接收同步的下游路由器上的應(yīng)用為止。
在接收同步的路由器處,ADU的處理非常類似于正常會話參與期間的處理。本質(zhì)上唯一的差別在于在同步會話的早期部分,傳遞給應(yīng)用的ADU將不與序列號關(guān)聯(lián)。當同步過程進入仍有序列號與ADU關(guān)聯(lián)的上游路由器的數(shù)據(jù)庫部分時,序列號將變?yōu)榭捎?。多種技術(shù)可用來在同步過程期間實際傳輸數(shù)據(jù)庫內(nèi)容。例如,如果上述回卷前進上行調(diào)用可用,則可使用兩個路由器之間的專用RMRT會話來傳輸數(shù)據(jù)。這最小化了在支持同步的上游路由器上傳輸緩沖額外開銷的需求。如果沒有回卷能力,則可使用TCP連接。
流和擁塞控制希望與RMRT結(jié)合使用流控制和擁塞控制。在一個實施例中,RMRT采用數(shù)據(jù)報擁塞控制協(xié)議(DCCP),該協(xié)議在Kohler,et al.,“DatagramCongestion Control Protocol”,IETF Internet Draft,March 2003中進行了描述,其內(nèi)容通過引用而被整體包含于此,用于各種目的。DCCP是一種輕量級協(xié)議,其向不需要可靠性,或不提供本身的可靠性機制的應(yīng)用提供擁塞控制和流控制。RMRT可采用DCCP而不是UDP。DCCP建立雙向的信息流。逆路徑(從下游到上游)可由RMRT組件用來傳送否定性確認。另外,有利的是DCCP具有最小的頭部和協(xié)議狀態(tài)額外開銷。
ADU緩存310可被利用來在流控制或擁塞控制需要時,適應(yīng)相同ADU的多次傳輸。為此以及為了重傳輸而使用ADU緩存310是相當有效的,因為該緩存在所有下游接收者之間共享。緩存大小依賴于對所述應(yīng)用的請求的影響而可配置。
應(yīng)用編程接口RMRT向所述應(yīng)用提供下述調(diào)用·RMRT_ADU_notify(new_ADU_count),其由源路由器上的服務(wù)器應(yīng)用用來向RMRT組件通知新可用的ADU。RMRT可返回將被分配給第一個ADU的序列號,或者該應(yīng)用本身可提供它。
應(yīng)用向RMRT提供下述上行調(diào)用·app_ADU_request(sequence_no)由RMRT用來向應(yīng)用請求特定的ADU。應(yīng)用返回ADU,或者如果所請求的ADU序列號不在應(yīng)用所維護的歷史中,則返回錯誤。
·app_ADU_receive(ADU,sequence_no)由作為會話接收者的路由器上的RMRT用來將正確接收的ADU傳遞給客戶端應(yīng)用。
·app_sync_parent_init()由RMRT用來通知應(yīng)用,表明它正在啟動與下游鄰居的新的同步過程。應(yīng)用返回一個句柄,RMRT對與該同步過程相關(guān)的所有后續(xù)調(diào)用都應(yīng)使用該句柄。
·app_sync_parent_done(sync_handle)由RMRT用來通知應(yīng)用,表明同步過程已結(jié)束,并且它可以丟棄任何關(guān)聯(lián)狀態(tài)。
·app_sync_parent_ADU_next(sync_handle)由RMRT在數(shù)據(jù)庫同步過程期間用來獲得應(yīng)用數(shù)據(jù)庫中的下一個ADU。應(yīng)用返回ADU,如果該ADU與一個序列號關(guān)聯(lián)的話,則還返回該ADU的序列號。如果同步過程到達了數(shù)據(jù)庫的末尾,則不返回ADU。
·app_sync_parent_ADU_rewind(sync_handle,ADU_count)由RMRT在數(shù)據(jù)庫同步過程期間指示應(yīng)用,表明需要根據(jù)多個ADU的漫游中的回卷。
·app_sync_parent_ADU_fwd(sync_handle,ADU_count)由RMRT在數(shù)據(jù)庫同步過程期間指示應(yīng)用,表明需要根據(jù)多個ADU的漫游中的前向跳轉(zhuǎn)(forward jump)。
·app_sync_child_reset()由RMRT用來通知應(yīng)用,表明它將要接收數(shù)據(jù)庫同步。
·app_sync_child_done(history_base)由RMRT用來通知應(yīng)用同步過程完成,并且提供在其之后沒有發(fā)生關(guān)聯(lián)解除的ADU序列號。
RMRT會話管理器(RSM)RMRT會話管理器(RSM)206負責協(xié)調(diào)屬于同一應(yīng)用的一組RMRT會話(一個或多個)。從網(wǎng)絡(luò)中使用RMRT的特定路由器的角度看,駐留應(yīng)用可以是多個會話的發(fā)起者,以及多個遠程發(fā)起的會話的成員。不同路由器上的應(yīng)用發(fā)起會話的能力提供了對通過RMRT的多路通信的支持。單個路由器中的應(yīng)用發(fā)起多個RMRT會話的能力提供了對具有不同等級的信息的通信的支持。協(xié)調(diào)屬于同一應(yīng)用的會話具有兩個優(yōu)點1.協(xié)調(diào)使得可更有效地使用路由器和網(wǎng)絡(luò)資源。具體地說a.RMRT講者需要與它直接相連的鄰居交換會話控制信息。這一交換中使用了基于TCP的RSM可靠控制連接。屬于同一應(yīng)用的不同RMRT會話的控制消息共享每一對直接相連的參與路由器之間的RSM連接。
b.應(yīng)用可使用大量RMRT會話來對具有不同接收者成員資格的信息分級。當接收路由器正在通過同一RPF鄰居加入兩個或更多會話時,用來攜帶TPDU的UDP分組可用來復用屬于不同會話的TPDU。
c.與TPDU復用類似,相鄰路由器可將屬于不同會話的NAK捆綁在同一UDP分組中。事實上,一對鄰居之間朝向相反方向的會話的TPDU和NAK可被組合在同一分組中。
d.當路由器重新啟動或從網(wǎng)絡(luò)故障恢復時,它可能需要同步它的應(yīng)用數(shù)據(jù)庫的內(nèi)容。在具有許多RMRT會話的應(yīng)用中,可能會通過同一RPF鄰居獲得多于一個的同步會話。正如同通過RSM控制連接來實現(xiàn)共享,可在兩個路由器之間建立單個同步TCP連接,以傳輸屬于多個同步會話的數(shù)據(jù)。
2.協(xié)調(diào)多個會話可實現(xiàn)動態(tài)網(wǎng)絡(luò)配置a.RSM提供了一種hello協(xié)議,其可實現(xiàn)直接相連鄰居的自動發(fā)現(xiàn)。應(yīng)用可選擇手動指定有效鄰居的列表,或通過RSM來發(fā)現(xiàn)它們。
b.RSM可由發(fā)起會話的路由器用來向潛在接收者公告該會話的存在。將有關(guān)會話的知識泛濫到所有潛在接收者,這些潛在接收者然后可決定是否加入。發(fā)起會話的路由器可與會話公告一起傳播特定于應(yīng)用的會話描述。會話描述可由潛在接收者用來確定它們是否有興趣接收該會話。
每個使用RSM和RMRT的應(yīng)用都應(yīng)選擇公知的RSM TCP控制端口以及公知的TPDU UDP目的地端口。所述TCP和UDP端口用來在使用RMRT的不同應(yīng)用之間解復用,并使得運行相同應(yīng)用的相鄰路由器可在它們之間進行對話。
使用多個RMRT會話的應(yīng)用應(yīng)能對它們尋址。RSM和RMRT使用由兩項信息構(gòu)成的公共會話標識機制1.發(fā)起會話的路由器的IP地址。
2.發(fā)起會話的路由器上的駐留應(yīng)用分配的會話ID。該ID用來將該會話與同一路由器上的應(yīng)用發(fā)起的其他會話區(qū)分開來。
過境路由器RMRT被設(shè)計成將數(shù)據(jù)庫在路由器網(wǎng)絡(luò)中可靠地傳播,每個所述路由器都參與為會話接收者。但是,根據(jù)本發(fā)明的實施例,RMRT可被擴展來允許不希望接收會話數(shù)據(jù)的路由器仍可通過作為過境路由器來支持在該網(wǎng)絡(luò)中實現(xiàn)RMRT。
RMRT過境路由器具有的軟件組件結(jié)構(gòu)類似于上面已經(jīng)示出并描述的結(jié)構(gòu),但是與RMRT會話參與者相比存在一些差別·由于過境路由器不是常規(guī)會話成員,因此它只在一個全下游參與者通過它來加入時才參與會話。當沒有下游成員需要會話數(shù)據(jù)轉(zhuǎn)發(fā)時,過境路由器不加入。
·在RMRT過境路由器中,駐留程序?qū)DU數(shù)據(jù)不感興趣。因此,所接收的ADU不會被傳遞給該應(yīng)用,因此也不過通過它來重新獲得所述ADU。
·RMRT過境路由器依賴于它的本地緩存來存儲需要向下游傳播的ADU。任何需要但不存在于緩存中的ADU都需要向上游路由器請求。
·RMRT過境路由器不執(zhí)行同步雙親的服務(wù),因為它不存儲完整的會話數(shù)據(jù)庫。因此它將需要同步的下游路由器重定向為從更上游的完全參與者來獲得該同步。
圖7示出了涉及過境路由器的使用的簡單情形。存在會話源702、接收者704、過境路由器706以及兩個附加接收者708和710。
下面的事件序列會發(fā)生1.接收者704與源702相鄰并直接加入它,而接收者708和710向RMRT過境路由器706發(fā)送會話的加入。
2.過境路由器706意識到它應(yīng)該轉(zhuǎn)發(fā)所述會話,并將所述加入通過接收者704而朝向源發(fā)送。
3.接收者704如同會接受常規(guī)成員的加入那樣接受來自過境路由器706的加入,并開始轉(zhuǎn)發(fā)TPDU。
4.過境路由器706傳播TPDU,并可能將所包含的ADU存儲在它自己的緩存中。
5.接收到第一個TPDU后,接收者708和710注意到它們錯過了在它們加入會話前發(fā)起的早先的會話ADU。因此它們發(fā)送NAK到過境路由器706,表明它需要重傳輸?shù)腁DU。
6.過境路由器706本地沒有存儲所請求的ADU,因為駐留應(yīng)用未在接收數(shù)據(jù)。因此它記錄來自每個下游接收者的缺失的ADU的范圍,并發(fā)送NAK到接收者704來請求所述ADU。
7.接收者704從它的本地應(yīng)用數(shù)據(jù)庫再現(xiàn)所述ADU,并在TPDU中將它們發(fā)送給過境路由器706。
8.過境路由器706將所述ADU傳播給接收者708和710。
接收者708和710現(xiàn)在已加入了進來,并繼續(xù)正常地參與會話。如下處理TPDU丟失1.接收者708遇到了TPDU丟失。當下一個TPDU到來時,它意識到存在缺失的ADU,并發(fā)出NAK到過境路由器706。
2.過境路由器706接收到NAK,由于它最近傳播了ADU,因此所述ADU也存儲在本地RMRT緩存中。過境路由器使用所緩存的ADU來創(chuàng)建TPDU,并發(fā)送到接收者708。
上述例子示出了過境路由器如何對它的上游鄰居以及下游成員表現(xiàn)得如同常規(guī)參與者一樣。事實上,任何數(shù)量的RMRT過境路由器和常規(guī)參與者可以任何順序混合在RMRT會話源和接收者之間。對于RPF鄰居改變來說也不需要任何特殊的處理。當過境路由器本身改變了它從其處接收會話的鄰居時,以及當過境路由器的下游參與者轉(zhuǎn)而通過一個過境路由器加入或離開該過境路由器時都是如此。
對于存儲在過境路由器的RMRT緩存中的數(shù)據(jù)量的控制是在過境路由器本身和網(wǎng)絡(luò)上的存儲器資源,以及過境路由器和它的上游鄰居之間的處理資源二者之間的折中。讓下游成員請求過境路由器的緩存中不存在的ADU的代價是過境路由器必需與它的上游鄰居通信以獲得該ADU。
在過境路由器處接收NAK和上述周期性ACK(肯定性確認)可有助于減小本地ADU緩存大小。當過境路由器通過NAK和周期性ACK確認它所有的下游成員都已接收到特定ADU之前的所有ADU時,它在自己的周期性上游ACK中公告該ADU序列號。
在剛剛描述的例子中,過境路由器具有通過它而連接到會話的多個下游會話參與者。使得過境路由器接收TPDU分組并為下游成員而復制它們,而且處理來自下游的NAK,這樣可改進傳播的可擴展性。但是,如果在RMRT會話中,過境路由器具有通過它而加入的單個下游成員,則在通信中涉及過境路由器僅僅是引入了額外開銷。
當只有單個下游成員通過過境路由器加入會話時,過境路由器可以指示它的上游鄰居發(fā)送TPDU到該下游加入者,而沒有涉及任何過境路由器的傳輸層動作。這一情形示出在圖8中。
在圖8中,存在源802、兩個過境路由器804和806以及兩個接收者808和810。過境路由器806只有一個路由器810是通過它而加入的。與此相對比,過境路由器804有接收者808和過境路由器806是通過它而加入的。因此使得過境路由器804接收并轉(zhuǎn)發(fā)會話數(shù)據(jù)是有利的。對于過境路由器806,簡單地隧道穿越它是有利的。隧道穿越在加入過程中啟動,并自適應(yīng)于成員資格和網(wǎng)絡(luò)改變。
考慮下述場景,其開始于圖8的示例性網(wǎng)絡(luò)中兩個接收者之一加入會話之前1.接收者808通過過境路由器804加入會話。此時接收者810尚未加入會話。
2.過境路由器804確定由于接收者808是唯一通過它加入的成員,因此TPDU應(yīng)該隧道穿越它。它聯(lián)系它的RPF上游鄰居(源802)以加入會話。在加入時,它指定了TPDU應(yīng)該直接發(fā)送(即不涉及過境路由器804的傳輸層動作)到接收者808。
3.源802確認所述加入,并通知過境路由器804,表明TPDU將由它自己發(fā)起(即不會從更上游發(fā)起,并且僅僅是隧道穿越過境路由器804的上游鄰居)。
4.過境路由器804確認接收者808的加入,并通知它說TPDU將由源而不是過境路由器804發(fā)送。
接收者808現(xiàn)在加入了會話,并直接從源802接收TPDU。來自接收者808的NAK也直接發(fā)送到源802。這一通信中過境路由器804的涉及僅僅是像任何其他普通數(shù)據(jù)分組那樣轉(zhuǎn)發(fā)TPDU和NAK。
現(xiàn)在,接收者810啟動并決定加入會話。步驟如下1.接收者810發(fā)送加入到過境路由器806。
2.過境路由器806確定接收者810是通過它加入的唯一成員,并決定隧道傳送TPDU和NAK。它通過過境路由器804加入會話,指示它將TPDU直接發(fā)送到接收者810。
3.過境路由器804接收到過境路由器806的加入,現(xiàn)在確定存在兩個通過它的下游加入者(接收者808和過境路由器806)。因此它決定開始執(zhí)行用于該會話的RMRT過境路由器的功能。
a.過境路由器804指示源802,表明TPDU將不再發(fā)送到接收者808,而是發(fā)送到過境路由器804本身。
b.過境路由器804指示源802,表明它不再直接從源802接收TPDU,而是從過境路由器804本身接收TPDUc.過境路由器804響應(yīng)過境路由器806的加入,指定TPDU將由過境路由器804發(fā)送。
4.過境路由器806接收加入確認,·并通知接收者810,表明它將從過境路由器804接收TPDU。
此時,會話轉(zhuǎn)發(fā)到達了圖8所示的狀態(tài)。過境路由器804作為過境路由器參與到會話中,因為它有多于一個的下游參與者。會話通過過境路由器806在過境路由器804和接收者810之間隧道傳送,因為過境路由器806只有單個下游成員。
或者,過境路由器決定何時隧道傳送數(shù)據(jù)穿越它,以及何時參與會話的下游成員的閾值數(shù)量可被設(shè)置為大于1。過境路由器可指示它的上游鄰居隧道穿越到多個下游成員。
過境路由器的下游路由器可向過境路由器請求下述ADU的重傳輸,所述ADU在完全參與會話的上游路由器的應(yīng)用數(shù)據(jù)庫中不再與序列號相關(guān)聯(lián)。當過境路由器嘗試從上游恢復這些ADU時,它將會被通知說需要RMRT同步過程。但是,工作為錯過了所述ADU的路由器的上游鄰居的RMRT過境路由器不能是同步雙親,也不能提供完整的會話數(shù)據(jù)庫。因此,過境路由器將下游路由器重定向為從朝向會話源的路徑上第一個完全參與的路由器獲得同步。
圖9示出了在圖7的過境路由器場景中同步重定向是如何運行的。采用來啟動同步過程的步驟如下1.接收者710重新啟動,具有空應(yīng)用數(shù)據(jù)庫。它發(fā)送NAK到過境路由器706,請求會話中迄今為止的所有ADU。
2.過境路由器706在它的緩存中只有最近的ADU。因此它將所述NAK上游傳播到接收者704,表明需要所有ADU。
3.接收者704接收所述NAK,但是由于會話已經(jīng)存在了很長時間,因此它的數(shù)據(jù)庫中存在不再有序列號關(guān)聯(lián)的ADU。因此它通過RSM控制連接來指示過境路由器706,表明它愿意提供同步服務(wù)。
4.過境路由器706接收來自接收者704的同步要約,并將它繼續(xù)轉(zhuǎn)發(fā)到接收者710。
5.接收者710直接聯(lián)系接收者704,并同步它的數(shù)據(jù)庫。
除了所述重定向步驟之外,接收者704和接收者710之間的同步連接建立以及信息傳輸保持為與它們好像直接相連一樣。
如果網(wǎng)絡(luò)被分割然后合攏,則需要同步的下游成員的過境路由器的重定向可能會變得相當?shù)托?。這一低效可通過允許過境路由器主動參與同步過程來消除。
這一場景參考圖10進行了圖示。在圖10中,存在源1002、3個過境路由器1004、1006和1008以及6個接收者1010、1012、1014、1016、1018和1020。例如考慮源1002和過境路由器1004之間的鏈路的長期失敗的影響。當連接恢復時,如果該鏈路出現(xiàn)故障已有足夠長的時間,則所有6個接收者都需要被同步。過境路由器1004、1006和1008的正常行為都將是重定向所有的接收者來從上游成員獲得同步。這將使得所有恢復中的接收者從源1002進行同步。缺點是1.源路由器1002現(xiàn)在發(fā)起了6個同步會話。這需要相當?shù)奶幚砗痛鎯ζ髻Y源。
2.源1002和所述接收者之間的鏈路將必需多次傳送同步數(shù)據(jù)。具體地說,源1002和過境路由器1004之間的鏈路上的網(wǎng)絡(luò)帶寬將被浪費,因為相同的數(shù)據(jù)將傳送6次。
本發(fā)明的實施例提供了一種解決方案,其允許具有多個下游同步請求者的過境路由器主動轉(zhuǎn)發(fā)同步會話。過境路由器可通過簡單地終止來自多個下游成員的請求,并發(fā)起它自己的上游請求來轉(zhuǎn)發(fā)同步會話。當建立用于同步的TCP連接時,過境路由器僅僅是將它在上游連接中接收的數(shù)據(jù)拷貝到所有的下游連接。
在圖10的網(wǎng)絡(luò)中,過境路由器1006和1008都會接收來自下游接收者的3個同步請求。過境路由器1006和1008不是將這些請求上游轉(zhuǎn)發(fā)到過境路由器1004,而是可以終止這些請求,并發(fā)起它們自己的到過境路由器1004的請求。由于過境路由器1004現(xiàn)在只接收兩個同步請求(來自過境路由器1006和1008),因此它可以決定它不值得參與,并只是將它們上游轉(zhuǎn)發(fā)到源?,F(xiàn)在,源1002只有兩個下游同步接收者,而過境路由器1006和1008每一個都具有3個同步接收者,獲得了更具可擴展性的方案。
上述方案的一個考慮是需要同步的各個接收路由器可能在時間上錯開它們的請求。例如,來自接收者1012的請求到達過境路由器1006的時間可能比來自過境路由器1010的請求晚一秒鐘的若干分之一。一種方案是延遲同步請求通過過境路由器的傳播。但是,在具有多個過境級別的網(wǎng)絡(luò)中,所述延遲將會積累,影響了恢復時間。
優(yōu)選的方案是允許先前已經(jīng)向上游轉(zhuǎn)發(fā)了同步請求的過境路由器中斷已轉(zhuǎn)發(fā)的會話,并通過它自己重新啟動該會話,以使得所重啟的會話可被共享。在中斷已轉(zhuǎn)發(fā)的會話之前,優(yōu)選地調(diào)查該會話的狀態(tài),以使得不會中斷已前進到通過預定點的會話。
網(wǎng)絡(luò)設(shè)備細節(jié)和分布式體系結(jié)構(gòu)圖11示出了可用于實現(xiàn)本發(fā)明的網(wǎng)絡(luò)設(shè)備1100。線路卡1102包括用于耦合到物理介質(zhì)的網(wǎng)絡(luò)接口。還可在線路卡1102中發(fā)現(xiàn)轉(zhuǎn)發(fā)情報。僅示出了兩塊線路卡1102,但是應(yīng)當理解實際上在同一網(wǎng)絡(luò)設(shè)備1100中可存在大量線路卡。線路卡1102由高速主干互連以傳輸分組。路由處理器1106負責控制平面(plane)功能。路由處理器1106具有到高速主干1104的相對低速的連接。
本發(fā)明的實施例的功能可在路由處理器1106和線路卡1102之間劃分,如圖11B所示。一般地說,在圖11B中,控制組件由路由處理器1106實現(xiàn),而ADU的緩存和轉(zhuǎn)發(fā)以及確認機制由線路卡1102處理。例如,路由處理器1106可實現(xiàn)RPF鄰居跟蹤組件302、成員資格跟蹤組件304、到應(yīng)用204的接口以及TPDU轉(zhuǎn)發(fā)控制。路由處理器1106還實現(xiàn)上述同步過程。
TPDU接收組件306、ADU緩存310和TPDU傳播組件308可在每個線路卡1102上實現(xiàn)。線路卡1102還負責重傳輸。每個RMRT會話容宿在工作為到上游直接相連的鄰居的接口的線路卡上。該線路卡維護用于RMRT會話的ADU緩存310。將向下游傳播的TPDU被傳輸?shù)街苯舆B接到發(fā)出訂閱的下游鄰居的線路卡。類似地,肯定性和否定性確認在面向下游的線路卡處接收,并傳輸?shù)饺菟迣⒃谄涮幪幚砘蛑欣^到上游鄰居的RMRT會話的線路卡,根據(jù)需要而定。RMRT因此可實現(xiàn)在分布式轉(zhuǎn)發(fā)體系結(jié)構(gòu)的上下文內(nèi),其中分組一般不是由路由處理器直接處理,而是保持在線路卡上進行處理。
路由處理器1106的一部分功能可由包含存儲在程序存儲器1108中的指令的軟件實現(xiàn)。程序存儲器1108只是可存儲實現(xiàn)本發(fā)明的實施例時使用的軟件的計算機可讀存儲介質(zhì)的一個例子。其他例子例如包括硬盤、CD-ROM、DVD-ROM、閃存等等。計算機可讀存儲介質(zhì)的另一個例子是攜帶軟件穿過網(wǎng)絡(luò)的信號。線路卡1102可包括它們自己的處理器功能,其可類似地實現(xiàn)為軟件。
應(yīng)理解到這里所描述的例子和實施例只用于進行說明,考慮到它們,對于本領(lǐng)域內(nèi)的普通技術(shù)人員來說可作出各種修改和改變,這些修改和改變應(yīng)包含在本申請的精神和范圍之內(nèi),且被包含在所附權(quán)利要求的范圍及其完全的等同物的范圍之內(nèi)。
權(quán)利要求
1.一種用于操作所選擇的節(jié)點以在網(wǎng)絡(luò)中傳播數(shù)據(jù)庫更新的方法,所述方法包括標識參與傳輸層會話的一個或多個直接連接的鄰居節(jié)點;接收來自在所述所選擇的節(jié)點處運行的應(yīng)用的應(yīng)用數(shù)據(jù)單元;將所述應(yīng)用數(shù)據(jù)單元封裝在傳輸協(xié)議數(shù)據(jù)單元內(nèi);以及僅向所述所標識的一個或多個直接連接的鄰居節(jié)點發(fā)送所述傳輸協(xié)議數(shù)據(jù)單元,作為所述傳輸層會話的一部分。
2.如權(quán)利要求1所述的方法,其中所述標識操作包括接收來自希望開始參與所述傳輸層會話的直接連接的鄰居節(jié)點的加入消息;接收來自不再希望參與所述傳輸層會話的直接連接的鄰居節(jié)點的剪枝消息。
3.如權(quán)利要求1所述的方法,其中所述接收操作包括向所述應(yīng)用數(shù)據(jù)單元指定序列號。
4.如權(quán)利要求1所述的方法,其中所述所選擇的節(jié)點是用于所述傳輸層會話的源節(jié)點。
5.如權(quán)利要求1所述的方法,其中所述傳輸協(xié)議數(shù)據(jù)單元由所述一個或多個所標識的鄰居節(jié)點傳播到其它節(jié)點。
6.一種用于操作所選擇的節(jié)點來支持傳輸層會話的方法,所述方法包括標識在朝向傳輸層會話源的路徑上的直接連接的節(jié)點,所述直接連接的節(jié)點是所述路徑上的上游節(jié)點;接收來自所述上游節(jié)點的傳輸協(xié)議數(shù)據(jù)單元;從所述傳輸協(xié)議數(shù)據(jù)單元中抽取應(yīng)用數(shù)據(jù)單元;以及將所述應(yīng)用數(shù)據(jù)單元傳遞到在所述所選擇的節(jié)點處運行的應(yīng)用。
7.如權(quán)利要求6所述的方法,其中所述標識操作包括基于路由信息庫(RIB),確定從所述所選擇的節(jié)點朝向所述傳輸層會話源的路徑。
8.如權(quán)利要求6所述的方法,還包括在接收所述傳輸協(xié)議數(shù)據(jù)單元之前,向所述上游節(jié)點發(fā)送加入消息。
9.如權(quán)利要求6所述的方法,其中所述抽取操作包括從所述傳輸協(xié)議數(shù)據(jù)單元中抽取與所述應(yīng)用數(shù)據(jù)單元相關(guān)聯(lián)的序列號,所述傳遞操作包括將所述序列號傳遞給所述應(yīng)用。
10.如權(quán)利要求6所述的方法,還包括標識所述上游節(jié)點之外的至少一個直接連接的節(jié)點作為下游節(jié)點;將所述傳輸層數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到所述下游節(jié)點。
11.如權(quán)利要求10所述的方法,其中所述標識操作包括接收來自所述下游節(jié)點的加入消息。
12.如權(quán)利要求10所述的方法,還包括接收來自所述下游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸請求;從所述應(yīng)用獲取所述應(yīng)用數(shù)據(jù)單元;以及將所述應(yīng)用數(shù)據(jù)單元重傳輸?shù)剿鱿掠喂?jié)點。
13.如權(quán)利要求10所述的方法,還包括接收來自所述下游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸請求;將所述請求轉(zhuǎn)發(fā)到所述上游節(jié)點;接收來自所述上游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸;以及將所述重傳輸轉(zhuǎn)發(fā)到所述下游節(jié)點。
14.如權(quán)利要求6所述的方法,還包括接收來自下游節(jié)點的加入消息,所述下游節(jié)點是朝向所述傳輸會話源的所述路徑上的除所述直接連接的節(jié)點之外的其它直接連接的節(jié)點;從所述應(yīng)用獲取所述傳輸會話的所有應(yīng)用數(shù)據(jù)單元;將所述傳輸會話的所有應(yīng)用數(shù)據(jù)單元轉(zhuǎn)發(fā)到所述下游節(jié)點。
15.一種用于操作所選擇的節(jié)點以支持具有至少3方的傳輸層會話的方法,所述方法包括標識朝向傳輸層會話源的路徑上的第一直接連接的節(jié)點;接收來自所述第一直接連接的節(jié)點的傳輸協(xié)議數(shù)據(jù)單元;將所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到作為所述傳輸層會話源和所述所選擇的節(jié)點的下游的第二直接連接的節(jié)點;在本地緩存中存儲所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容;接收來自所述第二直接連接的節(jié)點的重傳輸請求;以及通過從所述本地緩存獲取來響應(yīng)于所述請求而進行重傳輸。
16.如權(quán)利要求15所述的方法,還包括接收來自所述第二直接連接的節(jié)點的重傳輸請求;將所述請求轉(zhuǎn)發(fā)到所述第一直接連接的節(jié)點;接收來自所述第一直接連接的節(jié)點的重傳輸數(shù)據(jù);以及響應(yīng)于所述請求,將所述重傳輸數(shù)據(jù)轉(zhuǎn)發(fā)到所述第二直接連接的節(jié)點。
17.一種用于操作所選擇的節(jié)點以在網(wǎng)絡(luò)中傳播數(shù)據(jù)庫更新的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括用于標識參與傳輸層會話的一個或多個直接連接的鄰居節(jié)點的代碼;用于接收來自在所述所選擇的節(jié)點處運行的應(yīng)用的應(yīng)用數(shù)據(jù)單元的代碼;用于將所述應(yīng)用數(shù)據(jù)單元封裝在傳輸協(xié)議數(shù)據(jù)單元內(nèi)的代碼;用于僅向所述所標識的一個或多個直接連接的鄰居節(jié)點發(fā)送所述傳輸協(xié)議數(shù)據(jù)單元,作為所述傳輸層會話的一部分的代碼;以及存儲所述代碼的計算機可讀存儲介質(zhì)。
18.如權(quán)利要求17所述的裝置,其中所述用于標識操作的代碼包括用于接收來自希望開始參與所述傳輸層會話的直接連接的鄰居節(jié)點的加入消息的代碼;用于接收來自不再希望參與所述傳輸層會話的直接連接的鄰居節(jié)點的剪枝消息的代碼。
19.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述用于接收操作的代碼用于包括向所述應(yīng)用數(shù)據(jù)單元指定序列號的代碼。
20.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述所選擇的節(jié)點是用于所述傳輸層會話的源節(jié)點。
21.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述傳輸協(xié)議數(shù)據(jù)單元由所述一個或多個所標識的鄰居節(jié)點傳播到其它節(jié)點。
22.一種用于操作所選擇的節(jié)點來支持傳輸層會話的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括用于標識在朝向傳輸層會話源的路徑上的直接連接的節(jié)點的代碼,所述直接連接的節(jié)點是所述路徑上的上游節(jié)點;用于接收來自所述上游節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的代碼;用于從所述傳輸協(xié)議數(shù)據(jù)單元中抽取應(yīng)用數(shù)據(jù)單元的代碼;以及用于將所述應(yīng)用數(shù)據(jù)單元傳遞到在所述所選擇的節(jié)點處運行的應(yīng)用的代碼。
23.如權(quán)利要求22所述的計算機程序產(chǎn)品,其中所述用于標識操作的代碼包括用于基于路由信息庫(RIB),確定從所述所選擇的節(jié)點朝向所述傳輸層會話源的路徑的代碼。
24.如權(quán)利要求22所述的計算機程序產(chǎn)品,還包括用于在接收所述傳輸協(xié)議數(shù)據(jù)單元之前,向所述上游節(jié)點發(fā)送加入消息的代碼。
25.如權(quán)利要求22所述的計算機程序產(chǎn)品,其中所述用于抽取操作的代碼包括用于從所述傳輸協(xié)議數(shù)據(jù)單元中抽取與所述應(yīng)用數(shù)據(jù)單元相關(guān)聯(lián)的序列號的代碼,所述用于傳遞操作的代碼包括用于將所述序列號傳遞給所述應(yīng)用的代碼。
26.如權(quán)利要求22所述的計算機程序產(chǎn)品,還包括用于標識所述上游節(jié)點之外的至少一個直接連接的節(jié)點作為下游節(jié)點的代碼;用于將所述傳輸層數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到所述下游節(jié)點的代碼。
27.如權(quán)利要求26所述的計算機程序產(chǎn)品,其中所述用于標識操作的代碼包括用于接收來自所述下游節(jié)點的加入消息的代碼。
28.如權(quán)利要求26所述的計算機程序產(chǎn)品,還包括用于接收來自所述下游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸請求的代碼;用于從所述應(yīng)用獲取所述應(yīng)用數(shù)據(jù)單元的代碼;以及用于將所述應(yīng)用數(shù)據(jù)單元重傳輸?shù)剿鱿掠喂?jié)點的代碼。
29.如權(quán)利要求26所述的計算機程序產(chǎn)品,還包括用于接收來自所述下游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸請求的代碼;用于將所述請求轉(zhuǎn)發(fā)到所述上游節(jié)點的代碼;用于接收來自所述上游節(jié)點的所述應(yīng)用數(shù)據(jù)單元的重傳輸?shù)拇a;以及用于將所述重傳輸轉(zhuǎn)發(fā)到所述下游節(jié)點的代碼。
30.如權(quán)利要求22所述的計算機程序產(chǎn)品,還包括用于接收來自下游節(jié)點的加入消息的代碼,所述下游節(jié)點是朝向所述傳輸會話源的所述路徑上的除所述直接連接的節(jié)點之外的其它直接連接的節(jié)點;用于從所述應(yīng)用獲取所述傳輸會話的所有應(yīng)用數(shù)據(jù)單元的代碼;用于將所述傳輸會話的所有應(yīng)用數(shù)據(jù)單元轉(zhuǎn)發(fā)到所述下游節(jié)點的代碼。
31.一種用于操作所選擇的節(jié)點以支持具有至少3方的傳輸層會話的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括用于標識朝向傳輸層會話源的路徑上的第一直接連接的節(jié)點的代碼;用于接收來自所述第一直接連接的節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的代碼;用于將所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到作為所述傳輸層會話源和所述所選擇的節(jié)點的下游的第二直接連接的節(jié)點的代碼;用于在本地緩存中存儲所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容的代碼;用于接收來自所述第二直接連接的節(jié)點的重傳輸請求的代碼;用于通過從所述本地緩存獲取來響應(yīng)于所述請求而進行重傳輸?shù)拇a;以及用于存儲所述代碼的計算機可讀存儲介質(zhì)。
32.如權(quán)利要求31所述的計算機程序產(chǎn)品,還包括用于接收來自所述第二直接連接的節(jié)點的重傳輸請求的代碼;用于將所述請求轉(zhuǎn)發(fā)到所述第一直接連接的節(jié)點的代碼;用于接收來自所述第一直接連接的節(jié)點的重傳輸數(shù)據(jù)的代碼;以及用于響應(yīng)于所述請求,將所述重傳輸數(shù)據(jù)轉(zhuǎn)發(fā)到所述第二直接連接的節(jié)點的代碼。
33.一種用于操作所選擇的節(jié)點以在網(wǎng)絡(luò)中傳播數(shù)據(jù)庫更新的裝置,所述裝置包括用于標識參與傳輸層會話的一個或多個直接連接的鄰居節(jié)點的裝置;用于接收來自在所述所選擇的節(jié)點處運行的應(yīng)用的應(yīng)用數(shù)據(jù)單元的裝置;用于將所述應(yīng)用數(shù)據(jù)單元封裝在傳輸協(xié)議數(shù)據(jù)單元內(nèi)的裝置;以及用于僅向所述所標識的一個或多個直接連接的鄰居節(jié)點發(fā)送所述傳輸協(xié)議數(shù)據(jù)單元,作為所述傳輸層會話的一部分的裝置。
34.一種用于操作所選擇的節(jié)點來支持傳輸層會話的裝置,所述裝置包括用于標識在朝向傳輸層會話源的路徑上的直接連接的節(jié)點的裝置,所述直接連接的節(jié)點是所述路徑上的上游節(jié)點;用于接收來自所述上游節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的裝置;用于從所述傳輸協(xié)議數(shù)據(jù)單元中抽取應(yīng)用數(shù)據(jù)單元的裝置;以及用于將所述應(yīng)用數(shù)據(jù)單元傳遞到在所述所選擇的節(jié)點處運行的應(yīng)用的裝置。
35.一種用于操作所選擇的節(jié)點以支持具有至少3方的傳輸層會話的裝置,所述裝置包括用于標識朝向傳輸層會話源的路徑上的第一直接連接的節(jié)點的裝置;用于接收來自所述第一直接連接的節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的裝置;用于將所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到作為所述傳輸層會話源和所述所選擇的節(jié)點的下游的第二直接連接的節(jié)點的裝置;用于在本地緩存中存儲所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容的裝置;用于接收來自所述第二直接連接的節(jié)點的重傳輸請求的裝置;以及用于通過從所述本地緩存獲取來響應(yīng)于所述請求而進行重傳輸?shù)难b置。
36.一種用于操作所選擇的節(jié)點以在網(wǎng)絡(luò)中傳播數(shù)據(jù)庫更新的裝置,所述裝置包括用于執(zhí)行指令的處理器;以及其上存儲有所述指令的存儲器設(shè)備,所述指令包括用于標識參與傳輸層會話的一個或多個直接連接的鄰居節(jié)點的代碼;用于接收來自在所述所選擇的節(jié)點處運行的應(yīng)用的應(yīng)用數(shù)據(jù)單元的代碼;用于將所述應(yīng)用數(shù)據(jù)單元封裝在傳輸協(xié)議數(shù)據(jù)單元內(nèi)的代碼;以及用于僅向所述所標識的一個或多個直接連接的鄰居節(jié)點發(fā)送所述傳輸協(xié)議數(shù)據(jù)單元,作為所述傳輸層會話的一部分的代碼。
37.一種用于操作所選擇的節(jié)點來支持傳輸層會話的裝置,所述裝置包括用于執(zhí)行指令的處理器;以及其上存儲有所述指令的存儲器設(shè)備,所述指令包括用于標識在朝向傳輸層會話源的路徑上的直接連接的節(jié)點的代碼,所述直接連接的節(jié)點是所述路徑上的上游節(jié)點;用于接收來自所述上游節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的代碼;以及用于將所述應(yīng)用數(shù)據(jù)單元傳遞到在所述所選擇的節(jié)點處運行的應(yīng)用的代碼。
38.一種用于操作所選擇的節(jié)點以支持具有至少3方的傳輸層會話的裝置,所述裝置包括用于執(zhí)行指令的處理器;以及其上存儲有所述指令的存儲器設(shè)備,所述指令包括用于標識朝向傳輸層會話源的路徑上的第一直接連接的節(jié)點的代碼;用于接收來自所述第一直接連接的節(jié)點的傳輸協(xié)議數(shù)據(jù)單元的代碼;用于將所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容轉(zhuǎn)發(fā)到作為所述傳輸層會話源和所述所選擇的節(jié)點的下游的第二直接連接的節(jié)點的代碼;用于在本地緩存中存儲所述傳輸協(xié)議數(shù)據(jù)單元的內(nèi)容的代碼;用于接收來自所述第二直接連接的節(jié)點的重傳輸請求的代碼;以及用于通過從所述本地緩存獲取來響應(yīng)于所述請求而進行重傳輸?shù)拇a。
全文摘要
較高層應(yīng)用所使用的多方可靠傳輸協(xié)議。單個的會話源通過傳播樹來向多個接收者傳播數(shù)據(jù)庫更新。希望加入會話的節(jié)點通過訪問單播路由協(xié)議信息來選擇上游到源的路徑上的直接連接的節(jié)點,并向該上游鄰居發(fā)送“加入”消息。參加該方案的每個節(jié)點處理來自其直接連接的下游鄰居的重傳輸請求。被支持的應(yīng)用為潛在的重傳輸提供先前所傳輸?shù)男畔⒌拇鎯Α?br>
文檔編號H04L12/56GK1695355SQ03824683
公開日2005年11月9日 申請日期2003年9月24日 優(yōu)先權(quán)日2002年10月28日
發(fā)明者艾斯德爾·庫韋拉斯, 洛倫佐·維西薩諾 申請人:思科技術(shù)公司