Настройка протокола BFD
В ситуациях, когда маршрутизаторы соединены прямым линком, обрыв приведет к падению интерфейса, в результате чего оба маршрутизатора быстро обнаружат проблему и удалят недействительные маршруты. Однако, ситуация меняется, если между маршрутизаторами появляется коммутатор:
В этом случае падение интерфейса на одном из маршрутизаторов никак не будет обнаружено другим маршрутизатором. Удаление недействительного маршрута из таблицы маршрутизации будет зависеть от настроек используемого протокола (в случае с BGP это время может достигать трех минут).
В этой ситуации нам поможет BFD. Bidirectional Forwarding Detection - протокол, позволяющий быстро обнаруживать проблемы связности маршрутизаторов на IP уровне и тем самым обеспечивающий быструю сходимость протоколов маршрутизации. BFD работает поверх других протоколов и позволяет сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т.е. требует настройки на обоих маршрутизаторах (оба генерируют BFD пакеты и отвечают друг-другу). Как же работает протокол BFD?
Каждый из маршрутизаторов, на которых настроен протокол BFD, периодически посылает Hello сообщения соседу. Получив данное сообщение, маршрутизатор понимает, что канал работает, не получив сообщение, протокол BFD зафиксирует неработоспособность канала.
Перейдем к настройкам:
AR1
interface GigabitEthernet 0/0/1
ip address 10.0.12.1 255.255.255.0
bgp 50
peer 10.0.12.2 as-number 500
AR2
interface GigabitEthernet 0/0/1
ip address 10.0.12.2 255.255.255.0
bgp 500
peer 10.0.12.1 as-number 50
Прежде чем перейти к настройке BFD, посмотрим, через сколько BGP поймет, что произошел обрыв и удалит маршрут. Сымитируем падение линка на маршрутизаторе AR2, дадим команду shutdown и посмотрим, что произойдет:
<AR2>
May 31 2019 18:17:42-08:00 AR2 %IFPDT/4/IF_STATE(l)[9]:Interface GigabitEthernet0/0/1 has turned into DOWN state.
<AR1>
May 31 2019 18:20:22-08:00 AR1 %BGP/3/STATE_CHG_UPDOWN(l)[5]:The status of the peer 10.0.12.2 changed from ESTABLISHED to IDLE. (InstanceName=Public, StateChangeReason=Hold Timer Expired)
Как видим, прошло 2 минуты и 40 секунд между падением интерфейса и удалением маршрута на AR1.
Теперь настроим BFD сессию:
AR1
bfd //Глобально разрешаем BFD
bgp 50
peer 10.0.12.2 bfd enable //Разрешаем BFD в BGP процессе
peer 10.0.12.2 bfd min-tx-interval 50 min-rx-interval 50 detect-multiplier 4
min-tx-interval – интервал генерации control пакетов (в миллисекундах).
min-rx-interval – минимальный интервал между входящими controlпакетами.
detect-multiplier – количество пакетов, которые BFD может пропустить прежде чем информирует о неполадках с подключением.
Аналогичную настройку делаем на втором маршрутизаторе:
AR2
bfd
bgp 500
peer 10.0.12.1 bfd enable
peer 10.0.12.1 bfd min-tx-interval 50 min-rx-interval 50 detect-multiplier 4
Проверим статус BFD сессии:
[AR1] display bfd session all
--------------------------------------------------------------------------------
Local Remote PeerIpAddr State Type InterfaceName
--------------------------------------------------------------------------------
8192 8192 10.0.12.2 Up D_IP_IF GigabitEthernet0/0/1
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 1/0
[AR2] display bfd session all
--------------------------------------------------------------------------------
Local Remote PeerIpAddr State Type InterfaceName
--------------------------------------------------------------------------------
8192 8192 10.0.12.1 Up D_IP_IF GigabitEthernet0/0/1
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 1/0
Сессия успешно установилась и устройства начали обмениваться Helloсообщениями.
Снова сымитируем падение линка на AR2:
<AR2>
May 31 2019 19:34:59-08:00 AR2 %IFPDT/4/IF_STATE(l)[16]:Interface GigabitEthernet0/0/1 has turned into DOWN state.
<AR1>
May 31 2019 19:34:59-08:00 AR1 D/4/STACHG_TODWN(l)[1]:BFD session changed to Down. (SlotNumber=0, Discriminator=2097152, Diagnostic=DetectDown, Applications=BGP, ProcessPST=False, BindInterfaceName=GigabitEthernet0/0/1, InterfacePhysicalState=Up, InterfaceProtocolState=Up)
May 31 2019 19:34:59-08:00 AR1 %BGP/3/STATE_CHG_UPDOWN(l)[2]:The status of the peer 10.0.12.2 changed from ESTABLISHED to IDLE. (InstanceName=Public, StateChangeReason=CEASE/BFD Session Down)
Теперь разница между падением интерфейса и удалением недействительных маршрутов на AR1, благодаря BFD, составляет миллисекунды.