1.设计目标

1.1 目标

①提供一种机制,减小某条路由路径频繁浮动造成的不稳定性

②防止持续振荡的发生

③某条路由路径的浮动不应当影响其它路由路径的正常工作(收敛)

1.2 Dampening的功能

针对于某条eBGP路由路径,BGP进程将跟踪其路由状态,当其flap次数较大时,通过分配相应的惩罚值,使该路由路径暂时无法参与最佳路径选举

而当该路由路径趋于稳定时,当前该路由恢复最佳路径参选资格,其历史flap记录将被保存一段时间直至完全稳定后清除


2.Dampening参数

2.1 Penalty

①当某条路径发生浮动时,该路径将被分配一个penalty

Ciscodampening实现中,默认路由路径的penalty0,翻动一次增加1000,只有属性改变时,增加500

HUAWEIdampening实现中,发生翻动,penalty值增加1000

③每隔一定的时间,penalty值都将减小,其减小的具体取值是由Half Life决定的——half-life越大,penalty减小得越缓慢

penalty值不可配置

2.2 History State

①开启dampening后,收到withdrawn message时并不会在BGP转发表中将该路径删除,而是将其stateflag置为h

当路由路径的flagh时,此路由无法进行转发

②由于属性改变而造成flap时,不会设置flag h

③设置flag h后如果收到Update message,如果未被抑制,其flag回到*

2.3 Suppress Limit

①是一个可配置的值

②当penalty达到或超过该值时,当前路由路径将不再具有参与最佳路径选举的资格

2.4 Damp State

①一旦路由路径penalty值达到suppress limit后,其stateflag被置为d

②此时如果路由路径被回收,在Ciscodampening实现中不再设置flagh而是以d代替

HUAWEIdampening实现中,只要路由被回收,其flag都将设置为h,而再次收到更新时才会切换为d

③此时如果收到Update messageflag d不会消失,而是显示*d——路由路径有效,但是无资格参选最佳路径

2.5 Half Life

①是一个可配置的值

②指的是penalty值减小一半所需要的时间间隔。penalty值越大时,由于需要在halflife时间内减小到当前值的一半,其penalty的减幅也会越大

2.6 Reuse Limit

①是一个可配置的值

②一旦penalty达到suppress limit而失去参选资格后,只有在penalty值减小到reuselimit以内后才能恢复参选资格

2.7 Maximum Suppress LimitCeiling

①在Cisco实现中可以通过配置max-suppress-time来获得maximumsuppress limit

HUAWEI的实现中,该值可以直接配置,该参数被称为ceiling

maximum suppress limitceiling)是一个penalty的上限值,防止路由flap时,penalty无限制上升

Cisco实现:221335994.png

要求:

reuse-limit < suppress-limit < max-penalty

HUAWEI实现:221415830.png

要求:

reuse-limit < suppress-limit < ceiling

max-suppress-time 1——ceiling/reuse足够大


3.作用对象

①该特性仅针对eBGP路由

以路径为单位,如果某条路由存在多条路径,其中一条浮动时对其它路径不影响


4.实现

4.1 如何被视为flap一次

①当前设备收到withdrawn message时,即认为此路由flap一次——此时增加penalty 1000

注意:

收到NLRI时并不视作flap

②在Ciscodampening实现中,收到Updatemessage中的Attributes发生改变也被视为flap——此时增加penalty 500

4.2 案例

221439949.png

如上图所示,R1R2建立eBGP peerR1产生Net A并通告给R2R2学习到更新,其state flag*>

R2上运行BGP Dampening,设置half-life2 minreuse-limit2000suppress-limit3000maximum-suppress-time2 min,即maximum-suppress-limit4000

R1上取消Net A的通告

R2收到R1Update message后,并不删除Net A,而是将其state flag置为h,并且增加penalty值为1000flap count1

R1再次通告Net AR2收到Update message后,将其state flag置为*>flap count1

R1上修改Net AMED100,并通告更新,R2收到后,state flag依然为*>,假定此前penalty已经减小到900

此时Cisco实现中,penalty值为1900flap count2

HUAWEI实现中,penalty依然为900flap count1

R1取消通告Net AR2state flagh

Cisco实现中,penalty2900flap count3

HUAWEI实现中,penalty1900flap count2

R1先后两次再通告Net A,然后再次取消通告,假定此前penalty减小到2500,此时penalty值为3500,超过suppress-limit

Cisco实现中,其state flagdflap count5

HUAWEI实现中,其stateflaghflap count4

R1通告Net AR2

Cisco实现中,state flag*dpenalty3500flap count5

HUAWEI实现中,state flagdpenalty3500flap count4

⑨一段时间后,R2penalty值小于2000state flag变为*>;当达到2 min时,penalty值减小到dampening时的一半,为1750

⑩在相当的时间后,penalty值回到0,对于该路由路径的所有flap记录将被清空


5.相关配置

5.1 配置命令

1Cisco

Router(config-router-af)#bgpdampening


Router(config-router-af)#bgp dampening route-map //针对特定的路由部署dampening

与上一个命令相互间为替代关系

route-map写法示例:

route-map permit

match ……

set dampening

2HUAWEI

[Huawei-bgp-af-ipv4]dampening


[Huawei-bgp-af-ipv4]dampeningroute-policy


[Huawei-bgp-af-ipv4]dampening route-policy

HUAWEI的实现中,允许route-policy与全局dampening共同使用,此时对于route-policy中匹配的路由,route-policy中设置的dampening值生效

如果route-map中只匹配路由而不设定dampening值,此时dampening将与全局保持一致

5.2 查看命令

1Cisco

①查看dampening参数值

Router#show ip bgp ipv4unicast dampening parameters

示例:

221501265.png

②查看浮动路由的信息

Router#show ip bgp ipv4unicast dampening flap-statistics

示例:

BGP Dampening_第1张图片

③查看已经被抑制的路由

Router#show ip bgp ipv4unicast dampening dampened-paths

示例:

BGP Dampening_第2张图片

④查看某个邻居通告更新的浮动信息

Router#show ip bgpneighbors flap-statistics

示例:

BGP Dampening_第3张图片

⑤查看某个对等体通告的被抑制的路由

Router#show ip bgpneighbors dampened-routes

示例:

BGP Dampening_第4张图片

2HUAWEI

①查看dampening参数值

displaybgp routing-table damepening parameter

示例:

BGP Dampening_第5张图片

②查看浮动路由的信息

displaybgp routing-table flap-info

示例:

BGP Dampening_第6张图片

③查看已经被抑制的路由

displaybgp routing-table dampened

示例:

BGP Dampening_第7张图片

5.3 清除命令

1Cisco

Router#clear ip bgpdampening

2HUAWEI

reset bgpdampening