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

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

BFD в OSPF используется для ускоренного обнаружения отказов канала между соседями, выступая как внешний триггер события link-down. OSPF реагирует на статус BFD как на потерю канала: при падении BFD-сессии OSPF немедленно разрывает соседство и запускает перерасчёт маршрутов, что сокращает время сходимости по сравнению со стандартными таймерами Hello/Dead.

Включение BFD для OSPF позволяет:

  • уменьшить время обнаружения отказа линка;
  • ускорить сходимость маршрутизации;
  • повысить устойчивость сервисов к обрывам;
  • избежать необходимости уменьшения интервалов OSPF Hello/Dead.

Сценарии использования. BFD для OSPF применяется:

  • на магистральных линках;
  • в дата-центрах;
  • в сетях с требованиями к быстрому восстановлению;
  • при необходимости сходимости < 1 секунды.

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

  • Поддержка BFD на платформе.
  • Поддержка интеграции BFD с OSPF.
  • Совпадающая настройка BFD на обоих концах канала.
  • Согласованные таймеры BFD.

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

BFD (Bidirectional Forwarding Detection)

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

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

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

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

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

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
4
5
6
7
Switch(config-10ge1/0/1)#bfd
  authentication   Authentication
  bind             Bind
  disable          Disable the bfd protocol on this interface
  enable           Enable the bfd protocol on this interface
  min-echo         Bfd min echo receive timerinterval
  min-tx           Bfd session min send packet timerinterval
  • BFD-сессия создается на интерфейсе маршрутизатора, на котором существует или планируется OSPF-соседство. На соседнем маршрутизаторе тоже должен быть настроен BFD с аналогичными параметрами.
  • enable - включает протокол BFD на этом интерфейсе
  • disable - отключает протокол BFD на этом интерфейсе
  • authentication - включает аутентификацию BFD
  • bind - привязывает BFD к механизму отслеживания
  • min-tx - задаёт минимальный интервал отправки BFD-пакетов, значение по умолчанию 1000 миллисекунд
  • min-echo - задаёт минимальный интервал приёма Echo-пакетов, значение по умолчанию 0 миллисекунд (echo отключено)
1
2
3
Switch(config-10ge1/0/1)#ip ospf bfd
  disable   Disable bfd protocol
  enable    Enable bfd protocol
  • Команда используется для включения или отключения интеграции BFD с OSPF на интерфейсе.

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

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

OSPF-BFD1.png

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

hostname SW1
!
router ospf 1
 router-id 10.30.1.1
 network 10.30.1.0 255.255.255.0 area 0
 network 172.30.0.0 255.255.255.0 area 0
!
interface 10gigaethernet 1/0/1
 work-mode router
 ip address 172.30.0.1/24
!
interface loopback 1
 ip address 10.30.1.1/24
!
end
hostname SW2
!
router ospf 1
 router-id 10.30.2.2
 network 10.30.2.0 255.255.255.0 area 0
 network 172.30.0.0 255.255.255.0 area 0
!
interface 10gigaethernet 1/0/1
 work-mode router
 ip address 172.30.0.2/24
!
interface loopback 2
 ip address 10.30.2.2/24
!
end

Цель: Настроить BFD для OSPF на каждом маршрутизаторе, на тех интерфейсах, на которых установлено OSPF-соседство, то есть на интерфейсе 10gigaethernet 1/0/1 каждого маршрутизатора.

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

Шаг 1. SW1(config)#bfd start - запуск протокола BFD глобально

Шаг 2.

SW1(config)#interface 10ge1/0/1
SW1(config-10ge1/0/1)#bfd enable

  • включение BFD на интерфейсе 10gigaethernet 1/0/1

Шаг 3. SW1(config-10ge1/0/1)#ip ospf bfd enable - привязка BFD к OSPF

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

Шаг 1. SW2(config)#bfd start - запуск протокола BFD глобально

Шаг 2.

SW2(config)#interface 10ge1/0/1
SW2(config-10ge1/0/1)#bfd enable

  • включение BFD на интерфейсе 10gigaethernet 1/0/1

