專利名稱:高性能路由器bgp路由協(xié)議分布并行實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高性能路由器路由協(xié)議的并行實(shí)現(xiàn)方法,尤其是域間路由協(xié)議BGP(邊界網(wǎng)關(guān)協(xié)議)的分布并行實(shí)現(xiàn)方法。
背景技術(shù):
隨著Internet規(guī)模的快速擴(kuò)展和用戶流量的激增,對核心網(wǎng)絡(luò)高性能路由器的轉(zhuǎn)發(fā)要求越來越高。由于單個(gè)機(jī)柜容納的網(wǎng)絡(luò)接口數(shù)量有限,具有多機(jī)柜體系結(jié)構(gòu)的新型高性能路由器應(yīng)運(yùn)而生。這種新型高性能路由器將大量各種類型的網(wǎng)絡(luò)接口分布在多個(gè)機(jī)柜上,根據(jù)業(yè)務(wù)發(fā)展需要可增加新的機(jī)柜,實(shí)現(xiàn)路由器結(jié)構(gòu)的高度可擴(kuò)展性。例如,Juniper公司的TX Matrix路由器,Alcatel公司的RCP 7770路由器,Cisco公司的CRS-1路由器,Avici公司的TSR路由器等。
也可以將多個(gè)廉價(jià)的中低性能的路由器互聯(lián)起來,構(gòu)成單個(gè)高性能路由器,從而簡化網(wǎng)絡(luò)管理。組成高性能路由器的一個(gè)機(jī)柜或者一個(gè)中低端路由器稱為路由節(jié)點(diǎn)。分布在多個(gè)路由節(jié)點(diǎn)上的數(shù)目眾多的轉(zhuǎn)發(fā)引擎同時(shí)接收和轉(zhuǎn)發(fā)用戶數(shù)據(jù),從而實(shí)現(xiàn)高性能的數(shù)據(jù)轉(zhuǎn)發(fā)。這種具有多個(gè)路由節(jié)點(diǎn)的高性能路由器采用專用高速互聯(lián)網(wǎng)絡(luò)連接多個(gè)機(jī)柜或者多個(gè)中低端路由器,路由協(xié)議在CPU上運(yùn)行,數(shù)據(jù)報(bào)文由各個(gè)路由節(jié)點(diǎn)的網(wǎng)絡(luò)接口板的轉(zhuǎn)發(fā)引擎查找IP轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā),路由報(bào)文由轉(zhuǎn)發(fā)引擎送CPU路由協(xié)議軟件處理。整個(gè)高性能路由器具有統(tǒng)一的管理軟件和配置界面,設(shè)備管理員使用起來是一臺完整的高性能路由器,而不是一個(gè)個(gè)獨(dú)立的路由節(jié)點(diǎn)。
高性能路由器由數(shù)據(jù)平面負(fù)責(zé)報(bào)文的轉(zhuǎn)發(fā),由控制平面負(fù)責(zé)路由協(xié)議的處理。在數(shù)據(jù)平面轉(zhuǎn)發(fā)性能提高的同時(shí),控制平面路由協(xié)議的處理成為了瓶頸。主要由于網(wǎng)絡(luò)規(guī)模的擴(kuò)展和各種新型網(wǎng)絡(luò)應(yīng)用的不斷涌現(xiàn),使路由器存儲和計(jì)算的路由信息數(shù)量快速增長,路由器軟件系統(tǒng)的功能變得更加復(fù)雜。BGP(邊界網(wǎng)關(guān)協(xié)議)是域間路由協(xié)議的事實(shí)標(biāo)準(zhǔn),是ISP(互聯(lián)網(wǎng)服務(wù)提供商)互連的基本手段和唯一在用的域間路由協(xié)議,是高性能路由器最重要路由協(xié)議。目前核心路由器BGP路由表的數(shù)目達(dá)到688000條,并仍然呈現(xiàn)指數(shù)增長的趨勢;要求支持的BGP鄰居會話數(shù)目增加到數(shù)百個(gè);組播支持、MPLS(多協(xié)議標(biāo)記交換)擴(kuò)展、IPv6擴(kuò)展等新增屬性使路由計(jì)算的過程更加復(fù)雜;BGP路由前綴的猝發(fā)更新,持續(xù)的路由抖動(dòng)等問題使每秒鐘需要處理的BGP路由更新報(bào)文顯著增加。上述問題對BGP協(xié)議的擴(kuò)展性提出了挑戰(zhàn),惡化了控制平面BGP協(xié)議的性能,如何提高BGP處理性能和存儲效率對提高高性能路由器控制平面的效能至關(guān)重要。
目前多機(jī)柜高性能路由器的軟件體系結(jié)構(gòu)大都采用主從控制模式,指定一個(gè)路由節(jié)點(diǎn)作為主控節(jié)點(diǎn),只有主控路由節(jié)點(diǎn)和備份控制路由節(jié)點(diǎn)可以運(yùn)行路由協(xié)議。正常情況下,主控路由節(jié)點(diǎn)運(yùn)行BGP路由協(xié)議,生成BGP路由表后,寫入IP路由表和IP轉(zhuǎn)發(fā)表,通過內(nèi)部互聯(lián)網(wǎng)絡(luò)發(fā)布到所有路由節(jié)點(diǎn)的所有轉(zhuǎn)發(fā)引擎的轉(zhuǎn)發(fā)表中。其他路由節(jié)點(diǎn)只是根據(jù)轉(zhuǎn)發(fā)引擎中的轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。主控路由節(jié)點(diǎn)發(fā)生故障后,由備份控制路由節(jié)點(diǎn)運(yùn)行BGP路由協(xié)議,接替主控路由節(jié)點(diǎn)工作。有的產(chǎn)品雖然支持多個(gè)路由處理器并行工作,但各個(gè)處理器只是用來獨(dú)立維護(hù)BGP鄰居關(guān)系,全局最佳路由的計(jì)算仍然是由專門的處理器集中計(jì)算和集中存儲。
按照BGP協(xié)議規(guī)范RFC(Request For Comment)1771,傳統(tǒng)BGP路由協(xié)議軟件的實(shí)現(xiàn)結(jié)構(gòu)包括鄰居會話維護(hù)模塊、路由計(jì)算模塊、路由信息庫和管理控制模塊。各個(gè)模塊的功能如下●鄰居會話維護(hù)模塊建立、維護(hù)或拆除BGP會話關(guān)系,收發(fā)鄰居關(guān)系維護(hù)報(bào)文。
●路由計(jì)算模塊接收路由更新消息,計(jì)算到達(dá)目的網(wǎng)絡(luò)的最佳路由,相應(yīng)地更新IP轉(zhuǎn)發(fā)表中對應(yīng)的轉(zhuǎn)發(fā)項(xiàng),將最新路由信息發(fā)布給鄰居。
●路由信息庫存儲鄰居發(fā)送的所有路由信息,標(biāo)記路由計(jì)算模塊計(jì)算出的最佳路由。路由器所有的BGP路由信息都集中保存在一個(gè)路由信息庫中,要求路由信息庫的容量非常大。
●管理控制模塊利用配置策略庫對路由協(xié)議進(jìn)行配置和管理。
盡管可以在主控節(jié)點(diǎn)上通過優(yōu)化軟件系統(tǒng)來提高協(xié)議的處理速度或減少存儲開銷,但是優(yōu)化的潛力畢竟有限,且這種方法不具備擴(kuò)展性。在主控節(jié)點(diǎn)上采用多個(gè)CPU具有一定的擴(kuò)展性,但這種方法沒有充分利用高性能路由器分布式的計(jì)算資源和存儲資源,而且一旦主控節(jié)點(diǎn)的軟件系統(tǒng)發(fā)生故障,由于向備份控制節(jié)點(diǎn)的切換有一定時(shí)延,整個(gè)高性能路由器的路由和轉(zhuǎn)發(fā)都要受到影響;采用這種1∶1的備份,系統(tǒng)的可靠性不高,如果備份控制節(jié)點(diǎn)也出現(xiàn)故障,整個(gè)高性能路由器的軟件系統(tǒng)就要癱瘓。而基于多個(gè)路由節(jié)點(diǎn)的分布式并行實(shí)現(xiàn)方法不但具有性能的高度擴(kuò)展性、更好的可靠性,而且可以充分利用高性能路由器分布式的計(jì)算資源和存儲資源。
在網(wǎng)絡(luò)協(xié)議并行實(shí)現(xiàn)方法的研究方面,針對BGP協(xié)議開展的工作較少。針對網(wǎng)絡(luò)傳輸協(xié)議TCP的并行實(shí)現(xiàn),Mats Bjorkman等提出X-Kernel體系結(jié)構(gòu);針對OSPF路由協(xié)議,Michigan州立大學(xué)的Xipeng Xiao提出將OSPF區(qū)域劃分為多個(gè)不相交的“區(qū)域內(nèi)路由范圍”,把對整個(gè)路由表的計(jì)算劃分為多個(gè)獨(dú)立的部分,由不同的路由節(jié)點(diǎn)來并行完成。Sharad收集來自于Spring Network的196個(gè)Cisco路由器長達(dá)3年的運(yùn)行數(shù)據(jù),分析表明絕大多數(shù)骨干網(wǎng)絡(luò)路由器的BGP協(xié)議進(jìn)程消耗了60%以上的控制平面計(jì)算資源。BGP協(xié)議的實(shí)現(xiàn)已經(jīng)成為高性能路由器控制平面的性能瓶頸,但目前還沒有公開的技術(shù)資料提出實(shí)用的BGP路由協(xié)議分布并行實(shí)現(xiàn)方法。針對具有多個(gè)路由節(jié)點(diǎn)的高性能路由器,研發(fā)有效的BGP協(xié)議分布并行實(shí)現(xiàn)方法成為人們關(guān)注的重要問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是基于具有多個(gè)路由節(jié)點(diǎn)的高性能路由器,構(gòu)建BGP分布并行實(shí)現(xiàn)系統(tǒng),提供域間路由協(xié)議BGP的分布并行實(shí)現(xiàn)方法。
技術(shù)方案是每個(gè)路由節(jié)點(diǎn)獨(dú)立運(yùn)行BGP協(xié)議以構(gòu)建基于BGP-Node的BGP分布并行實(shí)現(xiàn)系統(tǒng),將整個(gè)高性能路由器BGP協(xié)議的鄰居會話維護(hù)、路由計(jì)算和路由存儲三種任務(wù)分解到各個(gè)BGP-Node,采用X-BGP協(xié)議進(jìn)行BGP-Node之間的會話關(guān)系維護(hù)和路由同步,并修改路由計(jì)算模塊實(shí)現(xiàn)高性能路由器全局最佳路由的計(jì)算。
本發(fā)明新定義的術(shù)語有路由節(jié)點(diǎn)、BGP-Node、BGP-Node聚集、X-BGP和路由同步報(bào)文。組成高性能路由器的一個(gè)機(jī)柜或者一個(gè)中低端路由器稱為路由節(jié)點(diǎn)。分布在各個(gè)路由節(jié)點(diǎn)上獨(dú)立運(yùn)行的BGP實(shí)體(包括BGP協(xié)議軟件以及存儲的路由信息等)稱為BGP-Node。同一高性能路由器的所有BGP-Node的集合稱為一個(gè)BGP-Node聚集。X-BGP是本發(fā)明設(shè)計(jì)的同一臺高性能路由器內(nèi)部各BGP-Node之間的同步與通訊協(xié)議,BGP-Node之間建立的是X-BGP類型的鄰居關(guān)系。路由同步報(bào)文(SYNCHRON)是用于BGP-Node之間路由同步信息傳輸?shù)膶S脠?bào)文。另外,將未采用本發(fā)明進(jìn)行并行實(shí)現(xiàn)的RFC 1771等規(guī)范定義的BGP協(xié)議稱為傳統(tǒng)BGP。交換路由信息的BGP實(shí)體互稱BGP鄰居,交換路由信息時(shí)要建立的連接稱為BGP會話。BGP路由表又稱路由信息庫(RIB),存儲的是BGP協(xié)議的路由信息;IP路由表存儲的是包括BGP路由協(xié)議在內(nèi)的高性能路由器上運(yùn)行的所有路由協(xié)議的基本路由信息,IP路由表不保存BGP路由表中的具體協(xié)議相關(guān)的屬性信息,如果BGP路由表中有多條到目標(biāo)網(wǎng)絡(luò)的路由,則只是把最佳路由寫入IP路由表;IP轉(zhuǎn)發(fā)表是直接用于數(shù)據(jù)轉(zhuǎn)發(fā)的簡化的IP路由表,如果IP路由表中有多個(gè)路由協(xié)議學(xué)到的到目標(biāo)網(wǎng)絡(luò)的多條路由,則只是把其中一條最佳路由寫入IP轉(zhuǎn)發(fā)表。高性能路由器的內(nèi)部路由節(jié)點(diǎn)之間采用專用高速網(wǎng)絡(luò)互連,路由節(jié)點(diǎn)之間通信使用的接口稱為內(nèi)部網(wǎng)絡(luò)接口或內(nèi)部接口;高性能路由器用于和其他網(wǎng)絡(luò)設(shè)備或者用戶主機(jī)互連的接口,稱為外部網(wǎng)絡(luò)接口或外部接口。沒有特殊說明時(shí)網(wǎng)絡(luò)接口指的是路由器的外部網(wǎng)絡(luò)接口。
高性能路由器如果有N個(gè)路由節(jié)點(diǎn),分別編號0...N-1;每個(gè)路由節(jié)點(diǎn)可有多個(gè)接口板,每個(gè)接口板上有多個(gè)網(wǎng)絡(luò)接口;路由器的網(wǎng)絡(luò)接口以層次命名的方式來編號,即“路由節(jié)點(diǎn)號/板卡號/接口號”;每個(gè)路由節(jié)點(diǎn)運(yùn)行一個(gè)BGP-Node,所以BGP-Node的編號和路由節(jié)點(diǎn)號一致。
本發(fā)明BGP路由協(xié)議分布并行實(shí)現(xiàn)方法包括以下步驟第一步,構(gòu)建基于BGP-Node的BGP分布并行實(shí)現(xiàn)系統(tǒng),方法是多個(gè)路由節(jié)點(diǎn)通過高速互聯(lián)網(wǎng)絡(luò)連接,每個(gè)路由節(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)并運(yùn)行BGP(可能同時(shí)運(yùn)行其他路由協(xié)議),每個(gè)路由節(jié)點(diǎn)實(shí)現(xiàn)傳統(tǒng)BGP協(xié)議的全部功能,即每個(gè)路由節(jié)點(diǎn)包含一個(gè)功能相同的BGP-Node。這樣,整個(gè)BGP協(xié)議不再作為一個(gè)獨(dú)立的進(jìn)程運(yùn)行在主控節(jié)點(diǎn)上,而是作為多個(gè)獨(dú)立的BGP實(shí)體運(yùn)行于每個(gè)路由節(jié)點(diǎn)上。各個(gè)BGP-Node通過內(nèi)部網(wǎng)絡(luò)接口通信。每個(gè)BGP-Node生成BGP路由表,并寫入本路由節(jié)點(diǎn)的IP路由表和IP轉(zhuǎn)發(fā)表,并將IP轉(zhuǎn)發(fā)表中的信息下載到本路由節(jié)點(diǎn)的各個(gè)轉(zhuǎn)發(fā)引擎的轉(zhuǎn)發(fā)表中。
第二步,將整個(gè)高性能路由器BGP協(xié)議的鄰居會話維護(hù)、路由計(jì)算和路由存儲三種任務(wù)分解到各個(gè)BGP-Node,方法是先分解BGP鄰居會話,再進(jìn)行路由計(jì)算和路由存儲功能的分解,使得每個(gè)BGP-Node只負(fù)責(zé)本路由節(jié)點(diǎn)的BGP鄰居會話維護(hù),接收、處理和存儲本節(jié)點(diǎn)鄰居送來的路由信息2.1BGP鄰居會話的分解方法是修改傳統(tǒng)BGP協(xié)議的管理控制模塊,在該模塊中增加鄰居會話維護(hù)任務(wù)分解子模塊,將整個(gè)高性能路由器維護(hù)的所有BGP鄰居會話以不相交的方式分解到各個(gè)BGP-Node。鄰居會話維護(hù)任務(wù)分解子模塊的流程是①對配置策略庫中的每個(gè)BGP鄰居關(guān)系,以BGP鄰居的IP地址為關(guān)鍵字查找IP路由表,得到到達(dá)該地址需要經(jīng)過的高性能路由器的網(wǎng)絡(luò)接口編號,網(wǎng)絡(luò)接口編號中的路由節(jié)點(diǎn)號即是負(fù)責(zé)維護(hù)該BGP鄰居關(guān)系的路由節(jié)點(diǎn)號和BGP-Node編號,這樣選擇處理BGP鄰居關(guān)系的BGP-Node能夠通過所在路由節(jié)點(diǎn)的外部接口直接到達(dá)對應(yīng)的鄰居路由器,不需要再次穿越內(nèi)部交換網(wǎng)絡(luò)。
②如果負(fù)責(zé)維護(hù)該BGP鄰居關(guān)系的BGP-Node發(fā)生故障,則選擇負(fù)載最小的BGP-Node(例如維護(hù)的鄰居關(guān)系數(shù)目最少的節(jié)點(diǎn))負(fù)責(zé)維護(hù)該鄰居關(guān)系。
③生成BGP鄰居路由器和BGP-Node對應(yīng)關(guān)系表(說明某個(gè)BGP路由器的鄰居會話由哪個(gè)BGP-Node維護(hù)),下發(fā)到各個(gè)路由節(jié)點(diǎn)的所有轉(zhuǎn)發(fā)引擎。
④路由節(jié)點(diǎn)和BGP-Node的狀態(tài)發(fā)生嚴(yán)重變化(例如出現(xiàn)故障)時(shí),則對受影響的鄰居會話重新進(jìn)行分派。
2.2路由計(jì)算任務(wù)的分解由各個(gè)路由節(jié)點(diǎn)的轉(zhuǎn)發(fā)引擎進(jìn)行,方法是各個(gè)路由節(jié)點(diǎn)通過外部網(wǎng)絡(luò)接口從其他路由器收到BGP路由更新報(bào)文時(shí),轉(zhuǎn)發(fā)引擎以報(bào)文的源地址為關(guān)鍵字查找BGP鄰居路由器和BGP-Node對應(yīng)關(guān)系表,得到目標(biāo)BGP-Node編號,將該路由報(bào)文送給目標(biāo)BGP-Node,由目標(biāo)BGP-Node處理該路由更新報(bào)文,進(jìn)行路由計(jì)算。
2.3路由信息存儲功能的分解由各個(gè)BGP-Node進(jìn)行,方法是每個(gè)BGP-Node都有路由信息庫,分別保存所在BGP-Node收到的由轉(zhuǎn)發(fā)引擎送來的路由更新報(bào)文中的完整的路由信息,從而實(shí)現(xiàn)了路由信息的分布式存儲。
第三步,采用X-BGP協(xié)議進(jìn)行BGP-Node之間的會話關(guān)系維護(hù)和路由同步以及高性能路由器最佳路由的計(jì)算,BGP-Node聚集在外部行為上與傳統(tǒng)BGP協(xié)議一致,確保整個(gè)高性能路由器路由與轉(zhuǎn)發(fā)功能的正確性,方法是3.1設(shè)計(jì)X-BGP協(xié)議的報(bào)文,將X-BGP協(xié)議的報(bào)文分為鄰居關(guān)系維護(hù)報(bào)文和路由同步報(bào)文二大類
X-BGP鄰居關(guān)系維護(hù)報(bào)文有OPEN、KEEPALIVE和NOTIFICATION三種類型,這三種報(bào)文的語法、語義、時(shí)序關(guān)系與傳統(tǒng)BGP相同,但是要求鄰居地址是同一高性能路由器的其他BGP-Node,由X-BGP鄰居關(guān)系維護(hù)報(bào)文傳遞BGP-Node之間的控制信息和狀態(tài)信息;X-BGP路由同步報(bào)文是SYNCHRON,SYNCHRON報(bào)文格式比傳統(tǒng)BGP協(xié)議的UPDATE報(bào)文簡單,與傳統(tǒng)BGP協(xié)議的UPDATE報(bào)文在協(xié)議狀態(tài)機(jī)中具有相同的時(shí)序關(guān)系,具體格式是路由同步報(bào)文由報(bào)文頭和報(bào)文體組成。報(bào)文頭包括“報(bào)文類型”“報(bào)文長度”“來源鄰居標(biāo)識”三個(gè)字段,其中“報(bào)文類型”字段說明是update(路由更新)類型還是withdraw(路由撤銷)類型;“報(bào)文長度”字段說明路由同步報(bào)文的字節(jié)數(shù);“來源鄰居標(biāo)識”字段說明引發(fā)本次路由變化事件的外部BGP路由器的IP地址。報(bào)文體分為update類型的同步報(bào)文的報(bào)文體和withdraw類型的同步報(bào)文的報(bào)文體二種類型。update類型的同步報(bào)文的報(bào)文體包括本地偏好度、Origin(路由來源類型)、AS路徑長度、下一跳AS、下一跳地址、MED(多出口鑒別字)以及多個(gè)“網(wǎng)絡(luò)前綴地址”和“網(wǎng)絡(luò)地址掩碼”。withdraw類型的同步報(bào)文的報(bào)文體攜帶一個(gè)或多個(gè)要撤銷的“網(wǎng)絡(luò)前綴地址”“網(wǎng)絡(luò)地址掩碼”信息。由SYNCHRON傳遞BGP-Node之間的路由同步信息。
3.2對傳統(tǒng)BGP協(xié)議鄰居會話維護(hù)模塊進(jìn)行修改,以維護(hù)高性能路由器內(nèi)部各個(gè)BGP-Node之間的鄰居會話關(guān)系每個(gè)BGP-Node代表整個(gè)高性能路由器與外部運(yùn)行BGP協(xié)議的路由器通過傳統(tǒng)BGP協(xié)議建立鄰居關(guān)系,如果高性能路由器與外部路由器屬于相同自治系統(tǒng),建立的是內(nèi)部BGP鄰居關(guān)系(I-BGP);如果屬于不同的自治系統(tǒng),建立的是外部BGP鄰居關(guān)系(E-BGP)。BGP-Node的鄰居會話維護(hù)模塊可使用原有的代碼實(shí)現(xiàn)I-BGP和E-BGP二種傳統(tǒng)的鄰居關(guān)系維護(hù)功能,但是需要修改鄰居會話維護(hù)模塊以處理同一高性能路由器內(nèi)部BGP-Node之間建立的X-BGP類型的鄰居關(guān)系。鄰居會話維護(hù)模塊的修改方法是在鄰居關(guān)系類型相關(guān)的數(shù)據(jù)結(jié)構(gòu)中新增“X-BGP”類型;鄰居關(guān)系維護(hù)報(bào)文在BGP-Node之間采用內(nèi)部網(wǎng)絡(luò)接口傳遞控制信息和狀態(tài)信息,而不是I-BGP和E-BGP采用的外部網(wǎng)絡(luò)接口。
3.3對傳統(tǒng)BGP協(xié)議路由計(jì)算模塊進(jìn)行修改,將該模塊變?yōu)槁酚捎?jì)算與同步模塊,以處理BGP-Node之間的路由同步和整個(gè)高性能路由器全局最佳路由的計(jì)算,方法是每個(gè)BGP-Node只負(fù)責(zé)計(jì)算和存儲本地BGP鄰居會話上接收的路由更新報(bào)文,只能看到通過本地鄰居會話獲得的路由可達(dá)信息,其他鄰居會話通告的路由可達(dá)信息是不可見的。每個(gè)BGP-Node如果基于本地路由可達(dá)信息進(jìn)行BGP最佳路由的選擇,則無法保證各個(gè)BGP-Node間BGP最佳路由視圖的一致性,這樣整個(gè)高性能路由器的行為和并行實(shí)現(xiàn)之前就不一致,就說明高性能路由器沒有正確實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)功能。另外,一個(gè)BGP-Node從自己的鄰居路由器學(xué)到的路由可能需要轉(zhuǎn)送到其他BGP路由器,這其中會有一些與其他BGP路由器的會話關(guān)系是由別的BGP-Node維護(hù)的。因此必須進(jìn)行BGP-Node間的路由信息的傳遞和路由同步。
將傳統(tǒng)BGP協(xié)議的路由計(jì)算模塊進(jìn)行修改后更名為路由計(jì)算與同步模塊,負(fù)責(zé)路由更新報(bào)文、路由同步報(bào)文的處理,進(jìn)行路由計(jì)算和不同BGP-Node之間的路由同步。每個(gè)BGP-Node基于本地路由可達(dá)信息進(jìn)行BGP最佳路由的選擇之后,通過路由同步報(bào)文在各個(gè)BGP-Node間傳遞選擇結(jié)果,在各個(gè)局部最佳路由的基礎(chǔ)上選擇出全局最佳路由。
路由計(jì)算與同步模塊由路由更新報(bào)文處理和路由同步報(bào)文處理二個(gè)子模塊組成。路由更新報(bào)文處理子模塊從其他路由器接收路由更新報(bào)文,更新本地BGP路由信息庫(RIB),向其他BGP-Node發(fā)送路由同步報(bào)文;路由同步報(bào)文處理子模塊從其他BGP-Node接收路由同步報(bào)文,更新BGP路由信息庫(RIB)。
下面各子模塊功能的描述中,“所有合適的鄰居”包括I-BGP,E-BGP和X-BGP各種類型的鄰居。向I-BGP和E-BGP鄰居發(fā)布路由信息或進(jìn)行路由宣告使用的是傳統(tǒng)BGP的路由更新報(bào)文,向X-BGP鄰居發(fā)布路由信息使用的是X-BGP路由同步報(bào)文。判斷鄰居是否“合適”依據(jù)的是配置策略庫中的路由策略是否允許向該鄰居輸出本路由。
路由更新報(bào)文處理子模塊通過所在路由節(jié)點(diǎn)的外部網(wǎng)絡(luò)接口從其他路由器接收來自BGP鄰居的路由更新報(bào)文,完成報(bào)文解析和輸入策略處理后,進(jìn)行路由計(jì)算并更新路由信息庫;將計(jì)算出的局部最佳路由信息封裝成路由同步報(bào)文,發(fā)送給所有其他BGP-Node,將計(jì)算出的全局最佳路由封裝為路由更新報(bào)文,傳遞給其他的BGP路由器。其工作流程是
(1)接收其他路由器送來的路由更新報(bào)文,報(bào)文攜帶的主要參數(shù)有type,routeattrib,rt,p。其中type表示路由更新操作的類型,可以是update(增加新路由項(xiàng)),或者withdraw(撤銷已有的路由項(xiàng));routeattrib在增加新路由項(xiàng)時(shí),代表路由更新報(bào)文中攜帶的路由屬性信息;rt為待處理的路由信息,包括目的網(wǎng)絡(luò)前綴,AS-Path、Next-Hop等路由屬性,以及宣告該路由的BGP鄰居等;p為該路由更新報(bào)文的來源鄰居標(biāo)識,是外部路由器的標(biāo)識。
(2)設(shè)置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網(wǎng)絡(luò)前綴的葉節(jié)點(diǎn),記為routenode。
(4)如果更新報(bào)文的類型是withdraw,則進(jìn)行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的葉節(jié)點(diǎn),則結(jié)束處理;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進(jìn)行(4-5)~(4-7),否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節(jié)點(diǎn)從路由信息庫中刪除,然后向所有合適的鄰居發(fā)布關(guān)于rt的路由撤銷報(bào)文;(4-7)如果新的routenode.bestroute不為空,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告。
(5)如果更新報(bào)文的類型是update,則進(jìn)行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然后把routenode插入到路由信息庫中,并把rt向所有合適的鄰居宣告。跳轉(zhuǎn)到步驟(6)執(zhí)行;
(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學(xué)到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表。
(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把這一新選出的最佳路由向所有合適的鄰居宣告。
(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉(zhuǎn)發(fā)表(6-1)如果routenode.bestroute為空,則從IP路由表和轉(zhuǎn)發(fā)表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉(zhuǎn)發(fā)表中。
路由同步報(bào)文處理子模塊通過高性能路由器內(nèi)部網(wǎng)絡(luò)接口接收到其他BGP-Node的同步報(bào)文,完成報(bào)文解析后進(jìn)行路由計(jì)算,并更新本地路由信息庫;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報(bào)文。其工作流程是(1)接收其他BGP-Node送來的路由同步報(bào)文,報(bào)文攜帶的主要參數(shù)有type,routeattrib,rt,p。其中type表示路由同步操作的類型,可以是update(增加新路由項(xiàng)),或者withdraw(撤銷已有的路由項(xiàng));routeattrib在增加新路由項(xiàng)時(shí),代表同步報(bào)文中攜帶的路由屬性信息;rt為待處理的路由信息;p為該路由的來源鄰居標(biāo)識,即宣告該路由的其他路由器;(2)設(shè)置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網(wǎng)絡(luò)前綴的葉節(jié)點(diǎn),記為routenode。
(4)如果同步報(bào)文的類型是withdraw,則進(jìn)行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的節(jié)點(diǎn),則返回;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;
(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進(jìn)行(4-5)~(4-7)步操作,否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節(jié)點(diǎn)從路由信息庫中刪除;(4-7)如果新的routenode.bestroute不為空,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告(這時(shí)的最佳路由是本節(jié)點(diǎn)原來保存的非最佳路由)。
(5)如果同步報(bào)文的類型是update,則進(jìn)行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然后把routenode插入到路由信息庫中。跳轉(zhuǎn)到步驟(6)執(zhí)行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學(xué)到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把新選出的最佳路由向所有合適的鄰居宣告。
(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉(zhuǎn)發(fā)表(6-1)如果routenode.bestroute為空,則從IP路由表和轉(zhuǎn)發(fā)表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉(zhuǎn)發(fā)表中。
路由同步報(bào)文處理模塊與路由更新報(bào)文處理模塊在處理過程上的不同之處主要表現(xiàn)在
(1)(4-6)步,去掉“然后向所有其他合適的BGP鄰居發(fā)布關(guān)于rt的路由撤銷報(bào)文”,路由撤銷時(shí),如果被撤銷的路由是當(dāng)前最佳路由,并且routenode的前綴列表中不包含其他冗余路由,則僅將routenode從路由信息庫中刪除,不需要向鄰接路由器發(fā)送路由撤銷通告,撤銷通告的發(fā)布由路由同步報(bào)文的發(fā)送者負(fù)責(zé)完成;(2)(5-1)步,去掉“并把rt向所有其他合適的鄰居宣告”,在增加新路由項(xiàng)時(shí),如果該路由項(xiàng)被選為最佳路由,由于該路由項(xiàng)的來源鄰居會話不在本地BGP-Node上,因此只更新IP路由表和轉(zhuǎn)發(fā)表,不需要向鄰接路由器發(fā)送路由更新通告;(3)(5-4)步,路由同步報(bào)文如果使本路由節(jié)點(diǎn)最佳路由的屬性發(fā)生變化,從原有的最佳路由降為備份路由,并且新選出的最佳路由是本節(jié)點(diǎn)原來保存的非最佳路由,其來源鄰居會話駐留在本地,則由本地BGP-Node向鄰接路由器發(fā)送路由變更通告。
經(jīng)過對傳統(tǒng)BGP協(xié)議軟件進(jìn)行修改,BGP-Node由鄰居會話維護(hù)模塊、路由計(jì)算與同步模塊、路由信息庫與管理控制模塊組成。鄰居會話維護(hù)模塊負(fù)責(zé)BGP協(xié)議狀態(tài)機(jī)的維護(hù),具有與傳統(tǒng)BGP協(xié)議相同的協(xié)議狀態(tài)機(jī),但是處理的鄰居關(guān)系增加了X-BGP類型;路由計(jì)算與同步模塊定義了路由同步報(bào)文,分為路由更新報(bào)文處理子模塊和路由同步報(bào)文處理子模塊,所有BGP-Node的路由計(jì)算與同步模塊協(xié)同進(jìn)行整個(gè)高性能路由器全局最佳路由的計(jì)算;路由信息庫保存本BGP-Node收到的路由信息,路由更新報(bào)文處理子模塊和路由同步報(bào)文處理子模塊都要查詢和更新路由信息庫;管理控制模塊配置路由策略,進(jìn)行鄰居會話的分解。
BGP分布并行實(shí)現(xiàn)之后的高性能路由器要保證數(shù)據(jù)轉(zhuǎn)發(fā)功能的正確性,每個(gè)路由節(jié)點(diǎn)必須具有一致的轉(zhuǎn)發(fā)行為,即無論采用哪個(gè)路由節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù),整個(gè)高性能路由器所表現(xiàn)出來的轉(zhuǎn)發(fā)操作必須相同。本發(fā)明各個(gè)BGP-Node通過路由計(jì)算與同步模塊的路由同步過程實(shí)現(xiàn)了最佳路由視圖的一致性。因?yàn)榘凑諈f(xié)議規(guī)范要求,BGP路由協(xié)議只把最佳路由寫入本路由節(jié)點(diǎn)的IP路由表,所以各個(gè)路由節(jié)點(diǎn)的IP路由表是一致的;IP轉(zhuǎn)發(fā)表由IP路由表去掉某些屬性生成,是簡化的IP路由表,因此各個(gè)路由節(jié)點(diǎn)的IP轉(zhuǎn)發(fā)表是一致的;IP轉(zhuǎn)發(fā)表向各個(gè)轉(zhuǎn)發(fā)引擎下載,這樣各個(gè)轉(zhuǎn)發(fā)引擎具有完全相同的轉(zhuǎn)發(fā)表映像。因此,盡管各個(gè)報(bào)文轉(zhuǎn)發(fā)引擎按照本地轉(zhuǎn)發(fā)表映像的內(nèi)容獨(dú)立工作,但是整個(gè)高性能路由器每個(gè)路由節(jié)點(diǎn)對到達(dá)相同地址的IP報(bào)文按照相同的路由策略進(jìn)行轉(zhuǎn)發(fā),這樣并行實(shí)現(xiàn)后的整個(gè)高性能路由器在數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)與傳統(tǒng)路由器看不出發(fā)生變化,從而保證了數(shù)據(jù)轉(zhuǎn)發(fā)功能的正確性。
采用本發(fā)明可以達(dá)到如下技術(shù)效果本發(fā)明實(shí)現(xiàn)了BGP鄰居會話維護(hù)、路由計(jì)算任務(wù)的并行處理和路由信息的分布存儲,實(shí)現(xiàn)了性能的擴(kuò)展性和可靠性的提高,同時(shí)又通過有效的同步機(jī)制實(shí)現(xiàn)了各個(gè)路由節(jié)點(diǎn)控制平面的一致性和數(shù)據(jù)平面的一致性,將BGP-Node聚集對外虛擬成一個(gè)完整的BGP路由器。具體效果有(1)計(jì)算性能鄰居維護(hù)和路由計(jì)算任務(wù)劃分到不同的路由節(jié)點(diǎn)上并行處理,有助于降低路由策略計(jì)算對每個(gè)節(jié)點(diǎn)計(jì)算能力的消耗,提高整個(gè)路由器的吞吐量。
(2)存儲性能屬于不同BGP鄰居集合的路由信息分別存儲在各個(gè)BGP-Node上,提高了路由存儲能力上的擴(kuò)展性。
(3)可靠性BGP路由協(xié)議分布在多個(gè)路由節(jié)點(diǎn)上并行運(yùn)行,個(gè)別路由節(jié)點(diǎn)發(fā)生故障并不會造成整個(gè)路由器路由協(xié)議運(yùn)行的中斷,提高了路由協(xié)議和路由器控制平面的可靠性。
(4)控制平面的一致性各個(gè)路由節(jié)點(diǎn)通過路由同步和計(jì)算模塊實(shí)現(xiàn)了一致的最佳路由視圖,由于BGP路由器只是將學(xué)到的最佳路由傳遞給其他路由器,每個(gè)路由節(jié)點(diǎn)代表整個(gè)高性能路由器向外傳遞的路由信息一致,這樣高性能路由器與其他路由器的BGP協(xié)議交互行為在并行實(shí)現(xiàn)前后沒有發(fā)生變化,確保了路由協(xié)議功能的正確性。
(5)數(shù)據(jù)平面的一致性各個(gè)路由節(jié)點(diǎn)的BGP-Node具有相同的全局最佳路由,BGP-Node只將最佳路由寫入IP路由表和IP轉(zhuǎn)發(fā)表,這樣各個(gè)路由節(jié)點(diǎn)的轉(zhuǎn)發(fā)引擎具有相同的轉(zhuǎn)發(fā)表,具有一致的轉(zhuǎn)發(fā)行為,這樣整個(gè)高性能路由器的數(shù)據(jù)轉(zhuǎn)發(fā)行為在并行實(shí)現(xiàn)前后沒有發(fā)生變化,確保了數(shù)據(jù)轉(zhuǎn)發(fā)功能的正確性。
圖1傳統(tǒng)高性能路由器采用的BGP路由協(xié)議主備模式實(shí)現(xiàn)結(jié)構(gòu);圖2本發(fā)明采用的BGP路由協(xié)議分布并行實(shí)現(xiàn)結(jié)構(gòu);圖3是本發(fā)明高性能路由器BGP鄰居關(guān)系示意圖;
圖4是傳統(tǒng)BGP協(xié)議軟件的實(shí)現(xiàn)結(jié)構(gòu);圖5是本發(fā)明BGP-Node的實(shí)現(xiàn)結(jié)構(gòu);圖6是本發(fā)明X-BGP協(xié)議路由同步報(bào)文的結(jié)構(gòu);圖7是采用本發(fā)明進(jìn)行BGP協(xié)議分布并行實(shí)現(xiàn)后與采用傳統(tǒng)BGP協(xié)議在更新報(bào)文吞吐量和CPU利用率等方面的性能比較曲線。
具體實(shí)施例方式
圖1是傳統(tǒng)高性能路由器采用的BGP路由協(xié)議主備模式實(shí)現(xiàn)結(jié)構(gòu)。圖2是本發(fā)明采用的BGP路由協(xié)議分布并行實(shí)現(xiàn)結(jié)構(gòu)。在圖1和圖2中,路由節(jié)點(diǎn)可以是一個(gè)機(jī)柜或者是一個(gè)中低端路由器。每個(gè)路由節(jié)點(diǎn)具有多個(gè)網(wǎng)絡(luò)接口與其他路由器互連,各個(gè)路由節(jié)點(diǎn)之間通過內(nèi)部高速交換網(wǎng)絡(luò)互連。高性能路由器用于核心網(wǎng)絡(luò),BGP是最重要的必備的路由協(xié)議。
在圖1的主備結(jié)構(gòu)中,只有主控路由節(jié)點(diǎn)和備份控制路由節(jié)點(diǎn)可以運(yùn)行BGP路由協(xié)議。正常情況下,主控節(jié)點(diǎn)運(yùn)行BGP路由協(xié)議,生成BGP路由表后,寫入IP路由表和IP轉(zhuǎn)發(fā)表,通過內(nèi)部互聯(lián)網(wǎng)絡(luò)發(fā)布到所有路由節(jié)點(diǎn)的所有轉(zhuǎn)發(fā)引擎的轉(zhuǎn)發(fā)表中。其他路由節(jié)點(diǎn)只是根據(jù)IP轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。主控路由節(jié)點(diǎn)發(fā)生故障后,由備份控制路由節(jié)點(diǎn)接替工作,如圖1中二個(gè)路由節(jié)點(diǎn)之間的單向箭頭所示。
在圖2的全分布并行實(shí)現(xiàn)結(jié)構(gòu)中,各個(gè)路由節(jié)點(diǎn)的功能是相同的,每個(gè)路由節(jié)點(diǎn)包含一個(gè)BGP-Node,運(yùn)行BGP協(xié)議。各個(gè)BGP-Node通過內(nèi)部互連網(wǎng)絡(luò)通信。每個(gè)BGP-Node生成BGP路由表,寫入IP路由表和IP轉(zhuǎn)發(fā)表,并直接寫入本節(jié)點(diǎn)各個(gè)轉(zhuǎn)發(fā)引擎的轉(zhuǎn)發(fā)表。各個(gè)BGP-Node之間通過內(nèi)部交換網(wǎng)絡(luò)交互信息,實(shí)現(xiàn)路由的同步。
圖3是采用了本發(fā)明的高性能路由器的BGP鄰居關(guān)系示意圖(以4個(gè)路由節(jié)點(diǎn)的高性能路由器為例)。高性能路由器的每個(gè)路由節(jié)點(diǎn)和多個(gè)其他路由器相連,每個(gè)BGP-Node也和多個(gè)運(yùn)行BGP的其他路由器建立鄰居關(guān)系。高性能路由器與其他路由器使用傳統(tǒng)的BGP協(xié)議進(jìn)行通信,根據(jù)是否屬于相同的自治系統(tǒng),建立內(nèi)部BGP鄰居關(guān)系(I-BGP)或者外部BGP鄰居關(guān)系(E-BGP)。各個(gè)BGP-Node之間采用X-BGP協(xié)議,建立全互聯(lián)的X-BGP鄰居關(guān)系。
I-BGP和E-BGP交互使用傳統(tǒng)BGP協(xié)議,分為OPEN、KEEPALIVE、NOTIFICATION和UPDATE四種類型的報(bào)文;X-BGP協(xié)議具有OPEN、KEEPALIVE、NOTIFICATION和SYNCHRON四種類型的報(bào)文。傳統(tǒng)BGP協(xié)議采用單播IP地址,基于TCP傳輸;X-BGP協(xié)議的OPEN、KEEPALIVE、NOTIFICATION等三種鄰居關(guān)系維護(hù)報(bào)文采用單播IP地址,基于TCP傳輸,而SYNCHRON報(bào)文基于代表整個(gè)BGP-Node聚集的組播IP地址,基于UDP協(xié)議傳輸。
通過BGP-Node的路由計(jì)算與同步模塊,將BGP-Node聚集對外虛擬成一個(gè)BGP路由器。每個(gè)路由節(jié)點(diǎn)與其他路由器交換信息時(shí),使用相同的代表整個(gè)高性能路由器的路由器標(biāo)識(RouterID),傳遞的最佳路由信息不是某個(gè)BGP-Node局部最佳路由,而是整個(gè)高性能路由器的全局最佳路由。
圖4是傳統(tǒng)BGP協(xié)議軟件的實(shí)現(xiàn)結(jié)構(gòu)。按照BGP協(xié)議規(guī)范RFC 1771,BGP協(xié)議軟件包括以下功能部件鄰居會話維護(hù)模塊、路由計(jì)算模塊、路由信息庫和管理控制模塊。鄰居會話維護(hù)模塊建立、維護(hù)或拆除BGP會話關(guān)系,收發(fā)鄰居關(guān)系維護(hù)報(bào)文。路由計(jì)算模塊接收路由更新消息,執(zhí)行輸入路由策略過濾操作;計(jì)算到達(dá)目的網(wǎng)絡(luò)的最佳路由,相應(yīng)地更新IP轉(zhuǎn)發(fā)表中對應(yīng)的轉(zhuǎn)發(fā)項(xiàng);根據(jù)鄰居會話的輸出路由策略,將最新路由信息發(fā)布給鄰居。路由信息庫保存由鄰居路由器送來的所有路由信息,并標(biāo)記路由計(jì)算模塊計(jì)算出的最佳路由。管理控制模塊對路由協(xié)議進(jìn)行配置和管理,由配置策略庫記錄配置的策略,實(shí)現(xiàn)對不同BGP鄰居的路由信息傳播控制和流量工程目標(biāo)。
圖4鄰居會話維護(hù)模塊左側(cè)雙向箭頭表示與其他路由器交互OPEN、KEEPALIVE和NOTIFICATION等鄰居關(guān)系維護(hù)報(bào)文;路由計(jì)算模塊左側(cè)的單向箭頭表示與其他路由器交互路由更新報(bào)文(UPDATE)。
圖5是本發(fā)明BGP-Node的實(shí)現(xiàn)結(jié)構(gòu)。與傳統(tǒng)BGP協(xié)議的實(shí)現(xiàn)類似,BGP-Node由鄰居會話維護(hù)模塊、路由計(jì)算與同步模塊、路由信息庫與管理控制模塊組成,但各部分的功能都有變化。鄰居會話維護(hù)模塊負(fù)責(zé)BGP協(xié)議狀態(tài)機(jī)的維護(hù),具有與傳統(tǒng)BGP協(xié)議相同的協(xié)議狀態(tài)機(jī),但是處理的鄰居關(guān)系增加了X-BGP類型;路由計(jì)算與同步模塊定義了路由同步報(bào)文,分為路由更新報(bào)文處理子模塊和路由同步報(bào)文處理子模塊,新增路由同步報(bào)文處理子模塊,路由更新報(bào)文處理子模塊也要參與路由同步過程,所有BGP-Node的路由計(jì)算與同步模塊協(xié)同進(jìn)行整個(gè)高性能路由器全局最佳路由的計(jì)算;路由信息庫保存BGP-Node學(xué)到的路由信息,路由更新報(bào)文處理子模塊和路由同步報(bào)文處理子模塊都要查詢和更新路由信息庫;管理控制模塊配置路由策略,進(jìn)行鄰居會話的分解。
圖5鄰居會話維護(hù)模塊左側(cè)雙向箭頭表示該BGP-Node與其他路由器或者其他BGP-Node交互OPEN、KEEPALIVE和NOTIFICATION等鄰居關(guān)系維護(hù)報(bào)文;路由計(jì)算與同步模塊左側(cè)的單向箭頭表示與其他路由器交互路由更新報(bào)文(UPDATE),或者與其他BGP-Node在內(nèi)部互連網(wǎng)絡(luò)中交互路由同步報(bào)文(SYNCHRON)。
路由更新報(bào)文處理子模塊通過所在路由節(jié)點(diǎn)的外部網(wǎng)絡(luò)接口從其他路由器接收來自BGP鄰居的路由更新報(bào)文,完成報(bào)文解析和輸入策略處理后,進(jìn)行路由計(jì)算并更新路由信息庫;將計(jì)算出的局部最佳路由信息封裝成路由同步報(bào)文,發(fā)送給所有其他BGP-Node,將計(jì)算出的全局最佳路由封裝為路由更新報(bào)文,傳遞給其他的BGP路由器。
路由同步報(bào)文處理子模塊通過高性能路由器內(nèi)部互連網(wǎng)絡(luò)接收到其他BGP-Node的同步報(bào)文,完成報(bào)文解析后進(jìn)行路由計(jì)算,并更新本地路由信息庫;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報(bào)文。
圖6是X-BGP路由同步報(bào)文的結(jié)構(gòu)。BGP協(xié)議的最佳路由選擇不需要全部的BGP路由屬性信息,只需要路由屬性中固定長度的關(guān)鍵字段。為此將BGP-Node間交互的路由信息簡化,X-BGP路由同步報(bào)文由報(bào)文頭和報(bào)文體組成。報(bào)文頭包括“報(bào)文類型”“報(bào)文長度”“來源鄰居標(biāo)識”三個(gè)字段,其中“報(bào)文類型”字段說明是update(路由更新)類型還是withdraw(路由撤銷)類型;“報(bào)文長度”字段說明路由同步報(bào)文的字節(jié)數(shù);“來源鄰居標(biāo)識”字段說明引發(fā)本次路由變化事件的外部BGP路由器的IP地址。報(bào)文體分為update類型的同步報(bào)文的報(bào)文體和withdraw類型的同步報(bào)文的報(bào)文體二種類型。update類型的同步報(bào)文的報(bào)文體包括本地偏好度、Origin(路由來源類型)、AS路徑長度、下一跳AS、下一跳地址、MED(多出口鑒別字)以及多個(gè)“網(wǎng)絡(luò)前綴地址”和“網(wǎng)絡(luò)地址掩碼”。withdraw類型的同步報(bào)文的報(bào)文體攜帶一個(gè)或多個(gè)要撤銷的“網(wǎng)絡(luò)前綴地址”“網(wǎng)絡(luò)地址掩碼”信息。
圖7是有18個(gè)路由節(jié)點(diǎn)的高性能路由器采用本發(fā)明進(jìn)行BGP分布并行實(shí)現(xiàn)后與采用傳統(tǒng)BGP協(xié)議軟件在更新報(bào)文吞吐量和CPU利用率等方面的性能比較曲線。每個(gè)路由節(jié)點(diǎn)的基準(zhǔn)性能相同,每個(gè)BGP-Node負(fù)責(zé)1個(gè)鄰居會話的執(zhí)行。每個(gè)鄰居每秒注入100條路由更新報(bào)文,鄰居會話數(shù)量從2個(gè)增長到18個(gè)的配置情況下,圖7(a)和圖7(b)對每個(gè)鄰居的吞吐量和每個(gè)節(jié)點(diǎn)的CPU利用率進(jìn)行比較。
由圖7(a)看出,隨著鄰居規(guī)模的增大,傳統(tǒng)BGP的更新報(bào)文吞吐量迅速下降,有18個(gè)鄰居時(shí)每個(gè)鄰居的吞吐量平均只有37個(gè)報(bào)文;但是采用本發(fā)明后18個(gè)BGP-Node并行處理時(shí),每個(gè)鄰居路由更新報(bào)文的吞吐量基本保持不變。
由圖7(b)看出,各個(gè)BGP-Node并行處理時(shí)CPU利用率增長很慢,而傳統(tǒng)BGP協(xié)議CPU利用率快速增長,在鄰居會話數(shù)量為18個(gè)時(shí),二者在CPU利用率上的差距約60%。
隨著鄰居數(shù)的增多,并行實(shí)現(xiàn)時(shí)每個(gè)鄰居的更新報(bào)文吞吐量有所下降,各個(gè)BGP-Node的CPU利用率有所上升,主要是由于BGP-Node之間路由同步計(jì)算過程和內(nèi)部通訊報(bào)文的開銷,例如BGP-Node需要處理來自于其他BGP-Node的路由同步報(bào)文或者轉(zhuǎn)發(fā)路由更新報(bào)文。
下面是對本發(fā)明路由協(xié)議全分布并行實(shí)現(xiàn)系統(tǒng)存儲性能收益的分析設(shè)高性能路由器有N個(gè)路由節(jié)點(diǎn),每個(gè)路由節(jié)點(diǎn)1個(gè)BGP-Node。整個(gè)路由器共有P個(gè)網(wǎng)絡(luò)前綴,到每個(gè)網(wǎng)絡(luò)前綴平均每個(gè)BGP-Node從外部路由器學(xué)到K條路由,對每個(gè)網(wǎng)絡(luò)前綴平均有K*N條路由。在傳統(tǒng)路由器中,BGP路由信息庫總共要保存N*K*P條路由。而在本發(fā)明中,對每個(gè)網(wǎng)絡(luò)前綴,每個(gè)BGP-Node只需要保存K條從本地鄰居學(xué)到的路由,以及最多(N-1)條從其他BGP-Node收到的由其他BGP-Node斷定的最佳路由。每個(gè)BGP-Node共保存(K+(N-1))*P條路由。
設(shè)保存外部路由器學(xué)到的路由更新的存儲代價(jià)為M1,保存從其他BGP-Node收到的同步路由信息的代價(jià)為M2。由于每個(gè)路由項(xiàng)完整的路由屬性信息只保存在其來源鄰居會話所在的BGP-Node上,因此M1>M2。由此得到每個(gè)BGP-Node和傳統(tǒng)路由器路由存儲容量需求之比SS=(M1*K+M2*(N-1))*PM1*(K*N)*P<K+N-1K*N.]]>例如K=2,N=18,每個(gè)節(jié)點(diǎn)相對于傳統(tǒng)路由器的存儲開銷減少約50%,并且隨著K和N的變大,每個(gè)節(jié)點(diǎn)的存儲開銷會變得更小。
下面是對本發(fā)明路由協(xié)議全分布并行實(shí)現(xiàn)系統(tǒng)的可靠性收益的分析設(shè)高性能路由器有N個(gè)路由節(jié)點(diǎn)和N個(gè)BGP-Node。從基本路由功能上看,傳統(tǒng)路由器的BGP路由協(xié)議出現(xiàn)故障,所有的BGP鄰居關(guān)系都要斷鏈,而在本發(fā)明中某個(gè)BGP-Node出現(xiàn)故障,其他BGP-Node仍然可以正常工作,受影響的外部BGP鄰居也只有原來的1/N,因此BGP協(xié)議的可靠性提高到原來的N倍。
如果整個(gè)路由器網(wǎng)絡(luò)前綴數(shù)為P,并且每個(gè)BGP-Node對每個(gè)前綴從其他路由器學(xué)到K條路由,那么發(fā)生故障后,傳統(tǒng)路由器所有K*N*P條路由都被清除,而在本發(fā)明中只會撤銷K*P條路由,受影響的路由只有原來的1/N,每個(gè)網(wǎng)絡(luò)前綴仍然存在K*(N-1)條路由,仍然可達(dá)。
根據(jù)歐洲網(wǎng)絡(luò)信息中心(RIPE)對大量核心網(wǎng)絡(luò)路由表的統(tǒng)計(jì)和分析的具體數(shù)據(jù)(Routing Information Service.http://www.ripe.net/ris/),在核心路由器中絕大多數(shù)網(wǎng)絡(luò)前綴都有多條路由,被統(tǒng)計(jì)路由器不具有冗余路由的網(wǎng)絡(luò)前綴都低于5%,最少的只有0.4%。這說明在實(shí)際網(wǎng)絡(luò)中,即使在最壞的情況下,即不具有冗余路由的網(wǎng)絡(luò)前綴全部駐留在發(fā)生故障的BGP-Node上,造成不可達(dá)的網(wǎng)絡(luò)前綴最多也不會超過5%。
權(quán)利要求
1.一種高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于它包括以下步驟第一步,構(gòu)建基于BGP-Node的BGP分布并行實(shí)現(xiàn)系統(tǒng),方法是多個(gè)路由節(jié)點(diǎn)通過高速互聯(lián)網(wǎng)絡(luò)連接,每個(gè)路由節(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)并運(yùn)行BGP,每個(gè)路由節(jié)點(diǎn)實(shí)現(xiàn)傳統(tǒng)BGP協(xié)議的全部功能,即每個(gè)路由節(jié)點(diǎn)包含一個(gè)功能相同的BGP-Node;整個(gè)BGP協(xié)議不再作為一個(gè)獨(dú)立的進(jìn)程運(yùn)行在主控節(jié)點(diǎn)上,而是作為多個(gè)獨(dú)立的BGP實(shí)體運(yùn)行于每個(gè)路由節(jié)點(diǎn)上;各個(gè)BGP-Node通過內(nèi)部網(wǎng)絡(luò)接口通信,每個(gè)BGP-Node生成BGP路由表,并寫入本路由節(jié)點(diǎn)的IP路由表和IP轉(zhuǎn)發(fā)表,并將IP轉(zhuǎn)發(fā)表中的信息下載到本路由節(jié)點(diǎn)的各個(gè)轉(zhuǎn)發(fā)引擎的轉(zhuǎn)發(fā)表中;第二步,將整個(gè)高性能路由器BGP協(xié)議的鄰居會話維護(hù)、路由計(jì)算和路由存儲三種任務(wù)分解到各個(gè)BGP-Node,方法是先分解BGP鄰居會話,再進(jìn)行路由計(jì)算和路由存儲功能的分解,使得每個(gè)BGP-Node只負(fù)責(zé)本路由節(jié)點(diǎn)的BGP鄰居會話維護(hù),接收、處理和存儲本節(jié)點(diǎn)鄰居送來的路由信息;第三步,采用X-BGP協(xié)議進(jìn)行BGP-Node之間的會話關(guān)系維護(hù)和路由同步以及高性能路由器最佳路由的計(jì)算,方法是設(shè)計(jì)X-BGP協(xié)議的報(bào)文,將X-BGP協(xié)議的報(bào)文分為鄰居關(guān)系維護(hù)報(bào)文和路由同步報(bào)文二大類,由鄰居關(guān)系維護(hù)報(bào)文負(fù)責(zé)BGP-Node之間的控制信息和狀態(tài)信息的傳遞,由路由同步報(bào)文傳遞BGP-Node之間的路由同步信息;對傳統(tǒng)BGP協(xié)議鄰居會話維護(hù)模塊進(jìn)行修改,以維護(hù)高性能路由器內(nèi)部各個(gè)BGP-Node之間的鄰居會話關(guān)系;對傳統(tǒng)BGP協(xié)議路由計(jì)算模塊進(jìn)行修改,將該模塊變?yōu)槁酚捎?jì)算與同步模塊,以處理BGP-Node之間的路由同步和整個(gè)高性能路由器全局最佳路由的計(jì)算。
2.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于分解BGP鄰居會話的方法是修改傳統(tǒng)BGP協(xié)議的管理控制模塊,在該模塊中增加鄰居會話維護(hù)任務(wù)分解子模塊,鄰居會話維護(hù)任務(wù)分解子模塊的流程是2.1對配置策略庫中的每個(gè)BGP鄰居關(guān)系,以BGP鄰居的IP地址為關(guān)鍵字查找IP路由表,得到到達(dá)該地址需要經(jīng)過的高性能路由器的網(wǎng)絡(luò)接口編號,網(wǎng)絡(luò)接口編號中的路由節(jié)點(diǎn)號即是負(fù)責(zé)維護(hù)該BGP鄰居關(guān)系的路由節(jié)點(diǎn)號和BGP-Node編號;2.2如果負(fù)責(zé)維護(hù)該BGP鄰居關(guān)系的BGP-Node發(fā)生故障,則選擇負(fù)載最小的BGP-Node負(fù)責(zé)維護(hù)該鄰居關(guān)系;2.3生成BGP鄰居路由器和BGP-Node對應(yīng)關(guān)系表,下發(fā)到各個(gè)路由節(jié)點(diǎn)的所有轉(zhuǎn)發(fā)引擎;2.4路由節(jié)點(diǎn)和BGP-Node的狀態(tài)發(fā)生嚴(yán)重變化時(shí),則對受影響的鄰居會話重新進(jìn)行分派。
3.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于所述路由計(jì)算任務(wù)的分解由各個(gè)路由節(jié)點(diǎn)的轉(zhuǎn)發(fā)引擎進(jìn)行,方法是各個(gè)路由節(jié)點(diǎn)通過外部網(wǎng)絡(luò)接口從其他路由器收到BGP路由更新報(bào)文時(shí),轉(zhuǎn)發(fā)引擎以報(bào)文的源地址為關(guān)鍵字查找BGP鄰居路由器和BGP-Node對應(yīng)關(guān)系表,得到目標(biāo)BGP-Node編號,將該路由報(bào)文送給目標(biāo)BGP-Node,由目標(biāo)BGP-Node處理該路由更新報(bào)文,進(jìn)行路由計(jì)算。
4.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于所述路由信息存儲功能的分解由各個(gè)BGP-Node進(jìn)行,方法是每個(gè)BGP-Node都有路由信息庫,分別保存所在BGP-Node收到的由轉(zhuǎn)發(fā)引擎送來的路由更新報(bào)文中的完整的路由信息,從而實(shí)現(xiàn)路由信息的分布式存儲。
5.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于所述X-BGP鄰居關(guān)系維護(hù)報(bào)文有OPEN、KEEPALIVE和NOTIFICATION三種類型,這三種報(bào)文的語法、語義、時(shí)序關(guān)系與傳統(tǒng)BGP相同,但是要求鄰居地址是同一高性能路由器的其他BGP-Node,由X-BGP鄰居關(guān)系維護(hù)報(bào)文傳遞BGP-Node之間的控制信息和狀態(tài)信息;所述X-BGP路由同步報(bào)文SYNCHRON與傳統(tǒng)BGP協(xié)議的UPDATE報(bào)文在協(xié)議狀態(tài)機(jī)中具有相同的時(shí)序關(guān)系,由報(bào)文頭和報(bào)文體組成報(bào)文頭包括“報(bào)文類型”、“報(bào)文長度”、“來源鄰居標(biāo)識”三個(gè)字段,其中“報(bào)文類型”字段說明是update即路由更新類型還是withdraw即路由撤銷類型;“報(bào)文長度”字段說明路由同步報(bào)文的字節(jié)數(shù);“來源鄰居標(biāo)識”字段說明引發(fā)本次路由變化事件的外部BGP路由器的IP地址;報(bào)文體分為update類型的同步報(bào)文的報(bào)文體和withdraw類型的同步報(bào)文的報(bào)文體二種,update類型的同步報(bào)文的報(bào)文體包括本地偏好度、Origin即路由來源類型、AS路徑長度、下一跳AS、下一跳地址、MED即多出口鑒別字以及多個(gè)“網(wǎng)絡(luò)前綴地址”和“網(wǎng)絡(luò)地址掩碼”;withdraw類型的同步報(bào)文的報(bào)文體攜帶一個(gè)或多個(gè)要撤銷的“網(wǎng)絡(luò)前綴地址”“網(wǎng)絡(luò)地址掩碼”信息。
6.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于所述對傳統(tǒng)BGP協(xié)議鄰居會話維護(hù)模塊進(jìn)行修改的方法是在鄰居關(guān)系類型相關(guān)的數(shù)據(jù)結(jié)構(gòu)中新增“X-BGP”類型,鄰居關(guān)系維護(hù)報(bào)文在BGP-Node之間采用內(nèi)部網(wǎng)絡(luò)接口傳遞控制信息和狀態(tài)信息。
7.如權(quán)利要求1所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于將傳統(tǒng)BGP協(xié)議的路由計(jì)算模塊進(jìn)行修改的方法是將傳統(tǒng)BGP協(xié)議的路由計(jì)算模塊進(jìn)行修改后更名為路由計(jì)算與同步模塊,它由路由更新報(bào)文處理和路由同步報(bào)文處理二個(gè)子模塊組成7.1路由更新報(bào)文處理子模塊通過所在路由節(jié)點(diǎn)的外部網(wǎng)絡(luò)接口從其他路由器接收來自BGP鄰居的路由更新報(bào)文,完成報(bào)文解析和輸入策略處理后,進(jìn)行路由計(jì)算并更新路由信息庫;將計(jì)算出的局部最佳路由信息封裝成路由同步報(bào)文,發(fā)送給所有其他BGP-Node,將計(jì)算出的全局最佳路由封裝為路由更新報(bào)文,傳遞給其他的BGP路由器,其工作流程是(1)接收其他路由器送來的路由更新報(bào)文,報(bào)文攜帶的主要參數(shù)有type,routeattrib,rt,p,其中type表示路由更新操作的類型,可以是update,或者withdraw;routeattrib在增加新路由項(xiàng)時(shí),代表路由更新報(bào)文中攜帶的路由屬性信息;rt為待處理的路由信息,包括目的網(wǎng)絡(luò)前綴,AS-Path、Next-Hop等路由屬性,以及宣告該路由的BGP鄰居等;p為該路由更新報(bào)文的來源鄰居標(biāo)識,是外部路由器的標(biāo)識;(2)設(shè)置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網(wǎng)絡(luò)前綴的葉節(jié)點(diǎn),記為routenode;(4)如果更新報(bào)文的類型是withdraw,則進(jìn)行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的葉節(jié)點(diǎn),則結(jié)束處理;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進(jìn)行(4-5)~(4-7),否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節(jié)點(diǎn)從路由信息庫中刪除,然后向所有合適的鄰居發(fā)布關(guān)于rt的路由撤銷報(bào)文;(4-7)如果新的routenode.bestroute不為空,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告;(5)如果更新報(bào)文的類型是update,則進(jìn)行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然后把routenode插入到路由信息庫中,并把rt向所有合適的鄰居宣告;跳轉(zhuǎn)到步驟(6)執(zhí)行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學(xué)到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把這一新選出的最佳路由向所有合適的鄰居宣告;(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉(zhuǎn)發(fā)表(6-1)如果routenode.bestroute為空,則從IP路由表和轉(zhuǎn)發(fā)表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉(zhuǎn)發(fā)表中;7.2路由同步報(bào)文處理子模塊通過高性能路由器內(nèi)部網(wǎng)絡(luò)接口接收到其他BGP-Node的同步報(bào)文,完成報(bào)文解析后進(jìn)行路由計(jì)算,并更新本地路由信息庫RIB;如果新選出來的高性能路由器的最佳路由保存在本BGP-Node且來源鄰居會話駐留在本地,則向其他BGP路由器傳遞路由更新,或者向其他BGP-Node再次傳遞路由同步報(bào)文,其工作流程是(1)接收其他BGP-Node送來的路由同步報(bào)文,報(bào)文攜帶的主要參數(shù)有type,routeattrib,rt,p,其中type表示路由同步操作的類型,可以是update,或者withdraw;routeattrib在增加新路由項(xiàng)時(shí),代表同步報(bào)文中攜帶的路由屬性信息;rt為待處理的路由信息;p為該路由的來源鄰居標(biāo)識,即宣告該路由的其他路由器;(2)設(shè)置變量oldbest初始值為空,用該變量存儲舊的最佳路由;(3)查找路由信息庫,得到與rt具有相同網(wǎng)絡(luò)前綴的葉節(jié)點(diǎn),記為routenode;(4)如果同步報(bào)文的類型是withdraw,則進(jìn)行下面的操作(4-1)如果routenode為空,即步驟(3)沒有找到滿足條件的節(jié)點(diǎn),則返回;(4-2)使用變量oldbest保存routenode的最佳路由,即oldbest=routenode.bestroute;(4-3)從routenode的前綴列表中刪除rt;(4-4)如果rt和routenode.bestroute相等,則進(jìn)行(4-5)~(4-7)步操作,否則返回;(4-5)從routenode的前綴列表中選擇最佳路由,用得到的值來更新routenode.bestroute;(4-6)如果新的routenode.bestroute為空,則將routenode節(jié)點(diǎn)從路由信息庫中刪除;(4-7)如果新的routenode.bestroute不為空,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把它作為新的最佳路由向所有合適的鄰居宣告,這時(shí)的最佳路由是本節(jié)點(diǎn)原來保存的非最佳路由;(5)如果同步報(bào)文的類型是update,則進(jìn)行下面的操作(5-1)如果routenode為空,則為routenode分配新的空間,將rt插入到routenode的前綴列表,將rt作為routenode的最佳路由,然后把routenode插入到路由信息庫中;跳轉(zhuǎn)到步驟(6)執(zhí)行;(5-2)如果routenode不為空,則使用oldbest保存routenode的最佳路由;(5-3)如果在routenode的前綴列表中存在一條路由是由鄰居p宣告過來的,則把它的路由屬性使用新學(xué)到的路由的attrinfo更新;否則,把rt插入到routenode的前綴列表;(5-4)從routenode的前綴列表中再選擇最佳路由,記為routenode.bestroute,如果和原來的oldbest不同,并且宣告該路由的BGP鄰居是本BGP-Node的活躍鄰居,則把新選出的最佳路由向所有合適的鄰居宣告;(6)如果oldbest和routenode.bestroute不同,則更新IP路由表和IP轉(zhuǎn)發(fā)表(6-1)如果routenode.bestroute為空,則從IP路由表和轉(zhuǎn)發(fā)表中刪除oldbest;(6-2)如果routenode.bestroute不為空,則將routenode.bestroute加入到IP路由表和IP轉(zhuǎn)發(fā)表中。
8.如權(quán)利要求1或7所述的高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,其特征在于所述“所有合適的鄰居”包括I-BGP,E-BGP和X-BGP各種類型的鄰居,向I-BGP和E-BGP鄰居發(fā)布路由信息或進(jìn)行路由宣告使用的是傳統(tǒng)BGP的路由更新報(bào)文,向X-BGP鄰居發(fā)布路由信息使用的是X-BGP路由同步報(bào)文;判斷鄰居是否“合適”依據(jù)的是配置策略庫中的路由策略是否允許向該鄰居輸出本路由。
全文摘要
本發(fā)明公開了一種高性能路由器BGP路由協(xié)議分布并行實(shí)現(xiàn)方法,目的是為具有多個(gè)路由節(jié)點(diǎn)的高性能路由器提供域間路由協(xié)議的分布并行實(shí)現(xiàn)方法。技術(shù)方案是每個(gè)路由節(jié)點(diǎn)獨(dú)立運(yùn)行BGP協(xié)議以構(gòu)建基于BGP-Node的BGP分布并行實(shí)現(xiàn)系統(tǒng),將整個(gè)高性能路由器BGP協(xié)議的鄰居會話維護(hù)、路由計(jì)算和路由存儲三種任務(wù)分解到各個(gè)BGP-Node,采用X-BGP協(xié)議進(jìn)行BGP-Node之間的會話關(guān)系維護(hù)和路由同步,并修改路由計(jì)算模塊實(shí)現(xiàn)高性能路由器全局最佳路由的計(jì)算。采用本發(fā)明可將BGP-Node聚集對外虛擬成一個(gè)完整的BGP路由器,提高計(jì)算性能、存儲性能和可靠性,且實(shí)現(xiàn)了各個(gè)路由節(jié)點(diǎn)控制平面的一致性和數(shù)據(jù)平面的一致性。
文檔編號H04L29/06GK1976313SQ20061003227
公開日2007年6月6日 申請日期2006年9月19日 優(yōu)先權(quán)日2006年9月19日
發(fā)明者朱培棟, 寧洪, 張曉哲, 杜秀春, 劉功杰, 蔡開裕 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)