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