В прошлых статьях мы уже рассмотрели soft-reconfiguration, route refresh, outbound route filtering, теперь рассмотрим заключетельный механизм, который называется Route Dampening.
Route Dampening это механизм защиты от нестабильности линков, он же route flapping. Когда есть линк, который может время от времени флаппировать то нужен какой-то механизм, который будет сглаживать нагрузку на сеть, CPU и прочие радости при постоянных пропаданиях-обновлениях маршрутов, особенно когда их много.
Для того чтобы приступить к рассмотрению как все это работает, необходимо ознакомиться с некоторыми терминами, которые существуют в этом механизме:
Penalty — количество очков, которое плюсуется когда роутер начинает флапать. (по умолчанию прибавляется по 1000)
Half-lie-time — время, которое должно пройти с момента поднятия линка и ведущее к снятию пенальти.(по умолчанию 15 минут)
Supress-Limit — Если значение пенальти становится больше значения Supress-Limit то такой маршрут считается недостижимым и отбрасывается.
Suppressed — маршрут, который не анонсируется, даже если линк в состоянии UP.
Reuse Limit — Если Пенальти становится меньше Reuse Limit и линк в состоянии UP, то с него снимается Supressed и он снова распростроняется. (по умолчанию 750)
History entry — запись, которая используется для сохранения flap information о маршрутах, которые down.
Сразу оговорюсь, dampening не применяется к IBGP маршрутам.
Итак, давайте посмотрим как настраивается:
AS1(config-route-map)#do sh run | s bgp
router bgp 1
no synchronization
bgp router-id 100.100.100.100
bgp log-neighbor-changes
bgp dampening route-map DAMP
network 1.1.2.0 mask 255.255.255.0
network 1.1.3.0 mask 255.255.255.0
network 1.1.100.0 mask 255.255.255.0
network 111.111.111.111 mask 255.255.255.255
neighbor 1.1.2.2 remote-as 2
neighbor 1.1.2.2 capability orf prefix-list receive
neighbor 1.1.3.3 remote-as 3
neighbor 1.1.3.3 description AS3
neighbor 1.1.100.100 remote-as 100
neighbor 1.1.100.100 description AS100
neighbor 200.200.200.200 remote-as 2
neighbor 200.200.200.200 description toR2
neighbor 200.200.200.200 ebgp-multihop 2
neighbor 200.200.200.200 update-source Loopback1
no auto-summary
AS1(config-route-map)#
видим одну команду, которая относится к дампенингу:
bgp dampening route-map DAMP
через route-map устанавливаем все параметры:
route-map DAMP permit 10
set dampening 20 950 2500 80
Нас интересует конструкция set, что за цифры она устанавливает.
20 — 20 минут принимает значение Half-Life-Time (по умолчанию 15)
950 — reuse limit
2500 — suppress limit
80 — max-life-time обычно это 4 x half-life-time
После того как настроили, давайте «подергаем» какой-либо из линков (shut, no shut). И после того как на EBGP линке будет то появляться, то пропадать маршрут мы увидим:
AS1(config-route-map)#do sh ip bgp 1.1.5.0
BGP routing table entry for 1.1.5.0/24, version 82
Paths: (2 available, no best path)
Not advertised to any peer
2 (history entry)
200.200.200.200 (metric 2) from 200.200.200.200 (200.200.200.200)
Origin IGP, metric 0, localpref 100, external
Dampinfo: penalty 2456, flapped 3 times in 00:07:02
2 (history entry)
1.1.2.2 from 1.1.2.2 (200.200.200.200)
Origin IGP, metric 0, localpref 100, external
Dampinfo: penalty 2456, flapped 3 times in 00:07:02
AS1(config-route-map)#do sh ip bgp
BGP table version is 82, local router ID is 100.100.100.100
Status codes: s suppressed, d damped, h history, * valid, > best, i — internal,
r RIB-failure, S Stale
Origin codes: i — IGP, e — EGP, ? — incompleteNetwork Next Hop Metric LocPrf Weight Path
* 1.1.2.0/24 1.1.2.2 0 0 2 i
* 200.200.200.200 0 0 2 i
*> 0.0.0.0 0 32768 i
* 1.1.3.0/24 1.1.3.3 0 0 3 i
*> 0.0.0.0 0 32768 i
h 1.1.5.0/24 200.200.200.200 0 0 2 i
h 1.1.2.2 0 0 2 i
*> 1.1.100.0/24 0.0.0.0 0 32768 i
* 1.1.100.100 0 0 100 i
*> 10.0.2.0/24 1.1.2.2 0 0 2 i
* 200.200.200.200 0 0 2 i
*> 10.0.3.0/24 1.1.3.3 0 0 3 i
*> 111.111.111.111/32
0.0.0.0 0 32768 i
h 192.168.0.0 200.200.200.200 0 2 i
h 1.1.2.2 0 2 i
*> 222.222.222.222/32
Network Next Hop Metric LocPrf Weight Path
1.1.2.2 0 0 2 i
* 200.200.200.200 0 0 2 i
AS1(config-route-map)#
возле маршрутов появляется «h», что говорит о том, что флапается наш маршрут.
Посмотрим на пенальти:
AS1(config-route-map)#do sh ip bgp 1.1.5.0
BGP routing table entry for 1.1.5.0/24, version 82
Paths: (2 available, no best path)
Flag: 0x960
Not advertised to any peer
2 (history entry)
200.200.200.200 (metric 2) from 200.200.200.200 (200.200.200.200)
Origin IGP, metric 0, localpref 100, external
Dampinfo: penalty 2834, flapped 3 times in 00:02:50
2 (history entry)
1.1.2.2 from 1.1.2.2 (200.200.200.200)
Origin IGP, metric 0, localpref 100, external
Dampinfo: penalty 2834, flapped 3 times in 00:02:50
AS1(config-route-map)#
Пенальти растет, все как и требовалось.
Я сделал dampening через route-map, это можно было сделать и без него, а просто в bgp dampening указать все параметры, но route-map позволяет достаточно гибко управлять, например выбрать сети, на которые распространять действия, сделать изменение каких-то атрибут и так далее.
Вобще думаю хорошая привычка делать все через route-map, все фильтры (в том числе prefix-list), as-path и прочее прочее.
Prefix-list используется лишь в одном случае без route-map , это при Outbound Route Filtering (ORF).