新四季網

高性能路由器bgp路由協議分布並行實現方法

2023-08-05 20:21:56

專利名稱:高性能路由器bgp路由協議分布並行實現方法
技術領域:
本發明涉及高性能路由器路由協議的並行實現方法,尤其是域間路由協議BGP(邊界網關協議)的分布並行實現方法。
背景技術:
隨著Internet規模的快速擴展和用戶流量的激增,對核心網絡高性能路由器的轉發要求越來越高。由於單個機櫃容納的網絡接口數量有限,具有多機櫃體系結構的新型高性能路由器應運而生。這種新型高性能路由器將大量各種類型的網絡接口分布在多個機柜上,根據業務發展需要可增加新的機櫃,實現路由器結構的高度可擴展性。例如,Juniper公司的TX Matrix路由器,Alcatel公司的RCP 7770路由器,Cisco公司的CRS-1路由器,Avici公司的TSR路由器等。
也可以將多個廉價的中低性能的路由器互聯起來,構成單個高性能路由器,從而簡化網絡管理。組成高性能路由器的一個機櫃或者一個中低端路由器稱為路由節點。分布在多個路由節點上的數目眾多的轉發引擎同時接收和轉發用戶數據,從而實現高性能的數據轉發。這種具有多個路由節點的高性能路由器採用專用高速網際網路連接多個機櫃或者多個中低端路由器,路由協議在CPU上運行,數據報文由各個路由節點的網絡接口板的轉發引擎查找IP轉發表進行轉發,路由報文由轉發引擎送CPU路由協議軟體處理。整個高性能路由器具有統一的管理軟體和配置界面,設備管理員使用起來是一臺完整的高性能路由器,而不是一個個獨立的路由節點。
高性能路由器由數據平面負責報文的轉發,由控制平面負責路由協議的處理。在數據平面轉發性能提高的同時,控制平面路由協議的處理成為了瓶頸。主要由於網絡規模的擴展和各種新型網絡應用的不斷湧現,使路由器存儲和計算的路由信息數量快速增長,路由器軟體系統的功能變得更加複雜。BGP(邊界網關協議)是域間路由協議的事實標準,是ISP(網際網路服務提供商)互連的基本手段和唯一在用的域間路由協議,是高性能路由器最重要路由協議。目前核心路由器BGP路由表的數目達到688000條,並仍然呈現指數增長的趨勢;要求支持的BGP鄰居會話數目增加到數百個;組播支持、MPLS(多協議標記交換)擴展、IPv6擴展等新增屬性使路由計算的過程更加複雜;BGP路由前綴的猝發更新,持續的路由抖動等問題使每秒鐘需要處理的BGP路由更新報文顯著增加。上述問題對BGP協議的擴展性提出了挑戰,惡化了控制平面BGP協議的性能,如何提高BGP處理性能和存儲效率對提高高性能路由器控制平面的效能至關重要。
目前多機櫃高性能路由器的軟體體系結構大都採用主從控制模式,指定一個路由節點作為主控節點,只有主控路由節點和備份控制路由節點可以運行路由協議。正常情況下,主控路由節點運行BGP路由協議,生成BGP路由表後,寫入IP路由表和IP轉發表,通過內部網際網路發布到所有路由節點的所有轉發引擎的轉發表中。其他路由節點只是根據轉發引擎中的轉發表轉發數據報文。主控路由節點發生故障後,由備份控制路由節點運行BGP路由協議,接替主控路由節點工作。有的產品雖然支持多個路由處理器並行工作,但各個處理器只是用來獨立維護BGP鄰居關係,全局最佳路由的計算仍然是由專門的處理器集中計算和集中存儲。
按照BGP協議規範RFC(Request For Comment)1771,傳統BGP路由協議軟體的實現結構包括鄰居會話維護模塊、路由計算模塊、路由信息庫和管理控制模塊。各個模塊的功能如下●鄰居會話維護模塊建立、維護或拆除BGP會話關係,收發鄰居關係維護報文。
●路由計算模塊接收路由更新消息,計算到達目的網絡的最佳路由,相應地更新IP轉發表中對應的轉發項,將最新路由信息發布給鄰居。
●路由信息庫存儲鄰居發送的所有路由信息,標記路由計算模塊計算出的最佳路由。路由器所有的BGP路由信息都集中保存在一個路由信息庫中,要求路由信息庫的容量非常大。
●管理控制模塊利用配置策略庫對路由協議進行配置和管理。
儘管可以在主控節點上通過優化軟體系統來提高協議的處理速度或減少存儲開銷,但是優化的潛力畢竟有限,且這種方法不具備擴展性。在主控節點上採用多個CPU具有一定的擴展性,但這種方法沒有充分利用高性能路由器分布式的計算資源和存儲資源,而且一旦主控節點的軟體系統發生故障,由於向備份控制節點的切換有一定時延,整個高性能路由器的路由和轉發都要受到影響;採用這種1∶1的備份,系統的可靠性不高,如果備份控制節點也出現故障,整個高性能路由器的軟體系統就要癱瘓。而基於多個路由節點的分布式並行實現方法不但具有性能的高度擴展性、更好的可靠性,而且可以充分利用高性能路由器分布式的計算資源和存儲資源。
在網絡協議並行實現方法的研究方面,針對BGP協議開展的工作較少。針對網絡傳輸協議TCP的並行實現,Mats Bjorkman等提出X-Kernel體系結構;針對OSPF路由協議,Michigan州立大學的Xipeng Xiao提出將OSPF區域劃分為多個不相交的「區域內路由範圍」,把對整個路由表的計算劃分為多個獨立的部分,由不同的路由節點來並行完成。Sharad收集來自於Spring Network的196個Cisco路由器長達3年的運行數據,分析表明絕大多數骨幹網絡路由器的BGP協議進程消耗了60%以上的控制平面計算資源。BGP協議的實現已經成為高性能路由器控制平面的性能瓶頸,但目前還沒有公開的技術資料提出實用的BGP路由協議分布並行實現方法。針對具有多個路由節點的高性能路由器,研發有效的BGP協議分布並行實現方法成為人們關注的重要問題。

