First-Hop Redundancy Protocol
Отказоустойчивость сети является ключевым компонентом проектирования сети. Отказоустойчивость с переадресацией на уровне 2 достигается путем добавления нескольких коммутаторов уровня 2 в топологию. Отказоустойчивость с переадресацией на уровне 3 достигается путем добавления нескольких путей или маршрутизаторов уровня 3.
NOTE: STP блокируют трафик между SW6 и SW5 на левой картинке и между SW6 и SW3 на правой картинке.
На рисунке показана концепция добавления отказоустойчивости путем использования нескольких L2 коммутаторов и маршрутизаторов слева или путем добавления отказоустойчивости с помощью нескольких L3 коммутаторов справа. В обоих случаях:
- Два устройства (172.16.1.2 и 172.16.1.3) могут быть шлюзом для PC.
- У SW6 есть два L2 линка, которые могут подключить PC к любому шлюзу.
PC может настроить свой шлюз как 172.16.1.2. Но что произойдет, если это устройство выйдет из строя? Та же проблема возникнет, если будет настроен другой шлюз. Как можно настроить хост с более чем одним шлюзом? Некоторые операционные системы поддерживают настройку нескольких шлюзов, а другие - нет. Обеспечение доступности шлюза для всех устройств очень важно.
Развертывание first-hop redundancy protocols (FHRPs) решает проблему конфигурирования нескольких шлюзов у PC. FHRP работает путем создания виртуального ip шлюза, который используется совместно на обоих L3 устройствах. Рассмотрим следующие FHRP:
- Hot Standby Router Protocol (HSRP)
- Virtual Router Redundancy Protocol (VRRP)
- Gateway Load Balancing Protocol (GLBP)
Object Tracking
FHRP разворачивают в сети для обеспечения надежности и высокой доступности, чтобы обеспечить балансировку нагрузки и возможность переключения между маршрутизаторами в случае сбоя одного. Так же было бы неплохо определить доступность маршрутов или состояние интерфейса , на который направляется трафик.
Object tracking предлагает гибкий и настраиваемый механизм для связи с FHRP и другими компонентами маршрутизации (например, условная установка статического маршрута). С помощью этой функции пользователи могут отслеживать определенные объекты в сети и предпринимать необходимые действия, когда изменение состояния любого объекта влияет на сетевой трафик.
На рисунке показана простая топология с тремя маршрутизаторами, которые обмениваются маршрутами с EIGRP и анонсируют свои loopback интерфейсы в EIGRP.
Отслеживание маршрутов в таблице маршрутизации осуществляется с помощью команды
track [object-number] ip route [route/prefix-length] reachability. Отслеживание состояния object tracking можно с помощью команды
show track [object-number].
На примере рассмотрим настройки R1 для отслеживания маршрута к loopback интерфейсу R3. Маршрут будет установлен в RIB R1, включено отслеживание.
Отслеживание состояния линейного протокола интерфейса осуществляется с помощью команды
track [object-number] interface [interface-id] line-protocol.
На следующем примере покажем как на R2 , будет настроен для отслеживания интерфейс Gi0/1, который смотрит в направлении R3. Интерфейс в состоянии up.
Падение интерфейса Gi0/1 на R2 должно перевести состояния track-ов на R1 и R2 в нерабочее. В следующем примере показано падение интерфейса Gi0/1 на R2. Обратите внимание, что состояние track-ов на R2 и R1 изменилось вскоре после падения интерфейса.
На следующем примере покажем текущие состояния track-ов на R1 и R2. У R1 больше нет маршрута к сети 192.168.3.3/32 в RIB, а интерфейс Gi0/1 на R2 находится в состоянии down
Object tracking работает с такими протоколами, как Hot Standby Router Protocol (HSRP), Virtual Router Redundancy Protocol (VRRP), and Gateway Load Balancing Protocol (GLBP), так что они реагируют на изменения состояние track. FHRP обычно отслеживает доступность WAN интерфейса или существование маршрута, изученного через этот next hop.
Hot Standby Router Protocol
Hot Standby Routing Protocol (HSRP) является проприетарным протоколом Cisco, который обеспечивает прозрачное переключение при отказе first-hop устройства, которое обычно действует как шлюз для хостов.
HSRP обеспечивает избыточность маршрутизации для IP-хостов в сети Ethernet, настроенной с использованием IP-адреса шлюза по умолчанию. Для включения HSRP требуется минимум два устройства: Одно устройство действует как активное устройство и занимается пересылкой пакетов, а другое действует как резерв, готовый взять на себя роль активного устройства в случае сбоя.
В сетевом сегменте виртуальный ip адрес настраивается на каждом HSRP интерфейсе, находящихся в одной HSRP группе. HSRP выбирает один из интерфейсов в качестве активного маршрутизатора HSRP. Наряду с виртуальным IP-адресом, для группы назначается виртуальный MAC-адрес. Активный маршрутизатор получает и пересылает пакеты, предназначенные для виртуального MAC-адреса группы.
При сбое активного HSRP маршрутизатора резервный HSRP маршрутизатор принимает на себя управление виртуальным IP-адресом и виртуальным MAC-адресом группы. Активным маршрутизатором HSRP выбирает маршрутизатор с наивысшим приоритетом (по умолчанию 100). В случае равного приоритета предпочтительным является маршрутизатор с самым высоким IP-адресом для сегмента сети.
NOTE: По умолчанию HSRP не поддерживает preemption, поэтому, когда активным становится маршрутизатор с более низким приоритетом, он автоматически не передает свой активный статус вышестоящему роутеру.
Интерфейсы с поддержкой HSRP отправляют и получают multicast UDP-based hello сообщения, чтобы обнаружить любой сбой и назначать активные и резервные маршрутизаторы. Если резервное устройство не получает сообщение приветствия или активное устройство не может отправить сообщение приветствия, резервное устройство со вторым по величине приоритетом становится активным HSRP роутером. Переход HSRP active между устройствами прозрачен для всех хостов в сегменте, потому что MAC-адрес перемещается вместе с виртуальным IP-адресом.
HSRP имеет две версии: Версия 1 и Версия 2. В таблице показаны некоторые различия между HSRPv1 и HSRPv2:
На рисунке показан пример топологии, где SW2 и SW3 являются текущими шлюзами для VLAN 10. VLAN 1 обеспечивает транзитный путь к WAN маршрутизаторам.
Следующие шаги показывают, как настроить виртуальный IP-шлюз HSRP:
Step 1.Определите HSRP instance командой standby [instance-id] ip [virtual ip-address]
Step 2.(Optional) Сконфигурируйте preemption HSRP роутера, чтобы позволить более предпочтительному маршрутизатору принимать статус активного маршрутизатора от подчиненного активного маршрутизатора HSRP. Включите preemption с помощью команды standby [instance-id] preempt.
Step 3.(Optional) Определите приоритет HSRP, используя команду standby [instance-id] priority [priority]. Приоритет - значение может быть от 0 до 255.
Step 4.(Optional) Определите HSRP MAC Address. MAC-адрес может быть установлен с помощью команды standby [instance-id] macaddress [mac-address]. В большинстве случаев используют автоматически сгенерированный MAC-адрес, но в некоторых случаях миграции MAC-адрес должен быть статически установлен для упрощения переходов.
Step 5.(Optional) Определите таймеры HSRP с помощью команды standby [instance-id] timer {seconds|msec milliseconds}. HSRP интервал может быть от 1 до 254 секунд или от 15 до 999 миллисекунд.
Step 6.(Optional) Установите аутентификацию HSRP с помощью команды standby [instance-id] authentication {text-password|text text-password|md5 {key-chain key-chain|key-string key-string}}.
NOTE: Можно создать несколько экземпляров HSRP для одного и того же интерфейса. Некоторые сетевые архитекторы настраивают половину хостов для одного instance и другую половину хостов для второго instance. Установка различных приоритетов для каждого instance-a позволяет сбалансировать нагрузку трафика между несколькими маршрутизаторами.
Посмотрим базовую конфигурацию HSRP для VLAN 10 на SW1 и SW2 с использованием HSRP instance 10 и VIP-шлюза 172.16.10.1. Обратите внимание, что после включения preemption, SW3 становиться active speaker, а SW2 становиться standby speaker.
Статус HSRP можно посмотреть с помощью команды show standby [interface-id] [brief]. Указание интерфейса ограничивает вывод определенным интерфейсом; это может быть полезно при устранении неполадок с большими объемами информации.
Рассмотрим вывод команды show standby brief, запущенную на SW2, которая включает интерфейсы с запущенным HSRP и группы. На выводе так же видны приоритет локального интерфейса, включен ли preemption, текущее состояние, адрес активного speaker, standby speaker’s адрес, виртуальный ip шлюза для standby group.
Вывод команды show standby без дополнительных параметров так же включает в себя количество изменений состояния для HSRP instance, а также время с момента последнего изменения состояния, таймеры и имя группы, как показано в примере ниже.
HSRP предоставляет возможность связать object tracking с приоритетом. Например, предположим, что трафик должен проходить через WAN-соединение SW2, когда это возможно. Трафик может маршрутизироваться SW3 на SW2, а затем на WAN-соединение SW2; однако сделав SW2 virtual ip шлюзом оптимизируем процесс. Но когда SW2 теряет связь с роутером провайдера, роль active speaker должна перейти на SW3.
Эта конфигурация выполняется следующим образом:
- Настройте tracked object to SW2’s WAN link (в этом примере VLAN 1).
- Измените приоритет SW2 на значение выше, чем SW3 (в данном случае 110).
- Сконфигурируйте SW2 так, чтобы приоритет понижался, если отслеживаемый интерфейса падает. Это достигается с помощью команды standby [instance-id] track [object-id] decrement [decrement-value]. Значение [decrement-value] должно быть достаточно высоким, чтобы при уменьшении приоритета на это значение, значение приоритета стало меньше чем у другого маршрутизатора HSRP.
Рассмотрим конфигурацию SW2, где отлеживаем интерфейс VLAN1 по параметру line protocol (т.е. отслеживаением падение WAN интерфейса). Увеличим HSRP приоритет до 110 (чтоб SW2 стал active). В случае падения интерфейса decrement уменьшает приоритет на 20. HSRP настраивается на LAN интерфейсе VLAN 10.
Посмотрим вывод команды show standby на SW2 при применении таких настроек.
Далее переводим интерфейс VLAN1 на SW2 в состояние down. Смотрим по логам, что состояние отслеживаемого изменилось сразу после выключения интерфейса, и вскоре после этого изменилась роль HSRP SW2. Приоритет уменьшился до 90 из-за сбоя, что сделало интерфейс SW2 менее предпочтительным, чем интерфейс SW3 (приоритет 100).
Virtual Router Redundancy Protocol
Virtual Router Redundancy Protocol (VRRP) является отраслевым стандартом и работает аналогично HSRP. Поведение VRRP настолько близко к поведению HSRP, что следует отметить следующие различия:
- Предпочтительный active router, управляющий шлюзом VIP, называется master router. Все остальные маршрутизаторы VRRP называются backup routers.
- VRRP включает preemption по умолчанию.
- MAC-адрес VIP шлюза использует структуру 0000.5e00.01xx, где xx отражает group ID в шестнадцатеричном формате.
- VRRP использует multicast address 224.0.0.18 для связи.
В настоящее время существует две версии VRRP:
- VRRPv2: Supports IPv4
- VRRPv3: Supports IPv4 and IPv6
В следующих разделах рассматриваются эти версии.
Устаревшая конфигурация VRRP
Ранняя конфигурация VRRP поддерживала только VRRPv2 и была неиерархической в своей конфигурации. Следующие шаги используются для настройки старых версий программного обеспечения с VRRP:
Step 1. Определите instance VRRP с помощью команды vrrp [instance-id] ip [vip-address]
Step 2. (Optional) Определите приоритет VRRP с помощью команды vrrp [instance-id] priority [priority]. Приоритет - это значение от 0 до 255.
Step 3.(Optional) Включите object tracking, чтобы приоритет уменьшался, когда object is false. Сделайте это с помощью команды vrrp [instance-id] track [object-id] decrement [decrement-value]. Значение декремента должно быть достаточно высоким, чтобы при уменьшении приоритета на значение декремента значение приоритета стало меньше чем у другого маршрутизатора.
Step 4.(Optional) Установите аутентификацию VRRP с помощью команды vrrp [instance-id] authentication {text-password|text text-password|md5 {key-chain key-chain|key-string key-string}}.
Маршрутизаторы R2 и R3 подключены к одному свичу интерфейсами Gi0/0 и находяться в сети 172.16.20.0/24. R2 и R3 используют VRRP для создания VIP-шлюза 172.16.20.1.
На примере посмотрим как после настройки VIP на R3, R3 вытесняет R2 и становиться the master.
Команда show vrrp [brief] предоставляет обновленную информацию о группе VRRP, а также другую соответствующую информацию для траблшутинга. Вывод очень похож на вывод с HSRP.
Далее детализируем состояние VRRP на R2.
Иерархическая конфигурация VRRP
Более новая версия программного обеспечения IOS XE обеспечивает конфигурацию VRRP в multi-address формате, который является иерархическим. Шаги для настройки иерархического VRRP следующие:
Step 1. Включите VRRPv3 на маршрутизаторе с помощью команды fhrp version vrrp v3.
Step 2.Определите instance VRRP с помощью команды vrrp [instance-id] address-family {ipv4 | ipv6}. При этом вы попадаете в режим настройки группы VRRP для дальнейшей настройки.
Step 3. (Optional) Измените VRRP на версию 2 с помощью команды vrrpv2. VRRPv2 и VRRPv3 не совместимы.
Step 4. Настройте шлюз VIP с помощью команды address [ip-address].
Step 5. (Optional) Определите VRRP приоритет с помощью команды priority [priority]. Приоритет - это значение от 0 до 255.
Step 6. (Optional) Включите object tracking, чтобы приоритет уменьшался, когда object is false. Сделайте это с помощью команды track [object-id] decrement [decrement-value]. Значение декремента должно быть достаточно высоким, чтобы при уменьшении приоритета на значение декремента значение приоритета стало меньше чем у другого маршрутизатора VRRP.
Пример показывает конфигурацию VRRP на паре коммутаторов, работающих под управлением IOS XE 16.9.2 для VLAN 22 (172.16.22.0/24). Конфигурация выглядит аналогично предыдущей конфигурации VRRP за исключением того, что она является иерархической. Ассоциированные параметры, такие как приоритет и отслеживание, вложены в instance VRRP.
Статус VRRP роутера можно просмотреть с помощью команды show vrrp [brief]. Вывод данных идентичен выводу данных устаревшей конфигурации VRRP, как показано ниже.
Global Load Balancing Protocol
Как следует из названия, Gateway Load Balancing Protocol (GLBP) обеспечивает избыточность шлюза и возможность балансировки нагрузки для сегмента сети. Он обеспечивает избыточность active/standby шлюзом и обеспечивает возможность балансировки нагрузки, гарантируя, что каждый член группы GLBP позаботиться о пересылки трафика на соответствующий шлюз.
У GLBP маршрутизаторов есть две роли:
- Активный виртуальный шлюз (AVG): Участвующие маршрутизаторы выбирают один AVG на группу GLBP, чтобы отвечать на ARP запросы для VIP. Например, когда локальный ПК отправляет запрос ARP для VIP, AVG отвечает на ARP запрос с виртуальным MAC-адресом AVF.
- Активный виртуальный forwarder (AVF): AVF маршрутизирует трафик, полученный от назначенных хостов. Уникальный виртуальный MAC-адрес создается AVG и присваивается AVF-у. AVF назначается хосту, когда AVG отвечает на ARP запрос с назначенным AVF’у виртуальным MAC-адресом. ARP ответы являются unicast и не прослушиваются другими хостами в этом широковещательном сегменте. Когда хост отправляет трафик на виртуальный MAC-адрес AVF, текущий маршрутизатор отвечает за его маршрутизацию в соответствующую сеть. AVF-ы также распознаются как instance-ы Fwd на маршрутизаторах.
GLBP поддерживает четыре активных AVF-а и один AVG на каждую группу GLBP. Маршрутизатор может быть AVG и AVF одновременно. В случае сбоя AVG не происходит прерывания трафика из-за передачи роли AVG на резервное устройство AVG. В случае отказа AVF другой маршрутизатор принимает на себя ответственность за пересылку для этого AVF, которая включает в себя виртуальный MAC-адрес для этого instance.
Следующие шаги подробно описывают, как настроить GLBP:
Step 1. Определите instance GLBP с помощью команды glbp [instance-id] ip [vip-адрес]
Step 2. (Optional) Настройте GLBP preemption, чтобы позволить более предпочтительному маршрутизатору принимать статус активного виртуального шлюза от подчиненного активного маршрутизатора GLBP. Preemption включается командой glbp [instance-id] preempt.
Step 3. (Optional) Определите приоритет GLBP с помощью команды glbp [instance-id] priority [priority]. Приоритет - это значение от 0 до 255.
Step 4. (Optional) Определите таймеры GLBP с помощью команды glbp [instance-id] timers {hello-seconds|msec hello-milliseconds} {hold-seconds|msec hold-milliseconds}.
Step 5. (Optional) Установите GLBP аутентификацию, используя команду glbp [instance-id] authentication {text text-password|md5 {key-chain key-chain|key-string key-string}}.
Настроим GLBP на SW2 и SW3 для VLAN 30 (172.16.30.0/24), с 172.16.30.1 в качестве VIP-шлюза. Настройка ниже. Обратите внимание, что первое syslog сообщение на SW2 предназначено для AVG, а второе сообщение предназначено для первого AVF (Fwd 1) для пары GLBP. Первое сообщение лога на SW3 предназначено для второго AVF (Fwd 2) для пары GLBP.
Команда show glbp brief показывает подробности состояния группы GLBP, включая интерфейс, группу, активную AVG, резервную AVG и статусы AVF-ов.
Выполняем эту команду на SW2 и SW3. Смотрим первую строчку вывода: Fwd - (прочерк), это означает что запись для AVG. Следующие две записи предназначены для AVF instances; они определяют, какое устройство активно для каждого AVF.
Команда show glbp отображает дополнительную информацию, включая таймеры, настройки preemption и статусы для AVG и AVF для группы GLBP. Посмотрим на вывод команды show glbp, запущенной на SW2. Обратите внимание, что MAC-адреса и IP-адреса интерфейса перечислены под group members. Их можно использовать для сопоставления данных в других частях вывода.
По умолчанию GLBP балансирует нагрузку трафика в round-robin режиме. Однако GLBP поддерживает три метода балансировки нагрузки трафика:
- Round robin: AVG использует по очереди MAC address каждого форвардера для ответа на virtual IP address.
- Weighted(взвешенный): Определяет весовые коэффициенты для каждого устройства в группе GLBP, чтобы определить соотношение балансировки нагрузки между устройствами. Это позволяет назначать больший вес более крупным маршрутизаторам, которые могут обрабатывать больше трафика.
- Host dependent(Зависит от хоста): Использует MAC-адрес хоста, чтобы решить, к какому виртуальному MAC-серверу пересылки перенаправить пакет. Этот метод гарантирует, что хост использует один и тот же виртуальный MAC-адрес до тех пор, пока количество виртуальных серверов пересылки не изменится в группе.
Метод балансировки нагрузки можно изменить с помощью команды glbp [instance-id] loadbalancing {host-dependent|round-robin|weighted}. Во weighted(взвешенном) методе балансировки AVG делит напрявляемый к AVF трафик в процентном соотношении к общему трафику. Увеличение веса на более мощных маршрутизаторах позволяет им брать больше трафика, чем меньшие устройства. Вес для роутера можно установить командой glbp [instance-id] weighting [weight]
В примере показано, как изменить балансировку нагрузки на weighted(взвешенный) и установить вес на 20 для SW2 и 80 на SW3, чтобы SW2 получал 20% трафика, а SW3 - 80% трафика.
Пример вывода ниже показывает, что метод балансировки нагрузки был изменен на weighted(взвешенный) и что для каждого AVF был установлен соответствующий вес.