天天看點

BGP Graceful Restart(NSF)

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部分

BGP Graceful Restart(NSF)

②作用

目前裝置從對等體收到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

③格式

BGP Graceful Restart(NSF)

字段解釋:

a.Restart Flags

共4 bit,組成結構如下

BGP Graceful Restart(NSF)

最高比特位表示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)

BGP Graceful Restart(NSF)

d.Flags for AF

BGP Graceful Restart(NSF)

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

該bit置1表示目前裝置在重新開機BGP程序時依然能夠轉發使用者資料

BGP Graceful Restart(NSF)

3.2 工作流程

BGP Graceful Restart(NSF)

說明:

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

BGP Graceful Restart(NSF)

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 Graceful Restart(NSF)

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

AS 2 R1重新開機BGP程序

BGP Graceful Restart(NSF)

AS 2R1現象

BGP Graceful Restart(NSF)
BGP Graceful Restart(NSF)

AS 1 R2現象

BGP Graceful Restart(NSF)
BGP Graceful Restart(NSF)

路由更新

BGP Graceful Restart(NSF)

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