21. FHRP. HSRP

Проблема отказоустойчивости шлюза

  • Кадры пользователей обычно терминируются на маршрутизаторе

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

  • В IPv4 нет штатных механизмов отказоустойчивости шлюза

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

  • FHRP - First Hop Redundancy Protocol

  • Шлюзом по умолчанию узлам назначается виртуальный IP-адрес

    • Маршрутизаторы договариваются, кто обслуживает этот IP-адрес

    • При отказе оставшиеся маршрутизаторы продолжают обслуживание

Cравнение протоколов FHRP

  • Стандартные протоколы:

    • VRRP (Virtual Router Redundancy Protocol) - RFC 5798, патентные проблемы относительно HSRP

  • Проприетарные протоколы:

    • HSRP (Hot Standby Router Protocol) - RFC 2281, лицензируемый Cisco

    • GLBP (Gateway Load Balancing Protocol) - Cisco-специфичный

    • ESRP (Extreme Standby Router Protocol) - Extreme-специфичный

    • R-SMLT (Routed Split Multi-Link Trunking) - Avaya-специфичный

  • Непроприетарные протоколы:

    • CARP (Common Address Redundancy Protocol) - BSD/Linux, не стандартизирован

Описание HSRP

  • Маршрутизаторы HSRP объединяются в группу

  • Один из маршрутизаторов в группе выбирается активным за группу

    • Отвечает на запросы ARP предсказуемым виртуальным MAC-адресом

    • Форвардит IP-пакеты в кадрах, приходящих на виртуальный MAC

    • Отправляет Hello-пакеты (по умолчанию раз в 3 секунды)

  • Другой маршрутизатор выбирается запасным за группу

    • Слушает Hello от активного (если не слышит - сам становится активным)

    • Отправляет Hello-пакеты (по умолчанию раз в 3 секунды)

  • Все остальные маршрутизаторы (если есть) не делают ничего

    • Слушают Hello от запасного, если не слышат - происходят выборы запасного

Включение HSRP

  • Для включения HSRP необходимо задать группу и виртуальный IP

Switch1(config)#interface vlan1
Switch1(config-if)#ip address 10.0.0.1 255.255.255.0
Switch1(config-if)standby 1 ip 10.0.0.254
  • Выборы идут в течение Hold Time. Выборы выигрывает роутер с большим MAC адресом

  • Дополнительно можно назначить приоритет

    • Приоритет по умолчанию - 100

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

  • Preempting разрешает перехватить роль активного, если текущий приоритет запасного больше приоритета текущего активного

  • При смене активного роутера рассылается GARP для оповещения соседей в среде

  • Если IP за группу не указывать, то IP будет выбран больший из участников группы

Switch1(config-if)#standby 1 priority 100
Switch1(config-if)#standby 1 preempt

Switch1(config-if)#standby preempt delay ?
  minimum  Delay at least this long
  reload   Delay after reload
  sync     Wait for IP redundancy clients

Диагностика HSRP

Switch1#show standby
Vlan10 - Group 1
  State is Active
    2 state changes, last state change 00:00:55
  Virtual IP address is 10.10.10.254
  Active virtual MAC address is 0000.0c07.ac01 (MAC In Use)
    Local virtual MAC address is 0000.0c07.ac01 (v1 default)
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 0.992 secs
  Preemption disabled
  Active router is local
  Standby router is unknown
  Priority 100 (default 100)
  Group name is "hsrp-Vl10-1" (default)
Switch1#show standby vlan1 1
Vlan10 - Group 1
  State is Active
    2 state changes, last state change 00:00:55
  Virtual IP address is 10.10.10.254
  Active virtual MAC address is 0000.0c07.ac01 (MAC In Use)
    Local virtual MAC address is 0000.0c07.ac01 (v1 default)
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 0.992 secs
  Preemption disabled
  Active router is local
  Standby router is unknown
  Priority 100 (default 100)
  Group name is "hsrp-Vl10-1" (default)

Сосуществование HSRP и STP

  • Обычно маршрутизация выполняется на distribution-коммутаторах

    • Для защиты от петли между access-свитчами может использоваться STP

  • STP выберет разные корневые коммутаторы в разных VLAN

    • Простейшая балансировка

    • Роль активного роутера следует совмещать с ролью STP Root

