写在前面:绝对是因为无聊才写下这个。
编制背景:公司内训现场,安全内训,简单。

一、BGP惩罚实验演示
接下来,说说BGP的场景:BGP网络比较庞大,信息量大,如果网络出现抖动,由于BGP的增量触发更新特性,则会造成大量的频繁路由更新情况造成网络带宽的大量占用。所以这里介绍可以利用BGP惩罚机制来合理规避这一点。
BGP惩罚机制类似于GLBP的AVF能力值调整规律,现在我们来话痨下这个BGP惩罚机制。这里使用一个简单的场景来解释BGP惩罚机制,用两台BGP路由器直连拓扑,如下拓扑R1和R2使用物理接口建立EBGP邻居关系,R1network环回口路由进BGP,拓扑如下:
BGP惩罚机制_第1张图片
1、此时的R2 BGP的LOC-RIB有1.1.1.1/32路由,如下:
BGP惩罚机制_第2张图片
2、为了提高BGP可靠性,防止路由抖动而BGP触发更新造成的带宽占用,现在R2上开启BGP路由惩罚机制(默认BGP惩罚是关闭的)
R2(config)#router bgp 200
R2(config-router)#bgp dampening
惩罚机制开启之后的设备R2就会开始监听路由的稳定性。
3、现在手动shutdown R1的Loop0接口来制造路由抖动,在R1的Loopback0做一次shutdown和no shutdown模拟一次抖动,之后再R2查看明细的1.1.1.1/32可以看到多出一行关于BGP惩罚和抖动的描述,如下:
BGP惩罚机制_第3张图片

所以,这里引入第一个值是BGP惩罚值( Penalty),即开启惩罚的BGP路由器检测到一次路由抖动后,会将该BGP条目的惩罚值加上1000,第二次抖动再累加1000,以此类推。
但是惩罚值也不可能无限增加,所以这里引入第二个概念,叫做最大抑制阈值(Max suppress penalty),默认是12000,即BGP惩罚累加最大到12000
4、接下来,这个累加的惩罚值到底有什么用呢?首先,我们看看刚才我们抖动一次后,R2上看到的路由惩罚阈值加到了1000,此时可以看到是BGP的LOC-RIB显示的是H,即history entry:
BGP惩罚机制

如上图可以看到还是路由还是没有被抑制的,现在我们在R1上把环回口做3-5次的抖动操作之后我们在R2上查看惩罚阈值如下:
BGP惩罚机制_第4张图片
发现此时该路由已经被抑制了,去查看BGP的LOC-RIB可以发现前面被备注了D。这是因为此时的惩罚值累加超过了抑制阈值(Suppress penalty),抑制阈值默认2000。
5、但是我们会发现惩罚值会随着时间推移而慢慢减小的,这是有一个半衰期的原因

二、BGP惩罚总结
1、首先几个概念
1)Reuse penalty:使用阈值,默认750,低于750惩罚值的路由一定可使用
2)Suppress penalty:抑制阈值,默认2000,惩罚值超过2000的条目被抑制
3)Penalty:惩罚阈值,整个路由抖动时候默认1000,如果属性变动则500,即每抖动一次增加的阈值
4)Max suppress penalty:最大抑制阈值,默认12000即默认只能最大到12000
5)Max suppress time:最大抑制时间,默认60s;即某条路由最长被抑制的时间
6)Half-life time:半衰期,默认四分之一的最大抑制时间,即15s,半衰期时间过后BGP惩罚值被衰减到原来的1/2

2、BGP惩罚工作模式图示如下:
BGP惩罚机制_第5张图片
1)如图示,初始情况路由的惩罚阈值为0,此时路由正常加表可使用
2)如果发生一次抖动,则条目的惩罚值上升的1000,超过了使用阈值750,但是此时不影响路由的使用。
3)如果持续的抖动则惩罚值会超过抑制阈值2000,此时BGP条目被标记D,即被抑制不可用
4)任何时候的BGP惩罚值都会随着时间推移而衰减,经过一个半衰期(默认15分钟)其惩罚值减少到原来的一半。
5)最长抑制时间为60min,最大阈值增长到12000

BGP惩罚机制

author:年轻的钟老头
QQ:821240807
临场发挥,如有疑问,欢迎垂询....