發明內容
本發明要解決的技術問題是基於具有多個路由節點的高性能路由器,構建BGP分布並行實現系統,提供域間路由協議BGP的分布並行實現方法。
技術方案是每個路由節點獨立運行BGP協議以構建基於BGP-Node的BGP分布並行實現系統,將整個高性能路由器BGP協議的鄰居會話維護、路由計算和路由存儲三種任務分解到各個BGP-Node,採用X-BGP協議進行BGP-Node之間的會話關係維護和路由同步,並修改路由計算模塊實現高性能路由器全局最佳路由的計算。
本發明新定義的術語有路由節點、BGP-Node、BGP-Node聚集、X-BGP和路由同步報文。組成高性能路由器的一個機櫃或者一個中低端路由器稱為路由節點。分布在各個路由節點上獨立運行的BGP實體(包括BGP協議軟體以及存儲的路由信息等)稱為BGP-Node。同一高性能路由器的所有BGP-Node的集合稱為一個BGP-Node聚集。X-BGP是本發明設計的同一臺高性能路由器內部各BGP-Node之間的同步與通訊協議,BGP-Node之間建立的是X-BGP類型的鄰居關係。路由同步報文(SYNCHRON)是用於BGP-Node之間路由同步信息傳輸的專用報文。另外,將未採用本發明進行並行實現的RFC 1771等規範定義的BGP協議稱為傳統BGP。交換路由信息的BGP實體互稱BGP鄰居,交換路由信息時要建立的連接稱為BGP會話。BGP路由表又稱路由信息庫(RIB),存儲的是BGP協議的路由信息;IP路由表存儲的是包括BGP路由協議在內的高性能路由器上運行的所有路由協議的基本路由信息,IP路由表不保存BGP路由表中的具體協議相關的屬性信息,如果BGP路由表中有多條到目標網絡的路由,則只是把最佳路由寫入IP路由表;IP轉發表是直接用於數據轉發的簡化的IP路由表,如果IP路由表中有多個路由協議學到的到目標網絡的多條路由,則只是把其中一條最佳路由寫入IP轉發表。高性能路由器的內部路由節點之間採用專用高速網絡互連,路由節點之間通信使用的接口稱為內部網絡接口或內部接口;高性能路由器用於和其他網絡設備或者用戶主機互連的接口,稱為外部網絡接口或外部接口。沒有特殊說明時網絡接口指的是路由器的外部網絡接口。
高性能路由器如果有N個路由節點,分別編號0...N-1;每個路由節點可有多個接口板,每個接口板上有多個網絡接口;路由器的網絡接口以層次命名的方式來編號,即「路由節點號/板卡號/接口號」;每個路由節點運行一個BGP-Node,所以BGP-Node的編號和路由節點號一致。
本發明BGP路由協議分布並行實現方法包括以下步驟第一步,構建基於BGP-Node的BGP分布並行實現系統,方法是多個路由節點通過高速網際網路連接,每個路由節點進行數據轉發並運行BGP(可能同時運行其他路由協議),每個路由節點實現傳統BGP協議的全部功能,即每個路由節點包含一個功能相同的BGP-Node。這樣,整個BGP協議不再作為一個獨立的進程運行在主控節點上,而是作為多個獨立的BGP實體運行於每個路由節點上。各個BGP-Node通過內部網絡接口通信。每個BGP-Node生成BGP路由表,並寫入本路由節點的IP路由表和IP轉發表,並將IP轉發表中的信息下載到本路由節點的各個轉發引擎的轉發表中。
第二步,將整個高性能路由器BGP協議的鄰居會話維護、路由計算和路由存儲三種任務分解到各個BGP-Node,方法是先分解BGP鄰居會話,再進行路由計算和路由存儲功能的分解,使得每個BGP-Node只負責本路由節點的BGP鄰居會話維護,接收、處理和存儲本節點鄰居送來的路由信息2.1BGP鄰居會話的分解方法是修改傳統BGP協議的管理控制模塊,在該模塊中增加鄰居會話維護任務分解子模塊,將整個高性能路由器維護的所有BGP鄰居會話以不相交的方式分解到各個BGP-Node。鄰居會話維護任務分解子模塊的流程是①對配置策略庫中的每個BGP鄰居關係,以BGP鄰居的IP位址為關鍵字查找IP路由表,得到到達該地址需要經過的高性能路由器的網絡接口編號,網絡接口編號中的路由節點號即是負責維護該BGP鄰居關係的路由節點號和BGP-Node編號,這樣選擇處理BGP鄰居關係的BGP-Node能夠通過所在路由節點的外部接口直接到達對應的鄰居路由器,不需要再次穿越內部交換網絡。
②如果負責維護該BGP鄰居關係的BGP-Node發生故障,則選擇負載最小的BGP-Node(例如維護的鄰居關係數目最少的節點)負責維護該鄰居關係。
③生成BGP鄰居路由器和BGP-Node對應關係表(說明某個BGP路由器的鄰居會話由哪個BGP-Node維護),下發到各個路由節點的所有轉發引擎。
④路由節點和BGP-Node的狀態發生嚴重變化(例如出現故障)時,則對受影響的鄰居會話重新進行分派。
2.2路由計算任務的分解由各個路由節點的轉發引擎進行,方法是各個路由節點通過外部網絡接口從其他路由器收到BGP路由更新報文時,轉發引擎以報文的源地址為關鍵字查找BGP鄰居路由器和BGP-Node對應關係表,得到目標BGP-Node編號,將該路由報文送給目標BGP-Node,由目標BGP-Node處理該路由更新報文,進行路由計算。
2.3路由信息存儲功能的分解由各個BGP-Node進行,方法是每個BGP-Node都有路由信息庫,分別保存所在BGP-Node收到的由轉發引擎送來的路由更新報文中的完整的路由信息,從而實現了路由信息的分布式存儲。
第三步,採用X-BGP協議進行BGP-Node之間的會話關係維護和路由同步以及高性能路由器最佳路由的計算,BGP-Node聚集在外部行為上與傳統BGP協議一致,確保整個高性能路由器路由與轉發功能的正確性,方法是3.1設計X-BGP協議的報文,將X-BGP協議的報文分為鄰居關係維護報文和路由同步報文二大類
X-BGP鄰居關係維護報文有OPEN、KEEPALIVE和NOTIFICATION三種類型,這三種報文的語法、語義、時序關係與傳統BGP相同,但是要求鄰居地址是同一高性能路由器的其他BGP-Node,由X-BGP鄰居關係維護報文傳遞BGP-Node之間的控制信息和狀態信息;X-BGP路由同步報文是SYNCHRON,SYNCHRON報文格式比傳統BGP協議的UPDATE報文簡單,與傳統BGP協議的UPDATE報文在協議狀態機中具有相同的時序關係,具體格式是路由同步報文由報文頭和報文體組成。報文頭包括「報文類型」「報文長度」「來源鄰居標識」三個欄位,其中「報文類型」欄位說明是update(路由更新)類型還是withdraw(路由撤銷)類型;「報文長度」欄位說明路由同步報文的字節數;「來源鄰居標識」欄位說明引發本次路由變化事件的外部BGP路由器的IP位址。報文體分為update類型的同步報文的報文體和withdraw類型的同步報文的報文體二種類型。update類型的同步報文的報文體包括本地偏好度、Origin(路由來源類型)、AS路徑長度、下一跳AS、下一跳地址、MED(多出口鑑別字)以及多個「網絡前綴地址」和「網絡地址掩碼」。withdraw類型的同步報文的報文體攜帶一個或多個要撤銷的「網絡前綴地址」「網絡地址掩碼」信息。由SYNCHRON傳遞BGP-Node之間的路由同步信息。
3.2對傳統BGP協議鄰居會話維護模塊進行修改,以維護高性能路由器內部各個BGP-Node之間的鄰居會話關係每個BGP-Node代表整個高性能路由器與外部運行BGP協議的路由器通過傳統BGP協議建立鄰居關係,如果高性能路由器與外部路由器屬於相同自治系統,建立的是內部BGP鄰居關係(I-BGP);如果屬於不同的自治系統,建立的是外部BGP鄰居關係(E-BGP)。BGP-Node的鄰居會話維護模塊可使用原有的代碼實現I-BGP和E-BGP二種傳統的鄰居關係維護功能,但是需要修改鄰居會話維護模塊以處理同一高性能路由器內部BGP-Node之間建立的X-BGP類型的鄰居關係。鄰居會話維護模塊的修改方法是在鄰居關係類型相關的數據結構中新增「X-BGP」類型;鄰居關係維護報文在BGP-Node之間採用內部網絡接口傳遞控制信息和狀態信息,而不是I-BGP和E-BGP採用的外部網絡接口。
3.3對傳統BGP協議路由計算模塊進行修改,將該模塊變為路由計算與同步模塊,以處理BGP-Node之間的路由同步和整個高性能路由器全局最佳路由的計算,方法是每個BGP-Node只負責計算和存儲本地BGP鄰居會話上接收的路由更新報文,只能看到通過本地鄰居會話獲得的路由可達信息,其他鄰居會話通告的路由可達信息是不可見的。每個BGP-Node如果基於本地路由可達信息進行BGP最佳路由的選擇,則無法保證各個BGP-Node間BGP最佳路由視圖的一致性,這樣整個高性能路由器的行為和並行實現之前就不一致,就說明高性能路由器沒有正確實現數據轉發功能。另外,一個BGP-Node從自己的鄰居路由器學到的路由可能需要轉送到其他BGP路由器,這其中會有一些與其他BGP路由器的會話關係是由別的BGP-Node維護的。因此必須進行BGP-Node間的路由信息的傳遞和路由同步。
將傳統BGP協議的路由計算模塊進行修改後更名為路由計算與同步模塊,負責路由更新報文、路由同步報文的處理,進行路由計算和不同BGP-Node之間的路由同步。每個BGP-Node基於本地路由可達信息進行BGP最佳路由的選擇之後,通過路由同步報文在各個BGP-Node間傳遞選擇結果,在各個局部最佳路由的基礎上選擇出全局最佳路由。
路由計算與同步模塊由路由更新報文處理和路由同步報文處理二個子模塊組成。路由更新報文處理子模塊從其他路由器接收路由更新報文,更新本地BGP路由信息庫(RIB),向其他BGP-Node發送路由同步報文;路由同步報文處理子模塊從其他BGP-Node接收路由同步報文,更新BGP路由信息庫(RIB)。
下面各子模塊功能的描述中,「所有合適的鄰居」包括I-BGP,E-BGP和X-BGP各種類型的鄰居。向I-BGP和E-BGP鄰居發布路由信息或進行路由宣告使用的是傳統BGP的路由更新報文,向X-BGP鄰居發布路由信息使用的是X-BGP路由同步報文。判斷鄰居是否「合適」依據的是配置策略庫中的路由策略是否允許向該鄰居輸出本路由。
路由更新報文處理子模塊通過所在路由節點的外部網絡接口從其他路由器接收來自BGP鄰居的路由更新報文,完成報文解析和輸入策略處理後,進行路由計算並更新路由信息庫;將計算出的局部最佳路由信息封裝成路由同步報文,發送給所有其他BGP-Node,將計算出的全局最佳路由封裝為路由更新報文,傳遞給其他的BGP路由器。其工作流程是
(1)接收其他路由器送來的路由更新報文,報文攜帶的主要參數有type,routeattrib,rt,p。其中type表示路由更新操作的類型,可以是update(增加新路由項),或者withdraw(撤銷已有的路由項);routeattrib在增加新路由項時,代表路由更新報文中攜帶的路由屬性信息;rt為待處理的路由信息,包括目的網絡前綴,AS-Path、Next-Hop等路由屬性,以及宣告該路由的BGP鄰居等;p為該路由更新報文的來源鄰居標識,是外部路由器的標識。
(2)設置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網絡前綴的葉節點,記為routenode。
(4)如果更新報文的類型是withdraw,則進行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的葉節點,則結束處理;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進行(4-5)~(4-7),否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節點從路由信息庫中刪除,然後向所有合適的鄰居發布關於rt的路由撤銷報文;(4-7)如果新的routenode.bestroute不為空,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告。
(5)如果更新報文的類型是update,則進行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然後把routenode插入到路由信息庫中,並把rt向所有合適的鄰居宣告。跳轉到步驟(6)執行;
(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表。
(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把這一新選出的最佳路由向所有合適的鄰居宣告。
(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉發表(6-1)如果routenode.bestroute為空,則從IP路由表和轉發表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉發表中。
路由同步報文處理子模塊通過高性能路由器內部網絡接口接收到其他BGP-Node的同步報文,完成報文解析後進行路由計算,並更新本地路由信息庫;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報文。其工作流程是(1)接收其他BGP-Node送來的路由同步報文,報文攜帶的主要參數有type,routeattrib,rt,p。其中type表示路由同步操作的類型,可以是update(增加新路由項),或者withdraw(撤銷已有的路由項);routeattrib在增加新路由項時,代表同步報文中攜帶的路由屬性信息;rt為待處理的路由信息;p為該路由的來源鄰居標識,即宣告該路由的其他路由器;(2)設置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網絡前綴的葉節點,記為routenode。
(4)如果同步報文的類型是withdraw,則進行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的節點,則返回;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;
(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進行(4-5)~(4-7)步操作,否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節點從路由信息庫中刪除;(4-7)如果新的routenode.bestroute不為空,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告(這時的最佳路由是本節點原來保存的非最佳路由)。
(5)如果同步報文的類型是update,則進行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然後把routenode插入到路由信息庫中。跳轉到步驟(6)執行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把新選出的最佳路由向所有合適的鄰居宣告。
(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉發表(6-1)如果routenode.bestroute為空,則從IP路由表和轉發表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉發表中。
路由同步報文處理模塊與路由更新報文處理模塊在處理過程上的不同之處主要表現在
(1)(4-6)步,去掉「然後向所有其他合適的BGP鄰居發布關於rt的路由撤銷報文」,路由撤銷時,如果被撤銷的路由是當前最佳路由,並且routenode的前綴列表中不包含其他冗餘路由,則僅將routenode從路由信息庫中刪除,不需要向鄰接路由器發送路由撤銷通告,撤銷通告的發布由路由同步報文的發送者負責完成;(2)(5-1)步,去掉「並把rt向所有其他合適的鄰居宣告」,在增加新路由項時,如果該路由項被選為最佳路由,由於該路由項的來源鄰居會話不在本地BGP-Node上,因此只更新IP路由表和轉發表,不需要向鄰接路由器發送路由更新通告;(3)(5-4)步,路由同步報文如果使本路由節點最佳路由的屬性發生變化,從原有的最佳路由降為備份路由,並且新選出的最佳路由是本節點原來保存的非最佳路由,其來源鄰居會話駐留在本地,則由本地BGP-Node向鄰接路由器發送路由變更通告。
經過對傳統BGP協議軟體進行修改,BGP-Node由鄰居會話維護模塊、路由計算與同步模塊、路由信息庫與管理控制模塊組成。鄰居會話維護模塊負責BGP協議狀態機的維護,具有與傳統BGP協議相同的協議狀態機,但是處理的鄰居關係增加了X-BGP類型;路由計算與同步模塊定義了路由同步報文,分為路由更新報文處理子模塊和路由同步報文處理子模塊,所有BGP-Node的路由計算與同步模塊協同進行整個高性能路由器全局最佳路由的計算;路由信息庫保存本BGP-Node收到的路由信息,路由更新報文處理子模塊和路由同步報文處理子模塊都要查詢和更新路由信息庫;管理控制模塊配置路由策略,進行鄰居會話的分解。
BGP分布並行實現之後的高性能路由器要保證數據轉發功能的正確性,每個路由節點必須具有一致的轉發行為,即無論採用哪個路由節點轉發數據,整個高性能路由器所表現出來的轉發操作必須相同。本發明各個BGP-Node通過路由計算與同步模塊的路由同步過程實現了最佳路由視圖的一致性。因為按照協議規範要求,BGP路由協議只把最佳路由寫入本路由節點的IP路由表,所以各個路由節點的IP路由表是一致的;IP轉發表由IP路由表去掉某些屬性生成,是簡化的IP路由表,因此各個路由節點的IP轉發表是一致的;IP轉發表向各個轉發引擎下載,這樣各個轉發引擎具有完全相同的轉發表映像。因此,儘管各個報文轉發引擎按照本地轉發表映像的內容獨立工作,但是整個高性能路由器每個路由節點對到達相同地址的IP報文按照相同的路由策略進行轉發,這樣並行實現後的整個高性能路由器在數據轉發時與傳統路由器看不出發生變化,從而保證了數據轉發功能的正確性。
採用本發明可以達到如下技術效果本發明實現了BGP鄰居會話維護、路由計算任務的並行處理和路由信息的分布存儲,實現了性能的擴展性和可靠性的提高,同時又通過有效的同步機制實現了各個路由節點控制平面的一致性和數據平面的一致性,將BGP-Node聚集對外虛擬成一個完整的BGP路由器。具體效果有(1)計算性能鄰居維護和路由計算任務劃分到不同的路由節點上並行處理,有助於降低路由策略計算對每個節點計算能力的消耗,提高整個路由器的吞吐量。
(2)存儲性能屬於不同BGP鄰居集合的路由信息分別存儲在各個BGP-Node上,提高了路由存儲能力上的擴展性。
(3)可靠性BGP路由協議分布在多個路由節點上並行運行,個別路由節點發生故障並不會造成整個路由器路由協議運行的中斷,提高了路由協議和路由器控制平面的可靠性。
(4)控制平面的一致性各個路由節點通過路由同步和計算模塊實現了一致的最佳路由視圖,由於BGP路由器只是將學到的最佳路由傳遞給其他路由器,每個路由節點代表整個高性能路由器向外傳遞的路由信息一致,這樣高性能路由器與其他路由器的BGP協議交互行為在並行實現前後沒有發生變化,確保了路由協議功能的正確性。
(5)數據平面的一致性各個路由節點的BGP-Node具有相同的全局最佳路由,BGP-Node只將最佳路由寫入IP路由表和IP轉發表,這樣各個路由節點的轉發引擎具有相同的轉發表,具有一致的轉發行為,這樣整個高性能路由器的數據轉發行為在並行實現前後沒有發生變化,確保了數據轉發功能的正確性。


圖1傳統高性能路由器採用的BGP路由協議主備模式實現結構;圖2本發明採用的BGP路由協議分布並行實現結構;圖3是本發明高性能路由器BGP鄰居關係示意圖;
圖4是傳統BGP協議軟體的實現結構;圖5是本發明BGP-Node的實現結構;圖6是本發明X-BGP協議路由同步報文的結構;圖7是採用本發明進行BGP協議分布並行實現後與採用傳統BGP協議在更新報文吞吐量和CPU利用率等方面的性能比較曲線。
具體實施例方式
圖1是傳統高性能路由器採用的BGP路由協議主備模式實現結構。圖2是本發明採用的BGP路由協議分布並行實現結構。在圖1和圖2中,路由節點可以是一個機櫃或者是一個中低端路由器。每個路由節點具有多個網絡接口與其他路由器互連,各個路由節點之間通過內部高速交換網絡互連。高性能路由器用於核心網絡,BGP是最重要的必備的路由協議。
在圖1的主備結構中,只有主控路由節點和備份控制路由節點可以運行BGP路由協議。正常情況下,主控節點運行BGP路由協議,生成BGP路由表後,寫入IP路由表和IP轉發表,通過內部網際網路發布到所有路由節點的所有轉發引擎的轉發表中。其他路由節點只是根據IP轉發表轉發數據報文。主控路由節點發生故障後,由備份控制路由節點接替工作,如圖1中二個路由節點之間的單向箭頭所示。
在圖2的全分布並行實現結構中,各個路由節點的功能是相同的,每個路由節點包含一個BGP-Node,運行BGP協議。各個BGP-Node通過內部互連網絡通信。每個BGP-Node生成BGP路由表,寫入IP路由表和IP轉發表,並直接寫入本節點各個轉發引擎的轉發表。各個BGP-Node之間通過內部交換網絡交互信息,實現路由的同步。
圖3是採用了本發明的高性能路由器的BGP鄰居關係示意圖(以4個路由節點的高性能路由器為例)。高性能路由器的每個路由節點和多個其他路由器相連,每個BGP-Node也和多個運行BGP的其他路由器建立鄰居關係。高性能路由器與其他路由器使用傳統的BGP協議進行通信,根據是否屬於相同的自治系統,建立內部BGP鄰居關係(I-BGP)或者外部BGP鄰居關係(E-BGP)。各個BGP-Node之間採用X-BGP協議,建立全互聯的X-BGP鄰居關係。
I-BGP和E-BGP交互使用傳統BGP協議,分為OPEN、KEEPALIVE、NOTIFICATION和UPDATE四種類型的報文;X-BGP協議具有OPEN、KEEPALIVE、NOTIFICATION和SYNCHRON四種類型的報文。傳統BGP協議採用單播IP位址,基於TCP傳輸;X-BGP協議的OPEN、KEEPALIVE、NOTIFICATION等三種鄰居關係維護報文採用單播IP位址,基於TCP傳輸,而SYNCHRON報文基於代表整個BGP-Node聚集的組播IP位址,基於UDP協議傳輸。
通過BGP-Node的路由計算與同步模塊,將BGP-Node聚集對外虛擬成一個BGP路由器。每個路由節點與其他路由器交換信息時,使用相同的代表整個高性能路由器的路由器標識(RouterID),傳遞的最佳路由信息不是某個BGP-Node局部最佳路由,而是整個高性能路由器的全局最佳路由。
圖4是傳統BGP協議軟體的實現結構。按照BGP協議規範RFC 1771,BGP協議軟體包括以下功能部件鄰居會話維護模塊、路由計算模塊、路由信息庫和管理控制模塊。鄰居會話維護模塊建立、維護或拆除BGP會話關係,收發鄰居關係維護報文。路由計算模塊接收路由更新消息,執行輸入路由策略過濾操作;計算到達目的網絡的最佳路由,相應地更新IP轉發表中對應的轉發項;根據鄰居會話的輸出路由策略,將最新路由信息發布給鄰居。路由信息庫保存由鄰居路由器送來的所有路由信息,並標記路由計算模塊計算出的最佳路由。管理控制模塊對路由協議進行配置和管理,由配置策略庫記錄配置的策略,實現對不同BGP鄰居的路由信息傳播控制和流量工程目標。
圖4鄰居會話維護模塊左側雙向箭頭表示與其他路由器交互OPEN、KEEPALIVE和NOTIFICATION等鄰居關係維護報文;路由計算模塊左側的單向箭頭表示與其他路由器交互路由更新報文(UPDATE)。
圖5是本發明BGP-Node的實現結構。與傳統BGP協議的實現類似,BGP-Node由鄰居會話維護模塊、路由計算與同步模塊、路由信息庫與管理控制模塊組成,但各部分的功能都有變化。鄰居會話維護模塊負責BGP協議狀態機的維護,具有與傳統BGP協議相同的協議狀態機,但是處理的鄰居關係增加了X-BGP類型;路由計算與同步模塊定義了路由同步報文,分為路由更新報文處理子模塊和路由同步報文處理子模塊,新增路由同步報文處理子模塊,路由更新報文處理子模塊也要參與路由同步過程,所有BGP-Node的路由計算與同步模塊協同進行整個高性能路由器全局最佳路由的計算;路由信息庫保存BGP-Node學到的路由信息,路由更新報文處理子模塊和路由同步報文處理子模塊都要查詢和更新路由信息庫;管理控制模塊配置路由策略,進行鄰居會話的分解。
圖5鄰居會話維護模塊左側雙向箭頭表示該BGP-Node與其他路由器或者其他BGP-Node交互OPEN、KEEPALIVE和NOTIFICATION等鄰居關係維護報文;路由計算與同步模塊左側的單向箭頭表示與其他路由器交互路由更新報文(UPDATE),或者與其他BGP-Node在內部互連網絡中交互路由同步報文(SYNCHRON)。
路由更新報文處理子模塊通過所在路由節點的外部網絡接口從其他路由器接收來自BGP鄰居的路由更新報文,完成報文解析和輸入策略處理後,進行路由計算並更新路由信息庫;將計算出的局部最佳路由信息封裝成路由同步報文,發送給所有其他BGP-Node,將計算出的全局最佳路由封裝為路由更新報文,傳遞給其他的BGP路由器。
路由同步報文處理子模塊通過高性能路由器內部互連網絡接收到其他BGP-Node的同步報文,完成報文解析後進行路由計算,並更新本地路由信息庫;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報文。
圖6是X-BGP路由同步報文的結構。BGP協議的最佳路由選擇不需要全部的BGP路由屬性信息,只需要路由屬性中固定長度的關鍵欄位。為此將BGP-Node間交互的路由信息簡化,X-BGP路由同步報文由報文頭和報文體組成。報文頭包括「報文類型」「報文長度」「來源鄰居標識」三個欄位,其中「報文類型」欄位說明是update(路由更新)類型還是withdraw(路由撤銷)類型;「報文長度」欄位說明路由同步報文的字節數;「來源鄰居標識」欄位說明引發本次路由變化事件的外部BGP路由器的IP位址。報文體分為update類型的同步報文的報文體和withdraw類型的同步報文的報文體二種類型。update類型的同步報文的報文體包括本地偏好度、Origin(路由來源類型)、AS路徑長度、下一跳AS、下一跳地址、MED(多出口鑑別字)以及多個「網絡前綴地址」和「網絡地址掩碼」。withdraw類型的同步報文的報文體攜帶一個或多個要撤銷的「網絡前綴地址」「網絡地址掩碼」信息。
圖7是有18個路由節點的高性能路由器採用本發明進行BGP分布並行實現後與採用傳統BGP協議軟體在更新報文吞吐量和CPU利用率等方面的性能比較曲線。每個路由節點的基準性能相同,每個BGP-Node負責1個鄰居會話的執行。每個鄰居每秒注入100條路由更新報文,鄰居會話數量從2個增長到18個的配置情況下,圖7(a)和圖7(b)對每個鄰居的吞吐量和每個節點的CPU利用率進行比較。
由圖7(a)看出,隨著鄰居規模的增大,傳統BGP的更新報文吞吐量迅速下降,有18個鄰居時每個鄰居的吞吐量平均只有37個報文;但是採用本發明後18個BGP-Node並行處理時,每個鄰居路由更新報文的吞吐量基本保持不變。
由圖7(b)看出,各個BGP-Node並行處理時CPU利用率增長很慢,而傳統BGP協議CPU利用率快速增長,在鄰居會話數量為18個時,二者在CPU利用率上的差距約60%。
隨著鄰居數的增多,並行實現時每個鄰居的更新報文吞吐量有所下降,各個BGP-Node的CPU利用率有所上升,主要是由於BGP-Node之間路由同步計算過程和內部通訊報文的開銷,例如BGP-Node需要處理來自於其他BGP-Node的路由同步報文或者轉發路由更新報文。
下面是對本發明路由協議全分布並行實現系統存儲性能收益的分析設高性能路由器有N個路由節點,每個路由節點1個BGP-Node。整個路由器共有P個網絡前綴,到每個網絡前綴平均每個BGP-Node從外部路由器學到K條路由,對每個網絡前綴平均有K*N條路由。在傳統路由器中,BGP路由信息庫總共要保存N*K*P條路由。而在本發明中,對每個網絡前綴,每個BGP-Node只需要保存K條從本地鄰居學到的路由,以及最多(N-1)條從其他BGP-Node收到的由其他BGP-Node斷定的最佳路由。每個BGP-Node共保存(K+(N-1))*P條路由。
設保存外部路由器學到的路由更新的存儲代價為M1,保存從其他BGP-Node收到的同步路由信息的代價為M2。由於每個路由項完整的路由屬性信息只保存在其來源鄰居會話所在的BGP-Node上,因此M1>M2。由此得到每個BGP-Node和傳統路由器路由存儲容量需求之比SS=(M1*K+M2*(N-1))*PM1*(K*N)*PK+N-1K*N.]]>例如K=2,N=18,每個節點相對於傳統路由器的存儲開銷減少約50%,並且隨著K和N的變大,每個節點的存儲開銷會變得更小。
下面是對本發明路由協議全分布並行實現系統的可靠性收益的分析設高性能路由器有N個路由節點和N個BGP-Node。從基本路由功能上看,傳統路由器的BGP路由協議出現故障,所有的BGP鄰居關係都要斷鏈,而在本發明中某個BGP-Node出現故障,其他BGP-Node仍然可以正常工作,受影響的外部BGP鄰居也只有原來的1/N,因此BGP協議的可靠性提高到原來的N倍。
如果整個路由器網絡前綴數為P,並且每個BGP-Node對每個前綴從其他路由器學到K條路由,那麼發生故障後,傳統路由器所有K*N*P條路由都被清除,而在本發明中只會撤銷K*P條路由,受影響的路由只有原來的1/N,每個網絡前綴仍然存在K*(N-1)條路由,仍然可達。
根據歐洲網絡信息中心(RIPE)對大量核心網絡路由表的統計和分析的具體數據(Routing Information Service.http://www.ripe.net/ris/),在核心路由器中絕大多數網絡前綴都有多條路由,被統計路由器不具有冗餘路由的網絡前綴都低於5%,最少的只有0.4%。這說明在實際網絡中,即使在最壞的情況下,即不具有冗餘路由的網絡前綴全部駐留在發生故障的BGP-Node上,造成不可達的網絡前綴最多也不會超過5%。
權利要求
1.一種高性能路由器BGP路由協議分布並行實現方法,其特徵在於它包括以下步驟第一步,構建基於BGP-Node的BGP分布並行實現系統,方法是多個路由節點通過高速網際網路連接,每個路由節點進行數據轉發並運行BGP,每個路由節點實現傳統BGP協議的全部功能,即每個路由節點包含一個功能相同的BGP-Node;整個BGP協議不再作為一個獨立的進程運行在主控節點上,而是作為多個獨立的BGP實體運行於每個路由節點上;各個BGP-Node通過內部網絡接口通信,每個BGP-Node生成BGP路由表,並寫入本路由節點的IP路由表和IP轉發表,並將IP轉發表中的信息下載到本路由節點的各個轉發引擎的轉發表中;第二步,將整個高性能路由器BGP協議的鄰居會話維護、路由計算和路由存儲三種任務分解到各個BGP-Node,方法是先分解BGP鄰居會話,再進行路由計算和路由存儲功能的分解,使得每個BGP-Node只負責本路由節點的BGP鄰居會話維護,接收、處理和存儲本節點鄰居送來的路由信息;第三步,採用X-BGP協議進行BGP-Node之間的會話關係維護和路由同步以及高性能路由器最佳路由的計算,方法是設計X-BGP協議的報文,將X-BGP協議的報文分為鄰居關係維護報文和路由同步報文二大類,由鄰居關係維護報文負責BGP-Node之間的控制信息和狀態信息的傳遞,由路由同步報文傳遞BGP-Node之間的路由同步信息;對傳統BGP協議鄰居會話維護模塊進行修改,以維護高性能路由器內部各個BGP-Node之間的鄰居會話關係;對傳統BGP協議路由計算模塊進行修改,將該模塊變為路由計算與同步模塊,以處理BGP-Node之間的路由同步和整個高性能路由器全局最佳路由的計算。
2.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於分解BGP鄰居會話的方法是修改傳統BGP協議的管理控制模塊,在該模塊中增加鄰居會話維護任務分解子模塊,鄰居會話維護任務分解子模塊的流程是2.1對配置策略庫中的每個BGP鄰居關係,以BGP鄰居的IP位址為關鍵字查找IP路由表,得到到達該地址需要經過的高性能路由器的網絡接口編號,網絡接口編號中的路由節點號即是負責維護該BGP鄰居關係的路由節點號和BGP-Node編號;2.2如果負責維護該BGP鄰居關係的BGP-Node發生故障,則選擇負載最小的BGP-Node負責維護該鄰居關係;2.3生成BGP鄰居路由器和BGP-Node對應關係表,下發到各個路由節點的所有轉發引擎;2.4路由節點和BGP-Node的狀態發生嚴重變化時,則對受影響的鄰居會話重新進行分派。
3.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於所述路由計算任務的分解由各個路由節點的轉發引擎進行,方法是各個路由節點通過外部網絡接口從其他路由器收到BGP路由更新報文時,轉發引擎以報文的源地址為關鍵字查找BGP鄰居路由器和BGP-Node對應關係表,得到目標BGP-Node編號,將該路由報文送給目標BGP-Node,由目標BGP-Node處理該路由更新報文,進行路由計算。
4.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於所述路由信息存儲功能的分解由各個BGP-Node進行,方法是每個BGP-Node都有路由信息庫,分別保存所在BGP-Node收到的由轉發引擎送來的路由更新報文中的完整的路由信息,從而實現路由信息的分布式存儲。
5.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於所述X-BGP鄰居關係維護報文有OPEN、KEEPALIVE和NOTIFICATION三種類型,這三種報文的語法、語義、時序關係與傳統BGP相同,但是要求鄰居地址是同一高性能路由器的其他BGP-Node,由X-BGP鄰居關係維護報文傳遞BGP-Node之間的控制信息和狀態信息;所述X-BGP路由同步報文SYNCHRON與傳統BGP協議的UPDATE報文在協議狀態機中具有相同的時序關係,由報文頭和報文體組成報文頭包括「報文類型」、「報文長度」、「來源鄰居標識」三個欄位,其中「報文類型」欄位說明是update即路由更新類型還是withdraw即路由撤銷類型;「報文長度」欄位說明路由同步報文的字節數;「來源鄰居標識」欄位說明引發本次路由變化事件的外部BGP路由器的IP位址;報文體分為update類型的同步報文的報文體和withdraw類型的同步報文的報文體二種,update類型的同步報文的報文體包括本地偏好度、Origin即路由來源類型、AS路徑長度、下一跳AS、下一跳地址、MED即多出口鑑別字以及多個「網絡前綴地址」和「網絡地址掩碼」;withdraw類型的同步報文的報文體攜帶一個或多個要撤銷的「網絡前綴地址」「網絡地址掩碼」信息。
6.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於所述對傳統BGP協議鄰居會話維護模塊進行修改的方法是在鄰居關係類型相關的數據結構中新增「X-BGP」類型,鄰居關係維護報文在BGP-Node之間採用內部網絡接口傳遞控制信息和狀態信息。
7.如權利要求1所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於將傳統BGP協議的路由計算模塊進行修改的方法是將傳統BGP協議的路由計算模塊進行修改後更名為路由計算與同步模塊,它由路由更新報文處理和路由同步報文處理二個子模塊組成7.1路由更新報文處理子模塊通過所在路由節點的外部網絡接口從其他路由器接收來自BGP鄰居的路由更新報文,完成報文解析和輸入策略處理後,進行路由計算並更新路由信息庫;將計算出的局部最佳路由信息封裝成路由同步報文,發送給所有其他BGP-Node,將計算出的全局最佳路由封裝為路由更新報文,傳遞給其他的BGP路由器,其工作流程是(1)接收其他路由器送來的路由更新報文,報文攜帶的主要參數有type,routeattrib,rt,p,其中type表示路由更新操作的類型,可以是update,或者withdraw;routeattrib在增加新路由項時,代表路由更新報文中攜帶的路由屬性信息;rt為待處理的路由信息,包括目的網絡前綴,AS-Path、Next-Hop等路由屬性,以及宣告該路由的BGP鄰居等;p為該路由更新報文的來源鄰居標識,是外部路由器的標識;(2)設置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網絡前綴的葉節點,記為routenode;(4)如果更新報文的類型是withdraw,則進行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的葉節點,則結束處理;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進行(4-5)~(4-7),否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節點從路由信息庫中刪除,然後向所有合適的鄰居發布關於rt的路由撤銷報文;(4-7)如果新的routenode.bestroute不為空,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告;(5)如果更新報文的類型是update,則進行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然後把routenode插入到路由信息庫中,並把rt向所有合適的鄰居宣告;跳轉到步驟(6)執行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把這一新選出的最佳路由向所有合適的鄰居宣告;(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉發表(6-1)如果routenode.bestroute為空,則從IP路由表和轉發表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉發表中;7.2路由同步報文處理子模塊通過高性能路由器內部網絡接口接收到其他BGP-Node的同步報文,完成報文解析後進行路由計算,並更新本地路由信息庫RIB;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報文,其工作流程是(1)接收其他BGP-Node送來的路由同步報文,報文攜帶的主要參數有type,routeattrib,rt,p,其中type表示路由同步操作的類型,可以是update,或者withdraw;routeattrib在增加新路由項時,代表同步報文中攜帶的路由屬性信息;rt為待處理的路由信息;p為該路由的來源鄰居標識,即宣告該路由的其他路由器;(2)設置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網絡前綴的葉節點,記為routenode;(4)如果同步報文的類型是withdraw,則進行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的節點,則返回;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進行(4-5)~(4-7)步操作,否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節點從路由信息庫中刪除;(4-7)如果新的routenode.bestroute不為空,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告,這時的最佳路由是本節點原來保存的非最佳路由;(5)如果同步報文的類型是update,則進行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然後把routenode插入到路由信息庫中;跳轉到步驟(6)執行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,並且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把新選出的最佳路由向所有合適的鄰居宣告;(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉發表(6-1)如果routenode.bestroute為空,則從IP路由表和轉發表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉發表中。
8.如權利要求1或7所述的高性能路由器BGP路由協議分布並行實現方法,其特徵在於所述「所有合適的鄰居」包括I-BGP,E-BGP和X-BGP各種類型的鄰居,向I-BGP和E-BGP鄰居發布路由信息或進行路由宣告使用的是傳統BGP的路由更新報文,向X-BGP鄰居發布路由信息使用的是X-BGP路由同步報文;判斷鄰居是否「合適」依據的是配置策略庫中的路由策略是否允許向該鄰居輸出本路由。
全文摘要
本發明公開了一種高性能路由器BGP路由協議分布並行實現方法,目的是為具有多個路由節點的高性能路由器提供域間路由協議的分布並行實現方法。技術方案是每個路由節點獨立運行BGP協議以構建基於BGP-Node的BGP分布並行實現系統,將整個高性能路由器BGP協議的鄰居會話維護、路由計算和路由存儲三種任務分解到各個BGP-Node,採用X-BGP協議進行BGP-Node之間的會話關係維護和路由同步,並修改路由計算模塊實現高性能路由器全局最佳路由的計算。採用本發明可將BGP-Node聚集對外虛擬成一個完整的BGP路由器,提高計算性能、存儲性能和可靠性,且實現了各個路由節點控制平面的一致性和數據平面的一致性。
文檔編號H04L29/06GK1976313SQ20061003227
公開日2007年6月6日 申請日期2006年9月19日 優先權日2006年9月19日
發明者朱培棟, 寧洪, 張曉哲, 杜秀春, 劉功傑, 蔡開裕 申請人:中國人民解放軍國防科學技術大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