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