Шаг 3. SW2(config-10ge1/0/1)#ip ospf bfd enable - привязка BFD к OSPF

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

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

На Sw1:

1
2
3
4
5
6
configure
bfd start
interface 10gigaethernet 1/0/1
 bfd enable
 ip ospf bfd enable
end

На Sw2:

1
2
3
4
5
6
configure 
bfd start
interface 10gigaethernet 1/0/1
 bfd enable
 ip ospf 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 на конкретных интерфейсах
  • session - состояние активных BFD-сессий

Состояние BFD-сессии между OSPF соседями можно посмотреть командой show ip ospf bfd session

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

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

На Sw1:

SW1#show running-config
!Device running configuration:
!version V1.0.2
!1970/01/07 09:07:04
!
hostname SW1
!
bfd start
!
router ospf 1
 router-id 10.30.1.1
 network 10.30.1.0 255.255.255.0 area 0
 network 172.30.0.0 255.255.255.0 area 0
!
interface 10gigaethernet 1/0/1
 work-mode router
 ip address 172.30.0.1/24
 ip ospf bfd enable
 bfd enable
!
interface loopback 1
 ip address 10.30.1.1/24
!

1
2
3
4
5
6
7
SW1#show bfd config
Version                         :BFD_VX2.10.00.00
!
bfd start
!
interface 10gigaethernet 1/0/1
 bfd enable
  • BFD сконфигурирован глобально и на интерфейсе 10gigaethernet 1/0/1

На Sw2:

SW2#show running-config
!Device running configuration:
!version V1.0.2
!1970/01/07 09:41:25
!
hostname SW2
!
bfd start
!
router ospf 1
 router-id 10.10.12.2
 network 10.30.2.0 255.255.255.0 area 0
 network 172.30.0.0 255.255.255.0 area 0
!
interface 10gigaethernet 1/0/1
 work-mode router
 ip address 172.30.0.2/24
 ip ospf bfd enable
 bfd enable
!
interface loopback 2
 ip address 2.2.2.2/32
!

1
2
3
4
5
6
7
SW2#show bfd config
Version                         :BFD_VX2.10.00.00
!
bfd start
!
interface 10gigaethernet 1/0/1
 bfd enable
  • BFD сконфигурирован глобально и на интерфейсе 10gigaethernet 1/0/1

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

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

На Sw1:

SW1#show bfd interface
  Interface: 10ge1/0/1
  Version: v1.0
  Role: active
  Mode: asynch
  Echo State: disabled
  Min out interval(ms): 1000
  Min in interval(ms): 1000
  Multiplier: 3
  Authentication: disabled

  • протокол BFD активен на интерфейсе 10gigaethernet 1/0/1 и работает в асинхронном режиме
  • время обнаружения отказа 3 секунды (min interval * multiplier)
1
2
3
SW1#show bfd session
  Interface      State Local-Discr Remote-Discr local-addr                              remote-addr                             type                         
  10ge1/0/1      up    1           1            172.30.0.1                              172.30.0.2                              dynamic                      
  • BFD-сессия активна
  • убедитесь, что BFD-сессия установлена между корректными OSPF-соседями (параметры local-addr и remote-addr)
1
2
3
4
5
6
7
8
SW1#show ip ospf bfd session
 OSPF Process 1
 Neighbor       :172.30.0.2                NeighborId     :10.10.12.2
 Interface      :10ge1/0/1                 BFDState       :up
 Min TX         :1000                      Min RX         :1000
 Multiplier     :3                         BFD Local Dis  :1
 LocalIpAdd     :172.30.0.1                RemoteIpAdd    :172.30.0.2
 Diagnostic Info:noDiagnostic
  • BFD-state up указывает на то, что OSPF видит рабочую BFD-сессию
  • Neighbor и NeighborId показывают, с каким OSPF соседом установлена BFD-сессия
