Перейти к содержанию

Настройка BFD для BGP

BFD используется совместно с BGP для ускоренного обнаружения потери связности между соседними маршрутизаторами. В стандартной работе BGP определяет недоступность соседа на основе механизма keepalive и hold timer, значения которых обычно составляют десятки секунд. Это приводит к медленной реакции сети на отказ канала или устройства.

При использовании BFD контроль доступности соседа выносится на отдельный механизм, работающий независимо от BGP. BFD обеспечивает обнаружение отказа за миллисекунды или единицы секунд, после чего BGP немедленно разрывает соседство и инициирует пересчёт маршрутов.

Преимущества использования BFD для BGP:

  • сокращение времени сходимости
  • повышение отказоустойчивости сети
  • более быстрое переключение на резервные маршруты

Сценарии использования:

  • магистральные соединения между маршрутизаторами
  • сети операторского уровня
  • любые топологии, где критично быстрое восстановление маршрутизации при отказах

Необходимые условия и предварительные требования

  • IP-связность на уровне интерфейсов
  • BGP-соседство между маршрутизаторами
  • Поддержка BFD на обеих платформах
  • Поддержка интеграции BFD с BGP
  • Совпадающая настройка BFD на обоих концах канала
  • Согласованные таймеры BFD

Основная информация о применяемых технологиях

BFD (Bidirectional Forwarding Detection)

Это протокол быстрого обнаружения отказов канала между двумя устройствами.

Принцип работы

  1. Между двумя маршрутизаторами устанавливается BFD-сессия.
  2. Устройства обмениваются BFD-пакетами с заданным интервалом.
  3. При отсутствии пакетов в течение согласованного времени:
    • BFD объявляет сессию Down
    • BGP немедленно завершает TCP-сессию с соседом и удаляет полученные маршруты

Назначение применяемой команды/конфигурации

Для настройки BFD в BGP используются две команды:

1
2
3
4
5
6
7
8
Switch(config)#bfd
  auto-linkbundle   auto-linkbundle
  auto-switch       auto-switch
  bind              Bind
  start             Start the bfd protocol on this device
  stop              Stop the bfd protocol on this device
  track             Track
  trap              Send the trap when session linkup or linkdown
  • протокол BFD запускается в глобальном режиме конфигурации:
  • start - запустить протокол
  • stop - остановить работу протокола
  • bind - привязывает работу BFD к конкретному интерфейсу
  • auto-linkbundle - автоматическая интеграция BFD с агрегированными каналами (LAG)
  • auto-switch - автоматическое переключение маршрутизации при падении BFD-сессии
  • track - привязка состояния BFD к механизму отслеживания
  • trap - отправка SNMP-trap при изменении состояния BFD-сессии
1
2
3
Switch(config-bgp)#neighbor <IP адрес соседа> bfd
  disable   Disable BFD function
  enable    Enable BFD function
  • включение или отключение механизма BFD для конкретного BGP-соседа

Пример конфигурирования

Первоначальное состояние - два маршрутизатора, соединенные друг другом напрямую. Между ними поднято BGP-соседство. Задача - добавить BFD в BGP для более оперативного обнаружения потери соседства.

BGP-BFD1.png

Исходная конфигурация:

hostname SW3
!
router bgp 65300
 router-id 3.3.3.3
  neighbor 10.34.0.4 remote-as 65400
 ipv4-family unicast
  neighbor 10.34.0.4 enable
!
interface 10gigaethernet 1/1/0/1
 work-mode router
 ip address 10.34.0.3/24
!
hostname SW4
!
router bgp 65400
 router-id 10.34.0.4
  neighbor 10.34.0.3 remote-as 65300
 ipv4-family unicast
  neighbor 10.34.0.3 enable
!
interface 10gigaethernet 2/1/0/1
 work-mode router
 ip address 10.34.0.4/24
!

Цель: Настроить BFD для BGP на каждом маршрутизаторе, на тех интерфейсах, на которых установлено BGP-соседство.

Конфигурация на Sw3:

Шаг 1. SW3(config)#bfd start

  • запуск протокола BFD глобально

Шаг 2. SW3(config-bgp)#neighbor 10.34.0.4 bfd enable

  • привязка BFD к BGP-соседу 10.34.0.4

Конфигурация на Sw4 - аналогичная:

Шаг 1. SW4(config)#bfd start

  • запуск протокола BFD глобально

Шаг 2. SW4(config-bgp)#neighbor 10.34.0.3 bfd enable

  • привязка BFD к BGP-соседу 10.34.0.3

Полный вывод выполненных конфигураций

Вывод представлен в виде команды show running-config для каждого настраиваемого устройства, в формате для удобного последующего copy-paste.

На Sw3:

1
2
3
4
5
configure
bfd start
router bgp 65300
 neighbor 10.34.0.4 bfd enable
