...
BFD (Bidirectional Forwarding Detection) — это протокол, работающий поверх других протоколов, позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т.е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).
По умолчанию, сессия устанавливается в следующем режиме:
Протокол | Режим |
---|---|
iBGP | multi-hop |
eBGP | single-hop |
eBGP multi-hop | multi-hop |
OSPF | single-hop |
Static route | single-hop |
Для изменения поведения необходимо в ручную переопределить сессию, указав необходимый режим. Рассмотрим на примере :
Допустим, мы установили iBGP соседство и включили для него BFD:
Блок кода |
---|
ESR# show running-config routing bgp
router bgp 65516
neighbor 10.100.0.2
remote-as 65515
update-source 10.100.0.1
bfd-enable
enable
exit
enable
exit
ESR# show bfd neighbors 10.100.0.2
Neighbor address: 10.100.0.2
Local address: 10.100.0.1
Interface: --
Remote discriminator: 3751534121
Local discriminator: 1670865501
State: Up
Session type: Control
Session mode: Single-hop
Local diagnostic code: No Diagnostic
Remote diagnostic code: No Diagnostic
Minimal Tx Interval: 300 ms
Minimal Rx Interval: 300 ms
Multiplier: 5
Actual Tx Interval: 300 ms
Actual Detection Interval: 1500 ms
Number of transmitted packets: 1149
Number of received packets: 1153
Uptime: 2m
Client: BGP
Last received packet:
Desired Min Tx Interval: 300 ms
Required Min Rx Interval: 300 ms
Multiplier: 5 |
Как видим , по умолчанию, BFD установился в режиме single-hop. Переключим режим в multi-mode:
Блок кода |
---|
ESR(config)# ip bfd neighbor 10.100.0.2 local-address 10.100.0.1 multihop
ESR(config)# do commit
ESR(config)# do confirm |
Конфигурацию необходимо производить на обоих устройствах. После переустановки сессии ее режим сменится на multi-hop:
Блок кода |
---|
esr-200# sh bfd neighbors 10.100.0.2
Neighbor address: 10.100.0.2
Local address: 10.100.0.1
Interface: --
Remote discriminator: 3751534121
Local discriminator: 1670865501
State: Up
Session type: Control
Session mode: Multi-hop
Local diagnostic code: No Diagnostic
Remote diagnostic code: No Diagnostic
Minimal Tx Interval: 300 ms
Minimal Rx Interval: 300 ms
Multiplier: 5
Actual Tx Interval: 300 ms
Actual Detection Interval: 1500 ms
Number of transmitted packets: 1149
Number of received packets: 1153
Uptime: 1d20h22m
Client: BGP
Last received packet:
Desired Min Tx Interval: 300 ms
Required Min Rx Interval: 300 ms
Multiplier: 5
|
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Активировать BFD для протокола OSPF на интерфейсе | esr(config-if-gi)# ip ospf bfd-enable | |
2 | Активировать BFD для протокола BGP neighbor на интерфейсе | esr(config-bgp-neighbor)# bfd-enable | |
3 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. Глобально | esr(config)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию 1 секунда |
4 | Включить логирование изменений состояния BFD-протокола (не обязательно) | esr(config)# ip bfd log-adjacency-changes | |
5 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию:
|
6 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию:
|
7 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. Глобально. | esr(config)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5 |
8 | Запустить работу механизма BFD с определенным IP-адресом. | esr(config)# ip bfd neighbor <ADDR> [ { interface <IF> | tunnel <TUN> } ] | <ADDR> – IP-адрес шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IF> – интерфейс или группы интерфейсов; <TUN> – тип и номер туннеля; <VRF> – имя экземпляра VRF, задается строкой до 31 символа; multihop – ключ для установки TTL=255, для работы механизма BFD через маршрутизируемую сеть. |
9 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. Глобально (не обязательно). | esr(config)# ip bfd passive | |
10 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию: 1 секунда |
11 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config-if-gi)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию:
|
12 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне [200..65535] для ESR-1000/1200/1500/1511 По умолчанию:
|
13 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. (не обязательно). | esr(config-if-gi)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5 |
14 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. На интерфейсе | esr(config-if-gi)# ip bfd passive |
...