專利名稱:用于確定對等路由器的能力和配置的ttl探詢技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及計算機網(wǎng)絡(luò),更具體地說,涉及在路由器上執(zhí)行的路由協(xié)議的對等建立處理期間,高效地發(fā)現(xiàn)路由器的能力。
背景技術(shù):
計算機網(wǎng)絡(luò)是用于在諸如計算機等節(jié)點之間傳輸數(shù)據(jù)的互連的通信鏈路和子網(wǎng)絡(luò)(子網(wǎng))在地理上的分布式集合。有從局域網(wǎng)(LAN)到廣域網(wǎng)(WAN)的很多種計算機網(wǎng)絡(luò)。節(jié)點一般根據(jù)諸如傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)等預(yù)定義的協(xié)議,通過交換數(shù)據(jù)的離散分組或消息來進行通信。在本上下文中,協(xié)議由一組定義了節(jié)點彼此交互的方式的規(guī)則組成。TCP/IP體系結(jié)構(gòu)是公知的,其在Prentice-Hall于1996年出版的Andrew S.Tanenbaum的Computer Networks,3rdEdition中有所描述。
計算機網(wǎng)絡(luò)還可通過諸如路由器等中間節(jié)點互連,以擴展每個網(wǎng)絡(luò)的有效“大小”。由于對互連的計算機網(wǎng)絡(luò)的大系統(tǒng)的管理是繁重的,因此較小的計算機網(wǎng)絡(luò)的群組可被維護為自治系統(tǒng)或路由域。路由域內(nèi)的網(wǎng)絡(luò)一般由傳統(tǒng)的“域內(nèi)”路由器耦合在一起。但是還希望增加能夠交換數(shù)據(jù)的節(jié)點數(shù)量;在此情形下,執(zhí)行域間路由協(xié)議的域間路由器被用來互連各種自治系統(tǒng)的節(jié)點。
域間路由協(xié)議的示例是邊界網(wǎng)關(guān)協(xié)議版本4(BGP-4),其通過在系統(tǒng)的相鄰域間路由器之間交換路由和可到達性信息來執(zhí)行路由。BGP-4路由協(xié)議是公知的,并在以下文獻中被詳細描述Request For Comments(RFC)1771,by Y.Tekhter and T.Li(1995);Internet Draft<draft-ietf-idr-bgp4-20.txt>;A Border Gateway Protocol 4(BGP-4)by Y.Tekhter and T.Li(April2003);和Addison Wesley Publishing Company于1992年出版的R.Perlman的Interconnections,Bridges and Routers的323-329頁,這些文獻的全部公開內(nèi)容通過引用被包含于此。
被配置為執(zhí)行BGP-4協(xié)議的域間路由器在這里被稱為BGP路由器,其執(zhí)行包括路由消息傳輸?shù)鹊母鞣N路由功能。鄰接是在被選擇用于交換路消息和抽取網(wǎng)絡(luò)拓撲的相鄰(對等)路由器之間形成的關(guān)系。但是,在傳送這種消息之前,BGP對等體合作建立路由器之間的邏輯“對等”連接(會話)。BGP-4通過TCP連接操作可靠的傳輸協(xié)議。每個對等路由器上執(zhí)行的TCP進程根據(jù)涉及TCP分組或報文段數(shù)據(jù)結(jié)構(gòu)的交換的傳統(tǒng)的“3次握手”協(xié)定來建立TCP連接。TCP協(xié)議和TCP連接的建立在ComputerNetworks,3rdEdition,具體是在其521-542頁中有所描述,該文獻全文通過引用而被包含于此。
圖1是TCP報文段100的格式的部分概要框圖。TCP報文段包括TCP頭部110,該頭部包括包含16位源端口號的源端口字段112和包含16位目的地端口號的目的地端口字段114。源端口號被接收對等路由器(即BGP接收器)用來答復(fù)發(fā)送對等路由器(即BGP發(fā)送器)發(fā)出的TCP報文段100。序列號字段116包含報文段中第一數(shù)據(jù)字節(jié)的序列號,確認號字段118包含表明接收器期望接收的下一序列號的值。注意,字段118中包含的值僅當(dāng)確認控制位(ACK120)被斷言后才有效。除了ACK位120以外,TCP報文段110還包括其他控制位,例如同步位(SYN 122)和結(jié)束位(FIN 124),后者標(biāo)記從發(fā)送器傳送的數(shù)據(jù)的結(jié)束。通過發(fā)送具有斷言的FIN位124的TCP報文段,完成TCP連接的顯式終止(關(guān)斷)。
為了建立TCP連接,對等路由器上的TCP進程必須在彼此的初始序列號上同步。這是在交換攜帶SYN 122控制位和初始序列號116的連接建立報文段中完成的。同步需要每個對等路由器根據(jù)3次握手協(xié)定發(fā)送其自己的初始序列號并接收來自另一對等路由器的肯定(確認)。所得到的TCP連接由字段112、114中包含的端口號和對等路由器的IP地址標(biāo)識。IP地址包含在報文段的IP頭部中。
圖2是IP頭部200的格式的部分概要示意圖,包括包含發(fā)送實體(例如發(fā)送或發(fā)起對等路由器)的IP源地址的源地址字段220和包含接收實體(例如接收對等路由器)的IP目的地地址的目的地地址字段230,等等。此外,IP頭部200包括8位存活時間(TTL)字段210,該字段包含指示允許報文段(消息)在網(wǎng)絡(luò)中存留的最長時間的參數(shù)。對于很多路由協(xié)議(包括在不可靠傳輸上運行或者實現(xiàn)TCP之外的可靠傳輸?shù)膮f(xié)議),在路由消息中,TTL參數(shù)被設(shè)置為1。這表明鄰居在同一子網(wǎng)上,并且在對等路由器之間僅有一“跳”的距離。
BGP路由器一般傳送這樣的BGP消息,該消息的TTL對于所有直接連接的對等體都是1。然后,對于所有的傳入BGP消息,TTL可以被檢查以確保其為0。即,如果BGP路由器正與路由對等體通信并且消息的TTL被設(shè)置為1,則當(dāng)消息到達路由器時TTL應(yīng)該是0(或1),因為消息不應(yīng)當(dāng)穿過多于一個路由器到達其他子網(wǎng)。注意,對于BGP,TTL并不總是被設(shè)置為1,因為鄰接可以跨越多個“跳”(對于多跳BGP)。在后一情形下,TTL被設(shè)置為2、3或任意多跳計數(shù)。
一個問題是,可能會有發(fā)起于幾跳之外的針對BGP路由器的攻擊,以例如用多于路由器處理能力的數(shù)據(jù)來使路由器過載。通常,路由器上的認證處理執(zhí)行認證(例如MD5或IP-SEC)操作來確保它從它的對等體處接收的數(shù)據(jù)是正確的。在BGP路由處理的情形下,TCP進程認證消息的TCP頭部。但是,這些認證操作需要額外的處理,并且從而消耗諸如中央處理單元(CPU)等路由器資源。
雖然額外的處理確實保證了不會發(fā)送無效數(shù)據(jù),但是由于例如允許攻擊者發(fā)送“假”消息,所以這種額外處理將路由器暴露給進一步的攻擊。認證處理被強迫認證這些消息并且在它們認證失敗時將其丟棄。但是,如果攻擊者發(fā)送給路由器的信息多于路由器可以處理的,則攻擊者可能獲得其所希望的效果,即強迫路由器重啟。即,假數(shù)據(jù)消息過載強迫路由器重啟,從而攻擊者能夠穿透路由器或僅僅是干擾服務(wù)。此外,路由器可以執(zhí)行過濾操作來確保路由協(xié)議消息的TTL是1或0(而不是某些其他的值)。這種過濾允許路由器迅速丟棄假消息,因為檢查TTL字段的值比必須對消息執(zhí)行加密型認證操作來確定其是否為假更容易。
但是,來自子網(wǎng)外部的攻擊者可通過例如將TTL設(shè)置為與從其到路由器的跳數(shù)相一致的值來發(fā)送路由器將會接受的消息。在轉(zhuǎn)發(fā)消息的每個路由器處,TTL字段被減一。當(dāng)消息到達該子網(wǎng)/鏈路時,它看上去就像是源自于該鏈路上一樣。換言之,在路由器處接收的消息將具有與源自于該鏈路上的路由器的每個其他消息相同的TTL(即,1)。因此,如果攻擊者能夠確定它到路由器有多少跳,它就能成功地發(fā)起對路由器的攻擊。攻擊者還能編造消息的IP頭部中的源地址,以使得看上去消息是源自于目的地本地子網(wǎng)。
對該問題的一種解決方案是根據(jù)BGP TTL安全破解(hack)(BTSH),將TTL參數(shù)設(shè)置為高值,例如254。BTSH是公知的,并且在V.Gill et al.(May 2003)的題為The BGP TTL Security Hack(BTSH)的Internet Draft<draft-gill-btsh-02.txt>中被詳細描述,其全文通過引用而被包含于此。BTSH被設(shè)計為保護BGP[RFC1771]基礎(chǔ)設(shè)施不受基于CPU使用的攻擊,并且最終提供保護BGP路由器不受攻擊的過程。例如,在直接連接路由器的情形下,BTSH過程指定將BGP連接的TCP TTL設(shè)置為范圍255-254內(nèi)的值。
在路由對等體接收路由消息時,它檢查TTL字段以確認TTL值不小于254,而不是0或1。這確保了消息源自于與路由器相同的子網(wǎng)而且不是從其他子網(wǎng)轉(zhuǎn)發(fā)來的。這類似于發(fā)送TTL為1的消息并且在接收對等體處確認它是0。這里,TTL被發(fā)送時值為255,而路由對等體在接收時確認值是254。
普遍認為,將BTSH(以及TTL為255)用于被傳送的BGP路由消息是更安全的。因此,希望在BGP路由器處接收的傳入BGP消息對于直接連接的對等體來說具有值為254的TTL。對BGP路由器的攻擊可能會源自于連接對等體的鏈路上,以具有值為254的TTL。如果攻擊者從子網(wǎng)外部攻擊路由器,則很難(如果不是不可能的話)將TTL值為254的消息導(dǎo)向路由器,因為攻擊者可設(shè)置的TTL參數(shù)的最大值是255。當(dāng)具有該值的消息從子網(wǎng)外部被轉(zhuǎn)發(fā)時,它在到達路由器時將具有小于254的值。
通過僅接受具有值為253或更少的TTL的消息,多跳BGP可使用與上述相同的方法,其中TTL參數(shù)的值對應(yīng)于BGP對等體之間的跳數(shù)。因此,路由器可被配置為由于TTL值而丟棄(不接受)消息。該解決方案大大限制了可以對路由器的攻擊的發(fā)源地;例如,這種攻擊可能需要從子網(wǎng)/鏈路的本地站點發(fā)起,而這一般是很難做到的,因為攻擊者必須與路由器在地理上位于同一區(qū)域。
該解決方案的一個問題涉及更新路由器以支持BTSH。更新路由器的一個方法是通過使用例如傳統(tǒng)配置命令來“手工”配置。不僅路由器需要這種手工配置,路由器的對等體也必須同時被配置以支持BTSH。具體而言,支持用于BGP會話的BTSH的路由器配置一般發(fā)生在全部對等體的基礎(chǔ)上。在潛在的數(shù)千對等會話上配置BTSH選項是很耗時的,而且還增加了配置不匹配的可能性,這種不匹配會阻礙對等會話的建立。在作為對等體的兩個路由器上同時協(xié)調(diào)更新也是很困難的。因此需要一種技術(shù)來自動地檢測對等體是否支持和正在使用BTSH選項。
更新的另一種方法是通過對等路由器之間的能力交換。例如,一旦TCP連接被建立,BGP對等路由器就交換消息,以開啟和確認與該連接相關(guān)聯(lián)的各種參數(shù)。BGP路由器交換的初始消息是“OPEN”消息,其開啟對等體之間的BGP通信會話。在OPEN消息被交換之后,KEEPALIVE消息被BGP路由器周期性地發(fā)出,以通知其對等路由器它是“活的”和活動的。OPEN消息數(shù)據(jù)結(jié)構(gòu)主要是一種便于路由器在開始相鄰對等體關(guān)系時標(biāo)識自身的手段。KEEPALIVE和OPEN消息的格式和功能在RFC 1771和Internet Draft<draft-ietf-idr-bgp4-20.txt>中被描述。
在典型的能力交換中,會話必須在任何能力協(xié)商繼起之前被建立。例如,由于BGP在TCP上運行,因此TCP會話必須在任何路由協(xié)議能力可被協(xié)商之前建立。一般很難在會話建立之后,“在路由協(xié)議中”協(xié)商諸如TTL參數(shù)等路由協(xié)議能力,因為會話(過程)已經(jīng)進行了很多。在此上下文中,術(shù)語“在路由協(xié)議中”表示在路由協(xié)議消息(分組)實現(xiàn)中有一個可被使用的字段(“行為”)。因此,需要“在路由協(xié)議外”的技術(shù)來在發(fā)起路由協(xié)議對等會話之前實現(xiàn)高效的能力協(xié)商。
發(fā)明內(nèi)容
本發(fā)明通過提供允許路由器高效地確定鄰居(對等)路由器的能力和配置的探詢技術(shù),克服了現(xiàn)有技術(shù)中的缺點。此外,該技術(shù)使得鄰接的對等路由器就能夠在路由器之間建立路由會話之前,“在協(xié)議之外”協(xié)商能力,所述協(xié)議例如是路由協(xié)議。在本上下文中,術(shù)語“在協(xié)議之外”表示在協(xié)議分組(消息)實現(xiàn)中沒有可用于協(xié)商能力的字段。此外,本發(fā)明的技術(shù)消除了對手工配置路由器以支持特定能力和在都支持該能力但是沒有意識到該能力的路由器網(wǎng)絡(luò)中正確地互操作的需要。
一般地說,本發(fā)明的技術(shù)允許(發(fā)起或接收)路由器通過發(fā)送包括能力的第一預(yù)定值的初始消息,或者通過關(guān)注由對等路由器發(fā)起的消息中的能力值,來自動地確定對等路由器支持哪種操作能力模式。在會話發(fā)起的情形下,如果路由器接收到來自對等路由器的對初始消息的肯定確認,則它確定對等路由器支持使用新的操作能力模式的消息交換。但是,如果路由器接收到來自對等路由器的對初始消息的否定確認,或者沒有確認,則它判斷對等路由器不支持新的操作能力模式。于是,發(fā)起路由器通過重新發(fā)送具有能力的第二預(yù)定值的初始消息來“切換”到舊的操作能力模式。
在示例性實施例中,路由器被配置為執(zhí)行邊界網(wǎng)關(guān)協(xié)議版本4(BGP)路由協(xié)議,并且所述能力是存活時間(TTL)參數(shù)。此外,TTL參數(shù)能力的第一預(yù)定值由BGP TTL安全破解(BTSH)定義。具體而言,發(fā)起路由器通過發(fā)送TTL為255的BGP消息然后等待來自對等路由器的響應(yīng),來自動地確定對等路由器支持哪種操作TTL模式。如果該消息被接收到并且被肯定確認,則發(fā)起路由器確定對等路由器支持使用新BTSH模式的消息交換,發(fā)送值為255的TTL的安全益處被自動實現(xiàn)。
但是,如果發(fā)起路由器接收到否定確認(或者在預(yù)定時間內(nèi)根本沒接收到響應(yīng)),則它斷定對等路由器未被更新到新的BTSH操作模式,并且通過重新發(fā)送具有等于1的TTL的第二預(yù)定值的初始消息(以及后續(xù)消息)來切換到普通模式。更具體而言,路由器使用等于1或跳數(shù)(在BGP多跳的情形下)的TTL值來重新發(fā)起利用普通模式的會話/鄰接建立。因此,本發(fā)明的技術(shù)允許新舊模式的路由器實現(xiàn)之間的互操作,而無需額外的配置。
此后,響應(yīng)于更新到新的BTSH操作模式,對等路由器重啟,導(dǎo)致已有的會話被破壞。嘗試建立新會話的路由器最初發(fā)送TTL為255的一個或多個消息。由于現(xiàn)在兩個路由器都在沒有任何手工配置的情況下被更新,因此對等路由器認識到TTL為255的消息符合BTSH模式,并且它響應(yīng)以TTL為255的消息。然后,兩個路由器都使用TTL為255的消息進行通信。于是,每個支持BTSH的路由器都可建立諸如接入列表等安全結(jié)構(gòu),或者使用處理來拒絕TTL小于254(或其他值)的消息/分組。
有益地,TTL探詢技術(shù)允許支持BTSH的路由器確定它們的對等路由器是否“默認地”(即不需協(xié)商地)具有兼容的TTL能力。否則,每個路由器將必須被手工配置以在全部對等體、全部路由協(xié)議配置級別上支持BTSH。手工配置代表大量的額外開銷,需要消耗大量管理時間和精力。本發(fā)明避免了這種手工配置,并進一步允許支持BTSH的路由器“自動地”互操作。此外,本發(fā)明的技術(shù)排除了對當(dāng)前的協(xié)議規(guī)范進行諸如狀態(tài)機改變等任何改變,這實現(xiàn)了在被配置用于舊和新實現(xiàn)模式的對等路由器之間的互操作性。
參照下面的說明并結(jié)合附圖,可更好地理解本發(fā)明的上述和其他優(yōu)點,在附圖中,相似的標(biāo)號指示相同或功能上類似的元件圖1是用來建立計算機網(wǎng)絡(luò)的對等路由器之間的TCP連接的傳輸控制協(xié)議(TCP)報文段的格式的部分概要框圖;圖2是可被有益地與本發(fā)明一起使用的因特網(wǎng)協(xié)議頭部的格式的部分概要示意圖;圖3是包括由諸如邊界網(wǎng)關(guān)協(xié)議(BGP)域間路由器等中間節(jié)點互連的多個自治系統(tǒng)的計算機網(wǎng)絡(luò)的概要框圖;圖4是包括耦合到存儲器和多個網(wǎng)絡(luò)接口的路由器處理器的域間路由器的實施例的概要框圖;圖5是圖4的域間路由器中的諸如因特網(wǎng)通信協(xié)議棧等傳統(tǒng)協(xié)議棧的概要框圖;以及圖6是描述了根據(jù)本發(fā)明允許發(fā)起對等路由器高效地確定接收對等路由器的能力和配置的步驟序列的流程圖。
具體實施例方式
圖3是計算機網(wǎng)絡(luò)300的概要框圖,計算機系統(tǒng)300包括由諸如傳統(tǒng)的域內(nèi)路由器320和域間路由器400等中間節(jié)點互連的多個自治系統(tǒng)或路由域。自治系統(tǒng)可包括由域間路由器互連的多個路由域(AS1-4)。域間路由器400進一步被共享介質(zhì)網(wǎng)絡(luò)互連,所述共享介質(zhì)網(wǎng)絡(luò)例如是局域網(wǎng)(LAN)304和點到點鏈路(例如幀中繼鏈路、異步傳輸模式鏈路或其他串行鏈路)302。一般通過根據(jù)諸如傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)等預(yù)定義的協(xié)議來交換離散的數(shù)據(jù)分組或消息,來實現(xiàn)路由器之間的通信。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,諸如因特網(wǎng)分組交換(IPX)協(xié)議等其他協(xié)議可有益地與本發(fā)明一起使用。
每個路由器一般包括多個互連的元件,例如處理器、存儲器和網(wǎng)絡(luò)接口適配器。圖4是域間路由器400的概要框圖,域間路由器400包括經(jīng)由總線405耦合到存儲器404和多個網(wǎng)絡(luò)接口適配器410A-C的路由處理器402。每個網(wǎng)絡(luò)接口適配器410A-C耦合到對應(yīng)的路由域RA-C。存儲器404可包括可由處理器和接口適配器尋址的存儲位置,用于存儲與本發(fā)明的探詢技術(shù)相關(guān)聯(lián)的軟件程序和數(shù)據(jù)結(jié)構(gòu)。路由處理器402可包括處理元件或邏輯,用于執(zhí)行軟件程序和操縱數(shù)據(jù)結(jié)構(gòu)。路由器操作系統(tǒng)406的某些部分一般駐留在存儲器404中,并被路由處理器執(zhí)行,路由器操作系統(tǒng)406通過調(diào)用在路由器上執(zhí)行的軟件進程支持的網(wǎng)絡(luò)操作等,來在功能上組織路由器。本領(lǐng)域的技術(shù)人員將很清楚,包括各種計算機可讀介質(zhì)的其他處理器和存儲器裝置可被用于存儲和執(zhí)行屬于此處所述的發(fā)明技術(shù)的程序指令。
域間路由器400的主要功能是確定分組要被發(fā)送到的下一節(jié)點;為了完成該“路由”,域間路由器協(xié)作確定通過計算機網(wǎng)絡(luò)300的最優(yōu)路徑。路由功能優(yōu)選地由每個路由器中的傳統(tǒng)協(xié)議棧的網(wǎng)間層執(zhí)行。圖5是傳統(tǒng)的網(wǎng)絡(luò)協(xié)議棧的概要框圖,例如因特網(wǎng)通信協(xié)議棧500。因特網(wǎng)協(xié)議棧的體系結(jié)構(gòu)由4層表示,按上升接口順序分別為網(wǎng)絡(luò)接口層508、網(wǎng)間層506、傳輸層504和應(yīng)用層502。
較低的網(wǎng)絡(luò)接口層508一般是標(biāo)準化的,并且在硬件和固件中實現(xiàn),而較高的層一般以軟件形式實現(xiàn)。因特網(wǎng)體系結(jié)構(gòu)的主要網(wǎng)間層協(xié)議是因特網(wǎng)協(xié)議(IP)。IP主要是提供網(wǎng)絡(luò)間路由、被交換的分組(在因特網(wǎng)環(huán)境中一般稱為“數(shù)據(jù)報”)的拆分和重組的無連接協(xié)議,其依賴于傳輸協(xié)議以獲得端到端的可靠性。這種傳輸協(xié)議的一個示例是傳輸控制協(xié)議(TCP),其由傳輸層504實現(xiàn),并向因特網(wǎng)體系結(jié)構(gòu)的上層協(xié)議提供面向連接的服務(wù)。術(shù)語TCP/IP被普遍地用于標(biāo)示因特網(wǎng)體系結(jié)構(gòu)。
具體而言,網(wǎng)間層506涉及域間路由器使用來使它們可協(xié)作計算通過計算機網(wǎng)絡(luò)300的路徑的協(xié)議的算法。諸如邊界網(wǎng)關(guān)協(xié)議(BGP-4)等域間路由協(xié)議被用來執(zhí)行通過計算機網(wǎng)絡(luò)的域間路由(對于網(wǎng)間層)。域間路由器400(此后稱為“對等路由器”)通過諸如TCP等可靠傳輸層連接,在自治系統(tǒng)之間交換路由和可到達性信息。鄰接是為交換路由消息和抽取網(wǎng)絡(luò)拓撲而在選定的對等路由器之間形成的關(guān)系。BGP-4協(xié)議被說明性地實現(xiàn)為BGP進程420,其“運行”在TCP傳輸層504的頂部,以確保對等路由器之間的路由消息的可靠傳輸。
BGP對等路由器一般為所有直接連接(同一子網(wǎng)/鏈路)的對等體傳送TTL為1的BGP消息。對于所有的傳入BGP消息,對等路由器可檢查TTL值以確認它是0。對于多跳BGP,鄰接可跨越多個跳,因此,TTL的值被設(shè)置為2、3或多跳計數(shù)的任意值。注意,可能會從幾跳以外發(fā)起對BGP對等路由器的攻擊,以例如用多于路由器可處理的數(shù)據(jù)使路由器過載。這里,攻擊者可通過例如將TTL值設(shè)置為與從其到路由器的跳數(shù)相一致的值來發(fā)送路由器會接受的消息。當(dāng)消息到達路由器時,它看上去就像是源自于該子網(wǎng)/鏈路一樣。
對該問題的一個解決方案是根據(jù)BGP TTL安全破解(BTSH),將TTL參數(shù)設(shè)置為高值,例如254。但是,通過“手工”配置來更新對等路由器以支持BTSH是很耗時的,還會增加配置不匹配的可能性,而配置不匹配會阻礙對等會話的建立。因此需要一種技術(shù)來自動檢測對等體是否支持和正在使用BTSH選項。此外,通過能力交換來更新對等路由器一般需要在任何協(xié)商繼起之前建立會話。進一步地,需要在路由協(xié)議之外的技術(shù)來實現(xiàn)高效協(xié)商。
根據(jù)本發(fā)明,提供了一種探詢技術(shù),其允許路由器高效地確定對等路由器的能力和配置。此外,該技術(shù)使得鄰接的對等路由器能夠在路由器之間建立路由會話之前,在協(xié)議(例如路由協(xié)議)之外協(xié)商能力。在本上下文中,術(shù)語“在協(xié)議之外”表示在協(xié)議分組(消息)實現(xiàn)中,沒有可被用來協(xié)商能力的字段。此外,本發(fā)明的技術(shù)排除了手工配置路由器來支持特定能力的需要。利用屬于本技術(shù)的軟件而被更新的路由器能夠確定其對等體是否支持該能力。
在該示例性實施例中,路由器被配置以執(zhí)行BGP進程420所實現(xiàn)的BGP-4路由協(xié)議,并且所述能力是TTL參數(shù)。如此處所述,BGP TTL安全破解(BTSH)定義了用于TTL參數(shù)能力的值。BGP路由器通過改變諸如BGP進程420等路由協(xié)議進程的默認行為的軟件更新來支持BTSH。該默認行為“自動地”配置路由器,以嘗試使用TTL值為255的消息來初始建立路由鄰居關(guān)系。注意,諸如BGP等高級協(xié)議可在BGP消息中使用的IP頭部200的字段210中設(shè)置TTL參數(shù)。
具體而言,路由器400中執(zhí)行的BGP進程420通過套接字發(fā)起與特定對等路由器之間的TCP連接。套接字可被定義為TCP連接的端點,其包括IP地址和端口號,從而TCP層504可識別將要接收數(shù)據(jù)的應(yīng)用(或協(xié)議)。BGP-4協(xié)議優(yōu)選地使用端口號179來建立TCP連接。通過構(gòu)建傳統(tǒng)的3次TCP握手協(xié)定中使用的SYN-SYN-ACK報文段來建立TCP連接。BGP進程通過套接字與TCP進程通信,以指定包括TTL參數(shù)值等的信息。在這一點上,BGP進程420不構(gòu)建用于連接建立報文段的BGP頭部,但是,進程420確實發(fā)起對這些報文段的構(gòu)建。
TCP進程使用BGP進程420提供的信息來建立報文段的TCP頭部110,并例如通過通知IP進程使用指定的TTL發(fā)送某些信息來發(fā)起連接。然后,IP進程使用BGP進程提供的用于字段210的TTL參數(shù)來構(gòu)建IP頭部200,將頭部200附加到報文段并將其沿網(wǎng)絡(luò)協(xié)議棧向下傳遞到媒體(以太網(wǎng))驅(qū)動器,以便通過網(wǎng)絡(luò)進行傳輸。
一般地說,本發(fā)明的技術(shù)允許(發(fā)起或接收)路由器通過發(fā)送包括能力的第一預(yù)定值的初始消息,或者通過關(guān)注由對等路由器發(fā)起的消息中的能力值,來自動地確定對等路由器支持哪種操作能力模式。在會話發(fā)起的情形下,如果路由器接收到來自對等路由器的對初始消息的肯定確認,則它確定對等路由器支持使用新的操作能力模式的消息交換。但是,如果路由器接收到來自對等路由器的對初始消息的否定確認,則它判斷對等路由器不支持新的操作能力模式。于是,發(fā)起路由器通過重新發(fā)送具有能力的第二預(yù)定值的初始消息來“切換”到舊的操作能力模式。
作為示例,發(fā)起路由器通過發(fā)送TTL為255的初始BGP消息然后等待來自對等路由器的響應(yīng),來自動確定對等路由器支持哪種操作TTL模式。如果該消息被接收和肯定確認,則初始路由器確定對等路由器支持使用新BTSH模式的消息交換,而且發(fā)送TTL為255的安全益處被自動實現(xiàn)。但是,如果發(fā)起路由器接收到否定確認(或者在預(yù)定時間內(nèi)根本未接收到響應(yīng)),則它斷定對等路由器未被更新為新的BTSH操作模式,并通過重新發(fā)送TTL為1的初始消息(以及后續(xù)消息)來切換到普通模式。更具體而言,路由器例如使用值為1的TTL或者值等于跳數(shù)(在BGP多跳的情形下)的TTL來利用正常操作模式重新發(fā)起會話/鄰接建立。因此,本發(fā)明的技術(shù)允許在新舊模式路由器實現(xiàn)之間進行互操作,而無需額外配置。
然后,響應(yīng)于更新到新的BTSH操作模式,對等路由器重啟,導(dǎo)致現(xiàn)有會話被破壞。嘗試建立新會話的路由器最初發(fā)送一個或多個TTL為255的消息。由于現(xiàn)在兩個路由器都在無需手工配置的情況下被更新,對等路由器認識到TTL為255的消息符合BTSH模式,并且其響應(yīng)以TTL為255的消息。然后,兩個路由器都使用TTL為255的消息進行通信。于是,每個支持BTSH的路由器都可建立諸如接入列表等安全結(jié)構(gòu),或者利用處理來拒絕TTL小于254(或其他值)的消息/分組。
若干實施例可被用來實現(xiàn)此處所述的本發(fā)明的技術(shù)。例如,路由進程(例如BGP進程420)可以通過指示網(wǎng)絡(luò)協(xié)議棧的較低層(例如TCP層504)使用值為255的TTL來發(fā)起會話/鄰接連接建立。如果連接/會話未在預(yù)定時間內(nèi)建立(沒有接收到響應(yīng)),則路由進程負責(zé)將TTL切換到普通模式(例如1),并重新發(fā)起連接/會話建立。或者,用于確定對等路由器是否支持BTSH模式的“智能”可在諸如TCP層504或IP層506等較低的網(wǎng)絡(luò)協(xié)議層中實現(xiàn)。例如,如果在IP層中實現(xiàn),則較高級的路由進程通知IP層利用值為255的TTL來初始嘗試建立連接,如果對等路由器未被更新以支持BTSH,則切換到TTL為1。但是,在示例性實施例中,本技術(shù)優(yōu)選地在較高層路由協(xié)議中實現(xiàn),該協(xié)議能夠在其不支持BTSH時返回否定確認。這排除了對等待“超時”條件的需要。
圖6的流程圖示出了用于根據(jù)所示技術(shù),允許發(fā)起對等路由器高效地確定接收對等路由器的能力和配置的步驟序列的流程圖。該序列開始于步驟600,并進行到步驟602,在這里,發(fā)起對等路由器中的諸如BGP進程420等路由協(xié)議進程指示TCP進程根據(jù)3次握手協(xié)定并使用值為255的TTL建立TCP連接。在會話建立期間,在步驟604,第一路由協(xié)議消息通過對等路由器之間的TCP連接被發(fā)送。在步驟606,確定接收對等路由器是否支持BTSH(被配置為接受值為255的TTL)。具體而言,接收對等路由器中的BGP對等進程檢查TTL值255,并確定它能否接受該會話。如果能,則在步驟608,該對等進程返回肯定確認到發(fā)起對等路由器,序列在步驟616結(jié)束。
但是,如果接收對等體路由協(xié)議進程不支持BTSH,并且因而不能接受會話,則它在步驟610返回否定確認。示例性地,例如DENY連接錯誤消息這樣的否定確認被返回發(fā)起對等路由器,以響應(yīng)例如BGP OPEN消息這樣的第一路由協(xié)議消息。注意,OPEN消息提供了用于路由器在相鄰對等體關(guān)系開始時標(biāo)識自身的手段。此外,通知被返回發(fā)起路由器,指示拒絕消息的理由(即為什么不能建立會話)。然后,在步驟612,TCP連接被立即破壞,并且在步驟614使用值為1的TTL被重新發(fā)起(重新建立)。序列在步驟616結(jié)束。
有益地,TTL探詢技術(shù)允許支持BTSH的路由器確定它們的對等路由器是否“默認地”(即不需協(xié)商地)具有兼容的TTL能力。否則,每個路由器將必須被手工配置以在全部對等體、全部路由協(xié)議配置級別上支持BTSH。手工配置代表大量的額外開銷,需要消耗大量管理時間和精力。本發(fā)明避免了這種手工配置,并進一步允許支持BTSH的路由器“自動地”互操作。此外,本發(fā)明的技術(shù)排除了對當(dāng)前的協(xié)議規(guī)范進行諸如狀態(tài)機改變等任何改變,這實現(xiàn)了在被配置用于舊和新實現(xiàn)模式的對等路由器之間的互操作性。
雖然已經(jīng)示出并描述了允許路由器高效地確定鄰居(對等體)路由器的能力和配置的實施例,但是應(yīng)當(dāng)理解,在本發(fā)明的精神和范圍內(nèi)可作出各種其他改變和修改。例如,雖然這里描述的BTSH實現(xiàn)是特定于BGP的,但是該新穎技術(shù)能夠利用諸如增強內(nèi)部網(wǎng)關(guān)路由協(xié)議(EIGRP)等任何路由協(xié)議工作。一般地,EIGRP路由器使用TTL為1的分組進行通信;一旦被新穎的支持BTSH的技術(shù)更新,這些EIGRP路由器就能傳送TTL為255的分組。
上面描述了本發(fā)明的具體實施例,但是很明顯,可對所描述的實施例進行其他修改和改變,并且保留它們的一些或全部優(yōu)點。例如,很明顯,本發(fā)明的教導(dǎo)(包括此處所述的各種進程)可被實現(xiàn)為軟件(包括具有在計算機上執(zhí)行的程序指令的計算機可讀介質(zhì))、硬件、固件或其組合。此外,應(yīng)當(dāng)理解此處所述的數(shù)據(jù)結(jié)構(gòu)可包括額外的信息而保持在本發(fā)明的范圍內(nèi)。此外,本發(fā)明的TTL探詢技術(shù)可應(yīng)用于諸如OSPF等在IP上運行的任意路由協(xié)議,因為修改(TTL字段)在IP頭部中。因此,本說明書僅是示例性而不限制本發(fā)明的范圍。因此,所附權(quán)利要求的目的是覆蓋所有落在本發(fā)明的真實精神和范圍內(nèi)的改變和修改。
權(quán)利要求
1.一種用于允許路由器高效地確定計算機網(wǎng)絡(luò)中的對等路由器的能力和配置的方法,該方法包括以下步驟通過從所述路由器向所述對等路由器發(fā)送初始消息來自動地確定所述對等路由器支持哪種操作能力模式,所述初始消息包括所述能力的第一預(yù)定值;如果所述路由器接收到來自所述對等路由器的對所述初始消息的肯定確認,則確定所述對等路由器支持使用新的操作能力模式的消息交換;如果所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認,則斷定所述對等路由器不支持所述新的操作能力模式;以及通過重新發(fā)送具有所述能力的第二預(yù)定值的初始消息來切換到舊的操作能力模式。
2.如權(quán)利要求1所述的方法,其中所述斷定步驟包括以下步驟如果所述路由器在預(yù)定時間內(nèi)根本沒有接收到響應(yīng),則斷定所述對等路由器不支持所述新的操作能力模式。
3.如權(quán)利要求1所述的方法,其中所述初始消息是邊界網(wǎng)關(guān)協(xié)議(BGP)路由協(xié)議消息,其中所述能力是存活時間(TTL)參數(shù)。
4.如權(quán)利要求3的方法,其中所述新的操作能力模式由BGP TTL安全破解(BTSH)定義。
5.如權(quán)利要求4所述的方法,其中所述TTL參數(shù)能力的第一預(yù)定值是255。
6.如權(quán)利要求3所述的方法,其中所述TTL參數(shù)的第二預(yù)定值是1。
7.如權(quán)利要求1所述的方法,還包括響應(yīng)于所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認來執(zhí)行以下步驟將所述對等路由器更新為所述新的操作能力模式;重啟所述對等路由器,從而破壞所述路由器之間的已有會話;通過發(fā)送具有所述能力的第一預(yù)定值的消息來建立新會話;以及使用具有所述能力的第一預(yù)定值的消息在所述路由器之間進行通信。
8.一種適用于允許路由器高效地確定計算機網(wǎng)絡(luò)中的對等路由器的能力和配置的系統(tǒng),該系統(tǒng)包括在所述對等路由器上執(zhí)行的路由協(xié)議進程,該路由協(xié)議進程適用于接收在所述路由器上執(zhí)行的發(fā)起路由協(xié)議進程所發(fā)送的初始路由協(xié)議消息,所述初始路由協(xié)議消息包括所述能力的預(yù)定值,所述路由協(xié)議進程返回以下確認之一(i)如果所述對等路由器支持使用新的操作能力模式的消息交換,則返回對所述初始路由協(xié)議消息的肯定確認;(ii)如果所述對等路由器不支持使用所述新的操作能力模式,則返回對所述初始路由協(xié)議消息的否定確認。
9.如權(quán)利要求8所述的系統(tǒng),其中在所述對等路由器上執(zhí)行的所述路由協(xié)議進程是邊界網(wǎng)關(guān)協(xié)議版本4(BGP)路由協(xié)議,其中所述能力是存活時間(TTL)參數(shù)。
10.如權(quán)利要求9所述的系統(tǒng),其中所述新的操作能力模式由BGPTTL安全破解(BTSH)定義。
11.如權(quán)利要求10所述的系統(tǒng),其中所述TTL參數(shù)能力的預(yù)定值是255。
12.一種適用于允許路由器高效地確定計算機網(wǎng)絡(luò)中的對等路由器的能力和配置的裝置,該裝置包括用于從所述路由器向所述對等路由器發(fā)送初始消息的裝置,所述初始消息包括所述能力的第一預(yù)定值;用于如果所述路由器接收到來自所述對等路由器的對所述初始消息的肯定確認,則確定所述對等路由器支持使用新的操作能力模式的消息交換的裝置;用于如果所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認,則斷定所述對等路由器不支持所述新的操作能力模式的裝置;以及用于通過重新發(fā)送具有所述能力的第二預(yù)定值的初始消息來切換到舊的操作能力模式的裝置。
13.如權(quán)利要求12所述的裝置,其中所述斷定裝置包括斷定如果所述路由器在預(yù)定時間內(nèi)根本沒有接收到響應(yīng),則所述對等路由器不支持所述新的操作能力模式的裝置。
14.如權(quán)利要求12所述的裝置,其中所述初始消息是邊界網(wǎng)關(guān)協(xié)議(BGP)路由協(xié)議消息,所述能力是存活時間(TTL)參數(shù),所述新的操作能力模式由BGP TTL安全破解(BTSH)定義。
15.如權(quán)利要求12所述的裝置,還包括對所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認進行響應(yīng)的以下裝置用于將所述對等路由器更新為所述新的操作能力模式的裝置;用于破壞所述路由器之間的已有會話的裝置;用于發(fā)送具有所述能力的第一預(yù)定值的消息的裝置;以及用于使用具有所述能力的第一預(yù)定值的消息在所述路由器之間進行通信的裝置。
16.一種包含可執(zhí)行程序指令的計算機可讀介質(zhì),用于允許路由器高效地確定計算機網(wǎng)絡(luò)中的對等路由器的能力和配置,所述可執(zhí)行程序指令包括用于以下操作的程序指令通過從所述路由器向所述對等路由器發(fā)送初始消息來自動地確定所述對等路由器支持哪種操作能力模式,所述初始消息包括所述能力的第一預(yù)定值;如果所述路由器接收到來自所述對等路由器的對所述初始消息的肯定確認,則確定所述對等路由器支持使用新的操作能力模式的消息交換;如果所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認,則斷定所述對等路由器不支持所述新的操作能力模式;以及通過重新發(fā)送具有所述能力的第二預(yù)定值的初始消息來切換到舊的操作能力模式。
17.如權(quán)利要求16所述的計算機可讀介質(zhì),其中所述用于斷定的程序指令包括一條或多條程序指令,用于如果所述路由器在預(yù)定時間內(nèi)根本沒有接收到響應(yīng),則斷定所述對等路由器不支持所述新的操作能力模式。
18.如權(quán)利要求16所述的計算機可讀介質(zhì),其中所述初始消息是邊界網(wǎng)關(guān)協(xié)議(BGP)路由協(xié)議消息,其中所述能力是存活時間(TTL)參數(shù)。
19.如權(quán)利要求18所述的計算機可讀介質(zhì),其中所述新的操作能力模式由BGP TTL安全破解(BTSH)定義。
20.如權(quán)利要求16所述的計算機可讀介質(zhì),還包括以下程序指令,用于響應(yīng)于所述路由器接收到來自所述對等路由器的對所述初始消息的否定確認來執(zhí)行以下操作將所述對等路由器更新為所述新的操作能力模式;破壞所述路由器之間的已有會話;發(fā)送具有所述能力的第一預(yù)定值的消息;以及使用具有所述能力的第一預(yù)定值的消息在所述路由器之間進行通信。
21.一種適用于允許路由器高效地確定計算機網(wǎng)絡(luò)中的對等路由器的能力和配置的系統(tǒng),該系統(tǒng)包括在所述路由器上執(zhí)行的發(fā)起路由協(xié)議進程,該發(fā)起路由協(xié)議進程適用于向在所述對等路由器上執(zhí)行的路由協(xié)議進程發(fā)送初始路由協(xié)議消息,所述初始路由協(xié)議消息包括所述能力的預(yù)定值,所述發(fā)起路由協(xié)議進程接收以下確認之一(i)如果所述對等路由器支持使用新的操作能力模式的消息交換,則接收對所述初始路由協(xié)議消息的肯定確認;(ii)如果所述對等路由器不支持使用所述新的操作能力模式,則接收對所述初始路由協(xié)議消息的否定確認。
22.如權(quán)利要求21所述的系統(tǒng),其中在所述路由器上執(zhí)行的所述發(fā)起路由協(xié)議進程是邊界網(wǎng)關(guān)協(xié)議版本4(BGP)路由協(xié)議,其中所述能力是存活時間(TTL)參數(shù)。
23.如權(quán)利要求22所述的系統(tǒng),其中所述新的操作能力模式由BGPTTL安全破解(BTSH)定義。
24.如權(quán)利要求23所述的系統(tǒng),其中所述TTL參數(shù)能力的預(yù)定值是255。
全文摘要
一種探詢技術(shù),允許路由器高效地確定鄰居(對等)路由器的能力和配置。此外,該技術(shù)允許鄰接的對等路由器在建立路由器之間的路由會活之前,“在協(xié)議之外”協(xié)商能力,所述協(xié)議例如是路由協(xié)議。在本上下文中,術(shù)語“在協(xié)議之外”表示在協(xié)議分組(消息)實現(xiàn)中,沒有可被用米協(xié)商能力的字段。此外,本發(fā)明的技術(shù)排除了對手工配置路由器以支持特定能力和在都支持該能力但并沒有意識到該能力的路由器的網(wǎng)絡(luò)內(nèi)正確地互操作的需要。
文檔編號H04L12/56GK1849796SQ200480026122
公開日2006年10月18日 申請日期2004年9月16日 優(yōu)先權(quán)日2003年9月18日
發(fā)明者大衛(wèi)·安東尼·庫克 申請人:思科技術(shù)公司