end

На Sw4:

1
2
3
4
5
configure 
bfd start
router bgp 65400
 neighbor 10.34.0.3 bfd enable
end

Изучение состояния устройства

Настройку и работу BFD можно проверить командами вида show bfd:

1
2
3
4
5
Switch#show bfd
  config      The config info
  interface   Interfaces information
  session     Session information
  track       Track
  • команда предназначена для просмотра конфигурации и состояния BFD
  • config - просмотр конфигурации
  • interface - параметры настройки BFD на конкретных интерфейсах (для BGP не используется)
  • session - состояние активных BFD-сессий

Просмотр конфигурации

Просмотреть конфигурацию можно с помощью команд show running-config и show bfd config:

На Sw3:

SW3#show running-config
!Device running configuration:
!version V1.0.2
!1970/01/06 08:24:04
!
hostname SW3
!
bfd start
!
router bgp 65300
 router-id 3.3.3.3
  neighbor 10.34.0.4 remote-as 65400
  neighbor 10.34.0.4 bfd enable
 ipv4-family unicast
  neighbor 10.34.0.4 enable
!
interface 10gigaethernet 1/1/0/1
 work-mode router
 ip address 10.34.0.3/24
!

1
2
3
4
SW3#show bfd config
Version                         :BFD_VX2.10.00.00
!
bfd start
  • BFD сконфигурирован глобально и привязан к BGP соседу 10.34.0.4

На Sw4:

SW4#show running-config
!Device running configuration:
!version V1.0.2
!1970/01/06 08:51:55
!
hostname SW4
!
bfd start
!
router bgp 65400
 router-id 10.34.0.4
  neighbor 10.34.0.3 remote-as 65300
  neighbor 10.34.0.3 bfd enable
 ipv4-family unicast
  neighbor 10.34.0.3 enable
!
interface 10gigaethernet 2/1/0/1
 work-mode router
 ip address 10.34.0.4/24
!

1
2
3
4
SW4#show bfd config
Version                         :BFD_VX2.10.00.00
!
bfd start
  • BFD сконфигурирован глобально и привязан к BGP соседу 10.34.0.3

Просмотр параметров работы

Просмотреть состояние работы BFD, в том числе работу BFD с протоколом BGP, можно следующими командами:

Просмотр параметров в глобальном режиме

На Sw3:

1
2
3
SW3#show bfd session
  Interface      State Local-Discr Remote-Discr local-addr                              remote-addr                             type                         
  10ge1/1/0/1    up    1           1            10.34.0.3                               10.34.0.4                               dynamic                      

На Sw4:

1
2
3
SW4#show bfd session
  Interface      State Local-Discr Remote-Discr local-addr                              remote-addr                             type                         
  10ge2/1/0/1    up    1           1            10.34.0.4                               10.34.0.3                               dynamic                      

  • BFD-сессия активна
  • убедитесь, что BFD-сессия установлена между корректными BGP-соседями (параметры local-addr и remote-addr)

Просмотр параметров в режиме соседа

На Sw3:

SW3#show ip bgp neighbor  10.34.0.4

 Neighbor Address:10.34.0.4
        Remote AS                     :65400
        BGP version                   :4
        Remote Router ID              :10.34.0.4
        Current State                 :Established
        State Change                  :3
        Port      :Local              :48588
                   Remote             :179
        Configured:Active Hold Time   :90 sec
                   Keepalive Time     :30 sec
        Negotiated:Active Hold Time   :90 sec
                   Keepalive Time     :30 sec
        Multihop EBGP                 :Disable
        Router Reflector Client       :No
        Community                     :Not Send
        Min ASOrigination Interval    :15 sec
        Min Advertisement Interval    :30 sec
        ConnectRetry Timer            :20 sec
        In Message(from UP)           :212
        Ou Message(from UP)           :213
        In Update(from UP)            :0
        Out Update(from UP)           :0
        Local IP                      :10.34.0.3
        Last Error                    :Holdtime Expired
        Admin State                   :Running
        Fake AS                       :65300
        In Open                       :3
        Out Open                      :5
        In Notify                     :0
        Out Notify                    :2
        In Keepalive                  :999
        Out Keepalive                 :998
        Local 4bytes AS               :Disable
        4bytes AS                     :Disable
        TCP Client Only               :Disable
        TCP Server Only               :Disable
        HoldTimer Remain              :64
        KeepTimer Remain              :18
        TCP Socket                    :185
        BFD ID                        :1   <--- внутренний идентификатор BFD-сессии
        TCP Connect                   :186
        Connect Error                 :180
        TCP Send                      :1005
        TCP Send Bytes                :19149
        TCP Recv Bytes                :19068
        TCP Recv Error                :2
        MD5 Authentication            :Not Support
        Send Label                    :disable
        Valid Ttl                     :255
        Next Hop Local                :disable
        Bfd state                     :enable   <--- для данного соседа BFD включен
        Public AS Only                :disable
        Substitute-as                 :disable
        Allow AS Loop                 :0
        UPE State                     :disable
        Vpn instance                  :N/A
        Neighbor optional capabilities:
        Route Refresh                 :Disable
        Advertise Route Refresh       :Disable
        Graceful Restart              :Not Support
        Restart Timer from Neighbor   :0
        Graceful Restart Role         :Normal
        Address family IPv4 Unicast   :advertised and received
        IPv4 Unicast                  :advertised and received
          Rx Feasible                 :0
          Rx Withdraw                 :0
          Tx Feasible                 :0
          Tx Withdraw                 :0
          Total Route                 :0
          Pending Route               :0
          Best Route                  :0
          System Route                :0
          System Pending Route        :0
          Flood Pending Route         :0
          Deleted Route               :0

  • обратите внимание на строки BFD ID :1 и Bfd state :enable

