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 <half-life> <reuse-limit> <suppress-limit><maximum-suppress-time>
Router(config-router-af)#bgp dampening route-map <name> //針對特定的路由部署dampening
與上一個命令相互間爲替代關係
route-map寫法示例:
route-map <name> permit <id>
match ……
set dampening <half-life> <reuse-limit><suppress-limit> <maximum-suppress-time>
(2)HUAWEI
[Huawei-bgp-af-ipv4]dampening<half-life> <reuse> <suppress> <ceiling>
[Huawei-bgp-af-ipv4]dampeningroute-policy <name>
[Huawei-bgp-af-ipv4]dampening<half-life> <reuse> <suppress> <ceiling> route-policy<name>
在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 <a.b.c.d> flap-statistics
示例:
⑤查看某個對等體通告的被抑制的路由
Router#show ip bgpneighbors <a.b.c.d> dampened-routes
示例:
(2)HUAWEI
①查看dampening參數值
<Huawei>displaybgp routing-table damepening parameter
示例:
②查看浮動路由的信息
<Huawei>displaybgp routing-table flap-info
示例:
③查看已經被抑制的路由
<Huawei>displaybgp routing-table dampened
示例:
5.3 清除命令
(1)Cisco
Router#clear ip bgpdampening
(2)HUAWEI
<Huawei>reset bgpdampening