一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法,該方法應(yīng)用于第一路由設(shè)備,所述第一路由設(shè)備使能BGP不間斷路由,備份自身BGP路由信息;發(fā)生倒換時(shí),如果TCP連接異常斷開,第一路由設(shè)備切換為GR?Restarter,計(jì)算TCP連接斷開期間與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值;如果TCP連接斷開期間路由信息發(fā)生變化,則在TCP連接恢復(fù)后通過(guò)更新的BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值,如果上述兩次計(jì)算的信息摘要值不相等,則所述第一路由設(shè)備發(fā)送TCP連接恢復(fù)后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息,如果相等,則發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備。
【專利說(shuō)明】一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信傳輸技術(shù),特別是一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備。
【背景技術(shù)】
[0002]邊界網(wǎng)關(guān)協(xié)議(BorderGateway Protocol, BGP)平滑重啟(Graceful Restart,GR)是一種在主備倒換或BGP協(xié)議重啟時(shí)保證轉(zhuǎn)發(fā)業(yè)務(wù)不中斷的機(jī)制。GR有兩個(gè)角色:
[0003]平滑重啟設(shè)備GR Restarter:發(fā)生主備倒換或協(xié)議重啟,且具有GR能力的設(shè)備。
[0004]平滑重啟輔助設(shè)備GR Helper:和GR Restarter具有鄰居關(guān)系,協(xié)助完成GR流程的設(shè)備。GR Helper也具有GR能力。
[0005]設(shè)備既可以作為GR Restarter,又可以作為GR Helper。設(shè)備的角色由該設(shè)備在BGP GR過(guò)程中的作用決定。
[0006]BGP GR的工作過(guò)程為:
[0007](I)GR Restarter和GR Helper通過(guò)Open消息交互GR能力。只有雙方都具有GR能力時(shí),建立起的BGP會(huì)話才具備GR能力。
[0008](2)建立具備GR能力的BGP會(huì)話后,GR Restarter進(jìn)行主備倒換或BGP協(xié)議重啟時(shí),GR Restarter不會(huì)刪除路由信息庫(kù)(Routing Information Base, RIB)和轉(zhuǎn)發(fā)信息庫(kù)(Forwarding Information Base, FIB)表項(xiàng),仍然按照原有的轉(zhuǎn)發(fā)表項(xiàng)轉(zhuǎn)發(fā)報(bào)文。GRHelper發(fā)現(xiàn)GR Restarter進(jìn)行主備倒換或BGP協(xié)議重啟后,GR Helper不會(huì)刪除從該GRRestarter學(xué)習(xí)到的路由,而是將這些路由標(biāo)記為短暫失效(Stale)路由,仍按照這些路由轉(zhuǎn)發(fā)報(bào)文,從而確保在GR Restarter進(jìn)行主備倒換或BGP協(xié)議重啟的過(guò)程中,報(bào)文轉(zhuǎn)發(fā)不會(huì)中斷。
[0009](3) GR Restarter主備倒換或BGP協(xié)議重啟完成后,它會(huì)重新與GRHelper建立BGP會(huì)話。如果在GR Restarter通告的BGP會(huì)話重建時(shí)間內(nèi)沒(méi)有成功建立BGP會(huì)話,則GRHelper會(huì)刪除標(biāo)記為失效的路由。
[0010](4)如果在GR Restarter通告的BGP會(huì)話重建時(shí)間內(nèi)成功建立BGP會(huì)話,則GRRestarter和GR Helper在建立的BGP會(huì)話上進(jìn)行路由信息交互,以便GRRestarter恢復(fù)路由信息、GR Helper根據(jù)學(xué)習(xí)到的路由刪除路由的失效標(biāo)記。
[0011](5)BGP會(huì)話建立后,在GR Restarter和GR Helper上都會(huì)啟動(dòng)路由信息庫(kù)結(jié)束(End-Of-RIB)標(biāo)記等待定時(shí)器(定時(shí)器的值通過(guò) graceful-restart timer wait-for-rib命令配置),該定時(shí)器用來(lái)控制路由信息收斂的速度。如果定時(shí)器超時(shí)沒(méi)有完成路由信息的交互,則GR Restarter不再接收新的路由,根據(jù)已經(jīng)學(xué)習(xí)到的BGP路由信息更新RIB表項(xiàng),刪除老化的RIB表項(xiàng);GR Helper則刪除標(biāo)記為失效的路由。
[0012](6)如果在RIB路由老化定時(shí)器超時(shí)時(shí)沒(méi)有完成路由信息的交互,則GRRestarter會(huì)強(qiáng)制退出GR過(guò)程,根據(jù)已經(jīng)學(xué)習(xí)到的BGP路由信息更新RIB表項(xiàng),刪除老化的RIB表項(xiàng)。
[0013]按照請(qǐng)求評(píng)議RFC (Request For Comments) 4724 的規(guī)定,GR 重建鄰居后 Restart端需要重新發(fā)送全部路由給Helper。
[0014]而BGP不間斷路由(Nonstop Routing, NSR)是一種通過(guò)在BGP協(xié)議主備進(jìn)程之間備份必要的協(xié)議狀態(tài)和數(shù)據(jù)(如BGP鄰居信息和路由信息),使得BGP協(xié)議的主進(jìn)程中斷時(shí),備份進(jìn)程能夠無(wú)縫地接管主進(jìn)程的工作,從而確保對(duì)等體感知不到BGP協(xié)議中斷,保持BGP路由,并保證轉(zhuǎn)發(fā)不會(huì)中斷的技術(shù)。
[0015]BGP NSR與BGP GR具有如下區(qū)別:
[0016]對(duì)BGP對(duì)等體的要求不同:使用BGP NSR功能時(shí),BGP對(duì)等體不會(huì)感知本地設(shè)備發(fā)生了 BGP進(jìn)程的異常重啟或主備倒換等故障,因?yàn)樽约簜浞萘?BGP路由,及TCP連接,因此不要BGP對(duì)等體協(xié)助恢復(fù)BGP路由信息。
[0017]BGP GR要求BGP對(duì)等體具有GR能力,并且在BGP會(huì)話中斷恢復(fù)時(shí),BGP對(duì)等體能夠作為GR helper協(xié)助本地設(shè)備恢復(fù)BGP路由信息。
[0018]信息摘要算法第五版(Message Digest Algorithm5.0,MD5)的典型應(yīng)用是對(duì)一段信息(Message)產(chǎn)生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多軟件在下載的時(shí)候都有一個(gè)文件名相同,文件擴(kuò)展名為.md5的文件,在這個(gè)文件中通常只有一行文本,大致結(jié)構(gòu)如:
[0019]MD5(tanajiya.tar.gz) = 0cal75b9c0f726a831d895e269332361
[0020]這就是tanajiya.tar.gz文件的數(shù)字簽名。MD5將整個(gè)文件當(dāng)作一個(gè)大文本信息,通過(guò)其不可逆的字符串變換算法,產(chǎn)生了這個(gè)唯一的MD5信息摘要。如果在以后傳播這個(gè)文件的過(guò)程中,無(wú)論文件的內(nèi)容發(fā)生了任何形式的改變(包括人為修改或者下載過(guò)程中線路不穩(wěn)定引起的傳輸錯(cuò)誤等),只要你對(duì)這個(gè)文件重新計(jì)算MD5時(shí)就會(huì)發(fā)現(xiàn)信息摘要不相同,由此可以確定你得到的只是一個(gè)不正確的文件。如果再有一個(gè)第三方的認(rèn)證機(jī)構(gòu),用MD5還可以防止文件作者的〃抵賴〃,這就是所謂的數(shù)字簽名應(yīng)用。
【發(fā)明內(nèi)容】
[0021]有鑒于此,本發(fā)明提出了一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備,有效解決了現(xiàn)有技術(shù)中發(fā)生倒換時(shí)某些設(shè)備TCP不支持NSR或者TCP連接意外斷開而不能應(yīng)用BGPNSR方式進(jìn)行倒換的問(wèn)題,以及BGP GR倒換方式中發(fā)送大量不必要的路由導(dǎo)致的帶寬占用、路由收斂過(guò)慢的問(wèn)題。本發(fā)明提出的技術(shù)方案是:
[0022]一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法,該方法應(yīng)用于第一路由設(shè)備,所述第一路由設(shè)備與至少一臺(tái)鄰居路由設(shè)備建立鄰居關(guān)系,所述第一路由設(shè)備和所述至少一臺(tái)鄰居路由設(shè)備具備計(jì)算路由信息的信息摘要值能力,所述第一路由設(shè)備使能邊界網(wǎng)關(guān)協(xié)議BGP不間斷路由NSR,該方法包括:
[0023]所述第一路由設(shè)備備份自身BGP路由信息;
[0024]所述第一路由設(shè)備發(fā)生倒換,如果TCP連接異常斷開,將自身切換為平滑重啟設(shè)備GR Restarter,進(jìn)入平滑重啟GR Restart模式;
[0025]所述第一路由設(shè)備通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1 ;
[0026]如果TCP連接斷開期間路由信息發(fā)生變化,所述第一路由設(shè)備更新備份的BGP路由信息,在TCP連接恢復(fù)后通過(guò)更新后的備份BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2,如果所述MD5-2與所述MD5-1不相等,則所述第一路由設(shè)備發(fā)送更新后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息,如果所述MD5-2與所述MD5-1相等,則所述第一路由設(shè)備發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
[0027]上述方案中,該方法進(jìn)一步包括:
[0028]如果TCP連接斷開期間路由信息無(wú)變化,所述第一路由設(shè)備發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GRHelp模式。
[0029]上述方案中,判斷所述TCP連接斷開期間路由信息發(fā)生變化的方法為:
[0030]所述第一路由設(shè)備通過(guò)本地路由信息發(fā)生變化判定TCP連接斷開期間路由信息發(fā)生變化,和/或所述第一路由設(shè)備接收到鄰居路由設(shè)備發(fā)送的路由更新信息判定所述鄰居路由設(shè)備的路由信息發(fā)生變化,所述路由更新信息是所述鄰居路由設(shè)備在TCP連接恢復(fù)前后分別計(jì)算與所述第一路由設(shè)備對(duì)應(yīng)的路由信息摘要值,且判定TCP連接恢復(fù)前后兩次計(jì)算的信息摘要值不相等時(shí)發(fā)送給所述第一路由設(shè)備的。
[0031]上述方案中,判斷所述TCP連接斷開期間路由信息無(wú)變化的方法為:
[0032]所述第一路由設(shè)備的本地路由信息無(wú)變化,且所述第一路由設(shè)備接收到所有鄰居路由設(shè)備發(fā)送的路由無(wú)變化通告報(bào)文,判定所述TCP連接斷開期間路由信息無(wú)變化。
[0033]上述方案中,該方法進(jìn)一步包括:
[0034]如果所述TCP連接正常,則所述第一路由設(shè)備按照BGP NSR方式執(zhí)行倒換。
[0035]—種路由設(shè)備,該設(shè)備與至少一臺(tái)鄰居路由設(shè)備建立鄰居關(guān)系,且該路由設(shè)備和所述至少一臺(tái)鄰居路由設(shè)備具備計(jì)算路由信息的信息摘要值能力,該路由設(shè)備使能邊界網(wǎng)關(guān)協(xié)議BGP不間斷路由NSR,該設(shè)備包括:
[0036]存儲(chǔ)模塊,用于備份自身BGP路由信息;
[0037]處理模塊,用于發(fā)生倒換時(shí),如果TCP連接異常斷開,將自身切換為平滑重啟設(shè)備GR Restarter,進(jìn)入平滑重啟GR Restart模式;
[0038]計(jì)算模塊,用于通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1 ;
[0039]判斷模塊,用于判斷TCP連接斷開期間路由信息是否發(fā)生變化;
[0040]如果TCP連接斷開期間路由信息發(fā)生變化,所述存儲(chǔ)模塊還用于更新備份的BGP
路由信息;
[0041]如果判斷模塊判斷TCP連接斷開期間路由信息發(fā)生變化,所述計(jì)算模塊還用于在TCP連接恢復(fù)后通過(guò)更新后的備份BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2 ;
[0042]所述判斷模塊還用于判斷所述MD5-2與所述MD5-1是否相等;
[0043]發(fā)送模塊,用于所述判斷模塊判斷MD5-2與所述MD5-1不相等時(shí),發(fā)送TCP連接恢復(fù)后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息;還用于所述MD5-2與所述MD5-1相等時(shí),發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GRHelp模式。
[0044]上述方案中,如果所述判斷模塊判斷TCP連接斷開期間路由信息無(wú)變化,所述發(fā)送模塊進(jìn)一步用于,發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
[0045]上述方案中,該設(shè)備還包括接收模塊,用于接收鄰居路由設(shè)備發(fā)送的路由更新信息,發(fā)送第一通知報(bào)文給判斷模塊,所述路由更新信息是所述鄰居路由設(shè)備在TCP連接恢復(fù)前后分別計(jì)算與所述第一路由設(shè)備對(duì)應(yīng)的路由信息摘要值,且判定TCP連接恢復(fù)前后兩次計(jì)算的信息摘要值不相等時(shí)發(fā)送給所述第一路由設(shè)備的;
[0046]所述判斷模塊進(jìn)一步用于,通過(guò)本地路由信息發(fā)生變化判定TCP連接斷開期間路由信息發(fā)生變化,和/或接收到所述接收模塊發(fā)送的第一通知報(bào)文判定TCP連接斷開期間路由信息發(fā)生變化。
[0047]上述方案中,
[0048]所述接收模塊還用于,接收到所有鄰居路由設(shè)備發(fā)送的路由無(wú)變化通告報(bào)文,發(fā)送第二通知報(bào)文給判斷模塊;
[0049]所述判斷模塊進(jìn)一步用于,接收所述接收模塊發(fā)送的第二通知報(bào)文,判定本地路
由信息無(wú)變化。
[0050]上述方案中,所述處理模塊進(jìn)一步用于,如果所述TCP連接正常,則按照BGP NSR方式執(zhí)行倒換。
[0051]綜上所述,本發(fā)明提出了一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備,當(dāng)路由設(shè)備發(fā)生倒換時(shí),如果該路由設(shè)備傳輸控制協(xié)議(Transmission Control Protocol, TCP)支持NSR或TCP連接正常,由于已經(jīng)備份了該路由設(shè)備上的路由信息,倒換期間BGP鄰居不會(huì)中斷,正常收發(fā)數(shù)據(jù),以BGP NSR方式進(jìn)行倒換,對(duì)等體感知不到BGP協(xié)議中斷,保持BGP路由;如果發(fā)生倒換的路由設(shè)備不支持NSR或者TCP連接中斷,則該路由設(shè)備切換為GRRestarter,其鄰居路由設(shè)備切換為GR Helper, GR Restarter保存了備份路由,GR Helper保存了 Stale路由,通過(guò)增加MD5摘要算法,判斷因TCP連接斷開期間路由是否發(fā)生變化來(lái)決策是否需要重新發(fā)送路由信息,從而加快了路由收斂,減少帶寬及處理路由更新的CPU占用。
【專利附圖】
【附圖說(shuō)明】
[0052]圖1為方法實(shí)施例一和方法實(shí)施例二的組網(wǎng)結(jié)構(gòu)圖;
[0053]圖2為方法實(shí)施例一的流程圖;
[0054]圖3為方法實(shí)施例二的流程圖;
[0055]圖4為本發(fā)明實(shí)施例的路由設(shè)備結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0056]按照請(qǐng)求評(píng)議RFC (Request For Comments) 4724的規(guī)定,GR重建鄰居后Restarter端需要重新發(fā)送全部路由給Helper,實(shí)際上其路由都是從Helper方恢復(fù)的,Helper端已保存了路由信息的,在大多數(shù)情況下,這樣的重發(fā)機(jī)制可能是多余的,會(huì)導(dǎo)致GR收斂變慢。
[0057]NSR方式不需要對(duì)等體配合路由恢復(fù),控制層面上路由信息需要備份到備板,同時(shí)需要協(xié)議的TCP鏈接支持NSR保證心跳報(bào)文,鄰居不中斷。但是有的路由設(shè)備TCP不支持NSR功能,或者TCP異常斷開無(wú)法應(yīng)用NSR方式進(jìn)行倒換。
[0058]基于此,本發(fā)明提供了一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法及路由設(shè)備。路由設(shè)備首先備份自身的BGP路由信息,當(dāng)其發(fā)生倒換時(shí),如果TCP NSR正常,且TCP連接正常,則該路由設(shè)備按照BGP NSR方式進(jìn)行倒換;否則所述路由設(shè)備切換為GR Restarter,進(jìn)入GR流程。如果以GR方式進(jìn)行倒換,通過(guò)增加MD5摘要算法,判斷因TCP連接斷開期間路由是否發(fā)生變化來(lái)決策是否需要重新發(fā)送路由信息,從而加快了路由收斂,減少帶寬及處理路由更新的CPU占用。
[0059]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)的更加清楚明白,下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
[0060]本發(fā)明實(shí)施例的技術(shù)方案是:
[0061]所述第一路由設(shè)備備份自身BGP路由信息;
[0062]所述第一路由設(shè)備發(fā)生倒換,如果TCP連接異常斷開,將自身切換為平滑重啟設(shè)備GR Restarter,進(jìn)入平滑重啟GR Restart模式;
[0063]所述第一路由設(shè)備通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1 ;
[0064]如果TCP連接斷開期間路由信息發(fā)生變化,所述第一路由設(shè)備更新備份的BGP路由信息,在TCP連接恢復(fù)后通過(guò)更新后的備份BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2,如果所述MD5-2與所述MD5-1不相等,則所述第一路由設(shè)備發(fā)送更新后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息,如果所述MD5-2與所述MD5-1相等,則所述第一路由設(shè)備發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
[0065]方法實(shí)施例一
[0066]以圖1中的路由組網(wǎng)示意圖為例對(duì)本發(fā)明技術(shù)方案進(jìn)行說(shuō)明,圖1中,路由設(shè)備A上的本地路由信息記為a,路由設(shè)備B上的本地路由信息記為b,路由設(shè)備C上的本地路由信息記為C。路由設(shè)備A與路由設(shè)備B建立鄰居關(guān)系,路由設(shè)備B與路由設(shè)備C建立鄰居關(guān)系。建立鄰居關(guān)系后各臺(tái)路由設(shè)備分別將本地路由信息發(fā)送給其鄰居路由,即路由設(shè)備A將本地路由信息a發(fā)送給路由設(shè)備B,路由設(shè)備C將本地路由信息c發(fā)送給路由設(shè)備B,路由設(shè)備B將路由信息b和c發(fā)送給路由設(shè)備A,將路由信息b和a發(fā)送給路由設(shè)備C。之后路由設(shè)備A、B、C上分別記錄了路由信息a、b和C。且路由設(shè)備A、B、C均具有計(jì)算路由信息的信息摘要值的能力。本實(shí)施例以路由設(shè)備B發(fā)生倒換為例對(duì)本發(fā)明技術(shù)方案進(jìn)行說(shuō)明,且假設(shè)TCP連接斷開期間路由設(shè)備A、B、C的本地路由信息a、b、c均沒(méi)有更新。圖2為本發(fā)明實(shí)施例的流程圖,如圖2所示,包括以下步驟:
[0067]步驟201:路由設(shè)備B備份BGP路由信息。
[0068]本步驟中,路由設(shè)備B將自身記錄的本地路由信息b和鄰居路由信息a、c全部備份到備板,與現(xiàn)有技術(shù)NSR處理方式相同,不作詳細(xì)介紹。
[0069]步驟202:倒換發(fā)生,路由設(shè)備B判斷自身是否能夠應(yīng)用NSR方式進(jìn)行倒換,如果是,執(zhí)行步驟203,否則執(zhí)行步驟204。
[0070]本步驟中,路由設(shè)備B如果要成功應(yīng)用NSR方式進(jìn)行倒換,不僅需要步驟201中備份路由信息,還需要TCP連接也支持NSR并且成功備份,而某些場(chǎng)景下的低端路由設(shè)備的TCP是不支持NSR的,這就會(huì)導(dǎo)致路由設(shè)備無(wú)法按照NSR方式進(jìn)行倒換;或者路由設(shè)備的TCP連接支持NSR,但是TCP連接備份時(shí)失敗導(dǎo)致TCP中斷,這些情況均使得路由設(shè)備無(wú)法采用NSR方式進(jìn)行倒換,這種情況下需要執(zhí)行步驟204。
[0071]步驟203:路由設(shè)備B按照NSR方式進(jìn)行倒換。
[0072]基于步驟202的判斷結(jié)果,路由設(shè)備B可以按照NSR方式進(jìn)行倒換,則按照NSR方式進(jìn)行倒換,該部分為現(xiàn)有技術(shù),在此不再詳述。
[0073]步驟204:倒換進(jìn)入GR流程,路由設(shè)備B切換為GR Restarter,其鄰居路由設(shè)備A和C切換為GR Helper。
[0074]基于步驟202的判斷結(jié)果,路由設(shè)備B無(wú)法按照NSR方式進(jìn)行倒換,則外部采用GR方式實(shí)現(xiàn)倒換,路由設(shè)備A和C作為GR Helper設(shè)備協(xié)助路由設(shè)備B進(jìn)行倒換。
[0075]步驟205:路由設(shè)備B計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值。
[0076]步驟201中路由設(shè)備B備份了記錄的路由信息a、b、c,雖然發(fā)生倒換,其上仍有備份路由信息,因此可以計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值。所述與鄰居路由設(shè)備對(duì)應(yīng)的路由信息為路由器B應(yīng)該發(fā)送給鄰居路由設(shè)備的路由信息。
[0077]與鄰居路由設(shè)備A對(duì)應(yīng)的路由信息為b、c,則計(jì)算得到的信息摘要值為MD5 (BA_1_be);與鄰居路由設(shè)備C對(duì)應(yīng)的路由信息為a、b,則計(jì)算得到的信息摘要值為MD5 (BC_l_bc)。
[0078]步驟206:鄰居路由設(shè)備分別計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。
[0079]本步驟中,鄰居路由設(shè)備A和C切換為GR Helper,計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。所述與路由設(shè)備B對(duì)應(yīng)的路由信息為鄰居路由設(shè)備A和C分別應(yīng)該發(fā)送給路由設(shè)備B的路由信息。
[0080]鄰居路由設(shè)備A與路由設(shè)備B對(duì)應(yīng)的路由路由信息為a,則計(jì)算得到的信息摘要值為MD5(AB_l_a);鄰居路由設(shè)備C與路由設(shè)備B對(duì)應(yīng)的路由路由信息為C,則計(jì)算得到的信息摘要值為MD5 (CB_l_c)。
[0081]步驟207:鄰居路由設(shè)備A和C標(biāo)記路由設(shè)備B發(fā)來(lái)的路由為Stale。
[0082]本步驟中,鄰居路由設(shè)備A和C發(fā)現(xiàn)路由設(shè)備B進(jìn)行倒換,則分別標(biāo)記倒換發(fā)生前路由設(shè)備B發(fā)送來(lái)的路由信息為Stale,即短暫失效,具體的,路由設(shè)備A將本地保存的路由設(shè)備B發(fā)送來(lái)的路由信息b和c標(biāo)記為Stale,路由設(shè)備C將本地保存的路由設(shè)備B發(fā)送來(lái)的路由信息a和b標(biāo)記為Stale。
[0083]步驟208 =TCP連接恢復(fù)正常,鄰居路由設(shè)備再次分別計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。
[0084]本步驟中,TCP連接恢復(fù)正常后,鄰居路由設(shè)備再次分別計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。
[0085]鄰居路由設(shè)備A計(jì)算的信息摘要值記為MD5 (AB_2_a),該信息摘要為路由設(shè)備A與路由設(shè)備B對(duì)應(yīng)的路由a路由信息的信息摘要;鄰居路由設(shè)備C計(jì)算的信息摘要值記為MD5 (CB_2_c),該信息摘要為路由設(shè)備C與路由設(shè)備B對(duì)應(yīng)的路由c路由信息的信息摘要。
[0086]由于本實(shí)施例假設(shè)TCP連接斷開期間路由設(shè)備A、B、C的本地路由信息a、b、c均沒(méi)有更新,因此必然存在 MD5 (AB_l_a) = MD5 (AB_2_a),MD5 (CB_l_c) = MD5 (CB_2_c)。
[0087]步驟209:鄰居路由設(shè)備發(fā)送路由無(wú)變化通告報(bào)文給路由設(shè)備B,告知路由設(shè)備B路由信息無(wú)變化。[0088]由于步驟208中鄰居路由設(shè)備A在TCP連接恢復(fù)前后計(jì)算的對(duì)應(yīng)路由設(shè)備B的路由信息摘要值相同,則發(fā)送路由無(wú)變化通告報(bào)文給路由設(shè)備B,告知路由設(shè)備B路由信息無(wú)變化;同樣,鄰居路由設(shè)備C在TCP連接恢復(fù)前后計(jì)算的對(duì)應(yīng)路由設(shè)備B的路由信息摘要值也相同,則發(fā)送路由無(wú)變化通告報(bào)文給路由設(shè)備B,告知路由設(shè)備B路由信息無(wú)變化。
[0089]所述路由無(wú)變化通告報(bào)文具體可以是E0R_127報(bào)文,該E0R_127報(bào)文是以127.0.0.1/32作為前綴的撤銷類型的UPDATE報(bào)文。具有通告路由發(fā)送結(jié)束的功能。路由設(shè)備B接收到該報(bào)文后確認(rèn)發(fā)送該報(bào)文的鄰居路由設(shè)備本地路由無(wú)更新。
[0090]步驟210:路由設(shè)備B分別發(fā)送倒換結(jié)束通告報(bào)文給路由設(shè)備A、C,倒換結(jié)束。
[0091]本步驟中,由于路由設(shè)備B接收到所有鄰居設(shè)備發(fā)送來(lái)的路由無(wú)變化通告報(bào)文,確認(rèn)鄰居設(shè)備的本地路由信息無(wú)變化,且路由設(shè)備B本地路由信息b也無(wú)變化,則分別發(fā)送倒換結(jié)束通告報(bào)文給路由設(shè)備A、C,通知各鄰居設(shè)備收斂結(jié)束,使得各鄰居設(shè)備接收到倒換結(jié)束通告報(bào)文后去掉步驟207中路由設(shè)備B發(fā)送來(lái)的路由信息的Stale標(biāo)記。至此,倒換結(jié)束。
[0092]方法實(shí)施例二
[0093]方法實(shí)施例一以TCP連接斷開期間路由設(shè)備A、B、C的本地路由信息均無(wú)變化為例對(duì)本發(fā)明技術(shù)方案進(jìn) 行說(shuō)明,本實(shí)施例仍采用實(shí)施例一中的組網(wǎng)結(jié)構(gòu)與參數(shù)設(shè)置,假設(shè)TCP連接斷開期間路由設(shè)備A的本地路由信息a更新為a ',圖3為本實(shí)施例的流程圖,包括以下步驟:
[0094]步驟301~步驟307與步驟201~步驟207相同,在此不再贅述。
[0095]步驟308 =TCP連接恢復(fù)正常,鄰居路由設(shè)備再次分別計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。
[0096]本步驟中,TCP連接恢復(fù)正常后,鄰居路由設(shè)備再次分別計(jì)算與路由設(shè)備B對(duì)應(yīng)的路由信息摘要值。
[0097]鄰居路由設(shè)備A計(jì)算的信息摘要值記為MD5 (AB_2_a ’ ),鄰居路由設(shè)備C計(jì)算的信息摘要值記為MD5 (CB_2_c)。
[0098]由于本實(shí)施例假設(shè)TCP連接斷開期間路由設(shè)備A的本地路由信息a更新為a ',因此必然存在 MD5 (AB_l_a)幸 MD5 (AB_2_a ; ),MD5 (CB_l_c) = MD5 (CB_2_c)。
[0099]步驟309:路由設(shè)備A發(fā)送更新路由信息a丨給路由設(shè)備B,路由設(shè)備C發(fā)送路由無(wú)變化通告報(bào)文給路由設(shè)備B。
[0100]本步驟中,路由設(shè)備B接收到路由設(shè)備A發(fā)送的更新路由信息a丨,更新備份的BGP路由信息,更新后路由設(shè)備B上備份的BGP路由信息為a ^,b,C。
[0101]步驟310:路由設(shè)備B再次計(jì)算對(duì)應(yīng)發(fā)送給鄰居路由設(shè)備的信息摘要值。
[0102]由于路由設(shè)備B接收到部分鄰居路由設(shè)備(本實(shí)施例為路由設(shè)備A)發(fā)送來(lái)的更新路由信息,說(shuō)明鄰居路由信息有變化,此時(shí)路由設(shè)備B需要再次計(jì)算對(duì)應(yīng)發(fā)送給各鄰居路由設(shè)備的信息摘要值。
[0103]對(duì)應(yīng)發(fā)送給鄰居路由設(shè)備A的路由信息為b、C,則計(jì)算出的信息摘要值為MD5 (BA_2_bc);對(duì)應(yīng)發(fā)送給鄰居路由設(shè)備C的路由信息為a \b,則計(jì)算出的信息摘要值為MD5 (BC_2_a ; b),則必然存在 MD5 (BA_l_bc) = MD5 (BA_2_bc),MD5 (BC_l_ab)幸 MD5 (BC_2_a ' b)。[0104]步驟311:路由設(shè)備B發(fā)送倒換結(jié)束通告報(bào)文給路由設(shè)備A,發(fā)送更新路由信息a ;、b給路由設(shè)備C。
[0105]由于TCP連接恢復(fù)前后計(jì)算的對(duì)應(yīng)路由設(shè)備A的路由信息摘要值相同,因此路由設(shè)備A端的路由信息不用更新,路由設(shè)備B發(fā)送倒換結(jié)束通告報(bào)文給路由設(shè)備A,通知其路由無(wú)變化,使其接收到倒換結(jié)束通告報(bào)文后去掉路由信息上的Stale標(biāo)記即可;
[0106]TCP連接恢復(fù)前后計(jì)算的對(duì)應(yīng)路由設(shè)備C的路由信息摘要值不相同,因?yàn)槁酚稍O(shè)備A的本地路由信息由a更新為a ’,而路由設(shè)備C仍記錄的是a,路由設(shè)備B需要將更新路由設(shè)備C端的路由信息,因此發(fā)送路由信息a '、b給路由設(shè)備C,最后發(fā)送一個(gè)倒換結(jié)束通告報(bào)文給路由設(shè)備C,告知路由發(fā)送完畢,倒換結(jié)束。
[0107]本實(shí)施例中,如果是路由設(shè)備A、C的本地路由在TCP連接斷開期間無(wú)變化,而路由設(shè)備B的本地路由信息由b更新為b ',在路由設(shè)備B接收到路由設(shè)備A、C發(fā)送的路由無(wú)變化通告報(bào)文后仍需再次計(jì)算對(duì)應(yīng)發(fā)送給鄰居路由設(shè)備的信息摘要值,且計(jì)算出的摘要值與TCP連接恢復(fù)前計(jì)算得出的摘要值不相等,因此需要將路由信息a、b丨發(fā)送給路由設(shè)備C,將路由信息b丨、c發(fā)送給路由設(shè)備A,處理流程與本實(shí)施例相同,不再詳述。
[0108]針對(duì)上述方法,本發(fā)明還提供一種路由設(shè)備,本發(fā)明提供的設(shè)備如圖4所示,包括:
[0109]存儲(chǔ)模塊401,用于備份自身BGP路由信息。
[0110]處理模塊402,用于發(fā)生倒換時(shí),如果TCP連接異常斷開,切換為平滑重啟設(shè)備GRRestarter,進(jìn)入平滑重啟GR Restart模式。
[0111]計(jì)算模塊403,用于通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1.[0112]判斷模塊404,用于判斷TCP連接斷開期間路由信息是否發(fā)生變化。
[0113]如果TCP連接斷開期間路由信息發(fā)生變化,所述存儲(chǔ)模塊401還用于更新備份的BGP路由信息。
[0114]如果所述判斷模塊404判斷TCP連接斷開期間路由信息發(fā)生變化,所述計(jì)算模塊403還用于在TCP連接恢復(fù)后通過(guò)更新后的BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2.[0115]判斷模塊404還用于,判斷所述MD5-2與所述MD5-1是否相等。
[0116]發(fā)送模塊405,用于所述MD5-2與所述MD5-1不相等時(shí),發(fā)送TCP連接恢復(fù)后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息;還用于所述MD5-2與所述MD5-1相等時(shí),發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
[0117]如果判斷模塊404判斷TCP連接斷開期間路由信息無(wú)變化,所述發(fā)送模塊505進(jìn)一步用于,發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出GR Help模式。
[0118]該設(shè)備還包括接收模塊405,用于接收鄰居路由設(shè)備發(fā)送的路由更新信息,發(fā)送第一通知報(bào)文給判斷模塊,所述路由更新信息是所述鄰居路由設(shè)備在TCP連接恢復(fù)前后分別計(jì)算與所述第一路由設(shè)備對(duì)應(yīng)的路由信息摘要值,且判定TCP連接恢復(fù)前后兩次計(jì)算的信息摘要值不相等時(shí)發(fā)送給所述第一路由設(shè)備的。[0119]所述判斷模塊404進(jìn)一步用于,通過(guò)本地路由信息發(fā)生變化判定TCP連接斷開期間路由信息發(fā)生變化,和/或接收到所述接收模塊發(fā)送的第一通知報(bào)文判定TCP連接斷開期間路由信息發(fā)生變化。
[0120]所述接收模塊406還用于,接收到所有鄰居路由設(shè)備發(fā)送的路由無(wú)變化通告報(bào)文,發(fā)送第二通知報(bào)文給判斷模塊。
[0121]所述判斷模塊404進(jìn)一步用于,接收所述接收模塊發(fā)送的第二通知報(bào)文,判定本地路由信息無(wú)變化。
[0122]所述處理模塊402進(jìn)一步用于,如果所述TCP連接正常,則按照BGP NSR方式執(zhí)行倒換。
[0123]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種邊界網(wǎng)關(guān)協(xié)議平滑重啟方法,其特征在于,該方法應(yīng)用于第一路由設(shè)備,所述第一路由設(shè)備與至少一臺(tái)鄰居路由設(shè)備建立鄰居關(guān)系,所述第一路由設(shè)備和所述至少一臺(tái)鄰居路由設(shè)備具備計(jì)算路由信息的信息摘要值能力,所述第一路由設(shè)備使能邊界網(wǎng)關(guān)協(xié)議BGP不間斷路由NSR,該方法包括: 所述第一路由設(shè)備備份自身BGP路由信息; 所述第一路由設(shè)備發(fā)生倒換,如果TCP連接異常斷開,將自身切換為平滑重啟設(shè)備GRRestarter,進(jìn)入平滑重啟GR Restart模式; 所述第一路由設(shè)備通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1 ; 如果TCP連接斷開期間路由信息發(fā)生變化,所述第一路由設(shè)備更新備份的BGP路由信息,在TCP連接恢復(fù)后通過(guò)更新后的備份BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2,如果所述MD5-2與所述MD5-1不相等,則所述第一路由設(shè)備發(fā)送更新后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息,如果所述MD5-2與所述MD5-1相等,則所述第一路由設(shè)備發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 如果TCP連接斷開期間路由信息無(wú)變化,所述第一路由設(shè)備發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GRHelp模式。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷所述TCP連接斷開期間路由信息發(fā)生變化的方法為: 所述第一路由設(shè)備通過(guò)本地路由信息發(fā)生變化判定TCP連接斷開期間路由信息發(fā)生變化,和/或所述第一路由設(shè)備接收到鄰居路由設(shè)備發(fā)送的路由更新信息判定所述鄰居路由設(shè)備的路由信息發(fā)生變化,所述路由更新信息是所述鄰居路由設(shè)備在TCP連接恢復(fù)前后分別計(jì)算與所述第一路由設(shè)備對(duì)應(yīng)的路由信息摘要值,且判定TCP連接恢復(fù)前后兩次計(jì)算的信息摘要值不相等時(shí)發(fā)送給所述第一路由設(shè)備的。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,判斷所述TCP連接斷開期間路由信息無(wú)變化的方法為: 所述第一路由設(shè)備的本地路由信息無(wú)變化,且所述第一路由設(shè)備接收到所有鄰居路由設(shè)備發(fā)送的路由無(wú)變化通告報(bào)文,判定所述TCP連接斷開期間路由信息無(wú)變化。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 如果所述TCP連接正常,則所述第一路由設(shè)備按照BGP NSR方式執(zhí)行倒換。
6.一種路由設(shè)備,其特征在于,該設(shè)備與至少一臺(tái)鄰居路由設(shè)備建立鄰居關(guān)系,且該路由設(shè)備和所述至少一臺(tái)鄰居路由設(shè)備具備計(jì)算路由信息的信息摘要值能力,該路由設(shè)備使能邊界網(wǎng)關(guān)協(xié)議BGP不間斷路由NSR,該設(shè)備包括: 存儲(chǔ)模塊,用于備份自身BGP路由信息; 處理模塊,用于發(fā)生倒換時(shí),如果TCP連接異常斷開,將自身切換為平滑重啟設(shè)備GRRestarter,進(jìn)入平滑重啟GR Restart模式; 計(jì)算模塊,用于通過(guò)備份的BGP路由信息計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-1 ; 判斷模塊,用于判斷TCP連接斷開期間路由信息是否發(fā)生變化; 如果TCP連接斷開期間路由信息發(fā)生變化,所述存儲(chǔ)模塊還用于更新備份的BGP路由信息; 如果判斷模塊判斷TCP連接斷開期間路由信息發(fā)生變化,所述計(jì)算模塊還用于在TCP連接恢復(fù)后通過(guò)更新后的備份BGP路由信息再次計(jì)算與鄰居路由設(shè)備對(duì)應(yīng)的路由信息摘要值MD5-2 ; 所述判斷模塊還用于判斷所述MD5-2與所述MD5-1是否相等; 發(fā)送模塊,用于所述判斷模塊判斷MD5-2與所述MD5-1不相等時(shí),發(fā)送TCP連接恢復(fù)后的路由信息給鄰居路由設(shè)備,使其更新自身記錄的路由信息;還用于所述MD5-2與所述MD5-1相等時(shí),發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短暫失效標(biāo)記Stale,退出平滑重啟輔助GRHelp模式。
7.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于,如果所述判斷模塊判斷TCP連接斷開期間路由信息無(wú)變化,所述發(fā)送模塊進(jìn)一步用于,發(fā)送倒換結(jié)束通告報(bào)文給鄰居路由設(shè)備,使其刪除自身路由信息上的短 暫失效標(biāo)記Stale,退出平滑重啟輔助GR Help模式。
8.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于, 該設(shè)備還包括接收模塊,用于接收鄰居路由設(shè)備發(fā)送的路由更新信息,發(fā)送第一通知報(bào)文給判斷模塊,所述路由更新信息是所述鄰居路由設(shè)備在TCP連接恢復(fù)前后分別計(jì)算與所述第一路由設(shè)備對(duì)應(yīng)的路由信息摘要值,且判定TCP連接恢復(fù)前后兩次計(jì)算的信息摘要值不相等時(shí)發(fā)送給所述第一路由設(shè)備的; 所述判斷模塊進(jìn)一步用于,通過(guò)本地路由信息發(fā)生變化判定TCP連接斷開期間路由信息發(fā)生變化,和/或接收到所述接收模塊發(fā)送的第一通知報(bào)文判定TCP連接斷開期間路由信息發(fā)生變化。
9.根據(jù)權(quán)利要求7所述的設(shè)備,其特征在于, 所述接收模塊還用于,接收到所有鄰居路由設(shè)備發(fā)送的路由無(wú)變化通告報(bào)文,發(fā)送第二通知報(bào)文給判斷模塊; 所述判斷模塊進(jìn)一步用于,接收所述接收模塊發(fā)送的第二通知報(bào)文,判定本地路由信息無(wú)變化。
10.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于,所述處理模塊進(jìn)一步用于,如果所述TCP連接正常,則按照BGP NSR方式執(zhí)行倒換。
【文檔編號(hào)】H04L12/703GK103986649SQ201410234199
【公開日】2014年8月13日 申請(qǐng)日期:2014年5月28日 優(yōu)先權(quán)日:2014年5月28日
【發(fā)明者】樊超, 王偉, 王海 申請(qǐng)人:杭州華三通信技術(shù)有限公司