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