На Sw4:

SW4#show ip bgp neighbor 10.34.0.3

 Neighbor Address:10.34.0.3
        Remote AS                     :65300
        BGP version                   :4
        Remote Router ID              :3.3.3.3
        Current State                 :Established
        State Change                  :3
        Port      :Local              :179
                   Remote             :48588
        Configured:Active Hold Time   :90 sec
                   Keepalive Time     :30 sec
        Negotiated:Active Hold Time   :90 sec
                   Keepalive Time     :30 sec
        Multihop EBGP                 :Disable
        Router Reflector Client       :No
        Community                     :Not Send
        Min ASOrigination Interval    :15 sec
        Min Advertisement Interval    :30 sec
        ConnectRetry Timer            :20 sec
        In Message(from UP)           :219
        Ou Message(from UP)           :219
        In Update(from UP)            :0
        Out Update(from UP)           :0
        Local IP                      :10.34.0.4
        Last Error                    :Holdtime Expired
        Admin State                   :Running
        Fake AS                       :65400
        In Open                       :3
        Out Open                      :3
        In Notify                     :0
        Out Notify                    :2
        In Keepalive                  :1004
        Out Keepalive                 :1006
        Local 4bytes AS               :Disable
        4bytes AS                     :Disable
        TCP Client Only               :Disable
        TCP Server Only               :Disable
        HoldTimer Remain              :65
        KeepTimer Remain              :6
        TCP Socket                    :186
        BFD ID                        :1   <--- внутренний идентификатор BFD-сессии
        TCP Connect                   :115
        Connect Error                 :113
        TCP Send                      :1011
        TCP Send Bytes                :19243
        TCP Recv Bytes                :19163
        MD5 Authentication            :Not Support
        Send Label                    :disable
        Valid Ttl                     :255
        Next Hop Local                :disable
        Bfd state                     :enable   <--- для данного соседа BFD включен
        Public AS Only                :disable
        Substitute-as                 :disable
        Allow AS Loop                 :0
        UPE State                     :disable
        Vpn instance                  :N/A
        Neighbor optional capabilities:
        Route Refresh                 :Disable
        Advertise Route Refresh       :Disable
        Graceful Restart              :Not Support
        Restart Timer from Neighbor   :0
        Graceful Restart Role         :Normal
        Address family IPv4 Unicast   :advertised and received
        IPv4 Unicast                  :advertised and received
          Rx Feasible                 :0
          Rx Withdraw                 :0
          Tx Feasible                 :0
          Tx Withdraw                 :0
          Total Route                 :0
          Pending Route               :0
          Best Route                  :0
          System Route                :0
          System Pending Route        :0
          Flood Pending Route         :0
          Deleted Route               :0

  • обратите внимание на строки BFD ID :1 и Bfd state :enable

Рекомендации выполнения команд/настроек

Ограничение применения

BFD работает только между напрямую подключёнными соседями.

Согласованность параметров

При несовпадении параметров между соседними маршрутизаторами BFD-сессия не установится.

Нагрузка на CPU

Слишком маленькие интервалы увеличивают нагрузку на CPU.

Ложные срабатывания

При неправильной настройке BFD может вызывать ложные срабатывания.

Стабильные каналы

Применение BFD рекомендуется на стабильных каналах связи, где потеря пакетов минимальна.

Влияние на BGP

Использование BFD не изменяет логику работы BGP и не влияет на процесс выбора маршрутов, а только ускоряет обнаружение недоступности соседа.

История возникновения команды

Версия ПО

Настройки и выводы команд выполнялись на версии ПО V1.0.2

Ссылка на внешнюю документацию

Стандарт

  • RFC 5880 — Bidirectional Forwarding Detection (BFD)
  • RFC 5881 — BFD для single-hop IPv4/IPv6
  • RFC 5882 — Generic application of BFD