BGP Graceful Restart(NSF)

1.BGP進程重啓時的操作

在默認情況下,當對等體的BGP進程重啓時,對等體關係將立即中斷,從該對等體接收到的更新被刪除

進一步,這將導致當前設備向其它對等體回收通告的相關更新

一旦與該對等體再次建立對等體關係後,當前設備又將再次通告BGP更新


這種BGP進程重啓而造成的更新回收、再通告的過程爲稱爲route flapping


2.NSF概述

2.1 別稱

NSFNon-Stop Forwarding,又被稱爲Graceful Restart

2.2 作用

BGP進程重啓時,允許在一段時間內,重新建立BGP會話的過程中繼續維持原有的BGP路由信息繼續轉發數據——會話中斷而路由不中斷

注意:

如果因爲受到NOTIFICATION而重新建立BGP會話,NSF是不工作的


3.實現

3.1 概念

1End-of-RIB marker

①定義

a.End-of-RIB marker實際上是一個特殊的BGP Update message

b.Update messagewithdrawnNLRIPATH Attributes部分爲空,無NLRI部分

115250345.png

②作用

當前設備從對等體收到End-of-RIB marker之後,表明該對等體所有需要通告的更新已經發送完畢

注意:

雖然End-of-RIB markerNSF中引入的概念,但是並不限制僅在實現NSF時才應用End-of-RIB marker

事實上在CiscoBGP實現中,默認情況下對等體關係建立後,一旦更新發送完畢,也會附帶發送End-of-RIB marker以通告對等體當前設備的更新已經發送完畢

而在HUAWEI的實現中,至少從eNSP模擬器中的設備來看,通常情況下並不會發送End-of-RIB marker

2Gracful Restart Capability

①定義

是一個新的BGP Capability,在發送Open message中與對等體進行協商

②作用

a.聲明當前設備在BGP重啓時依然能夠維持轉發能力

b.聲明當前設備在初始的update發送完畢後能產生End-of-RIB marker

③格式

115319714.png

字段解釋:

a.Restart Flags

4 bit,組成結構如下

115345370.png

最高比特位表示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中無AFISAFI部分,表明當前設備在BGP進程重啓期間,無法維持BGP轉發表路由,但是可以協助NSF工作(如Cisco36407200等設備,無法實現該特性,只有支持dCEF的可以完全分離控制平臺與數據平臺的設備平臺可以實現,如Cisco 12000

115406579.png

d.Flags for AF

115426606.png

只有最高比特位(Forwarding State)被使用,其它置爲0

bit1表示當前設備在重啓BGP進程時依然能夠轉發用戶數據

115450888.png

3.2 工作流程

115508418.png

說明:

Restaring Speaker——重啓BGP進程的設備

Receiving Speaker——檢測到對等體重啓,協助實現NSF的設備

1Restarting Speaker restarts BGP process

restarting speaker重啓BGP進程時,並不刪除Loc_RIB中的路由,而是將其狀態標記爲Stale

②標記爲Stale的路由依然維持轉發能力

2Receiving 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,依然維持轉發能力

3Rebuilding 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將立即刪除與其相關的路由

4Receiving Speaker sends Initial Updates& End-of-RIB marker

receiving speaker在建立BGP會話後,發送本地更新,並在更新發送完畢後通告End-of-RIB marker,表示更新發送完畢

②即便receiving speaker本地沒有待通告的更新,也必須發送End-of-RIB marker

5Restarting 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 markerrestarting speaker本地應當使用一個Selection_Deferral_Timer(選舉延遲計時器),超時後開始選擇最佳路徑

③在選擇最佳路徑之前,當前設備無法通告更新,其之前的轉發狀態也無法被更新

6Restarting Speaker selects Best Path &sends Initial UpdatesEnd-of-RIB marker

①在收到所有必須的End-of-RIB marker後,當前設備運行Decision Process,選擇最佳路徑,通告必要的更新給其對等體

②在最佳路徑選擇完畢後,Restarting Speaker將更新其BGP轉發表,之前標記的Stale flag被移除

③產生必要的更新發送給對等體,無論是否有更新需要通告,RestartingSpeaker必須發送End-of-RIB marker

7Receiving 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.實驗案例

115529570.png

5.1 實驗環境描述

如上圖所示,將Cisco設備與HUAWEI設備相接

Cisco設備處於AS 1中,建立iBGP對等體關係,R2R1next-hop-self

HUAWEI設備處於AS 2中,建立iBGP對等體關係,R1R2next-hop-local

AS 1 R1將環回口網絡宣告進BGP進程,並最終被AS 2 R2正常學習;AS 2 R2的換回口路由同理

最終,AS 1 R1能夠用環回口pingAS 2 R2

5.2 配置GR

由於這裏的Cisco設備只能協助實現GR,而HUAWEI設備可以真正實現GR,因此重啓BGP進程的設備確定爲AS 2 R1

爲了支持GRAS 1 R2以及AS 2 R1R2都需要進行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

115628986.png

在整個測試過程中,BGP路由並未中斷

AS 2 R1重啓BGP進程

115706423.png

AS 2R1現象

115723649.png


115741398.png

AS 1 R2現象

115800977.png


115821809.png

路由更新

115851277.png

31.31.1.2AS 1 R2)首先發送Update message,其中包含NLRI

31.31.1.1AS 2 R1)此時直接發送Update message,連發了2個消息,第一個爲包含NLRI的更新,第二個爲End-of-RIBmarker

可見,在HUAWEIBGP實現中,GR並沒有嚴格按照標準進行

31.31.1.2AS 1 R2)發送Update message,該消息爲End-of-RIB marker


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章