BFD для BGP на Nexus 9000: таймеры и подводные камни
Стандартные таймеры BGP (keepalive 60 с, hold 180 с) слишком медленные для фабрики: при «тихом» отказе линка, когда интерфейс остаётся в состоянии up, сосед будет считаться живым до трёх минут. BFD решает эту задачу, обнаруживая потерю связности за доли секунды и сообщая об этом протоколу маршрутизации.
Минимальная конфигурация
feature bfd
interface Ethernet1/49
no ip redirects
bfd interval 300 min_rx 300 multiplier 3
router bgp 65010
neighbor 10.0.0.1
remote-as 65020
bfd
С таймерами 300 мс и множителем 3 время обнаружения отказа около 900 мс. Для большинства фабрик это разумный компромисс между скоростью и устойчивостью к кратковременным всплескам нагрузки на control plane.
Почему сессия не поднимается
- ICMP redirects. NX-OS по умолчанию использует echo-режим BFD, а для него на интерфейсе нужно
no ip redirects. Без этого платформа выдаёт предупреждение, и сессия может не установиться. - Несовпадение режима. Если соседняя сторона не поддерживает echo, отключите его на интерфейсе командой
no bfd echo. - eBGP через loopback. Для таких соседей нужен multihop BFD. Поддержка и синтаксис зависят от версии NX-OS, поэтому сверяйтесь с release notes вашей ветки.
Проверка
show bfd neighbors
show bfd neighbors details
show bgp ipv4 unicast neighbors 10.0.0.1 | include BFD
В выводе details обратите внимание на согласованные интервалы: итоговое значение выбирается как максимум из локального interval и удалённого min_rx, поэтому асимметричные настройки на концах линка дают неожиданные результаты.
Не стремитесь к минимальным таймерам. 50 мс выглядят привлекательно, но при перегрузке CPU или во время ISSU они приводят к ложным срабатываниям, а флаппинг BGP обходится дороже, чем лишние полсекунды сходимости.