reference:
http://archive.apnic.net/meetings/10/programme/presentations/pfs-route-flap.pdf
RFC2439 BGP Route Flap Damping
Route flap:
BGP UPDATE followed by WITHDRAW = 1 flap
eBGP neighbour going down/up is NOT a flap
Dampening
1. 对于每次flap给此route增加一个惩罚值;
2. 如果此route的惩罚值高于suppress-limit,这条路由就会被抑制而不会宣告给其他peer(惩罚值不能无限累加,有个最大值);
3. 如果此route被抑制了,那么只有它的惩罚值降到某一个reuse-limit,则此路由被重新启用,宣告给其他peer;
4. 为确保路由是真的稳定了,遭受惩罚的路由,惩罚值的降低是非线性的,而是指数式下降,这个下降的快慢,指数大小由half lift决定。
PPT里的一个图;
Operation:
只对从eBGP peer入方向宣告的路由有效;
Penalty of 1000 per flap
Half-life (default 15 minutes)
reuse-limit (default 750)
suppress-limit (default 2000)
maximum suppress time (default 60 minutes)
配置:
router bgp 100
bgp dampening [<half-life> <reuse-value> <suppresspenalty>
<maximum suppress time>]
做个简单的实验验证一下:
拓扑:
在R2上做flap damping, R1宣告一条BGP路由给R2,R3把这条路由反射给R4,在R1上让这条路由flapping。
R2上的BGP配置
R2(config)#router bgp 200
R2(config-router)#bg
R2(config-router)#bgp da
R2(config-router)#bgp dampening ?
<1-45> Half-life time for the penalty
route-map Route-map to specify criteria for dampening
<cr>
R2(config-router)#bgp dampening 5 ?
<1-20000> Value to start reusing a route
<cr>
R2(config-router)#bgp dampening 5 750 ?
<1-20000> Value to start suppressing a route
R2(config-router)#bgp dampening 5 750 2000 ?
<1-255> Maximum duration to suppress a stable route
R2(config-router)#bgp dampening 5 750 2000 10 ?
<cr>
R2(config-router)#bgp dampening 5 750 2000 10
R2(config-router)#
R2(config-router)#
R2(config-router)#
*Mar 1 00:18:31.555: %BGP-5-DAMPENING_DECAY_TIME: Decay time from maximum penalty to suppress penalty is 175 secs. Maximum penalty: 3000, suppress penalty: 2000
R2(config-router)#do sh run | b r b
router bgp 200
bgp router-id 192.168.1.2
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 10.1.2.1 remote-as 100
neighbor 10.1.2.1 ebgp-multihop 255
neighbor 10.2.3.2 remote-as 200
!
address-family ipv4
neighbor 10.1.2.1 activate
neighbor 10.2.3.2 activate
neighbor 10.2.3.2 next-hop-self
no auto-summary
no synchronization
bgp dampening 5 750 2000 10
exit-address-family
正常时的路由:
R1withdraw此路由后:
penalty加1000
flap到四次后,惩罚超过2000,显示”suppressed due to dampening”,路由被抑制。
可以看到有提示reuse in 00:07:50, 直到倒计时结束,penalty低于750时,此路由才会重新宣告给RR。
penalty还没有小于reuse-limit就重新启用了,难道不是那么精确么?