Таймеры HSRP

  • Hello Timer указывает частоту отправки Hello пакетов, по умолчанию 3 сек

  • Hold Time указывает время ожидания Hello, по умолчанию 10 сек

Switch(config)#interface vlan1
Switch(config-if)#standby 1 hello 1 3
  • В HSRPv2 можно назначить субсекундные таймеры

Switch(config)#interface vlan1
Switch(config-if)#standby 1 timers msec 15 msec 50
  • HSRP использует Hold Time для:

    • Определения отказа соседа, используется Hold Time из Hello

    • Определение времени выборов, используется собственный таймер

Состояние HSRP

  • Init - HSRP на интерфейсе не работоспособен

  • Learn - HSRP ожидает определения виртуального IP-адреса

  • Listen - HSRP ожидает возможности устроить выборы запасного

  • Speak - производятся выборы запасного роутера

  • Standby - HSRP ожидает возможности стать основным роутером

  • Active - HSRP захватил роль основного роутера

Проблема выхода трафика

  • HSRP может работать прекрасно, выбрав активный роутер

  • Однако это не решает проблему обработки отказа

Отслеживание объектов

  • В некоторых случаях необходимо временно понизить приоритет роутера и "добровольно" отдать роль активного роутера запасному

    • В случае падения интерфейса до ядра сети

    • В случае падения маршрута в сеть

Switch(config)#ip sla 10
Switch(config-ip-sla)#icmp-echo 192.168.3.2
Switch(config-ip-sla-echo)#frequency 5
Switch(config-ip-sla-echo)#ip sla schedule 10 life forever start-time now
Switch(config)#track 100 ip sla 10
Switch(config)#interface vlan1
Switch(config-if)#standby 1 track 100 decrement 20
  • Формат команды: standby <group> track <object> decrement <value>

    • При отсутствии указания декремента подразумевается значение в 10

Отслеживание интерфейсов

IOS старых версий (до 15.0) имел возможность указания в HSRP отслеживания интерфейсов, без создания объекта отслеживания

  • В IOS 15.0 команды старого синтаксиса применяются, но автоматически создают конфигурацию с объектами, отслеживающими интерфейсы

  • В новых IOS команды старого синтаксиса не поддерживаются

Switch(config)#interface vlan1
Switch(config-if)#standby 1 track gi0/1 20
Switch(config)#do show running-config | section Vlan1
track 1 interface GigabitEthernet0/1 line-protocol
inteface Vlan1
 ip address 10.0.0.1 255.255.255.0
 standby 1 ip 10.0.0.254
 standby 1 preempt
 standby 1 track 1 decrement 20

Инкапсуляция HSRP

  • HSRP использует следующую схему инкапсуляции:

    • Ethernet: HSRP Virtual MAC для активного, unicast MAC для запасного

    • IPv4: IP-адрес получателя: 224.0.0.2 all-routers (HSRPv1), 224.0.0.102 (HSRPv2)

    • UDP: Порты источника и получателя - 1985

Аутентификация HSRP

HSRP поддерживает две схемы аутентификации:

  • Подпись пакетов открытым паролем:

Switch(config)#inteface vlan1
Switch(config-if)#standby 1 authentication PASSWORD
  • Подпись пакетов хэшем MD5 от содержимого пакета и текстового ключа

Switch(config)#inteface vlan1
Switch(config-if)#standby 1 authentication md5 key-strink PASSWORD
  • По умолчанию все пакеты подписываются открытым паролем "cisco"

  • По сути не защищает от появления в канальной среде постоянного роутера с фиктивно внесенными данными, полученными в канальной среде через ARP. Используем DAI для таких случаев.

Отличия HSRPv2 от HSRPv1

  • Поддержка субсекундных таймеров

  • Поддержка IPv6

    • Использование других портов UDP (2029 вместо 1985)

    • Использование Multicast IP FF02::66

  • Поддержка до 4096 групп в канале

    • Virtual MAC HSRPv2 - 0000.0C9F.Fxxx, где xx - номер группы

    • Virtual MAC HSRPv1 - 0000.0C07.ACxx, где xx - номер группы

  • Использование отдельного Multicast IP, не конфликтующего с другими протоколами

Last updated