專利名稱:路由器平滑重啟方法、路由器和網(wǎng)絡系統(tǒng)的制作方法
技術領域:
本發(fā)明實施例涉及通信技術領域,特別涉及一種路由器平滑重啟方法、路由器和
網(wǎng)絡系統(tǒng)。
背景技術:
隨著網(wǎng)絡技術的發(fā)展,現(xiàn)代的網(wǎng)絡業(yè)務對實時性的要求越來越高,例如VoIP、在 線游戲、在線視頻業(yè)務等,丟包對這些業(yè)務的影響很嚴重,客戶對運營商提供網(wǎng)絡可靠性、 穩(wěn)定性要求也越來越高。其中,內(nèi)部網(wǎng)關協(xié)議(Interior Gateway Protocol ;簡稱IGP) 承擔著互聯(lián)網(wǎng)協(xié)議(InternetProtocol ;簡稱IP)層連通的基礎任務,對IGP的可靠性 和穩(wěn)定性提出來更高的要求。網(wǎng)絡技術專家已經(jīng)提出了從各個方面提高網(wǎng)絡可靠性的技 術方案,例如從網(wǎng)絡的角度,提出了對稱的組網(wǎng)方案、環(huán)行的組網(wǎng)方案等;從路由器的角 度,提出了控制轉發(fā)分離、控制層備份等;從路由協(xié)議的角度,提出了數(shù)據(jù)備份、平滑重啟 (Graceful Restart ;簡稱GR)、不中斷轉發(fā)(Non-Stop Forwarding ;簡稱NSF),不中斷路 由(Non-Stop Routing ;簡稱NSR)、快速收斂等。 許多路由器已經(jīng)實現(xiàn)控制和轉發(fā)分離。由某些處理器控制和管理路由任務,例如 最短路徑優(yōu)先協(xié)議(Open Shortest Path First Routing Protocol ;簡稱0SPF)路由任 務;同時由某些處理器進行報文轉發(fā)任務。這就允許當路由器的控制任務進行重啟或重新 加載時,轉發(fā)任務仍然可以維持路由器的報文轉發(fā)的能力,稱為GR或NSF。
0SPF協(xié)議提供GR功能。本端路由器通過發(fā)送重啟鏈路狀態(tài)宣告(Grace-Link State Advertise ;簡稱Grace-LSA)通知對端路由器進行GR,并在Grace-LSA內(nèi)告知對端 路由器GR的最大時間間隔;同時對端路由器查看自己是否支持GR功能,如果支持則在GR 的最大時間間隔內(nèi),繼續(xù)發(fā)布和本端路由器的鄰接狀態(tài)為同步完畢(Full)的Grace-LSA。 如果GR期間發(fā)送拓撲改變,對端路由器則不再繼續(xù)發(fā)布和本端路由器的鄰接狀態(tài)為Full 的Grace-LSA,并且對端路由器發(fā)布的LSA中沒有到本端路由器的鏈接信息(link),從而讓 其他第三方鄰接路由器獲知本端路由器處于不可達狀態(tài)。其中,拓撲變化是指鏈路狀態(tài)數(shù) 據(jù)庫(Link State Database ;簡稱:LSDB)中的1_5、7類LSA發(fā)生改變。
在GR期間存在兩種角色。 一種為重啟(Restarter)角色,指進行GR的路由器, 另一種為幫助(Helper)角色,指幫助Restarter角色進行GR的路由器,該Helper角色為 Restarter角色的0SPF鄰居。在現(xiàn)有的0SPF協(xié)議中,路由器為Restarter角色時,不能擔任 Helper角色;路由器為Helper角色時,不能擔任Restarter角色。當路由器為Restarter 角色時,該路由器處于Restarter狀態(tài);當路由器為Helper角色時,該路由器處于Helper 狀態(tài)。 如果路由器A和路由器B為直連路由器,路由器A的第三方鄰接路由器為N1、N2, 當路由器A進行0SPF GR時,路由器A處于Restarter狀態(tài),路由器N1、 N2、 B處于Helper 狀態(tài)。如果路由器B進行0SPF GR,路由器B向路由器A發(fā)送Grace LSA。但由于路由器B 的直連路由器A處于Restarter狀態(tài),不能擔任Helper角色,將導致路由器B的GR失敗。然后,路由器B重新產(chǎn)生Grace LSA,并且不繼續(xù)維持和路由器A的full鄰接狀態(tài),此時路 由器B和路由器A的鄰接狀態(tài)仍不為Full,導致拓撲發(fā)生改變,從而路由器B不再擔任路由 器A的Helper角色,導致路由器A的GR失敗。 發(fā)明人在實現(xiàn)本發(fā)明的過程中至少發(fā)現(xiàn)現(xiàn)有技術至少存在如下問題 由于一個路由器不能同時擔任Restarter角色和Helper角色,對于網(wǎng)絡中多點直
連故障,造成OSPF GR失敗,路由表發(fā)生改變,并產(chǎn)生流量中斷。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種路由器平滑重啟方法、路由器和網(wǎng)絡系統(tǒng),用以解決現(xiàn)有 技術由于一個路由器不能同時擔任Restarter角色和Helper角色而造成的GR失敗、路由 表改變、流量中斷等問題,保證平滑重啟的成功,保證路由表的準確性和流量的正常傳輸。
本發(fā)明實施例提供一種路由器平滑重啟方法,包括 第二路由器接收第一路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進
入幫助狀態(tài),并與第一路由器重新建立鄰居狀態(tài); 處于幫助狀態(tài)的第二路由器進行平滑重啟,進入重啟狀態(tài); 處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路 狀態(tài)宣告; 通過所述第一路由器或者第三方鄰接路由器,第二路由器獲取鏈路狀態(tài)數(shù)據(jù)庫, 并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。
本發(fā)明實施例又提供一種路由器,包括 接收模塊,用于接收對端路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告 后,進入幫助狀態(tài),并與所述對端路由器重新建立鄰居狀態(tài);
平滑重啟模塊,用于進行平滑重啟,進入重啟狀態(tài); 發(fā)送模塊,用于在所述路由器處于重啟狀態(tài)和幫助狀態(tài)時,發(fā)送用于請求協(xié)助平 滑重啟的鏈路狀態(tài)宣告; 更新模塊,用于通過所述對端路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù) 庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。
本發(fā)明實施例又提供一種網(wǎng)絡系統(tǒng),包括 第一路由器,用于向第二路由器發(fā)送請求協(xié)助平滑重啟的鏈路狀態(tài)宣告; 第二路由器,所述第二路由器與所述第一路由器直連,用于接收第一路由器發(fā)送
的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與第一路由器重新建立鄰
居狀態(tài);進行平滑重啟,進入重啟狀態(tài);發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;通過
所述第一路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫
更新自身的數(shù)據(jù)。 本發(fā)明實施例提供的路由器平滑重啟方法、路由器和網(wǎng)絡系統(tǒng),第一路由器在平 滑重啟的過程中可以同時處于幫助狀態(tài)和重啟狀態(tài),可以協(xié)助對端路由器進行平滑重啟, 保證平滑重啟的成功,保證路由表的準確性,從而使流量可以正常傳輸。
圖1為本發(fā)明路由器平滑重啟方法第一實施例的流程圖; 圖2a為本發(fā)明路由器平滑重啟方法第二實施例應用場景的示意圖; 圖2b為本發(fā)明路由器平滑重啟方法第二實施例的流程圖; 圖3為本發(fā)明路由器平滑重啟方法第三實施例的流程圖; 圖4為本發(fā)明路由器平滑重啟方法第四實施例應用場景的示意圖; 圖5為本發(fā)明路由器平滑重啟方法第四實施例應用場景的示意圖; 圖6為本發(fā)明路由器第一實施例的示意圖; 圖7為本發(fā)明路由器第二實施例的示意圖; 圖8為本發(fā)明網(wǎng)絡系統(tǒng)實施例的示意圖。
具體實施例方式
下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。 圖l為本發(fā)明路由器平滑重啟方法第一實施例的流程圖,如圖l所示,該路由器平
滑重啟方法包括 步驟101、第二路由器接收第一路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài) 宣告后,進入幫助狀態(tài),并與第一路由器重新建立鄰居狀態(tài); 步驟102、處于幫助狀態(tài)的第二路由器進行平滑重啟,并進入重啟狀態(tài); 步驟103、處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重
啟的鏈路狀態(tài)宣告; 步驟104、通過所述第一路由器或者第三方鄰接路由器,第二路由器獲取鏈路狀態(tài) 數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。 在網(wǎng)絡中,將一臺路由器設置為可以同時擔任重啟(Restarter)角色和幫助 (Helper)角色,即該路由器可以同時處于重啟狀態(tài)和幫助狀態(tài)。假設網(wǎng)絡中兩臺直連的路 由器第一路由器和第二路由器在同一時刻進行GR時,可以同時作為各自的Restarter角 色,又互相作為對端路由器的Helper角色以支持對端路由器的GR。 同時處于Restarter狀態(tài)和Helper狀態(tài)的兩個直連路由器,可以互相感知對端路 由器的GR,如果這兩個直連路由器存在其他的第三方鄰接路由器時,可以通過同步第三方 鄰接路由器的LSDB重新構建處于Restarter狀態(tài)的和處于Helper狀態(tài)的兩個直連路由器 的LSDB。同步LSDB之后可以進行路由計算,算出路由。由于LSDB和倒換之前的一致,根據(jù) SPF計算的特點路由計算結果一致。對于網(wǎng)絡中多點直連故障,路由器同時處于Restarter 狀態(tài)和Helper狀態(tài),可以使OSPF GR成功以保持流量不中斷。
其中,步驟103可以包括以下幾種情況。 情況一、若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為非葉子路由器,則根據(jù) 與所述第一路由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的第一路由器發(fā)送鏈路狀態(tài)宣 告,所述第二路由器與所述第一路由器直連。 其中,第二路由器根據(jù)與第一路由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的第 一路由器發(fā)送鏈路狀態(tài)宣告的方法具體包括 若與所述第一路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器向所述第一路由器發(fā)送所述鏈路狀態(tài)宣告; 否則,處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器不向所述第一路由器發(fā)送所述
鏈路狀態(tài)宣告。 第一路由器與第二路由器的鄰接狀態(tài)包括無連接狀態(tài)(Down)、嘗試狀態(tài) (Attempt)、初始化狀態(tài)(Init)、雙相連接狀態(tài)(2_Way)、交換協(xié)商狀態(tài)(Exstart)狀態(tài)、交 換狀態(tài)(exchange)、同步狀態(tài)(loading)或同步完畢狀態(tài)(full)等。其中,exchange是指 該第一路由器開始進行鏈路狀態(tài)數(shù)據(jù)庫(LSDB)的同步,loading是指該第一路由器正在同 步LSDB,full是指LSDB同步成功。在情況一中,處于重啟狀態(tài)和幫助狀態(tài)的第二路由器與 直連的第一路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài)時,該第二路由器向 該第一路由器發(fā)送鏈路狀態(tài)宣告,例如Grace LSA,請求該第一路由器幫助該第二路由器 平滑重啟。 情況二、若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為非葉子路由器,則向所 述第三方鄰接路由器發(fā)送所述鏈路狀態(tài)宣告。 在情況二中,第二路由器不是葉子路由器,具有連接的第三方鄰接路由器,可以向 第三方鄰接路由器發(fā)送鏈路狀態(tài)宣告,請求第三方鄰接路由器幫助該第二路由器平滑重 啟。 上述的情況一和情況二也可以同時出現(xiàn),即第二路由器既向第一路由器發(fā)送鏈路 狀態(tài)宣告,也向第三方鄰接路由器發(fā)送鏈路狀態(tài)宣告,請求第一路由器和第三方鄰接路由 器幫助該第一路由器平滑重啟。 情況三、若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為葉子路由器,則向所述 第一路由器發(fā)送所述鏈路狀態(tài)宣告。 如果第二路由器為葉子路由器,沒有第三方鄰接路由器,不能請求第三方鄰接路 由器幫助平滑重啟,因此,如果該第二路由器處于幫助狀態(tài),則可以不同時進入重啟狀態(tài); 但如果該第二路由器同時處于重啟狀態(tài)和幫助狀態(tài),則需要向第一路由器發(fā)送鏈路狀態(tài)宣 告,請求第一路由器幫助該第一路由器平滑重啟。 此外,為了防止死鎖,保證平滑重啟的成功,該第二路由器退出平滑重啟的條件可 以設置為在所述第一路由器平滑重啟完畢之后,處于重啟狀態(tài)和幫助狀態(tài)的所述第二路 由器退出重啟狀態(tài)。 進一步地,在步驟103具體還可以包括處于重啟狀態(tài)和幫助狀態(tài)的所述第二路 由器向處于重啟狀態(tài)的所述第一路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,使所 述第一路由器在接收到處于幫助狀態(tài)和重啟狀態(tài)的第二路由器發(fā)送的鏈路狀態(tài)宣告后,根 據(jù)所述鏈路狀態(tài)宣告協(xié)助平滑重啟,并進入幫助狀態(tài)。 第一路由器在接收到第二路由器發(fā)送的請求幫助進行平滑重啟的GraceLSA后, 進入幫助狀態(tài),可以協(xié)助第二路由器進行平滑重啟。由于平滑重啟需要保證重啟后的鏈路 狀態(tài)數(shù)據(jù)庫與網(wǎng)絡內(nèi)相鄰的路由器一致,因此,如果第二路由器具有第三方鄰接路由器,即 第二路由器為非葉子路由器,則可以從第三方鄰接路由器獲取LSDB,例如接收第三方鄰 接路由器發(fā)送的攜帶LSDB的Grace LSA ;如果第二路由器沒有第三方鄰接路由器,即第二 路由器為葉子路由器,則可以從第一路由器獲取LSDB,例如接收第一路由器發(fā)送的攜帶 LSDB的Grace LSA ;然后根據(jù)接收到的LSDB更新自身的數(shù)據(jù)。
本實施例中第二路由器可以同時處于幫助狀態(tài)和重啟狀態(tài),因此在出現(xiàn)直連多點
故障時,兩臺直連的第一路由器和第二路由器可以同時GR;另外,兩臺直連的第一路由器
和第二路由器同時進行GR時,還可以通過第三方鄰接路由器或對端路由器獲取完整LSDB,
從而可以獲得完整的路由信息,進一步確保GR的成功和流量的正常傳輸。 圖2a為本發(fā)明路由器平滑重啟方法第二實施例應用場景的示意圖,如圖2a所示,
路由器A與路由器B直連;如果以路由器A為第一路由器,則路由器B為第二路由器;如果
以路由器B為第一路由器,則路由器A為第二路由器;路由器N1、路由器N2為路由器A的
第三方鄰接路由器,路由器N3、路由器N4為路由器B的第三方鄰接路由器。 圖2b為本發(fā)明路由器平滑重啟方法第二實施例的流程圖,如圖2b所示,該路由器
平滑重啟方法包括 步驟201、路由器A進行平滑重啟GR,進入Restarter狀態(tài),向相鄰的路由器N1、 N2、 B發(fā)送Grace-LSA請求路由器Nl、 N2、 B協(xié)助進行GR。 步驟202、路由器N1、N2、B收到路由器A發(fā)送的Grace-LSA后,查看到可以協(xié)助路 由器A進行GR,則進入Helper狀態(tài)。例如路由器B接收到路由器A發(fā)送的Grace-LSA后, 檢查一下自己的設置,其中,路由器判斷自身是否滿足可以進入Helper狀態(tài)的條件可以包 括1)已建立的鄰居狀態(tài)是否是Full ;2)1-5、7類LSA是否改變;3)GR是否超時;4)配置的 策略是否允許為Helper狀態(tài)等。 步驟203、路由器N1、 N2、 B各自產(chǎn)生的LSA例如1_5、7類LSA保持不變,并同時 和路由器A重新建立鄰居狀態(tài)。 步驟204、如果路由器B在處于Helper狀態(tài)時進行GR,則同時進入Restarter狀 態(tài),向相鄰的路由器N3、 N4發(fā)送Grace-LSA,請求路由器N3、 N4協(xié)助進行GR。
步驟205、路由器B根據(jù)與路由器A的鄰接狀態(tài)決定是否向路由器A發(fā)送 Grace-LSA,如果鄰接狀態(tài)達到Exchange或以上狀態(tài)例如loading或ful 1等,則發(fā) 送Grace-LSA給路由器A,否則,不發(fā)送Grace-LSA給路由器A, 一直等到鄰接狀態(tài)達到 Exchange或以上狀態(tài),路由器A更新了自身的LSDB后再發(fā)送。 步驟206、路由器N3、 N4收到路由器B發(fā)送的Grace-LSA,查看到可以協(xié)助路由器 B進行GR,進入Helper狀態(tài);如果路由器A收到路由器B發(fā)送的Grace-LSA,查看到可以協(xié) 助路由器B進行GR,進入Helper狀態(tài)。 此時,路由器A和路由器B同時擔任GR中的Helper角色和Restarter角色,同時 處于Helper狀態(tài)和Restarter狀態(tài),可以通過各自的第三方鄰接路由器Nl、 N2、 N3、 N4獲 取LSDB。其中,路由器A和路由器B為兩個直連路由器,并且需要同時進行GR,如果路由器 N1、N2、N3、N4不與路由器A、B同時進行GR,并且路由器N1、N2與路由器A直連,路由器N3、 N4與路由器B直連,則路由器N1、 N2為路由器A的第三方鄰接路由器,路由器N3、 N4為路 由器B的第三方鄰接路由器。因此,第三方鄰接路由器也是一個相對概念,隨著路由器狀態(tài) 的改變,也可能隨之改變。另外,如果一個路由器除了具有一個直連路由器之外,還具有第 三方鄰接路由器,則該路由器為非葉子路由器;如果一個路由器只有一個直連路由器,沒有 第三方鄰接路由器,則該路由器為葉子路由器。本實施例中的路由器A和路由器B為非葉 子路由器。 如果路由器A和路由器B之間網(wǎng)段為廣播網(wǎng),該廣播網(wǎng)存在多于兩臺的路由器,例如包括路由器A、路由器B和路由器C,則指定路由器(DesignatedRouter ;簡稱DR)選舉按照路由器C發(fā)送的Hello報文進行抉擇,如果該廣播網(wǎng)只存在兩臺路由器路由器A和路由器B,則DR選舉可以重新進行,也可以通過查找該廣播網(wǎng)的網(wǎng)絡鏈路狀態(tài)宣告(Network-LSA)發(fā)布路由器識別DR。 步驟207、處于Helper狀態(tài)和Restarter狀態(tài)的路由器A或路由器B確定是否退出GR的Restarter狀態(tài)。 可以參照目前協(xié)議,將退出GR的Restarter狀態(tài)的條件確定包括但不限于處于Helper狀態(tài)和Restarter狀態(tài)的路由器與所有相鄰的路由器的臨界狀態(tài)為Full ;或者為發(fā)現(xiàn)鄰居的路由器鏈路狀態(tài)宣告(Router-LSA)中雙向鏈路(link)檢查失??;或者或者1-5、7類LSA發(fā)生改變,例如檢測到自身的Router-LSA與GR之前不一致;或者GR超時等。
步驟208、處于Helper狀態(tài)和Restarter狀態(tài)的路由器A或路由器B確定是否退出GR的Helper狀態(tài)。 可以參照目前協(xié)議,將退出GR的Helper狀態(tài)的條件確定為處于Helper狀態(tài)和Restarter狀態(tài)的路由器接收到相鄰的Helper狀態(tài)的路由器的3600秒Grace-LSA ;或者收到除Grace-LSA之外的其他LSA與GR之前不同;GR超時,超過設定的Helper狀態(tài)的路由器的GR時間。 本實施例兩臺直連的路由器A和路由器B都可以同時處于幫助狀態(tài)和重啟狀態(tài),在出現(xiàn)直連多點故障時,路由器A和路由器B可以同時GR,互相擔任對端路由器的Helper角色,協(xié)助對端路由器GR成功;另外,路由器A和路由器B同時進行GR時,還可以通過第三方鄰接路由器獲取完整LSDB,從而可以獲得完整的路由信息,進一步確保GR的成功和流量的正常傳輸。 圖3為本發(fā)明路由器平滑重啟方法第三實施例的流程圖,如圖3所示,在本發(fā)明路由器平滑重啟方法第二實施例的基礎上,該路由器平滑重啟方法包括
步驟301、路由器A進行GR,進入Restarter狀態(tài),向相鄰的路由器Nl、 N2、 B發(fā)送Grace-LSA請求路由器Nl、 N2、 B協(xié)助進行GR。 其中,本實施例的應用場景示意圖可以參照圖2a,路由器A與路由器B直連;如果以路由器A為第一路由器,則路由器B為第二路由器;如果以路由器B為第一路由器,則路由器A為第二路由器;路由器Nl、 N2為路由器A的第三方鄰接路由器,路由器N3、 N4為路由器B的第三方鄰接路由器。 步驟302、路由器N1、N2、B收到路由器A發(fā)送的Grace-LSA后,查看到可以協(xié)助路由器A進行GR,則進入Helper狀態(tài)。 步驟303、路由器N1、 N2、 B各自產(chǎn)生的LSA例如1_5、7類LSA保持不變,并同時和路由器A重新建立鄰居狀態(tài)。 步驟304、如果路由器B在處于Helper狀態(tài)時進行GR,則同時進入Restarter狀態(tài),向相鄰的路由器N3、N4發(fā)送Grace-LSA,請求路由器N3、N4協(xié)助進行GR。
此時處于Helper狀態(tài)和Restarter狀態(tài)的路由器B擔任路由器A的Helper角色,可以不向路由器A發(fā)送Grace-LSA。 步驟305、路由器N3、N4收到路由器B發(fā)送的Grace-LSA后,查看到可以協(xié)助路由器B進行GR,進入Helper狀態(tài)。路由器A未收到路由器B發(fā)送的Grace-LSA,不進入Helper狀態(tài),繼續(xù)擔任Restarter角色并繼續(xù)進行GR。 此時路由器B同時擔任GR中的Helper角色和Restarter角色,同時處于Helper
狀態(tài)和Restarter狀態(tài),路由器A擔任GR中的Restarter角色,處于Restarter狀態(tài)。路
由器A和路由器B可以從第三方鄰接路由器Nl、 N2、 N3、 N4獲取LSDB。 如果路由器A和路由器B之間網(wǎng)段為廣播網(wǎng),該廣播網(wǎng)存在多于兩臺的路由器,例
如包括路由器A、路由器B和路由器C,則DR選舉按照路由器C發(fā)送的He 1 lo報文進行抉擇,
如果該廣播網(wǎng)只存在兩臺路由器路由器A和路由器B,則DR選舉可以重新進行,也可以通
過查找該廣播網(wǎng)的網(wǎng)絡鏈路狀態(tài)宣告(Network-LSA)發(fā)布路由器識別DR。 步驟306、處于Restarter狀態(tài)的路由器A或處于Helper狀態(tài)和Restarter狀態(tài)
的路由器B確定是否退出GR的Restarter狀態(tài)。 步驟307、處于Helper狀態(tài)和Restarter狀態(tài)的路由器B確定是否退出GR的Helper狀態(tài)。 在步驟306和步驟307中,確定退出Restarter狀態(tài)或Helper狀態(tài)的條件可以參
照本發(fā)明路由器平滑重啟方法第二實施例步驟207和步驟208的相關敘述。 本實施例路由器B可以同時處于幫助狀態(tài)和重啟狀態(tài),在出現(xiàn)直連多點故障時,
路由器B在進行GR的同時可以協(xié)助路由器A進行GR,并從第三方鄰接路由器N3、 N4獲取
完整LSDB,從而可以獲得完整的路由信息,確保GR的成功和流量的正常傳輸。 圖4為本發(fā)明路由器平滑重啟方法第四實施例應用場景的示意圖,如圖4所示,路
由器A與路由器B直連;如果以路由器A為第一路由器,則路由器B為第二路由器;如果以
路由器B為第一路由器,則路由器A為第二路由器;路由器B為葉子路由器,即路由器B有
且僅有一個直連的路由器A,而路由器A還有其他相鄰的第三方鄰接路由器路由器Nl、路
由器N2。 假設路由器A處于Restarter狀態(tài),路由器B處于Helper狀態(tài)。路由器B需要進行GR,由于路由器B沒有第三方鄰接路由器鄰居,只能通過路由器A獲取LSDB,而路由器A的LSDB在路由器A的GR完成之前不能保證是完整的。因此路由器B在沒有第三方鄰接路由器的情況下可以選擇以下處理方法 方法一、處于Helper狀態(tài)的路由器B不能同時進入Restarter狀態(tài)。
方法二、處于Helper狀態(tài)的路由器B可以同時進入Restarter狀態(tài),向路由器A發(fā)送請求幫助進行GR的Grace-LSA,但路由器B退出Restarter狀態(tài)的則需要等待路由器A的GR完畢之后才進行。 本實施例路由器A和路由器B都可以同時處于幫助狀態(tài)和重啟狀態(tài),在出現(xiàn)直連多點故障時,可以互相協(xié)助對端路由器進行GR,并可以從對端路由器獲取完整LSDB,從而可以獲得完整的路由信息,確保GR的成功和流量的正常傳輸。 圖5為本發(fā)明路由器平滑重啟方法第四實施例應用場景的示意圖,如圖5所示,路由器A與路由器B直連;如果以路由器A為第一路由器,則路由器B為第二路由器;如果以路由器B為第一路由器,則路由器A為第二路由器;路由器A、路由器B都是葉子路由器,即路由器A和路由器B有且僅有一個相鄰的路由器。 當路由器A處于Restarter狀態(tài),路由器B處于Helper狀態(tài)時,如果路由器B需要進行GR,由于路由器B沒有第三方鄰接路由器鄰居,只能從路由器A獲取LSDB,而路由器A的LSDB在路由器A的GR完成之前不能保證是完整的。因此,路由器B在沒有第三方鄰接路由器的情況下可以選擇以下處理方法 方法一、處于Helper狀態(tài)的路由器B不能同時進入Restarter狀態(tài)。
方法二、處于Helper狀態(tài)的路由器B可以同時進入Restarter狀態(tài),向路由器A發(fā)送請求幫助進行GR的Grace-LSA,但路由器B退出Restarter狀態(tài)的則需要等待路由器A的GR完畢之后才進行。 如果路由器A收到路由器B發(fā)送的Grace-LSA,由于路由器A為葉子路由器,沒有第三方鄰接路由器。路由器A也可以選擇以下處理方法 方法一、處于Restarter狀態(tài)的路由器A下不能同時進入Helper狀態(tài)。 方法二、處于Restarter狀態(tài)的路由器A可以同時進入Helper狀態(tài),但退出
Restarter狀態(tài)的則需要等待路由器B的GR完畢之后才進行。 本實施例路由器A和路由器B都可以同時處于幫助狀態(tài)和重啟狀態(tài),在出現(xiàn)直連多點故障時,可以互相協(xié)助對端路由器進行GR,并可以從對端路由器獲取完整LSDB,從而可以獲得完整的路由信息,確保GR的成功和流量的正常傳輸。 圖6為本發(fā)明路由器第一實施例的示意圖,如圖6所示,該路由器包括接收模塊61、平滑重啟模塊62、發(fā)送模塊63和更新模塊64。 其中,接收模塊61,用于接收對端路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與所述對端路由器重新建立鄰居狀態(tài);
平滑重啟模塊62,用于進行平滑重啟,進入重啟狀態(tài); 發(fā)送模塊63,用于在所述路由器處于重啟狀態(tài)和幫助狀態(tài)時,發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告; 更新模塊64,用于通過所述對端路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。 具體地,在網(wǎng)絡中,將一臺路由器設置為可以同時擔任重啟角色和幫助角色,該路由器可以同時處于重啟狀態(tài)和幫助狀態(tài)。本實施例中的路由器與對端路由器為兩個直連路由器。當路由器的接收模塊61接收對端路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與對端路由器重新建立鄰居狀態(tài);平滑重啟模塊62對該路由器進行平滑重啟,進入重啟狀態(tài),此時該路由器同時處于重啟狀態(tài)和幫助狀態(tài)。發(fā)送模塊63發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,該路由器的對端路由器和第三方鄰接路由器都可能收到該鏈路狀態(tài)宣告,從而向該路由器返回鏈路狀態(tài)數(shù)據(jù)庫。然后更新模塊64可以根據(jù)從對端路由器或者第三方鄰接路由器獲取的鏈路狀態(tài)數(shù)據(jù)庫更新該路由器自身的數(shù)據(jù)。 此外,本實施中的路由器可以為上述方法實施例中的第二路由器,對端路由器可以為上述方法實施例中的第 一路由器。 本實施例路由器可以同時處于幫助狀態(tài)和重啟狀態(tài),因此在出現(xiàn)直連多點故障時,兩臺直連路由器可以同時GR;另外,兩臺直連路由器同時進行GR時,還可以通過第三方鄰接路由器或對端路由器獲取完整LSDB,從而可以獲得完整的路由信息,進一步確保GR的成功和流量的正常傳輸。 圖7為本發(fā)明路由器第二實施例的示意圖,如圖7所示,在本發(fā)明路由器第一實施例的基礎上,該路由器的發(fā)送模塊63可以包括第一發(fā)送子模塊71、第二發(fā)送子模塊72和第三發(fā)送子模塊73中的任意一個或者多個。 其中,第一發(fā)送子模塊71,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為非葉子路由器,則根據(jù)與所述對端路由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的對端路由器發(fā)送鏈路狀態(tài)宣告,所述路由器與所述對端路由器直連; 第二發(fā)送子模塊72,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為非葉子路由器,則向所述第三方鄰接路由器發(fā)送所述鏈路狀態(tài)宣告; 第三發(fā)送子模塊73,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為葉子路由器,則向所述對端路由器發(fā)送所述鏈路狀態(tài)宣告。 具體地,當該路由器為非葉子路由器時,既可以通過第一發(fā)送子模塊71向對端路
由器發(fā)送鏈路狀態(tài)宣告,也可以通過第二發(fā)送子模塊72向第三方鄰接路由器發(fā)送鏈路狀
態(tài)宣告;當該路由器為葉子路由器時,則只能通過第三發(fā)送子模塊73向對端路由器發(fā)送鏈
路狀態(tài)宣告。其中,第一發(fā)送子模塊71向對端路由器發(fā)送鏈路狀態(tài)宣告的情況具體可以
為若與所述對端路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),處于重啟狀態(tài)
和幫助狀態(tài)的所述路由器向所述對端路由器發(fā)送所述鏈路狀態(tài)宣告;否則,處于重啟狀態(tài)
和幫助狀態(tài)的所述路由器不向所述對端路由器發(fā)送所述鏈路狀態(tài)宣告。 再進一步地,為了防止死鎖,保證平滑重啟的成功,如果該路由器為葉子路由器,
則該路由器還可以包括退出模塊65,用于在所述對端路由器平滑重啟完畢之后,所述路
由器從處于重啟狀態(tài)和幫助狀態(tài)退出重啟狀態(tài)。 本實施例的路由器可以同時處于幫助狀態(tài)和重啟狀態(tài),在出現(xiàn)直連多點故障時,兩臺直連路由器可以同時GR ;另外,兩臺直連路由器同時進行GR時,還可以通過第三方鄰接路由器或對端路由器獲取完整LSDB,從而可以獲得完整的路由信息,進一步確保GR的成功和流量的正常傳輸。 圖8為本發(fā)明網(wǎng)絡系統(tǒng)實施例的示意圖,如圖8所示,該網(wǎng)絡系統(tǒng)包括 第一路由器81,用于向第二路由器發(fā)送請求協(xié)助平滑重啟的鏈路狀態(tài)宣告; 第二路由器82,與所述第二路由器與所述第一路由器直連,用于接收第一路由器
發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與第一路由器重新建
立鄰居狀態(tài);進行平滑重啟,進入重啟狀態(tài);發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;
通過所述第一路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)
據(jù)庫更新自身的數(shù)據(jù)。 具體地,網(wǎng)絡系統(tǒng)中的直連的第一路由器或第二路由器都可以同時處于幫助狀態(tài)和重啟狀態(tài)。第二路由器接收到第一路由器發(fā)送的鏈路狀態(tài)宣告后,進入幫助狀態(tài);當處于幫助狀態(tài)的第二路由器進行平滑重啟時,進入重啟狀態(tài),從幫助狀態(tài)改變?yōu)橥瑫r處于重啟狀態(tài)和幫助狀態(tài),然后向處于重啟狀態(tài)的第一路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告。該第一路由器接收到第二路由器發(fā)送的鏈路狀態(tài)宣告后,協(xié)助該第二路由器進行平滑重啟,并進入幫助狀態(tài),從處于重啟狀態(tài)改變?yōu)橥瑫r處于重啟狀態(tài)和幫助狀態(tài)。
進一步地,該網(wǎng)絡系統(tǒng)還可以包括 第三方鄰接路由器83,用于向相鄰的第二路由器82發(fā)送鏈路狀態(tài)宣告。 如果第二路由器82具有第三方鄰接路由器83,則還可以向第三方鄰接路由器83發(fā)送鏈路狀態(tài)宣告,請求第三方鄰接路由器83協(xié)助進行平滑重啟。 再進一步地,第二路由器82還用于,若所述第二路由器為非葉子路由器且與第一路由器81的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),向第一路由器81發(fā)送所述鏈路狀態(tài)宣告,否則,不向所述第一路由器81發(fā)送所述鏈路狀態(tài)宣告。 具體地,第二路由器82可以根據(jù)與第一路由器81的鄰接狀態(tài),決定是否向第一路由器81發(fā)送鏈路狀態(tài)宣告,如果鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),則發(fā)送鏈路狀態(tài)宣告,否則不發(fā)送鏈路狀態(tài)宣告。 或者,第二路由器82還用于,若第二路由器82為葉子路由器,則向第一路由器81發(fā)送所述鏈路狀態(tài)宣告,在第一路由器81平滑重啟完畢之后,從重啟狀態(tài)和幫助狀態(tài)退出重啟狀態(tài)。 當?shù)诙酚善魇侨~子路由器時,除了有一個直連的第一路由器之外,沒有其他的
相鄰的第三方鄰接路由器時,第二路由器只能從第一路由器獲取LSDB,因此向第一路由器
發(fā)送鏈路狀態(tài)宣告,請求第一路由器協(xié)助進行平滑重啟,此時為了防止死鎖,可以設定第二
路由器需要在第一路由器平滑重啟完畢之后,從重啟狀態(tài)和幫助狀態(tài)退出重啟狀態(tài)。 本實施例第二路由器可以同時處于幫助狀態(tài)和重啟狀態(tài),因此在出現(xiàn)直連多點故
障時,兩臺直連的第一路由器和第二路由器可以同時GR;另外,兩臺直連的第一路由器和
第二路由器同時進行GR時,還可以通過第三方鄰接路由器或對端路由器獲取完整LSDB,從
而可以獲得完整的路由信息,進一步確保GR的成功和流量的正常傳輸。 本領域普通技術人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過
程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序
在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、 RAM、磁碟或者
光盤等各種可以存儲程序代碼的介質(zhì)。 最后應說明的是以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。
1權利要求
一種路由器平滑重啟方法,其特征在于,包括第二路由器接收第一路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與第一路由器重新建立鄰居狀態(tài);處于幫助狀態(tài)的第二路由器進行平滑重啟,進入重啟狀態(tài);處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;通過所述第一路由器或者第三方鄰接路由器,第二路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。
2. 根據(jù)權利要求1所述的路由器平滑重啟方法,其特征在于,所述處于重啟狀態(tài)和幫 助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,具體包括若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為非葉子路由器,則根據(jù)與所述第一路 由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的第一路由器發(fā)送鏈路狀態(tài)宣告,所述第二路 由器與所述第一路由器直連;和/或若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為非葉子路由器,則向所述第三方鄰接 路由器發(fā)送所述鏈路狀態(tài)宣告。
3. 根據(jù)權利要求2所述的路由器平滑重啟方法,其特征在于,所述根據(jù)與所述第一路 由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的第一路由器發(fā)送鏈路狀態(tài)宣告,具體包括若與所述第一路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),處于重啟狀 態(tài)和幫助狀態(tài)的所述第二路由器向所述第一路由器發(fā)送所述鏈路狀態(tài)宣告;否則,處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器不向所述第一路由器發(fā)送所述鏈路 狀態(tài)宣告。
4. 根據(jù)權利要求1所述的路由器平滑重啟方法,其特征在于,所述處于重啟狀態(tài)和幫 助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,具體包括若處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器為葉子路由器,則向所述第一路由器發(fā) 送所述鏈路狀態(tài)宣告。
5. 根據(jù)權利要求4所述的路由器平滑重啟方法,其特征在于,還包括 在所述第一路由器平滑重啟完畢之后,處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器退出重啟狀態(tài)。
6. 根據(jù)權利要求l-5任一所述的路由器平滑重啟方法,其特征在于,所述處于重啟狀 態(tài)和幫助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,具體包括處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器向處于重啟狀態(tài)的所述第一路由器發(fā)送 用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告,使所述第一路由器在接收到處于幫助狀態(tài)和重啟 狀態(tài)的第二路由器發(fā)送的鏈路狀態(tài)宣告后,根據(jù)所述鏈路狀態(tài)宣告協(xié)助平滑重啟,并進入 幫助狀態(tài)。
7. —種路由器,其特征在于,包括接收模塊,用于接收對端路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進 入幫助狀態(tài),并與所述對端路由器重新建立鄰居狀態(tài); 平滑重啟模塊,用于進行平滑重啟,進入重啟狀態(tài);發(fā)送模塊,用于在所述路由器處于重啟狀態(tài)和幫助狀態(tài)時,發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;更新模塊,用于通過所述對端路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并 根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。
8. 根據(jù)權利要求7所述的路由器,其特征在于,所述發(fā)送模塊包括以下子模塊的任意 一個或者多個第一發(fā)送子模塊,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為非葉子路由器,則 根據(jù)與所述對端路由器的鄰接狀態(tài),確定是否向處于重啟狀態(tài)的對端路由器發(fā)送鏈路狀態(tài) 宣告,所述路由器與所述對端路由器直連;第二發(fā)送子模塊,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為非葉子路由器,則 向所述第三方鄰接路由器發(fā)送所述鏈路狀態(tài)宣告;第三發(fā)送子模塊,用于若處于重啟狀態(tài)和幫助狀態(tài)的所述路由器為葉子路由器,則向 所述對端路由器發(fā)送所述鏈路狀態(tài)宣告。
9. 根據(jù)權利要求8所述的路由器,其特征在于,所述第一發(fā)送子模塊具體用于若與所 述對端路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完畢狀態(tài),處于重啟狀態(tài)和幫助狀 態(tài)的所述路由器向所述對端路由器發(fā)送所述鏈路狀態(tài)宣告;否則,處于重啟狀態(tài)和幫助狀 態(tài)的所述路由器不向所述對端路由器發(fā)送所述鏈路狀態(tài)宣告。
10. 根據(jù)權利要求8所述的路由器,其特征在于,還包括退出模塊,用于在所述對端路由器平滑重啟完畢之后,所述路由器從處于重啟狀態(tài)和 幫助狀態(tài)退出重啟狀態(tài)。
11. 一種網(wǎng)絡系統(tǒng),其特征在于,包括第一路由器,用于向第二路由器發(fā)送請求協(xié)助平滑重啟的鏈路狀態(tài)宣告; 第二路由器,所述第二路由器與所述第一路由器直連,用于接收第一路由器發(fā)送的用 于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與第一路由器重新建立鄰居狀 態(tài);進行平滑重啟,進入重啟狀態(tài);發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;通過所述 第一路由器或者第三方鄰接路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新 自身的數(shù)據(jù)。
12. 根據(jù)權利要求11所述的網(wǎng)絡系統(tǒng),其特征在于,還包括 第三方鄰接路由器,用于向相鄰的第二路由器發(fā)送鏈路狀態(tài)宣告。
13. 根據(jù)權利要求11所述的網(wǎng)絡系統(tǒng),其特征在于,所述第二路由器還用于,若所述第 二路由器為非葉子路由器且與所述第一路由器的鄰接狀態(tài)為交換狀態(tài)、同步狀態(tài)或同步完 畢狀態(tài),向所述第一路由器發(fā)送所述鏈路狀態(tài)宣告,否則,不向所述第一路由器發(fā)送所述鏈 路狀態(tài)宣告。
14. 根據(jù)權利要求11所述的網(wǎng)絡系統(tǒng),其特征在于,所述第二路由器還用于,若所述第 二路由器為葉子路由器,則向所述第一路由器發(fā)送所述鏈路狀態(tài)宣告,在所述第一路由器 平滑重啟完畢之后,從重啟狀態(tài)和幫助狀態(tài)退出重啟狀態(tài)。
全文摘要
本發(fā)明實施例涉及一種路由器平滑重啟方法、路由器和網(wǎng)絡系統(tǒng),其中,該方法,包括第二路由器接收第一路由器發(fā)送的用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告后,進入幫助狀態(tài),并與第一路由器重新建立鄰居狀態(tài);處于幫助狀態(tài)的第二路由器進行平滑重啟,進入重啟狀態(tài);處于重啟狀態(tài)和幫助狀態(tài)的所述第二路由器發(fā)送用于請求協(xié)助平滑重啟的鏈路狀態(tài)宣告;通過所述第一路由器或者第三方鄰接路由器,第二路由器獲取鏈路狀態(tài)數(shù)據(jù)庫,并根據(jù)所述鏈路狀態(tài)數(shù)據(jù)庫更新自身的數(shù)據(jù)。本發(fā)明實施例路由器在平滑重啟的過程中可以同時處于幫助狀態(tài)和重啟狀態(tài),協(xié)助對端路由器進行平滑重啟,保證平滑重啟的成功,保證路由表的準確性,從而使流量可以正常傳輸。
文檔編號H04L12/56GK101753454SQ20091026190
公開日2010年6月23日 申請日期2009年12月21日 優(yōu)先權日2009年12月21日
發(fā)明者劉遠佼 申請人:華為技術有限公司