1.BGP進程重啓時的操作
在默認情況下,當對等體的BGP進程重啓時,對等體關係將立即中斷,從該對等體接收到的更新被刪除
進一步,這將導致當前設備向其它對等體回收通告的相關更新
一旦與該對等體再次建立對等體關係後,當前設備又將再次通告BGP更新
這種BGP進程重啓而造成的更新回收、再通告的過程爲稱爲route flapping
2.NSF概述
2.1 別稱
NSF(Non-Stop Forwarding),又被稱爲Graceful Restart
2.2 作用
當BGP進程重啓時,允許在一段時間內,重新建立BGP會話的過程中繼續維持原有的BGP路由信息繼續轉發數據——會話中斷而路由不中斷
注意:
如果因爲受到NOTIFICATION而重新建立BGP會話,NSF是不工作的
3.實現
3.1 概念
(1)End-of-RIB marker
①定義
a.End-of-RIB marker實際上是一個特殊的BGP Update message
b.Update message中withdrawnNLRI及PATH Attributes部分爲空,無NLRI部分
②作用
當前設備從對等體收到End-of-RIB marker之後,表明該對等體所有需要通告的更新已經發送完畢
注意:
雖然End-of-RIB marker是NSF中引入的概念,但是並不限制僅在實現NSF時才應用End-of-RIB marker
事實上在Cisco的BGP實現中,默認情況下對等體關係建立後,一旦更新發送完畢,也會附帶發送End-of-RIB marker以通告對等體當前設備的更新已經發送完畢
而在HUAWEI的實現中,至少從eNSP模擬器中的設備來看,通常情況下並不會發送End-of-RIB marker
(2)Gracful Restart Capability
①定義
是一個新的BGP Capability,在發送Open message中與對等體進行協商
②作用
a.聲明當前設備在BGP重啓時依然能夠維持轉發能力
b.聲明當前設備在初始的update發送完畢後能產生End-of-RIB marker
③格式
字段解釋:
a.Restart Flags
共4 bit,組成結構如下
最高比特位表示Restart State,其作用是防止對等體雙方同時重啓而相互等待End-of-RIB marker,但是又互不發送更新,進而造成死鎖
若該比特位置位,表明當前設備重啓BGP進程,其對等體必須先發送路由更新以及End-of-RIB marker
後3個比特位保留置0
b.Restart Time
是一個可配置的值,用於通告對等體當前設備在重啓後重建對等體關係的最大時間,如果在該時間內對等體關係未成功建立,其對等體便將當前設備的BGP路由刪除
注意:
restart time的取值應當小於等於BGP hold time
c.AFI & SAFI
用於表明當前BGP進程中,哪個AF工作在NSF中
如果Graceful Capability中無AFI及SAFI部分,表明當前設備在BGP進程重啓期間,無法維持BGP轉發表路由,但是可以協助NSF工作(如Cisco的3640、7200等設備,無法實現該特性,只有支持dCEF的可以完全分離控制平臺與數據平臺的設備平臺可以實現,如Cisco 12000)
d.Flags for AF
只有最高比特位(Forwarding State)被使用,其它置爲0
該bit置1表示當前設備在重啓BGP進程時依然能夠轉發用戶數據
3.2 工作流程
說明:
①Restaring Speaker——重啓BGP進程的設備
②Receiving Speaker——檢測到對等體重啓,協助實現NSF的設備
(1)Restarting Speaker restarts BGP process
①restarting speaker重啓BGP進程時,並不刪除Loc_RIB中的路由,而是將其狀態標記爲Stale
②標記爲Stale的路由依然維持轉發能力
(2)Receiving Speaker detects restart &verifies Restarting Speaker
①receiving speaker通過收到顯性的TCP連接重建消息或是Openmessage偵測到對等體重啓了BGP進程,此時receiving speaker將檢測是否需要爲該對等體維持路由
②對等體必須同時滿足如下條件時,receiving speaker纔會爲該對等體通告的某個AF的路由維持轉發信息而不刪除:
a.在之前建立對等體關係時,restartingspeaker發送的Open message中有Graceful Restart Capability
b.Graceful Restart Capability中有相關的AF
c.AF中的ForwardingState bit被置位
③一旦滿足條件,receiving speaker將相關的路由狀態置爲stale,依然維持轉發能力
(3)Rebuilding BGP Session
①restarting speaker發送的Open message中,RestartState bit必須置1,防止死鎖;Restart Time通告了最大重建對等體關係的時間
②除非receiving speaker也重啓了BGP進程,否則此時receivingspeaker發送的Open message中的Restart State bit必須置0
③如果receiving speaker通過BFD或二層信息瞭解到restartingspeaker不可達,將立即刪除與其相關的路由
④如果restart time超時而未建立對等體關係,receiving speaker將立即刪除與其相關的路由
(4)Receiving Speaker sends Initial Updates& End-of-RIB marker
①receiving speaker在建立BGP會話後,發送本地更新,並在更新發送完畢後通告End-of-RIB marker,表示更新發送完畢
②即便receiving speaker本地沒有待通告的更新,也必須發送End-of-RIB marker
(5)Restarting Speaker waits for all End-of-RIBmarker & Update routes
①除了如下兩類對等體外,restarting speaker必須收到所有其它對等體發送的End-of-RIB marker後才能開始選擇最佳路徑
a.其Open message未聲明Graceful Restart Capability——不支持該特性表明可能沒有能力發送End-of-RIB marker
b.Graceful Restart Capability中的Restart State bit被置1——該設備也重啓了BGP進程等待End-of-RIB marker
②如果一直沒有收到必須的全部End-of-RIB marker,restarting speaker本地應當使用一個Selection_Deferral_Timer(選舉延遲計時器),超時後開始選擇最佳路徑
③在選擇最佳路徑之前,當前設備無法通告更新,其之前的轉發狀態也無法被更新
(6)Restarting Speaker selects Best Path &sends Initial Updates、End-of-RIB marker
①在收到所有必須的End-of-RIB marker後,當前設備運行Decision Process,選擇最佳路徑,通告必要的更新給其對等體
②在最佳路徑選擇完畢後,Restarting Speaker將更新其BGP轉發表,之前標記的Stale flag被移除
③產生必要的更新發送給對等體,無論是否有更新需要通告,RestartingSpeaker必須發送End-of-RIB marker
(7)Receiving Speaker updates routes
①收到restarting speaker發送的更新後,相關路由的Stale flag必須被移除
②當收到restarting speaker發送的End-of-RIB marker後,依然爲stale的路由將被移除
③對於本地標記爲stale的路由,建議設置一個可配置的最大保持時間,防止stale路由一直存在於本地BGP轉發表中
4.相關配置
4.1 Cisco
Router(config-router)#bgpgraceful-restart
Router(config-router)#bgpgraceful-restart restart-time <1-3600>
Router(config-router)#bgpgraceful-restart stalepath-time <1-3600>
4.2 HUAWEI
[Huawei-bgp]graceful-restart
[Huawei-bgp]graceful-restart peer-reset //如果不配置該關鍵字,重啓BGP會話將導致NOTIFICATION發送,GR不會生效
[Huawei-bgp]graceful-restart timer restart <3-600> //設置最大BGP會話重建時間
[Huawei-bgp]graceful-restart timer wait-for-rib <3-3000> //設置等待End-of-RIB的時間
<Huawei>reset bgp <peer>/all graceful //如果不添加graceful將導致NOTIFICATION消息的發送
5.實驗案例
5.1 實驗環境描述
如上圖所示,將Cisco設備與HUAWEI設備相接
Cisco設備處於AS 1中,建立iBGP對等體關係,R2對R1做next-hop-self
HUAWEI設備處於AS 2中,建立iBGP對等體關係,R1對R2做next-hop-local
AS 1 R1將環回口網絡宣告進BGP進程,並最終被AS 2 R2正常學習;AS 2 R2的換回口路由同理
最終,AS 1 R1能夠用環回口ping通AS 2 R2
5.2 配置GR
由於這裏的Cisco設備只能協助實現GR,而HUAWEI設備可以真正實現GR,因此重啓BGP進程的設備確定爲AS 2 R1
爲了支持GR,AS 1 R2以及AS 2 R1、R2都需要進行GR相關配置
AS 1 R2:
R2(config-router)#bgp graceful-restart
AS 1 R1:
[R1-bgp]graceful-restart
[R1-bgp]graceful-restartpeer-reset
5.3 測試
AS 1 R1持續ping AS 2R2
在整個測試過程中,BGP路由並未中斷
AS 2 R1重啓BGP進程
AS 2R1現象
AS 1 R2現象
路由更新
31.31.1.2(AS 1 R2)首先發送Update message,其中包含NLRI
31.31.1.1(AS 2 R1)此時直接發送Update message,連發了2個消息,第一個爲包含NLRI的更新,第二個爲End-of-RIBmarker
可見,在HUAWEI的BGP實現中,GR並沒有嚴格按照標準進行
31.31.1.2(AS 1 R2)發送Update message,該消息爲End-of-RIB marker