專利名稱:Bgp路由快速收斂方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)通信領(lǐng)域,具體涉及一種BGP路由快速收斂的解決方法。
背景技術(shù):
BGP(邊界網(wǎng)關(guān)協(xié)議)作為一類EGP協(xié)議,用于自治系統(tǒng)間路由的發(fā)現(xiàn)與傳遞。BGP通過(guò)引入一系列的路由屬性(諸如ORIGIN、AS_PATH、NEXT_HOP、MULTI_EXIT_DISC、LOCAL_PREF等屬性)使其能很輕松的避免路由環(huán)路、而且還擁有豐富的路由選路策略。但正是因?yàn)橐脒@么多的路由屬性,BGP在向Peer(鄰居)通告路由時(shí),就要對(duì)每一條路由進(jìn)行一系列費(fèi)時(shí)的路由屬性檢查和路由屬性創(chuàng)建。如果要發(fā)送一萬(wàn)條路由,就需要進(jìn)行一萬(wàn)次一系列的路由屬性檢查和創(chuàng)建。然后根據(jù)屬性檢查結(jié)果和新創(chuàng)建的屬性以決定將路由發(fā)送給其他Peer或者從其他Peer撤銷。顯然要處理完這一萬(wàn)條路由就需要很長(zhǎng)的時(shí)間,從而導(dǎo)致路由收斂速度很慢。對(duì)于這個(gè)問(wèn)題,目前沒(méi)有較完善的解決方案,大多通過(guò)提高CPU速率的辦法來(lái)解決。
這種情況隨著路由的增加還會(huì)加劇。一般地BGP需要傳遞的路由遠(yuǎn)大于一萬(wàn)條(據(jù)統(tǒng)計(jì)目前的Intemet路由已超過(guò)十萬(wàn)條,而且還會(huì)不斷的增加)。BGP作為域間網(wǎng)關(guān)協(xié)議,一般都運(yùn)行在核心路由器上。如何提高BGP路由收斂速度,對(duì)于整個(gè)Intemet網(wǎng)絡(luò)的穩(wěn)定有著很重要的意義。
發(fā)明內(nèi)容
本發(fā)明克服上述BGP路由收斂速度慢的不足,提供一種BGP路由快速收斂辦法,有效提高BGP路由的收斂速度。
本發(fā)明的技術(shù)內(nèi)容一種BGP路由快速收斂辦法,對(duì)于同類路由,在向其他鄰居發(fā)送時(shí),針對(duì)每一個(gè)鄰居只對(duì)第一條路由進(jìn)行一次路由屬性的檢查和創(chuàng)建,并將檢查的結(jié)果和創(chuàng)建的屬性放在一張檢查結(jié)果緩存表中,后續(xù)待發(fā)送的路由直接利用存放在緩存表中的檢查結(jié)果和已經(jīng)創(chuàng)建好的屬性進(jìn)行路由發(fā)送。
針對(duì)每一個(gè)鄰居創(chuàng)建一個(gè)路由緩存表,用于將屬性相同的路由一起打包發(fā)送。
本發(fā)明BGP路由快速收斂辦法的具體實(shí)現(xiàn)步驟如下1、為每個(gè)Peer創(chuàng)建兩個(gè)緩存表pstSendCache(檢查結(jié)果緩存表)和pstUpdateOutList(路由緩存表)。
pstSendCache用于保存路由屬性檢查結(jié)果和新創(chuàng)建屬性的緩存表,這個(gè)表存放了pstPeerFrom(源鄰居路由是哪個(gè)鄰居學(xué)來(lái)的)、pstOldAttr(舊屬性沒(méi)有經(jīng)過(guò)發(fā)送過(guò)程處理的屬性)、bCheckFlag(屬性檢查結(jié)果發(fā)送或不發(fā)送)以及pstNewAttr(新創(chuàng)建的屬性經(jīng)過(guò)發(fā)送過(guò)程處理后生成屬性)四個(gè)字段。
pstUpdateOutList路由緩存表,這張表存放了pstNewAttr(新創(chuàng)建的屬性經(jīng)過(guò)發(fā)送過(guò)程處理后生成屬性,這里的pstNewAttr和pstSendCache表中的pstNewAttr是相同的,即是發(fā)送過(guò)程處理中創(chuàng)建的新的屬性)、pstPacket(根據(jù)pstNewAttr和待發(fā)送路由生成的數(shù)據(jù)包,后續(xù)具有相同pstNewAttr的路由直接壓入pstPacket這個(gè)數(shù)據(jù)包一起發(fā)送)等字段。
2、路由發(fā)送時(shí)首先到pstSendCache緩存表中查找,如果找到了對(duì)應(yīng)的表項(xiàng),說(shuō)明可以進(jìn)行快速發(fā)送處理。根據(jù)表項(xiàng)中的bCheckFlag決定如何處理路由(1)如果可以發(fā)送,再到pstUpdateOutList進(jìn)行查找。如果找到相應(yīng)的表項(xiàng),則直接將路由壓入表項(xiàng)對(duì)應(yīng)的pstPacket中。如果沒(méi)有找到,創(chuàng)建一個(gè)新的表項(xiàng),然后將路由壓入到表項(xiàng)的pstPacket中。
(2)如果不能發(fā)送,檢查路由是否曾經(jīng)向此鄰居發(fā)送過(guò)。如果發(fā)送過(guò),則撤銷此路由。否則忽略此路由。
3、如果在pstSendCache中沒(méi)有找到相應(yīng)的表項(xiàng),則啟動(dòng)普通發(fā)送流程,對(duì)路由進(jìn)行屬性檢查和創(chuàng)建。并在pstSendCache中生成相應(yīng)的表項(xiàng),以備后續(xù)同類路由發(fā)送時(shí)使用。
4、pstSendCache表的更新pstSendCache默認(rèn)的大小時(shí)64,可根據(jù)需要修改。每一個(gè)加入到pstSendCache中的表項(xiàng)都會(huì)被賦予一個(gè)默認(rèn)的權(quán)值,而且還會(huì)隨著時(shí)間的推移自動(dòng)衰減(通過(guò)定時(shí)掃描pstSendCahe表來(lái)實(shí)現(xiàn))。表項(xiàng)被使用一次權(quán)值就會(huì)增加,長(zhǎng)時(shí)間不用時(shí)就會(huì)減小。當(dāng)加入到pstSendCache的表項(xiàng)超出了其上限時(shí),就會(huì)把權(quán)值最低的表項(xiàng)刪除,將新的表項(xiàng)加入。這樣使pstSendCache中始終保持著最常使用的表項(xiàng)。
5、pstUpdateOutList中路由的發(fā)送有兩種情況可以觸發(fā)將pstUpdateOutList中的路由發(fā)出(1)隨著路由的加入,當(dāng)某個(gè)表項(xiàng)中的pstPacket的長(zhǎng)度要超過(guò)4064(協(xié)議規(guī)定一個(gè)Update包中最長(zhǎng)為4096,4096-32=4064,32是預(yù)留長(zhǎng)度,防止再壓入一條路由后數(shù)據(jù)包長(zhǎng)度超過(guò)協(xié)議規(guī)定的4096。即為了安全起見(jiàn),一個(gè)數(shù)據(jù)包長(zhǎng)度最多為4064)時(shí),就將此表項(xiàng)從pstUpdateOutList取出,將此表項(xiàng)的pstPacket發(fā)送出去。
(2)同時(shí)還會(huì)啟動(dòng)一個(gè)定時(shí)器,定時(shí)將pstUpdateOutList中的所有表項(xiàng)的pstPacket發(fā)送出去。
本發(fā)明的技術(shù)效果基于同類路由(從同一個(gè)Peer收到的、并且擁有相同的路由屬性的路由)處理方式一致的原則,通過(guò)去除BGP路由發(fā)送速度和待發(fā)送路由數(shù)量之間的線性關(guān)系,盡量減少發(fā)送過(guò)程中一系列路由屬性的檢查和創(chuàng)建,從而達(dá)到提高路由收斂速度的目的。本發(fā)明能有效的提高BGP路由的收斂速度,特別是在發(fā)送大量路由時(shí),效果更加明顯。經(jīng)測(cè)試,采用本發(fā)明的解決方案后,收斂速度能有一到兩個(gè)數(shù)量級(jí)的提高。
圖一是本發(fā)明產(chǎn)生快速發(fā)送流程使用的pstSendCache表項(xiàng)處理流程;圖二是本發(fā)明的快速發(fā)送流程處理的過(guò)程。
具體實(shí)施例方式
當(dāng)配置一個(gè)Peer時(shí),將為其創(chuàng)建一個(gè)pstSendCache(檢查結(jié)果緩存表)和一個(gè)pstUpdateOutList(路由緩存表)。同時(shí)為pstSendCache啟動(dòng)一個(gè)權(quán)值維護(hù)定時(shí)器,定時(shí)衰減pstSendCache中表項(xiàng)的權(quán)值。還會(huì)啟動(dòng)一個(gè)路由發(fā)送定時(shí)器,定期觸發(fā)路由發(fā)送。
參考圖1,下面以兩條同類路由(具有相同的pstPeerFrom和pstOldAttr的路由)的發(fā)送為例具體說(shuō)明本發(fā)明的處理過(guò)程1、當(dāng)發(fā)送第一條路由時(shí),因?yàn)槭堑谝粭l路由,pstSendCache中沒(méi)有相應(yīng)的表項(xiàng)。所以對(duì)此路由進(jìn)行普通路由發(fā)送流程處理。
2、在普通發(fā)送流程處理中,對(duì)此路由經(jīng)過(guò)一系列的屬性檢查和創(chuàng)建。得出需要的bCheckFlalg和pstNewAttr。于是在pstSendCache中創(chuàng)建第一個(gè)表項(xiàng),以備后面的同類路由(具有相同的pstPeerFrom和pstOldAttr的路由)使用。
3、根據(jù)bCheckFlag的值決定如何處理此路由(1)如果檢查結(jié)果顯示可以發(fā)送則根據(jù)pstNewAttr生成pstPacket路由更新數(shù)據(jù)包,并將路由壓入這個(gè)pstPacket。然后根據(jù)pstNewAttr和pstPacket在pstUpdateOutList中創(chuàng)建相應(yīng)的表項(xiàng)。如果pstPacket的長(zhǎng)度達(dá)到或超過(guò)了設(shè)定的長(zhǎng)度(4064)或發(fā)送定時(shí)器(每隔兩秒)觸發(fā)將路由發(fā)送出去。
(2)如果不用發(fā)送檢查此路由是否曾經(jīng)向此Peer(鄰居)發(fā)送過(guò),如果發(fā)送過(guò),則向此Peer發(fā)撤銷路由更新包。否則忽略此路由。
4、發(fā)送第二條路由時(shí),參考圖2,根據(jù)此路由的pstPeerFrom和pstOldAttr到pstSendCache中查找。因?yàn)楹偷谝粭l路由是同類路由,所以就會(huì)找到相應(yīng)的表項(xiàng),同時(shí)增加此表項(xiàng)的權(quán)值,因?yàn)楸皇褂昧艘淮巍?br>
5、檢查此表項(xiàng)的bCheckFlag,決定如果處理此路由(1)如果可以發(fā)送,則根據(jù)表項(xiàng)的pstNewAttr到pstUpdateOutList查找相應(yīng)的表項(xiàng)。
A)如果找到相應(yīng)的表項(xiàng),就直接將此路由壓入此表項(xiàng)對(duì)應(yīng)的pstPacket數(shù)據(jù)包中,等待發(fā)送。
B)如果沒(méi)有找到相應(yīng)的表項(xiàng),則根據(jù)pstNewAttr生成一個(gè)路由更新數(shù)據(jù)包pstPacket,并且根據(jù)pstNewAttr和pstPacket在pstUpdateOutList中創(chuàng)建相應(yīng)的表項(xiàng)。
(2)如果不能發(fā)送,則檢查是否曾經(jīng)向Peer通告過(guò)路由,如果是,則向此Peer發(fā)送撤銷更新數(shù)據(jù)包。否則忽略此路由。
6、如果后面還有路由要發(fā)送(1)如果pstSendCache中的表項(xiàng)沒(méi)有一條是自己的同類路由通過(guò)普通發(fā)送處理過(guò)程生成的,則按上訴第一條路由的處理步驟處理。
(2)如果pstSendCache中已有相應(yīng)的表項(xiàng)了,則按上述第二條路由的處理步驟處理。
7、由于pstSendCache的容量有限(默認(rèn)可以存放64條表項(xiàng)),所以當(dāng)有新的表項(xiàng)要加入,如果這使得pstSendCache已滿,則就會(huì)將的權(quán)值最低的表項(xiàng)刪除,將新的表項(xiàng)加入。
8、pstSendCache的表項(xiàng)的權(quán)值通過(guò)一個(gè)權(quán)值定時(shí)器來(lái)維護(hù)。定時(shí)器定時(shí)掃描pstSendCache中的表項(xiàng),對(duì)表項(xiàng)的權(quán)值進(jìn)行衰減。同時(shí)對(duì)表項(xiàng)進(jìn)行排序,將權(quán)值最大的表項(xiàng)放在pstSendCache表的最前面。因?yàn)楦鶕?jù)統(tǒng)計(jì)學(xué)原理,連續(xù)發(fā)送的路由之間具有某種自相關(guān)特性。所以最常使用的表項(xiàng)就應(yīng)該放在前面,以提高查找效率。發(fā)送路由時(shí),一個(gè)表項(xiàng)一旦被使用,權(quán)值就會(huì)增加。
權(quán)利要求
1.一種BGP路由快速收斂辦法,其特征在于對(duì)于同類路由,在向其他鄰居發(fā)送時(shí),針對(duì)每一個(gè)鄰居只對(duì)第一條路由進(jìn)行一次路由屬性的檢查和創(chuàng)建,并將檢查的結(jié)果和創(chuàng)建的屬性放在一張檢查結(jié)果緩存表中,后續(xù)待發(fā)送的路由直接利用存放在該緩存表中的檢查結(jié)果和已經(jīng)創(chuàng)建好的屬性進(jìn)行路由發(fā)送。
2.如權(quán)利要求1所述的BGP路由快速收斂辦法,其特征在于針對(duì)每一個(gè)鄰居創(chuàng)建一個(gè)路由緩存表,用于將屬性相同的路由一起打包發(fā)送,當(dāng)路由根據(jù)檢查結(jié)果緩存表檢查顯示可以發(fā)送時(shí),在路由緩存表中查找相應(yīng)的表項(xiàng),如果找到,將該路由壓入此表項(xiàng)對(duì)應(yīng)的數(shù)據(jù)包中。
3.如權(quán)利要求1或2所述的BGP路由快速收斂辦法,其特征在于所述檢查結(jié)果緩存表存放了源鄰居、舊屬性、屬性檢查結(jié)果及新創(chuàng)建屬性四個(gè)字段。
4.如權(quán)利要求1所述的BGP路由快速收斂辦法,其特征在于如果路由在檢查結(jié)果緩存表中查找到相應(yīng)的表項(xiàng)時(shí),根據(jù)檢查結(jié)果和已經(jīng)創(chuàng)建好的屬性進(jìn)行路由發(fā)送,如果在檢查結(jié)果緩存表中沒(méi)有找到相應(yīng)的表項(xiàng),則啟動(dòng)普通發(fā)送流程,對(duì)路由進(jìn)行屬性檢查和創(chuàng)建,并生成相應(yīng)的表項(xiàng),以備后續(xù)同類路由發(fā)送時(shí)使用。
5.如權(quán)利要求2所述的BGP路由快速收斂辦法,其特征在于當(dāng)路由緩存表中的某個(gè)數(shù)據(jù)包的長(zhǎng)度大于4064時(shí),將與該數(shù)據(jù)包對(duì)應(yīng)的表項(xiàng)從路由緩存表取出,并發(fā)送該數(shù)據(jù)包。
6.如權(quán)利要求2所述的BGP路由快速收斂辦法,其特征在于啟動(dòng)定時(shí)器,定時(shí)將路由緩存表中的所有表項(xiàng)的數(shù)據(jù)包發(fā)送出去。
7.如權(quán)利要求1所述的BGP路由快速收斂辦法,其特征在于檢查結(jié)果緩存表中的表項(xiàng)被賦予一個(gè)默認(rèn)的權(quán)值,當(dāng)表項(xiàng)每被使用一次,其權(quán)值隨之增加,同理,如表項(xiàng)長(zhǎng)時(shí)間不用時(shí),其權(quán)值減小。
8.如權(quán)利要求7所述的BGP路由快速收斂辦法,其特征在于表項(xiàng)的權(quán)值通過(guò)一個(gè)權(quán)值定時(shí)器來(lái)維護(hù),定時(shí)器定時(shí)對(duì)表項(xiàng)的權(quán)值進(jìn)行衰減,同時(shí)對(duì)表項(xiàng)進(jìn)行排序,將權(quán)值最大的表項(xiàng)放在檢查結(jié)果緩存表的最前面。
9.如權(quán)利要求7或8所述的BGP路由快速收斂辦法,其特征在于當(dāng)檢查結(jié)果緩存表已滿,將權(quán)值最低的表項(xiàng)刪除,新的表項(xiàng)加入。
全文摘要
本發(fā)明提供了一種BGP路由快速收斂方法,屬于計(jì)算機(jī)網(wǎng)絡(luò)通信領(lǐng)域,該方法是在向其他鄰居發(fā)送同類路由時(shí),針對(duì)每一個(gè)鄰居只對(duì)第一條路由進(jìn)行一次路由屬性的檢查和創(chuàng)建,并將檢查的結(jié)果和創(chuàng)建的屬性放在一張檢查結(jié)果緩存表中,后續(xù)待發(fā)送的路由直接利用存放在緩存表中的檢查結(jié)果和已經(jīng)創(chuàng)建好的屬性進(jìn)行路由發(fā)送,并將屬性相同的路由一起打包發(fā)送。通過(guò)去除BGP路由發(fā)送速度和待發(fā)送路由數(shù)量之間的線性關(guān)系,盡量減少發(fā)送過(guò)程中一系列路由屬性的檢查和創(chuàng)建,可提高路由收斂速度,特別是在發(fā)送大量路由時(shí),效果更加明顯。
文檔編號(hào)H04Q3/00GK1543129SQ20031010355
公開(kāi)日2004年11月3日 申請(qǐng)日期2003年11月7日 優(yōu)先權(quán)日2003年11月7日
發(fā)明者陳國(guó)義 申請(qǐng)人:港灣網(wǎng)絡(luò)有限公司