本發(fā)明涉及通信領(lǐng)域,尤其涉及一種路由器平滑重啟的管理方法和裝置。
背景技術(shù):
平滑重啟(Graceful Restart,GR)實(shí)現(xiàn)的功能是在路由協(xié)議重啟時(shí)保證數(shù)據(jù)轉(zhuǎn)發(fā)層面功能的正常,以保證關(guān)鍵業(yè)務(wù)不中斷。在相關(guān)技術(shù)中,開放式最短路徑優(yōu)先(Open Shortest Path First,OSPF)主備倒換進(jìn)行GR操作的方法主要有兩種,一種是主處理器倒換前發(fā)送平滑重啟鏈路狀態(tài)通告(Graceful Restart Link State Advertisement,GR LSA);主處理器倒換前發(fā)送GR LSA的作用是倒換路由器向鄰居路由器傳達(dá)平滑重啟信號(hào),請(qǐng)求鄰居路由器協(xié)助自己完成平滑重啟;另一種是主處理器倒換后備處理器工作開始發(fā)送GR LSA。主處理器倒換前由于知道鄰居的信息,所以可以保證GR LSA被鄰居接收到;相反主處理器倒換后備處理器接替主處理器工作時(shí),先前的鄰居信息已經(jīng)全部丟失,所以這種情況下無法確定先前鄰居是否接收到GR LSA。
如果鄰居沒有接收到重啟方路由器發(fā)送的GR LSA,就不會(huì)協(xié)助重啟方路由器完成GR操作,相應(yīng)地會(huì)重新產(chǎn)生路由器鏈路狀態(tài)通告(Router LSA),Router LSA中會(huì)刪除先前指向重啟方的連接,當(dāng)重啟方接收到鄰居新產(chǎn)生沒有指向自己連接的Router LSA時(shí),會(huì)判斷出鄰居根本沒有協(xié)助本端完成GR,此時(shí)重啟方會(huì)退出GR操作。
圖1為現(xiàn)有技術(shù)中鄰居路由器未接收到重啟方路由器發(fā)送的GR LSA時(shí)的交互示意圖。ROUTER 1主備倒換后,發(fā)送GR LSA向鄰居路由器傳遞本地要進(jìn)行GR的信號(hào),希望鄰居能夠提供幫助。ROUTER 1發(fā)送一定次數(shù)的GR LSA后,開始發(fā)送HELLO報(bào)文,本例中由于鏈路傳播原因?qū)е翿OUTER 2沒有接收到ROUTER 1發(fā)送的GR LSA。ROUTER 2不會(huì)協(xié)助ROUTER 1 完成GR,會(huì)重新產(chǎn)生刪除指向ROUTER 1連接的Router LSA,經(jīng)過數(shù)據(jù)庫(kù)摘要描述報(bào)文和鏈路狀態(tài)請(qǐng)求報(bào)文交互后,當(dāng)ROUTER 1接收到ROUTER 2的Router LSA時(shí),才判斷出ROUTER 2根本就沒有協(xié)助本地完成GR,ROUTER 1此時(shí)立刻退出GR。
由于未能及時(shí)判斷出鄰居沒有協(xié)助本端重啟方完成GR操作,延遲了本端退出GR的時(shí)間,降低了路由的收斂速度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種路由器平滑重啟的管理方法和裝置,要解決的技術(shù)問題是重啟方路由判斷鄰居路由器是否協(xié)助本端完成GR操作滯后的缺點(diǎn)
為解決上述技術(shù)問題,本發(fā)明提供了如下技術(shù)方案:
一種路由器平滑重啟的管理方法,包括:
第一路由器在通知第二路由器協(xié)助所述第一路由器進(jìn)行平滑重啟GR后,獲取所述第二路由器發(fā)送的報(bào)文;
所述第一路由器根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果;
如果確定結(jié)果為所述第二路由器未接收到所述第一路由器的通知,則控制所述第一路由器結(jié)束GR操作。
其中,所述獲取所述第二路由器發(fā)送的消息,包括:
獲取所述第二路由器發(fā)送的數(shù)據(jù)庫(kù)摘要描述DD報(bào)文和/或鏈路狀態(tài)請(qǐng)求LSR報(bào)文。
其中,所述第一路由器根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果,包括:
在所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的DD報(bào)文,獲取所述DD報(bào)文的選項(xiàng)字段中標(biāo)志位O是否置位,如果標(biāo)志位O沒有置位,則得到確定結(jié)果為所述第二路由器未接 收到所述第一路由器發(fā)送的通知,其中所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的LSR報(bào)文,獲取所述LSR報(bào)文中的鏈路狀態(tài)通告LSA的描述信息,如果所述LSA的描述信息是請(qǐng)求所述第一路由器的GR LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,在所述第一路由器處理完所述第二路由器發(fā)送的最后一個(gè)DD報(bào)文后,如果所述第二路由器沒有接收到第一路由器的GR LSA或者沒有接收到第一路由器的Router LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知。
其中,所述第二路由器是否接收到所述第一路由器的GR LSA或者所述第一路由器的Router LSA,是通過如下方式得到的:
獲取接收到的DD報(bào)文中LSA;
如果所述LSA是所述第一路由器的GR LSA且所述第一路由器記錄有所述LSA的信息,則確定所述第二路由器接收到所述第一路由器的GR LSA;或者,
如果所述LSA是所述第一路由器的Router LSA,則確定所述第二路由器接收到所述第一路由器的Router LSA。
其中,如果所述第一路由器沒有所述LSA的信息,或者,所述第一路由器沒有所述LSA的更新信息,則所述第一路由器向所述第二路由器請(qǐng)求所述LSA的信息。
一種路由器平滑重啟的管理裝置,包括:
獲取模塊,用于在第一路由器通知第二路由器協(xié)助所述第一路由器進(jìn)行平滑重啟GR后,獲取所述第二路由器發(fā)送的報(bào)文;
確定模塊,用于根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果;
控制模塊,用于如果確定結(jié)果為所述第二路由器未接收到所述第一路由器的通知,則控制所述第一路由器結(jié)束GR操作。
其中,所述獲取模塊獲取所述第二路由器發(fā)送的數(shù)據(jù)庫(kù)摘要描述DD報(bào)文和/或鏈路狀態(tài)請(qǐng)求LSR報(bào)文。
其中,所述確定模塊具體用于:
在所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的DD報(bào)文,獲取所述DD報(bào)文的選項(xiàng)字段中標(biāo)志位O是否置位,如果標(biāo)志位O沒有置位,則得到確定結(jié)果為所述第二路由器未接收到所述第一路由器發(fā)送的通知,其中所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的LSR報(bào)文,獲取所述LSR報(bào)文中的鏈路狀態(tài)通告LSA的描述信息,如果所述LSA的描述信息是請(qǐng)求所述第一路由器的GR LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,在所述第一路由器處理完所述第二路由器發(fā)送的最后一個(gè)DD報(bào)文后,如果所述第二路由器沒有接收到第一路由器的GR LSA或者沒有接收到第一路由器的Router LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知。
其中,所述確定模塊是通過如下方式確定所述第二路由器是否接收到所述第一路由器的GR LSA或者所述第一路由器的Router LSA的,包括:
獲取接收到的DD報(bào)文中LSA;
如果所述LSA是所述第一路由器的GR LSA且所述第一路由器記錄有所述LSA的信息,則確定所述第二路由器接收到所述第一路由器的GR LSA;或者,
如果所述LSA是所述第一路由器的Router LSA,則確定所述第二路由器接收到所述第一路由器的Router LSA。
其中,所述裝置還包括:
請(qǐng)求模塊,用于如果所述第一路由器沒有所述LSA的信息,或者,所述第一路由器沒有所述LSA的更新信息,則向所述第二路由器請(qǐng)求所述LSA的信息。
本發(fā)明提供的實(shí)施例,提供一種路由器主備倒換后快速檢測(cè)退出平滑重啟的實(shí)現(xiàn)方式,通過對(duì)鄰居發(fā)來的消息的檢查,可以快速地判斷出第二路由器有沒有協(xié)助第一路由器完成GR過程,如果鄰居沒有協(xié)助重啟方完成GR操作的話,重啟方可以提前退出平滑重啟過程,克服了重啟方路由判斷鄰居路由器是否協(xié)助本端完成GR操作滯后的缺點(diǎn),加快了路由收斂的速度。
附圖說明
圖1為現(xiàn)有技術(shù)中鄰居路由器未接收到重啟方路由器發(fā)送的GR LSA時(shí)的交互示意圖;
圖2為本發(fā)明提供的路由器平滑重啟的管理方法的流程圖;
圖3為本發(fā)明提供的在第二路由器處于exstart狀態(tài)時(shí)第一路由器對(duì)DD報(bào)文的判斷流程圖;
圖4為本發(fā)明提供的在第二路由器處于exchange狀態(tài)時(shí)第一路由器對(duì)DD報(bào)文處理的流程圖;
圖5為本發(fā)明提供的在第二路由器處于exchange狀態(tài)時(shí)第一路由器對(duì)LSR報(bào)文的判斷流程圖;
圖6為本發(fā)明提供的第二路由器處于exchange狀態(tài)時(shí),第一路由器處理完鄰居最后一個(gè)DD報(bào)文的判斷流程圖;
圖7為本發(fā)明提供的路由器平滑重啟的管理裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體 實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
圖2為本發(fā)明提供的路由器平滑重啟的管理方法的流程圖。圖1所示方法包括:
步驟201、第一路由器在通知第二路由器協(xié)助所述第一路由器進(jìn)行GR后,獲取所述第二路由器發(fā)送的報(bào)文;
步驟202、所述第一路由器根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果;
步驟203、如果確定結(jié)果為所述第二路由器未接收到所述第一路由器的通知,則控制所述第一路由器結(jié)束GR操作。
本發(fā)明提供的方法,提供一種路由器主備倒換后快速檢測(cè)退出平滑重啟的實(shí)現(xiàn)方式,通過對(duì)鄰居發(fā)來的消息的檢查,可以快速地判斷出第二路由器有沒有協(xié)助第一路由器完成平滑重啟GR過程,如果鄰居沒有協(xié)助重啟方完成平滑重啟GR操作的話,重啟方可以提前退出平滑重啟過程,克服了重啟方路由判斷第二路由器是否協(xié)助本端完成GR操作滯后的缺點(diǎn),加快了路由收斂的速度。
以圖1所示網(wǎng)絡(luò)為例,鄰居路由器沒有協(xié)助重啟方完成GR操作,可能是因?yàn)猷従勇酚善鞲静恢С諳paque能力(能夠處理Opaque LSA的能力,GR LSA屬于Opaque LSA范疇),也可能是因?yàn)猷従痈揪蜎]有接收到重啟方發(fā)送的GR LSA。上述例子中最終在交互5時(shí)刻才判斷出鄰居沒有協(xié)助本地GR操作,其實(shí)早在之前就可以判斷出鄰居沒有協(xié)助本地GR操作,當(dāng)交互1接收完ROUTER 2發(fā)來的所有數(shù)據(jù)庫(kù)摘要描述DD報(bào)文時(shí),發(fā)現(xiàn)沒有ROUTER 1的GR LSA描述,說明ROUTER 2根本就沒有接收到ROUTER 1發(fā)送的GR LSA,沒有接收到重啟方發(fā)送的GR LSA,那么就不會(huì)協(xié)助重啟方ROUTER 1完成GR操作;其次交互4接收到ROUTER 2發(fā)來的對(duì)重啟方GR LSA的請(qǐng)求時(shí),也可以判斷出對(duì)方?jīng)]有接收到ROUTER 1發(fā)送的GR LSA,否則不會(huì)發(fā)送GR LSA的請(qǐng)求。
經(jīng)過上述分析,本發(fā)明利用鄰居路由器發(fā)來的數(shù)據(jù)庫(kù)摘要描述報(bào)文和鏈 路狀態(tài)請(qǐng)求報(bào)文信息,提前判斷出鄰居有沒有協(xié)助本端重啟方完成GR操作,沒有協(xié)助本端重啟方完成GR操作的話,本端會(huì)立刻退出GR過程,以加快路由的收斂速度。
下面對(duì)本發(fā)明提供的方法作進(jìn)一步說明:
其中,所述獲取所述第二路由器發(fā)送的消息,包括:
獲取所述第二路由器發(fā)送的數(shù)據(jù)庫(kù)摘要描述(Database Description,DD)報(bào)文和/或鏈路狀態(tài)請(qǐng)求(Link State Request,LSR)報(bào)文。
其中,所述第一路由器根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果,包括:
在所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的DD報(bào)文,獲取所述DD報(bào)文的選項(xiàng)字段中標(biāo)志位O是否置位,如果標(biāo)志位O沒有置位,則得到確定結(jié)果為所述第二路由器未接收到所述第一路由器發(fā)送的通知,其中所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的LSR報(bào)文,獲取所述LSR報(bào)文中的鏈路狀態(tài)通告LSA的描述信息,如果所述LSA的描述信息是請(qǐng)求所述第一路由器的GR LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,在所述第一路由器處理完所述第二路由器發(fā)送的最后一個(gè)DD報(bào)文后,如果所述第二路由器沒有接收到第一路由器的GR LSA或者沒有接收到第一路由器的Router LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知。
下面對(duì)上述確定流程進(jìn)行說明:
步驟A1、發(fā)生主備倒換操作的第一路由器清空數(shù)據(jù)庫(kù)的信息,發(fā)送一定次數(shù)的GR LSA,用以告知第二路由器本端正在進(jìn)行平滑重啟,需要第二路由器協(xié)助本端完成平滑重啟GR,其中所述第二路由器為所述第一路由器 的鄰居;
步驟A2、在發(fā)送完GR LSA后,第一路由器開始發(fā)送HELLO報(bào)文與第二路由器重新建立鄰居關(guān)系,其中HELLO報(bào)文用于獲取鄰居關(guān)系;當(dāng)?shù)谝宦酚善髋c第二路由器的狀態(tài)上升至exstart狀態(tài)進(jìn)行數(shù)據(jù)庫(kù)交互的協(xié)商階段;第一路由器接收到鄰居發(fā)來的DD報(bào)文,檢查DD報(bào)文中option選項(xiàng)字段中標(biāo)志位O是否置位,如果標(biāo)志位O沒有置位,則所述第一路由器退出GR操作;
步驟A3、在數(shù)據(jù)庫(kù)交互的協(xié)商完畢后,第二路由器進(jìn)入exchange狀態(tài),即進(jìn)入數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段,第一路由器解析鄰居發(fā)來的DD報(bào)文,獲取所述DD報(bào)文中的LSA描述信息,如果LSA描述信息是第一路由器產(chǎn)生的GR LSA并且與所述第一路由器記錄的GR LSA相符,標(biāo)識(shí)鄰居接收到本端發(fā)送的GR LSA,無需退出GR操作;或者,如果LSA描述信息是第一路由器的Router LSA,標(biāo)識(shí)鄰居有重啟方Router LSA,也無需退出GR操作;而如果本地查找不到該LSA的信息,則該LSA添加到鄰居請(qǐng)求列表中,向第二路由器請(qǐng)求該LSA的信息;
步驟A4、在第二路由器處于exchange狀態(tài)期間,第一路由器處理鄰居發(fā)來的LSR報(bào)文,如果LSR報(bào)文中包括第一路由器產(chǎn)生的GR LSA,表示第二路由器沒有接收到本端發(fā)送出去的GR LSA,第一路由器需要退出GR操作;如果本地?cái)?shù)據(jù)庫(kù)中有對(duì)應(yīng)LSA,則將LSA發(fā)送給鄰居,否則說明數(shù)據(jù)庫(kù)交互過程出錯(cuò),造成第二路由器的狀態(tài)切換到exstart,重新開始數(shù)據(jù)庫(kù)交互流程的情況;
步驟A5、在第二路由器處于exchange期間,第一路由器處理完鄰居發(fā)來的最后一個(gè)DD報(bào)文,表示第二路由器已經(jīng)將數(shù)據(jù)庫(kù)中所有LSA描述信息發(fā)送完畢,如果根據(jù)已處理的DD報(bào)文中的LSA描述信息均沒有第一路由器的GR LSA或第一路由器的Router LSA,則第一路由器退出GR操作。
由上可以看出,所述第二路由器是否接收到所述第一路由器的GR LSA或者所述第一路由器的Router LSA,是通過如下方式得到的:
獲取接收到的DD報(bào)文中LSA;
如果所述LSA是所述第一路由器的GR LSA且所述第一路由器記錄有所述LSA的信息,則確定所述第二路由器接收到所述第一路由器的GR LSA;或者,
如果所述LSA是所述第一路由器的Router LSA,則確定所述第二路由器接收到所述第一路由器的Router LSA。
其中,如果所述第一路由器沒有所述LSA的信息,或者,所述第一路由器沒有所述LSA的更新信息,則所述第一路由器向所述第二路由器請(qǐng)求所述LSA的信息。
下面對(duì)本發(fā)明提供的方法進(jìn)行說明:
圖3為本發(fā)明提供的在第二路由器處于exstart狀態(tài)時(shí)第一路由器對(duì)DD報(bào)文的判斷流程圖。圖3所示方法包括:
在第二路由器進(jìn)入exstart狀態(tài),表示開始DD報(bào)文交互前的協(xié)商,第二路由器發(fā)送一個(gè)空的DD報(bào)文,空DD報(bào)文不攜帶任何LSA描述信息,其中該DD報(bào)文中option選項(xiàng)字段有一個(gè)標(biāo)志位O,用來表示路由器能否處理opaque LSA能力,其中GR LSA屬于opaque LSA中的一種,如果標(biāo)志位O沒有置位,說明路由器沒有處理opaque LSA的能力,如果O標(biāo)志位置位,說明路由器有處理opaque LSA的能力;第一路由器接收到第二路由器發(fā)來的第一個(gè)空DD報(bào)文,檢查option字段中O標(biāo)志位是否置位,如果沒有置位的話,說明第二路由器不支持opaque LSA的處理能力,那么第一路由器先前發(fā)送的GR LSA,第二路由器肯定不會(huì)接收,所以也就不會(huì)協(xié)助重啟方完成GR操作,此時(shí)第一路由器退出GR操作。
圖4為本發(fā)明提供的在第二路由器處于exchange狀態(tài)時(shí)第一路由器對(duì)DD報(bào)文處理的流程圖。圖4所示方法包括:
在第一路由器和第二路由器雙方協(xié)商完畢后,第二路由器進(jìn)入exchange狀態(tài),開始與第一路由器進(jìn)行數(shù)據(jù)庫(kù)的交互,并將本地所有的鏈路狀態(tài)通告頭部描述信息添加到DD報(bào)文中發(fā)送給第一路由器;當(dāng)?shù)谝宦酚善鹘邮盏洁従影l(fā)來的DD報(bào)文時(shí),會(huì)對(duì)報(bào)文所有LSA描述信息進(jìn)行處理,將每個(gè)LSA描述和本地記錄的LSA進(jìn)行比較,如果本地沒有記錄對(duì)應(yīng)的LS,說明需要 向第二路由器請(qǐng)求該LSA;
如果DD報(bào)文中的LSA描述是第一路由器產(chǎn)生的GR LSA并且第一路由器記錄有GR LSA,說明鄰居已經(jīng)接收到本端先前發(fā)送的GR LSA,此時(shí)標(biāo)識(shí)鄰居接收到重啟方GR LSA;
因?yàn)楹罄m(xù)需要使用重啟方Router LSA信息來獲知先前的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),因此第二路由器是否記錄有第一路由器的Router LSA也是判斷是否需要退出GR條件之一,所以當(dāng)鄰居數(shù)據(jù)庫(kù)中不含有重啟方Router LSA時(shí),說明鄰居端出現(xiàn)異常情況,此時(shí)需要退出GR,因此如果DD報(bào)文中的LSA描述是第一路由器的Router LSA,表示第二路由器未記錄第一路由器的Router LSA,第一路由器無需退出GR操作;如果DD報(bào)文中的LSA描述沒有第一路由器的Router LSA,則表示第二路由器未記錄第一路由器的Router LSA,第一路由器需退出GR操作。
圖5為本發(fā)明提供的在第二路由器處于exchange狀態(tài)時(shí)第一路由器對(duì)LSR報(bào)文的判斷流程圖。圖5所示方法包括:
在第二路由器處于exchange狀態(tài)期間,第一路由器在接收到第二路由器發(fā)來的LSR報(bào)文后,確定第二路由器缺少對(duì)應(yīng)LSA或者缺少本端對(duì)應(yīng)LSA的更新,此時(shí)會(huì)從數(shù)據(jù)庫(kù)中搜索是否存在對(duì)應(yīng)的LSA,如果搜索到對(duì)應(yīng)的LSA,則將該LSA發(fā)送給第二路由器,如果沒有搜索到對(duì)應(yīng)LSA,則說明數(shù)據(jù)庫(kù)交互過程中出錯(cuò),需要將第二路由器的狀態(tài)切到exstart,重新開始進(jìn)行數(shù)據(jù)庫(kù)交互;
當(dāng)LSR報(bào)文中有一條GR LSA屬于第一路由器時(shí),即第二路由器請(qǐng)求本端先前產(chǎn)生的GR LSA,說明第二路由器沒有第一路由器的GR LSA,或者沒有第一路由器的GR LSA更新信息。
其中,LSA中的序列號(hào)、校驗(yàn)和以及年齡三個(gè)字段來確定LSA新舊,具體說明如下:
當(dāng)路由器重新產(chǎn)生LSA時(shí),會(huì)將序列號(hào)在上一次的基礎(chǔ)上加1。因此,LSA的序列號(hào)越大,表示LSA越新;當(dāng)序列號(hào)的大小一樣時(shí),比較序列號(hào)的校驗(yàn)和,其中校驗(yàn)和越大,表示LSA越新;當(dāng)校驗(yàn)和一樣時(shí),比較年齡字 段,最大年齡maxage的LSA最新,其中,如果兩個(gè)LSA年齡差值小于900,則認(rèn)為一樣新,大于900則年齡小的LSA最新。
在第二路由器LSA沒有第一路由器最新的GR LSA,如果是序列號(hào)本端大,說明第二路由器沒有接收到第一路由器新產(chǎn)生的GR LSA,,所以此時(shí)需要退出GR;例如,第一路由器在GR期間可能由于某種原因會(huì)產(chǎn)生新的GR LSA,向第二路由器傳遞最新的GR相關(guān)信息,比第一路由器判斷先前設(shè)置的GR時(shí)長(zhǎng)不夠,需要將GR時(shí)間參數(shù)延長(zhǎng),此時(shí)會(huì)產(chǎn)生新GR LSA將最新的GR時(shí)長(zhǎng)通知給第二路由器,第二路由器也會(huì)相應(yīng)地將協(xié)助時(shí)間延長(zhǎng)。
當(dāng)?shù)诙酚善骱偷谝宦酚善鞯腖SA的序列號(hào)一樣時(shí),如果校驗(yàn)和未發(fā)生變化,則對(duì)年齡字段進(jìn)行判斷,如果校驗(yàn)和發(fā)生變化,說明GR LSA已經(jīng)出現(xiàn)異常,此時(shí)按退出GR操作處理。其中對(duì)年齡字段的判斷具體說明如下:由于第一路由器處于GR,所以GR LSA的年齡不可能超過1800,其中GR的時(shí)長(zhǎng)的年齡為1800,因此本地?cái)?shù)據(jù)庫(kù)中的GR LSA肯定不會(huì)為最大年齡maxage,其中maxage值為3600,那么第一路由器的GR LSA和第二路由器的GR LSA年齡差值大于900并且本端GR LSA的年齡值更小,但是本端產(chǎn)生的LSA一直存放在數(shù)據(jù)庫(kù)中老化,年齡會(huì)一直在增加,只有第二路由器的數(shù)據(jù)庫(kù)中GR LSA年齡小于第一路由器的GR LSA的可能,所以正常情況下不可能出現(xiàn)這種情況。
綜上分析可以看出,第一路由器接收到第二路由器發(fā)送的GR LSA的請(qǐng)求報(bào)文,可能有如下兩種情況:
情況一:第一路由器方只產(chǎn)生一次GR LSA時(shí),第二路由器沒有接收到GR LSA;
情況二:第一路由器產(chǎn)生多次GR LSA時(shí),第二路由器沒有接收到最新一次產(chǎn)生的GR LSA說明鄰居沒有接收到重啟方最新發(fā)送的GR LSA;
因此,第一路由器需要退出GR操作。
圖6為本發(fā)明提供的第二路由器處于exchange狀態(tài)時(shí),第一路由器處理完鄰居最后一個(gè)DD報(bào)文的判斷流程圖。圖6所示方法包括:
當(dāng)?shù)诙酚善鲗⒈镜財(cái)?shù)據(jù)庫(kù)所有LSA描述發(fā)送完畢時(shí),會(huì)通過設(shè)置DD 報(bào)文中M標(biāo)志位為0來通知第一路由器本端已經(jīng)將數(shù)據(jù)庫(kù)所有LSA描述發(fā)送完,其中,M標(biāo)志位等于1表示還有未發(fā)送完的LSA描述,M標(biāo)志位等于0表示已經(jīng)將所有LSA描述發(fā)送完。
第一路由器處理完第二路由器發(fā)送的最后一個(gè)DD報(bào)文后,會(huì)對(duì)第二路由器的數(shù)據(jù)庫(kù)信息有一個(gè)十分全面的了解,根據(jù)先前處理DD報(bào)文流程中標(biāo)識(shí)鄰居是否接收到第一路由器GR LSA或含有第一路由器Router LSA的情況,判斷是否需要退出GR。當(dāng)?shù)诙酚善鳑]有接收到第一路由器GR LSA標(biāo)識(shí)或含有第一路由器Router LSA標(biāo)識(shí)時(shí),第一路由器需要退出GR操作。
圖7為本發(fā)明提供的路由器平滑重啟的管理裝置的結(jié)構(gòu)圖。圖7所示方法包括:
獲取模塊701,用于在第一路由器通知第二路由器協(xié)助所述第一路由器進(jìn)行平滑重啟GR后,獲取所述第二路由器發(fā)送的報(bào)文;
確定模塊702,用于根據(jù)所述第二路由器發(fā)送的報(bào)文,確定所述第二路由器是否接收到所述第一路由器發(fā)送的通知,得到確定結(jié)果;
控制模塊703,用于如果確定結(jié)果為所述第二路由器未接收到所述第一路由器的通知,則控制所述第一路由器結(jié)束GR操作。
其中,所述獲取模塊701獲取所述第二路由器發(fā)送的數(shù)據(jù)庫(kù)摘要描述DD報(bào)文和/或鏈路狀態(tài)請(qǐng)求LSR報(bào)文。
其中,所述確定模塊702具體用于:
在所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的DD報(bào)文,獲取所述DD報(bào)文的選項(xiàng)字段中標(biāo)志位O是否置位,如果標(biāo)志位O沒有置位,則得到確定結(jié)果為所述第二路由器未接收到所述第一路由器發(fā)送的通知,其中所述第二路由器處于數(shù)據(jù)庫(kù)交互的協(xié)商階段;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,如果獲取到的報(bào)文是所述第二路由器發(fā)送的LSR報(bào)文,獲取所述LSR報(bào)文中的鏈路狀態(tài) 通告LSA的描述信息,如果所述LSA的描述信息是請(qǐng)求所述第一路由器的GR LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知;
在所述第二路由器處于數(shù)據(jù)庫(kù)摘要描述報(bào)文交互階段中,在所述第一路由器處理完所述第二路由器發(fā)送的最后一個(gè)DD報(bào)文后,如果所述第二路由器沒有接收到第一路由器的GR LSA或者沒有接收到第一路由器的Router LSA,則得到的確定結(jié)果為第二路由器未接收到所述第一路由器發(fā)送的通知。
其中,所述確定模塊702是通過如下方式確定所述第二路由器是否接收到所述第一路由器的GR LSA或者所述第一路由器的Router LSA的,包括:
獲取接收到的DD報(bào)文中LSA;
如果所述LSA是所述第一路由器的GR LSA且所述第一路由器記錄有所述LSA的信息,則確定所述第二路由器接收到所述第一路由器的GR LSA;或者,
如果所述LSA是所述第一路由器的Router LSA,則確定所述第二路由器接收到所述第一路由器的Router LSA。
其中,所述裝置還包括:
請(qǐng)求模塊,用于如果所述第一路由器沒有所述LSA的信息,或者,所述第一路由器沒有所述LSA的更新信息,則向所述第二路由器請(qǐng)求所述LSA的信息。
本發(fā)明提供的裝置,提供一種路由器主備倒換后快速檢測(cè)退出平滑重啟的實(shí)現(xiàn)方式,通過對(duì)鄰居發(fā)來的消息的檢查,可以快速地判斷出第二路由器有沒有協(xié)助第一路由器完成平滑重啟GR過程,如果鄰居沒有協(xié)助重啟方完成平滑重啟GR操作的話,重啟方可以提前退出平滑重啟過程,克服了重啟方路由判斷第二路由器是否協(xié)助本端完成GR操作滯后的缺點(diǎn),加快了路由收斂的速度。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的全部或部分步驟可以使用計(jì)算機(jī)程序流程來實(shí)現(xiàn),所述計(jì)算機(jī)程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中, 所述計(jì)算機(jī)程序在相應(yīng)的硬件平臺(tái)上(如系統(tǒng)、設(shè)備、裝置、器件等)執(zhí)行,在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
可選地,上述實(shí)施例的全部或部分步驟也可以使用集成電路來實(shí)現(xiàn),這些步驟可以被分別制作成一個(gè)個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
上述實(shí)施例中的各裝置/功能模塊/功能單元可以采用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,也可以分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上。
上述實(shí)施例中的各裝置/功能模塊/功能單元以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求所述的保護(hù)范圍為準(zhǔn)。