專利名稱:Bgp路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信中的IP單播路由以及BGP ((Border Gateway Protocol)路由協(xié)議,特別涉及一種BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件 査找的方法。
背景技術(shù):
作為互聯(lián)網(wǎng)中重要的通信部件,路由器對(duì)于網(wǎng)絡(luò)中計(jì)算機(jī)能高效、準(zhǔn)確、 順利連接起著至關(guān)重要的作用。然而,現(xiàn)有的低端路由器只有一個(gè)CPU,因此 路由子系統(tǒng)運(yùn)行于同一個(gè)CPU上,負(fù)責(zé)路由的學(xué)習(xí)以及査找。路由査找速度
比較慢,帶來的后果就是在有大量IP報(bào)文流的情況下,影響了報(bào)文的轉(zhuǎn)發(fā)速 度。
對(duì)于高端路由器,業(yè)務(wù)報(bào)文往往通過線卡直接進(jìn)行轉(zhuǎn)發(fā)。在可能的情況下, 為了進(jìn)一步提高轉(zhuǎn)發(fā)效率,可以盡可能的采用硬件轉(zhuǎn)發(fā),將主控板同步過來的
路由,預(yù)先寫入線卡的硬件轉(zhuǎn)發(fā)表,并按照LPM (Longest Prefix Matched,最 長(zhǎng)前綴匹配)的原則進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
對(duì)于BDCOM (博達(dá)公司)現(xiàn)有的路由子系統(tǒng)而言,實(shí)現(xiàn)上述技術(shù)方案可 以采用由該路由子系統(tǒng)所提出的主控板RIB和FIB同步以及主控與線卡的FIB 同步的相關(guān)技術(shù)原理參見專利公開號(hào)CN101064668A的《一種分布式路由 子系統(tǒng)在IPV6協(xié)議桟的實(shí)現(xiàn)方法》專利。該專利所公開的技術(shù)方案中描述了 一種針對(duì)路由子系統(tǒng),通過減少主控與線卡的信息傳輸量,降低主控上CPU 的突發(fā)占有率來提高其工作效率的改進(jìn)型工作方法。該專利中所提出的線卡加 電向主控板注冊(cè)機(jī)制、常規(guī)觸發(fā)更新機(jī)制、Ack超時(shí)重傳機(jī)制、Audit同步機(jī) 制四個(gè)同步機(jī)制,其技術(shù)原理就是為了在路由子系統(tǒng)上實(shí)現(xiàn)主控板RIB和FIB 同步以及主控與線卡的FIB同步。
然而,上述方案和原理在解決本發(fā)明所提出的提高報(bào)文轉(zhuǎn)發(fā)效率的實(shí)際操 作中存在技術(shù)上局限,其主要原因是如果要通過采用硬件轉(zhuǎn)發(fā)來提高報(bào)文轉(zhuǎn)發(fā)效率的話,必須將BGP路由寫入線卡的硬件轉(zhuǎn)發(fā)表,線卡通過該轉(zhuǎn)發(fā)表中BGP 路由所提供的下一跳出口來確定路徑。但是BGP路由需要通過二次査找才能 找到下一跳出口,而現(xiàn)有的路由子系統(tǒng)的線卡交換芯片不支持BGP路由的二 次査找功能。
名詞解釋
RIB — Route information base, 路由信息庫(kù); FIB — Forward information base, 轉(zhuǎn)發(fā)信息庫(kù); LPM — Longest Prefix Matched,最長(zhǎng)前綴匹配; nh — next hop,路由的下一跳信息,往往指網(wǎng)關(guān)地址; Main Control—分布式路由器的主控板,路由協(xié)議處理子模塊運(yùn)行的硬件 環(huán)境;
Line Card —分布式路由器的線卡,實(shí)際的路由査找、報(bào)文轉(zhuǎn)發(fā)運(yùn)行的 硬件環(huán)境。
發(fā)明內(nèi)容
鑒于上述技術(shù)局限和發(fā)明構(gòu)思,本發(fā)明的目的是提供一種BGP路由在分 布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方法。該技術(shù)方案在BDCOM現(xiàn)有的路由子 系統(tǒng)基礎(chǔ)上進(jìn)行擴(kuò)展,考慮到BGP路由需要進(jìn)行二次査找,才能找到真實(shí)的 下一跳出口。這個(gè)對(duì)于通過CPU軟件轉(zhuǎn)發(fā)而言,是不會(huì)造成困惑的。但是, 為了提高報(bào)文轉(zhuǎn)發(fā)效率,往往需要把BGP路由寫入線卡的硬件轉(zhuǎn)發(fā)表,但是, 就目前的交換芯片而言,是不支持二次路由査找的。不過采用本發(fā)明所述的技 術(shù)方案能把真實(shí)下一跳也寫入硬件轉(zhuǎn)發(fā)表。最終實(shí)現(xiàn)在主控板的中央處理器模 塊中進(jìn)行BGP路由協(xié)議的同時(shí)在各線卡的處理器中并行進(jìn)行實(shí)際路由的査找。
本發(fā)明涉及的技術(shù)解決方案主要涉及下面的三個(gè)處理
(-)主控中RIB的擴(kuò)充
主控的路由子模塊負(fù)責(zé)路由的維護(hù),相應(yīng)路由信息存放在RIB中。并負(fù)責(zé) 將其中的活動(dòng)(active)路由同步到主控的FIB表。這需要根據(jù)BGP路由的下一 跳情況進(jìn)行兩種劃分① 依賴的內(nèi)層路由是非直連路由
比如rip學(xué)習(xí)到的路由,將內(nèi)層路由的下一跳作為BGP路由的nh(next hop, 路由的下一跳信息)填充內(nèi)容
② 依賴的內(nèi)層路由是直連路由
比如是直連路由,或者指向端口的靜態(tài)路由,為了能正確的填充報(bào)文的轉(zhuǎn) 發(fā)下一跳網(wǎng)關(guān)地址,以便arp解析,我們應(yīng)該填BGP路由的原始下一跳。 路由表擴(kuò)充的具體處理方式如下
(1) 擴(kuò)充RIB:
在原先的一級(jí)二叉樹節(jié)點(diǎn)上,如果某條路由被BGP路由引用,則以該路由 所在節(jié)點(diǎn)為根節(jié)點(diǎn),再擴(kuò)充下一級(jí)二叉樹,用于保存它當(dāng)前所支持的所有BGP 路由(按照BGP路由下一跳的最長(zhǎng)匹配原則進(jìn)行匹配)。擴(kuò)充的二叉樹上,仍 然采用BGP路由的前綴和掩碼長(zhǎng)度作為二叉樹的索引。
(2) BGP路由與被依賴路由之間的關(guān)聯(lián)以及調(diào)整
BGP所引用的內(nèi)層路由需要記錄下來,而被引用的內(nèi)層路由往往可能被多 條BGP路由或者其它路由所引用,這也需要被引用的路由節(jié)點(diǎn)上保存自己被 哪些BGP路由引用了。所有這些信息都是為了再路由發(fā)生變動(dòng)的時(shí)候(增刪 改),用于重新確立BGP路由和新的內(nèi)層路由之間的關(guān)聯(lián)或者去關(guān)聯(lián)。
每條active路由都有一個(gè)和線卡對(duì)應(yīng)的狀態(tài)位以表明該路由是否需要針對(duì) 特定線卡進(jìn)行更新。若RIB中當(dāng)前active(活動(dòng)灘由發(fā)生變化,需要通知給主 控上的FIB,并做RIB與FIB的同步。
(二) 主控中RIB和FIB的同步
擴(kuò)充完成RIB表以后,將對(duì)應(yīng)的路由變更以回調(diào)或者消息機(jī)制通知FIB 表,然后由FIB表填充對(duì)應(yīng)的轉(zhuǎn)發(fā)條目。信息包括目標(biāo)地址前綴,掩碼長(zhǎng)度, 下一跳地址。這里因?yàn)槭寝D(zhuǎn)發(fā)表,填入的已經(jīng)是最優(yōu)路由,所以,不再關(guān)心管 理距離以及度量值。對(duì)于發(fā)生變動(dòng)了的條目,需要有更新標(biāo)志,以便于為下一 步主控和線卡的同步做處理。
(三) 主控FIB和線卡的同步主控和線卡FIB的路由同步采用LAPD的方式進(jìn)行。分主控FIB中變化路 由向線卡的定期以及主控FIB和FIB中路由的定期同步檢查。
使用本方案可以做到主控FIB和線卡FIB的獨(dú)立同步,并且在主控的FIB 中已經(jīng)對(duì)BGP路由進(jìn)行了處理,對(duì)應(yīng)BGP路由的下一跳網(wǎng)關(guān)地址要么是直接 可達(dá)的地址,或者是可以使用代理ARP解析出的地址。這樣,采用交換芯片 進(jìn)行轉(zhuǎn)發(fā)時(shí),可以直接匹配到路由的真實(shí)出端口,從而滿足直接將相應(yīng)的BGP 路由條目寫入線卡的硬件轉(zhuǎn)發(fā)表,提高了線卡的轉(zhuǎn)發(fā)效率。
以下結(jié)合附圖和具體實(shí)施方式
來進(jìn)一步說明本發(fā)明。
圖1為包含本發(fā)明的分布式路由子系統(tǒng)的同步機(jī)制的示意圖
圖2為本發(fā)明中內(nèi)層路由是非直接路由的設(shè)置示意圖。如圖所示跨設(shè)備
的BGP路由,內(nèi)層路由為指向下一跳。
圖3為本發(fā)明中內(nèi)層路由是直接路由的設(shè)置示意圖。如圖所示直接相連
BGP路由,內(nèi)層路由為指向端口。
圖4為本發(fā)明所涉及的二級(jí)二叉樹的構(gòu)成示意圖。 圖5為本發(fā)明所述路由添加流程示意圖。
具體實(shí)施例方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解, 下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。
參見圖1,首先,本發(fā)明基于一種分布式路由子系統(tǒng)的同步機(jī)制,該機(jī)制 在實(shí)際應(yīng)用中須通過高端路由器的硬件設(shè)備(主要是指主控板Main Control 和線卡Line Card)來實(shí)現(xiàn)。包含線卡加電向主控板注冊(cè)機(jī)制、常規(guī)觸發(fā)更新 機(jī)制、Ack超時(shí)重傳機(jī)制、Audit同步機(jī)制四個(gè)同步機(jī)制
線卡加電向主控板注冊(cè)機(jī)制硬件啟動(dòng),線卡插入插槽以后,加電初始化。 之后向主控發(fā)送request進(jìn)行注冊(cè)。在此過程中,線卡必須明確的收到主控的 Ack報(bào)文,否則超時(shí)重傳。常規(guī)觸發(fā)更新機(jī)制主控收到線卡的request報(bào)文以后,需要檢查該報(bào)文 是request具體的路由還是request all;若為前者,則需要遍歷主控的FIB 表,查找線卡所需要的具體的路由進(jìn)行更新;若是request all,則需要針對(duì) 主控FIB表中所有entry的該線卡更新標(biāo)志位進(jìn)行設(shè)置。這兩種情況,都需要 等待主控的更新定時(shí)器超時(shí)。
Ack超時(shí)重傳機(jī)制當(dāng)Audit定時(shí)器超時(shí)以后,若針對(duì)該線卡的發(fā)送緩沖 不為空,則需要重發(fā)該發(fā)送緩沖中的報(bào)文;反之,則考慮是否從主控FIB中繼 續(xù)遍歷,封裝變化了的entry,然后進(jìn)行發(fā)送。這個(gè)過程涉及到稀疏更新路由 的處理。
Audit同步機(jī)制當(dāng)Audit定時(shí)器超時(shí)后,主控需要遍歷它的整個(gè)FIB, 但是只關(guān)心路由的IPV6前綴以及時(shí)間戳,并將其封裝到update報(bào)文中,單播 發(fā)給線卡以便和線卡FIB中的路由進(jìn)行一致性比較。線卡根據(jù)比較的結(jié)果是否 一致,決定是否需要向主控FIB請(qǐng)求路由更新。對(duì)于audit向線卡進(jìn)行一致性 檢査時(shí),若沒有收到線卡的響應(yīng),我們的處理方式是重發(fā)次數(shù)超過一個(gè)閥值后 就停止該線卡的此輪audit同步檢查。
根據(jù)Ack超時(shí)重傳機(jī)制中所提到的稀疏更新路由技術(shù),其含義就是在前一 次路由更新后,若在常規(guī)Audit定時(shí)器超時(shí)以前變化的路由數(shù)目比較少,則直 接將路由添加進(jìn)FIB中而不設(shè)更新標(biāo)志位。同時(shí),該路由也封裝到報(bào)文中并加 入發(fā)送緩沖隊(duì)列。在該定時(shí)器超時(shí)后,就不用遍歷FIB而直接處理發(fā)送緩沖。
主控上audit和常規(guī)更新采用互相排斥的方式進(jìn)行,即一個(gè)過程在處理的 過程中,抑制另外一個(gè)過程的觸發(fā)。
本發(fā)明在上述同步機(jī)制的基礎(chǔ)上,對(duì)報(bào)文轉(zhuǎn)發(fā)時(shí)所涉及的BGP路由進(jìn)行設(shè) 置,該過程所涉及下面的三個(gè)處理
(-)主控中RIB的擴(kuò)充
主控的路由子模塊負(fù)責(zé)路由的維護(hù),相應(yīng)路由信息存放在RIB中。并負(fù)責(zé) 將其中的活動(dòng)(active)路由同步到主控的FIB表。這需要根據(jù)BGP路由的下一 跳情況進(jìn)行兩種劃分
' ①依賴的內(nèi)層路由是非直連路由
參見圖2,比如rip學(xué)習(xí)到的路由,將內(nèi)層路由的下一跳作為BGP路由的nh (nexthop,路由的下一跳信息)填充內(nèi)容 ②依賴的內(nèi)層路由是直連路由
參見圖3,比如是直連路由,或者指向端口的靜態(tài)路由,為了能正確的填 充報(bào)文的轉(zhuǎn)發(fā)下一跳網(wǎng)關(guān)地址,以便arp解析,我們應(yīng)該填BGP路由的原始下一跳。
路由表擴(kuò)充的具體處理方式如下
(1) 擴(kuò)充RIB (參見圖4):
在原先的一級(jí)二叉樹節(jié)點(diǎn)上,如果某條路由被BGP路由引用,則以該路由 所在節(jié)點(diǎn)為根節(jié)點(diǎn),再擴(kuò)充下一級(jí)二叉樹,用于保存它當(dāng)前所支持的所有BGP 路由(按照BGP路由下一跳的最長(zhǎng)匹配原則進(jìn)行匹配)。擴(kuò)充的二叉樹上,仍 然采用BGP路由的前綴和掩碼長(zhǎng)度作為二叉樹的索引。
(2) BGP路由與被依賴路由之間的關(guān)聯(lián)以及調(diào)整(參見圖5): BGP所引用的內(nèi)層路由需要記錄下來,而被引用的內(nèi)層路由往往可能被多
條BGP路由或者其它路由所引用,這也需要被引用的路由節(jié)點(diǎn)上保存自己被 哪些BGP路由引用了。所有這些信息都是為了再路由發(fā)生變動(dòng)的時(shí)候(增刪 改),用于重新確立BGP路由和新的內(nèi)層路由之間的關(guān)聯(lián)或者去關(guān)聯(lián)。
每條active路由都有一個(gè)和線卡對(duì)應(yīng)的狀態(tài)位以表明該路由是否需要針對(duì) 特定線卡進(jìn)行更新。若RIB中當(dāng)前active(活動(dòng))路由發(fā)生變化,需要通知給主 控上的FIB,并做RIB與FIB的同步。
(二) 主控中RIB和FIB的同步
擴(kuò)充完成RIB表以后,將對(duì)應(yīng)的路由變更以回調(diào)或者消息機(jī)制通知FIB 表,然后由FIB表填充對(duì)應(yīng)的轉(zhuǎn)發(fā)條目。信息包括目標(biāo)地址前綴,掩碼長(zhǎng)度, 下一跳地址。這里因?yàn)槭寝D(zhuǎn)發(fā)表,填入的已經(jīng)是最優(yōu)路由,所以,不再關(guān)心管 理距離以及度量值。對(duì)于發(fā)生變動(dòng)了的條目,需要有更新標(biāo)志,以便于為下一 步主控和線卡的同步做處理。
(三) 主控FIB和線卡的同步
主控和線卡FIB的路由同步采用LAPD的方式進(jìn)行。分主控FIB中變化路由向線卡的定期以及主控FIB和FIB中路由的定期同步檢査。 結(jié)合上述技術(shù)原理,整個(gè)BGP路由的處理方案的流程如下
1. 主控學(xué)習(xí)到路由,添加進(jìn)入RIB,這里需要區(qū)分是BGP路由還是非BGP 路由。
2. RIB通過內(nèi)部消息以及回調(diào)機(jī)制,將新學(xué)習(xí)到的處理active狀態(tài)的路 由同步到主控快速轉(zhuǎn)發(fā)表FIB。在同步的時(shí)候,需要考慮是否要修改BGP對(duì)內(nèi) 層路由的依賴關(guān)系。
3. 如果是非BGP路由發(fā)生了變動(dòng),需要向上回溯直到根節(jié)點(diǎn),清除所有 的BGP路由依賴關(guān)系。涉及到的BGP路由需要重新査找新的依賴關(guān)系,以確保 出口的最長(zhǎng)匹配。
4. 填充BGP的nh的時(shí)候,需要根據(jù)圖一以及圖二的兩種情況分別考慮。
5. 如果因?yàn)橛新酚勺儎?dòng)導(dǎo)致FIB表中BGP路由的nh發(fā)生了變化,則需要 重置定時(shí)器,并且重新設(shè)置該bgp的更新標(biāo)致。
6. 通過同步機(jī)制,將FIB中的路由同步到線卡。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè) 的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中 描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明 還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本 發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。
權(quán)利要求
1、BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方法,其特征在于,包括以下步驟(1)主控中RIB的擴(kuò)充(2)主控中RIB和FIB的同步(3)主控FIB和線卡的同步。
2、 根據(jù)權(quán)利要求1的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件査找的方 法,其特征在于,所述主控中RIB的擴(kuò)充步驟中主控的路由子模塊負(fù)責(zé)路由的 維護(hù),相應(yīng)路由信息存放在RIB中。并負(fù)責(zé)將其中的活動(dòng)(active)路由同步到主 控的FIB表。這需要根據(jù)BGP路由的下一跳情況進(jìn)行兩種劃分① 依賴的內(nèi)層路由是非直連路由時(shí),將內(nèi)層路由的下一跳作為BGP路由 的nh填充內(nèi)容;② 依賴的內(nèi)層路由是直連路由時(shí),則填BGP路由的原始下一跳。
3、 根據(jù)權(quán)利要求1的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件査找的方 法,其特征在于,路由表擴(kuò)充的具體處理方式還包括-(1) 擴(kuò)充RIB步驟;(2) BGP路由與被依賴路由之間的關(guān)聯(lián)以及調(diào)整步驟。
4、 根據(jù)權(quán)利要求3的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方 法,其特征在于,所述步驟(l)具體為在原先的一級(jí)二叉樹節(jié)點(diǎn)上,如果某條路 由被BGP路由引用,則以該路由所在節(jié)點(diǎn)為根節(jié)點(diǎn),再擴(kuò)充下一級(jí)二叉樹, 用于保存它當(dāng)前所支持的所有BGP路由,擴(kuò)充的二叉樹上,仍然采用BGP路 由的前綴和掩碼長(zhǎng)度作為二叉樹的索引。
5、 根據(jù)權(quán)利要求3的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方 法,其特征在于,所述步驟(2)具體為BGP所引用的內(nèi)層路由需要記錄下來, 而被引用的內(nèi)層路由往往可能被多條BGP路由或者其它路由所引用,這也需要被引用的路由節(jié)點(diǎn)上保存自己被哪些BGP路由引用了。所有這些信息都是 為了再路由發(fā)生變動(dòng)的時(shí)候,用于重新確立BGP路由和新的內(nèi)層路由之間的 關(guān)聯(lián)或者去關(guān)聯(lián)。
6、 根據(jù)權(quán)利要求1的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件査找的方 法,其特征在于,所述主控中RIB和FIB的同步步驟在擴(kuò)充完成RIB表以后, 將對(duì)應(yīng)的路由變更以回調(diào)或者消息機(jī)制通知FIB表,然后由FIB表填充對(duì)應(yīng)的 轉(zhuǎn)發(fā)條目。信息包括目標(biāo)地址前綴,掩碼長(zhǎng)度,下一跳地址。這里因?yàn)槭寝D(zhuǎn)發(fā) 表,填入的已經(jīng)是最優(yōu)路由,所以,不再關(guān)心管理距離以及度量值。對(duì)于發(fā)生 變動(dòng)了的條目,需要有更新標(biāo)志,以便于為下一步主控和線卡的同步做處理。
7、 根據(jù)權(quán)利要求1的BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件査找的方 法,其特征在于,所述主控FIB和線卡的同步步驟為主控和線卡FIB的路由同 步采用LAPD的方式進(jìn)行;分主控FIB中變化路由向線卡的定期以及主控FIB 和FIB中路由的定期同步檢査。
全文摘要
本發(fā)明公開了一種BGP路由在分布式路由子系統(tǒng)中實(shí)現(xiàn)硬件查找的方法。該技術(shù)方案在BDCOM現(xiàn)有的路由子系統(tǒng)基礎(chǔ)上進(jìn)行擴(kuò)展,考慮到BGP路由需要進(jìn)行二次查找,才能找到真實(shí)的下一跳出口。這個(gè)對(duì)于通過CPU軟件轉(zhuǎn)發(fā)而言,是不會(huì)造成困惑的。但是,為了提高報(bào)文轉(zhuǎn)發(fā)效率,往往需要把BGP路由寫入線卡的硬件轉(zhuǎn)發(fā)表,但是,就目前的交換芯片而言,是不支持二次路由查找的。不過采用本發(fā)明所述的技術(shù)方案能把真實(shí)下一跳也寫入硬件轉(zhuǎn)發(fā)表。最終實(shí)現(xiàn)在主控板的中央處理器模塊中進(jìn)行BGP路由協(xié)議的同時(shí)在各線卡的處理器中并行進(jìn)行實(shí)際路由的查找。
文檔編號(hào)H04L12/56GK101459577SQ200710172300
公開日2009年6月17日 申請(qǐng)日期2007年12月14日 優(yōu)先權(quán)日2007年12月14日
發(fā)明者馮松柏, 革 汪 申請(qǐng)人:上海博達(dá)數(shù)據(jù)通信有限公司