SW1#show ip ospf interface 172.30.0.1
OSPF Process 1
 Interface 10ge1/0/1 Information:
 ---------------------------------------------------
 IP Address               :172.30.0.1
 Area ID                  :0
 Type                     :broadcast
 AdminState               :enable
 Priority                 :1
 Transit Delay            :1(s)
 Retrans Interval         :5(s)
 Hello Interval           :10(s)
 Dead Interval            :40(s)
 Poll Interval            :120(s)
 State                    :backupDesignatedRouter
 Designated Router        :172.30.0.2
 Backup Designated Router :172.30.0.1
 Events Change            :8
 Auth Type                :none
 Auth Key                 :$9$1o65$db0a3b713c81178c
 Cost                     :1
 Multicast Forwarding     :unicast
 Demand State             :true
 Passive State            :false
 MTU                      :1500
 Static Cost              :0
 LSA Checksum             :0
 Designated Router ID     :10.10.12.2
 Backup Designated Router ID:10.30.1.1
 Bfd State                :enable               <-- BFD статус активен
 Flood Group              :0
 MTU Ignore               :disable
 Fast Change              :disable
 Te Admin Group           :0
 Te Cost                  :0
 Te Max BandWidth         :0
 Te Max Reserve Bandwidth :0
 Te State                 :disable
 Status                   :active
  • обратите внимание на строку Bfd State: enable - она показывает, что BFD для OSPF на этом интерфейсе включен

На Sw2:

SW2#show bfd interface
  Interface: 10ge1/0/1
  Version: v1.0
  Role: active
  Mode: asynch
  Echo State: disabled
  Min out interval(ms): 1000
  Min in interval(ms): 1000
  Multiplier: 3
  Authentication: disabled

  • протокол BFD активен на интерфейсе 10gigaethernet 1/0/1 и работает в асинхронном режиме
  • время обнаружения отказа 3 секунды (min interval * multiplier)
1
2
3
SW2#show bfd session
  Interface      State Local-Discr Remote-Discr local-addr                              remote-addr                             type                         
  10ge1/0/1      up    1           1            172.30.0.2                              172.30.0.1                              dynamic                      
  • BFD-сессия активна
  • убедитесь, что BFD-сессия установлена между корректными OSPF-соседями (параметры local-addr и remote-addr)
1
2
3
4
5
6
7
8
SW2#show ip ospf bfd session
 OSPF Process 1
 Neighbor       :172.30.0.1                NeighborId     :10.30.1.1
 Interface      :10ge1/0/1                 BFDState       :up
 Min TX         :1000                      Min RX         :1000
 Multiplier     :3                         BFD Local Dis  :1
 LocalIpAdd     :172.30.0.2                RemoteIpAdd    :172.30.0.1
 Diagnostic Info:noDiagnostic
  • BFD-state up указывает на то, что OSPF видит рабочую BFD-сессию
  • Neighbor и NeighborId показывают, с каким OSPF соседом установлена BFD-сессия
SW2#show ip ospf interface 172.30.0.2
OSPF Process 1
 Interface 10ge1/0/1 Information:
 ---------------------------------------------------
 IP Address               :172.30.0.2
 Area ID                  :0
 Type                     :broadcast
 AdminState               :enable
 Priority                 :1
 Transit Delay            :1(s)
 Retrans Interval         :5(s)
 Hello Interval           :10(s)
 Dead Interval            :40(s)
 Poll Interval            :120(s)
 State                    :designatedRouter
 Designated Router        :172.30.0.2
 Backup Designated Router :172.30.0.1
 Events Change            :15
 Auth Type                :none
 Auth Key                 :$9$t9s4$2f138544b49bc9a5c457f8e0e42d732c
 Cost                     :1
 Multicast Forwarding     :unicast
 Demand State             :true
 Passive State            :false
 MTU                      :1500
 Static Cost              :0
 LSA Checksum             :0
 Designated Router ID     :10.10.12.2
 Backup Designated Router ID:10.30.1.1
 Bfd State                :enable               <-- BFD статус активен
 Flood Group              :0
 MTU Ignore               :disable
 Fast Change              :disable
 Te Admin Group           :0
 Te Cost                  :0
 Te Max BandWidth         :0
 Te Max Reserve Bandwidth :0
 Te State                 :disable
 Status                   :active
  • обратите внимание на строку Bfd State: enable - она показывает, что BFD для OSPF на этом интерфейсе включен

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

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

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

Версия ПО

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

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

Стандарт

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