1.设计目标
1.1 目标
①提供一种机制,减小某条路由路径频繁浮动造成的不稳定性
②防止持续振荡的发生
③某条路由路径的浮动不应当影响其它路由路径的正常工作(收敛)
1.2 Dampening的功能
针对于某条eBGP路由路径,BGP进程将跟踪其路由状态,当其flap次数较大时,通过分配相应的惩罚值,使该路由路径暂时无法参与最佳路径选举
而当该路由路径趋于稳定时,当前该路由恢复最佳路径参选资格,其历史flap记录将被保存一段时间直至完全稳定后清除
2.Dampening参数
2.1 Penalty
①当某条路径发生浮动时,该路径将被分配一个penalty值
②Cisco的dampening实现中,默认路由路径的penalty为0,翻动一次增加1000,只有属性改变时,增加500
HUAWEI的dampening实现中,发生翻动,penalty值增加1000
③每隔一定的时间,penalty值都将减小,其减小的具体取值是由Half Life决定的——half-life越大,penalty减小得越缓慢
④penalty值不可配置
2.2 History State
①开启dampening后,收到withdrawn message时并不会在BGP转发表中将该路径删除,而是将其stateflag置为h
当路由路径的flag为h时,此路由无法进行转发
②由于属性改变而造成flap时,不会设置flag h
③设置flag h后如果收到Update message,如果未被抑制,其flag回到*
2.3 Suppress Limit
①是一个可配置的值
②当penalty达到或超过该值时,当前路由路径将不再具有参与最佳路径选举的资格
2.4 Damp State
①一旦路由路径penalty值达到suppress limit后,其stateflag被置为d
②此时如果路由路径被回收,在Cisco的dampening实现中不再设置flagh而是以d代替
在HUAWEI的dampening实现中,只要路由被回收,其flag都将设置为h,而再次收到更新时才会切换为d
③此时如果收到Update message,flag d不会消失,而是显示*d——路由路径有效,但是无资格参选最佳路径
2.5 Half Life
①是一个可配置的值
②指的是penalty值减小一半所需要的时间间隔。penalty值越大时,由于需要在halflife时间内减小到当前值的一半,其penalty的减幅也会越大
2.6 Reuse Limit
①是一个可配置的值
②一旦penalty达到suppress limit而失去参选资格后,只有在penalty值减小到reuselimit以内后才能恢复参选资格
2.7 Maximum Suppress Limit(Ceiling)
①在Cisco实现中可以通过配置max-suppress-time来获得maximumsuppress limit
HUAWEI的实现中,该值可以直接配置,该参数被称为ceiling
②maximum suppress limit(ceiling)是一个penalty的上限值,防止路由flap时,penalty无限制上升
要求:
reuse-limit < suppress-limit < max-penalty
要求:
reuse-limit < suppress-limit < ceiling
max-suppress-time ≥ 1——ceiling/reuse足够大
3.作用对象
①该特性仅针对eBGP路由
②以路径为单位,如果某条路由存在多条路径,其中一条浮动时对其它路径不影响
4.实现
4.1 如何被视为flap一次
①当前设备收到withdrawn message时,即认为此路由flap一次——此时增加penalty 1000
注意:
收到NLRI时并不视作flap
②在Cisco的dampening实现中,收到Updatemessage中的Attributes发生改变也被视为flap——此时增加penalty 500
4.2 案例
如上图所示,R1、R2建立eBGP peer,R1产生Net A并通告给R2,R2学习到更新,其state flag为*>
①R2上运行BGP Dampening,设置half-life为2 min,reuse-limit为2000,suppress-limit为3000,maximum-suppress-time为2 min,即maximum-suppress-limit为4000
②R1上取消Net A的通告
③R2收到R1的Update message后,并不删除Net A,而是将其state flag置为h,并且增加penalty值为1000,flap count为1
④R1再次通告Net A,R2收到Update message后,将其state flag置为*>,flap count为1
⑤R1上修改Net A的MED为100,并通告更新,R2收到后,state flag依然为*>,假定此前penalty已经减小到900
此时Cisco实现中,penalty值为1900,flap count为2
HUAWEI实现中,penalty依然为900,flap count为1
⑥R1取消通告Net A,R2上state flag为h
Cisco实现中,penalty为2900,flap count为3
HUAWEI实现中,penalty为1900,flap count为2
⑦R1先后两次再通告Net A,然后再次取消通告,假定此前penalty减小到2500,此时penalty值为3500,超过suppress-limit
Cisco实现中,其state flag为d,flap count为5
HUAWEI实现中,其stateflag为h,flap count为4
⑧R1通告Net A,R2上
Cisco实现中,state flag为*d,penalty为3500,flap count为5
HUAWEI实现中,state flag为d,penalty为3500,flap count为4
⑨一段时间后,R2上penalty值小于2000,state flag变为*>;当达到2 min时,penalty值减小到dampening时的一半,为1750
⑩在相当的时间后,penalty值回到0,对于该路由路径的所有flap记录将被清空
5.相关配置
5.1 配置命令
(1)Cisco
Router(config-router-af)#bgpdampening
Router(config-router-af)#bgp dampening route-map
与上一个命令相互间为替代关系
route-map写法示例:
route-map
match ……
set dampening
(2)HUAWEI
[Huawei-bgp-af-ipv4]dampening
[Huawei-bgp-af-ipv4]dampeningroute-policy
[Huawei-bgp-af-ipv4]dampening
在HUAWEI的实现中,允许route-policy与全局dampening共同使用,此时对于route-policy中匹配的路由,route-policy中设置的dampening值生效
如果route-map中只匹配路由而不设定dampening值,此时dampening将与全局保持一致
5.2 查看命令
(1)Cisco
①查看dampening参数值
Router#show ip bgp ipv4unicast dampening parameters
示例:
②查看浮动路由的信息
Router#show ip bgp ipv4unicast dampening flap-statistics
示例:
③查看已经被抑制的路由
Router#show ip bgp ipv4unicast dampening dampened-paths
示例:
④查看某个邻居通告更新的浮动信息
Router#show ip bgpneighbors
示例:
⑤查看某个对等体通告的被抑制的路由
Router#show ip bgpneighbors
示例:
(2)HUAWEI
①查看dampening参数值
示例:
②查看浮动路由的信息
示例:
③查看已经被抑制的路由
示例:
5.3 清除命令
(1)Cisco
Router#clear ip bgpdampening
(2)HUAWEI