BFD (Bidirectional Forwarding Detection — двунаправленное обнаружение пересылки пакетов) — это универсальный механизм быстрого обнаружения сбоев на уровне сетевых соединений, применимый к различным типам сетей и протоколов маршрутизации. Он используется для быстрого выявления и мониторинга доступности пути передачи данных между сетевыми устройствами. Для повышения отказоустойчивости сети BFD позволяет оперативно выявлять проблемы в соединениях между сетевыми устройствами-соседями, используемыми протоколами маршрутизации.
BFD устанавливает сессии между двумя устройствами для мониторинга двунаправленного канала передачи данных. Он взаимодействует с протоколами верхнего уровня, предоставляя им информацию о состоянии соединения. После обмена управляющими пакетами и перехода состояния сессии в состояние Up начинается мониторинг канала. Если в течение заданного интервала не поступают управляющие пакеты от соседа (или, при использовании Echo mode, количество потерянных echo-пакетов превышает порог), соединение считается недоступным. Информация о сбое передаётся протоколу верхнего уровня для выполнения соответствующих действий.
По умолчанию BFD на интерфейсе отключён.
После включения BFD на L3 интерфейсе вступают в силу параметры, заданные через динамические протоколы. Выполните следующую команду для включения BFD:
| Команда | Назначение |
|---|---|
bfd enable [ min_tx_interval <tx_value> min_rx_interval <rx_value> multiplier <m_value> ] |
Активирует BFD на L3 интерфейсе. |
До установления BFD-сессии управляющие пакеты BFD передаются с интервалом не менее 1 секунды, чтобы снизить нагрузку на сеть. После установления сессии управляющие пакеты BFD передаются с согласованным интервалом для обеспечения быстрого обнаружения неполадок. В процессе установки сессии стороны обмениваются управляющими пакетами, содержащими желаемые интервалы передачи. На их основе каждая сторона вычисляет время обнаружения (Detection Time). В активной BFD-сессии значения таймеров могут изменяться по результатам повторных переговоров без прерывания работы сессии. Параметры таймеров согласовываются независимо в каждом направлении BFD-сессии, поэтому интервалы передачи и время обнаружения могут быть асимметричными.
Интервал передачи BFD-пакетов рассчитывается как максимум между локальным min_tx_interval и удалённым min_rx_interval, то есть, частота передачи определяется более «медленной» стороной.
Время обнаружения рассчитывается как значение Detect Mult из управляющего пакета BFD от соседа, умноженное на минимальный интервал передачи (Desired Min TX Interval), указанный этим соседом. Если увеличить min_tx_interval на локальной стороне, то фактический интервал передачи пакетов не изменится, пока не будет получен пакет с установленным полем F от соседа. Это обеспечивает, что таймер обнаружения у соседа увеличится до того, как увеличится интервал передачи на локальной стороне. В противном случае таймер у соседа может истечь.
Если значение параметра min_rx_interval на локальной стороне уменьшается, время обнаружения на локальной стороне не изменяется до получения управляющего пакета с установленным полем Final (F) от удалённого устройства. Это гарантирует, что интервал передачи управляющих пакетов BFD на стороне партнёра уже был уменьшен до того, как изменится время обнаружения на локальной стороне. Однако при уменьшении значения min_tx_interval интервал передачи управляющих пакетов BFD на локальной стороне может уменьшиться немедленно; при увеличении значения min_rx_interval время обнаружения на локальной стороне увеличивается немедленно.
По умолчанию режим опроса BFD на интерфейсе не активирован.
В механизме опроса (Poll Sequence) каждая сторона может инициировать проверку состояния связи или изменение параметров сессии независимо от другой стороны. После установления BFD-сессии управляющие пакеты продолжают передаваться с установленной периодичностью для постоянного контроля доступности соединения. Когда система инициирует явную проверку или изменение параметров, она устанавливает флаг Poll (P) в управляющих пакетах до получения пакета с флагом Final (F) от партнёра. Если в течение заданного времени не поступают ответные пакеты, считается, что сессия разорвана. При получении управляющих пакетов в течение заданного интервала путь передачи данных считается исправным, и сессия остаётся в состоянии Up. Передача управляющих пакетов продолжается.
Выполните следующую команду для активации режима опроса:
| Команда | Назначение |
|---|---|
bfd demand enable |
Активирует режим опроса BFD. |
Система поддерживает как активацию, так и деактивацию режима опроса BFD.
По умолчанию режим Echo BFD на интерфейсе не активирован.
После активации Echo BFD и при наличии доступного соседа, поддерживающего этот режим, управляющие пакеты передаются с интервалом, заданным глобальным параметром slow-timers. Обнаружение доступности осуществляется при помощи Echo-пакетов, а интервал их передачи задается параметром min_echo_rx_interval.
Выполните следующую команду для активации режима Echo:
| Команда | Назначение |
|---|---|
bfd echo enable [number] |
Активирует режим Echo BFD. number - число параллельных Echo-пакетов. |
Активация или деактивация Echo-функции на уже установленной BFD-сессии не влияет на её состояние. Управляющие пакеты продолжают передаваться в обычном режиме, однако у пользователя остается возможность изменить интервалы.
По умолчанию аутентификация BFD на интерфейсе не активирована.
Настройки аутентификации вступают в силу сразу, но до установления соседства BFD. Для успешного установления соединения BFD на двух концах линии, их конфигурации аутентификации должны совпадать. После установления BFD-соседства изменения конфигурации аутентификации - совпадающие или отличающиеся - не оказывают влияния на статус BFD-соседства.
Выполните следующую команду для активации функции аутентификации:
| Команда | Назначение |
|---|---|
bfd authentication-mode [md5 | meticulous md5 | simple ] <key id> <key> |
Включает функцию аутентификации BFD. |
Вы можете использовать следующие команды для отображения различной статистической информации BFD:
| Команда | Назначение |
|---|---|
show bfd interfaces [details] |
Отображает интерфейсы, на которых активирован BFD. |
show bfd neighbors [details] |
Отображает BFD-соседей. |
Перед настройкой BFD необходимо задать соответствующие протоколы для работы с BFD и активировать функцию BFD на соответствующем интерфейсе.
Ниже приведён пример, иллюстрирующий, как BFD обеспечивает двустороннее обнаружение для BGP: между устройствами A и B устанавливается eBGP-соседство, а проверка канала связи осуществляется с помощью BFD.
A:
interface VLAN 10
ip address 1.1.1.1 255.255.255.0
bfd enable
no ip directed-broadcast
!
router bgp 100
no synchronization
bgp log-neighbor-changes
neighbor 1.1.1.2 remote-as 200
neighbor 1.1.1.2 fall-over bfd
!
B:
interface VLAN 10
ip address 1.1.1.2 255.255.255.0
bfd enable
no ip directed-broadcast
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 fall-over bfd
!