Курс по сетевым технологиям
A A A

 

Общий обзор

Представим себе обычную клиентскую сеть:

Сеть без резервирования


Данная сеть не лишена недостатков. При выходе из строя  маршрутизатора  доступа в интернет лишаются все пользователи данной сети. 

Однако не стоит отчаиваться, так как  у нас есть решение. Можно подключить второй роутер параллельно первому. Причем он будет имеет идентичную конфигурацию с первоначальным шлюзом (за исключением IP адресов своих интерфейсов):

Сеть с резервированием

 

Теперь при отказе основного роутера все функции на себя возьмет резервный и обрыв связи никто не заметит.

 

Но как об этом узнают хосты пользователей? У них же настроен шлюз по умолчанию. 

Они об этом не узнают. Им достаточно знать IP адрес виртуального шлюза по умолчанию, который существует в виде группы основного и резервного маршрутизаторов.

В этой группе всегда активным является только один маршрутизатор. Когда хосты пользователей просятся в интернет активный роутер отправляет свой МАС адрес в ARP запросе от пользователей.  

Когда активный шлюз теряет связь с провайдером или выходит из строя, то об этом узнает резервный роутер и отправляет хостам пользователей свой МАС адрес. 

Как видно принцип резервирования достаточно прост.

 

Но кто управляет всем этим процессом? 

Для управления резервированием было разработано целое семейство протоколов First Hop Redundancy Protocol, FHRP. В него вошли протоколы HSRP, VRRP, GLBP. Опишем каждый из них в отдельности.



HSRP, описание и настройка

Hot Standby Router Protocol - разработка Cisco.  Все потенциальные шлюзы по умолчанию объединяются в группу. Таких групп может быть несколько. В группе активным является всегда только один маршрутизатор/коммутатор. В группе также имеется резервный роутер, который постоянно следит за активным маршрутизатором. И если тот выйдет из строя, то резервный шлюз сразу его заменит.

 

Как определяются активный и резервный маршрутизаторы? 

Все маршрутизаторы группы между собой общаются по адресу 224.0.0.2 (UDP порт 1985).  После подачи питания они начинают выборы на право быть активным и резервным маршрутизаторами. Побеждает тот, у которого больше приоритет (0 - 255). По умолчанию он равен 100. Если приоритеты у всех равны, то сравниваются IP адреса. Побеждает маршрутизатор с большим адресом. Он и становится активным и переводится в состояние Active. Следующий за ним маршрутизатор становится резервным и переводится в состоянии Standby. Все остальные маршрутизаторы переводятся в состояние Listen. Они ждут следующих выборов  в случае отказа активного маршрутизатора. 

Все маршрутизаторы последовательно проходят следующие состояния:

 

Disabled → Init → Listen → Speak → Standby → Active

 

Как резервный маршрутизатор узнает, что активный роутер уже не в “строю”? 

Активный  маршрутизатор каждые 3 с (Hello интервал) рассылает пакеты Hello, которые прослушивает резервный маршрутизатор. Если после 3 с не поступит пакет Hello, то запустится Dead таймер, который равен 10с. По истечении этого таймера резервный маршрутизатор переводится в состояние Active и выбирается новый резервный маршрутизатор.

 

А что происходит, когда “оживает” бывший активный маршрутизатор? 

Возможны 2 варианта: 

1-й вариант. Ничего не происходит пока не “умрет” действующий активный маршрутизатор. 

2-й вариант. “Оживший” роутер может снова переключится в состояние Active. Но для этого необходимо настроить функцию Preemtion на всех устройствах группы (об этом немного позже).


А если вдруг uplink одного из маршрутизаторов отключится. Что произойдет в данном случае? 

Если это произойдет на активном шлюзе, то все хосты останутся без интернета. Но и здесь есть решение. В HSRP предусмотрена возможность для отслеживания uplink интерфейса. Как только роутер обнаруживает, что его WAN/uplink интерфейс не работает, то сразу же понизит приоритет HSRP в своей группе. Резервное устройство сразу же это узнает и примет управление на себя, став активным шлюзом. Но для этого необходимо активировать функцию Preemtion. 

Настройка протокола очень проста, достаточно выполнить следующую команду:

Router(config-if)# standby номер_группы ip виртуальный_IP_адрес

 

Данную команду необходимо выполнить на всех роутерах группы. 

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

Router(config-if)# standby номер_группы priority приоритет

 

Для возврата “ожившего” маршрутизатора в активное состояние необходимо на нем выполнить команду:

Router(config-if)# standby номер_группы preemt

 

Для отслеживания WAN/Uplink интерфейса на случай его отказа необходимо выполнить команду на всех роутерах:

Router(config-if)# standby номер_группы track название_и_номер_интерфейса

 

Функция Preemtion должна быть включена на всех маршрутизаторах. 

Теперь посмотрим на состояние активного и резервного шлюзов с помощью следующих команд:

Router# show standby

 



Router# show standby brief



Протокол также поддерживает аутентификацию простым текстом:

Router(config-if)#  standby номер_группы authentication пароль

 

и MD5:

Router(config-if)#  standby номер_группы authentication md5 key-string пароль

 

 

VRRP, описание и настройка

Virtual Router Redundancy Protocol - альтернативный открытый HSRP протокол. Работает точно так же, как и HSRP. Протокол использует адрес 224.0.0.18 и отправляет пакеты Hello c интервалом в 1 с. Активный маршрутизатор называется master, все остальные - backup. Кроме того, все backup слушают master. Preemtion уже включена по умолчанию. 

Настройка идентична HSRP с небольшим отличием:

Router(config-if)# vrrp номер_группы виртуальный_IP_адрес_и_маска

 

Для просмотра информации о работе и настройках:

Router# show vrrp

 

 

GLBP, описание и настройка

Gateway Load Balancing Protocol - проприетарный протокол Cisco. В отличие от предыдущих протоколов позволяет еще и балансировать нагрузкой. Для этого создается группа из 4 активных маршрутизаторов, через которые и осуществляется балансировка.

 

Кто управляет процессом балансировки? 

В начале происходят выборы, по итогам которых выбирается главный шлюз. Данное устройство называется Active Virtual Gateway, AVG. Затем выбираются еще 3 ведомых  устройства, которые называются Active Virtual Forwarder, AVF.

Все роутеры группы, помимо общего виртуального IP адреса (VIP), имеют и индивидуальный виртуальный МАС адрес. Когда хост посылает ARP запрос с целью узнать МАС адрес шлюза, то AVG выдает один из виртуальных МАС адресов группы. Таким образом и осуществляется балансировка нагрузки. 

 

На основе чего происходят выборы? 

На основе приоритета (по умолчанию 100)  или IP адреса, если приоритеты равны.

 

Виртуальный МАС адрес тоже надо вручную настраивать? 

Нет, он настраивается автоматически и принимает значения 0007.b400.01xx, где хх означает номер AVG/AVF.

 

Что произойдет, если из строя выйдет AVG или AVF? 

Его место займет резервный  маршрутизатор. Все активные устройства обмениваются каждые 3 с Hello пакетами. Резервные роутеры тоже принимают пакеты и ждут своего часа. Если через 3 с пакет Hello не будет получен, то запустится Dead таймер, который равен 10 с. В качестве резервного (Standby) маршрутизатора выбирается один из AVF. Когда Standby шлюз становится Active, то снова выбирается Standby.

 

Какой IP адрес используется для обмена Hello пакетами? 

224.0.0.102,  UDP порт 3222.

 

По какому принципу AVG балансирует нагрузкой? 

GLBP поддерживает 3 режима балансировки: 

Round Robin (включен по умолчанию) - балансировка осуществляется равномерно между всеми устройствами. 

Weighted  - балансировка осуществляется по весу AVF. У кого больше вес тот и принимает большую нагрузку. 

Host dependent - используется, когда определенным хостам требуется постоянный МАС шлюза.

 

Настройка схожа с настройкой протоколов HSRP/VRRP:

Router(config-if)# glbp номер_групы  ip виртуальный_IP_адрес

 

Уже после данной команды начнут работать балансировка нагрузки и резервирование. Следует помнить, что preemtion в AVG по умолчанию выключена, а на AVF - включена. 

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

Router# show glbp brief

 

Вывод команды show glbp brief

 

Router# show glbp


Вывод команды show glbp


Как работает отслеживание WAN/Uplink интерфейса? 

Отслеживание работает немного по-другому в отличие от HSRP/VRRP. Каждому интерфейсу AVF присваивается определенный вес (по умолчанию 100, максимум -254). Кроме того, устанавливаются нижний (lower) и верхний (upper) пороги весов. Когда GLBP обнаружит, что интерфейс WAN/Uplink недоступен, то уменьшит вес GLBP интерфейса на определенное значение (по умолчанию 10). То есть, если было 100, то после отказа линии станет 90. Если уменьшенное значение веса окажется ниже порога lower, то маршрутизатор теряет статус AVF и не участвует в балансировке нагрузки, а также не принимает участие в выборах. Если после того, как WAN/Uplink интерфейс восстановится, то  восстановится и первоначальный вес GLBP интерфейса. Если этот вес окажется больше порога upper, то сможет снова стать AVF и принимать участие в выборах.

По умолчанию lower = 1, upper =100. 

Для отслеживания состояния интерфейса используется специальный track объект. Данному объекту указывается номер и тип интерфейса, а также механизм запуска. После этого данный track объект привязывается к определенной GLBP группе. Поддерживаются 2 механизма запуска: состояние интерфейса на канальном уровне (line-protocol)  и способность интерфейса передавать данные (ip routing).

То есть, если указать 1-й способ, то операционная система будет отслеживать состояние интерфейса на канальном и следовательно на физическом уровнях. Как только произойдет отказ интерфейса либо обрыв линии, то активируется механизм запуска и вес GLBP интерфейса уменьшится.

 

2-й способ отвечает за следующие состояния: 

  • Наличие IP адреса на интерфейсе. Это особенно актуально, если настроен DHCP клиент.
  • Состояние интерфейса на канальном уровне
  • Маршрутизация на интерфейсе. К примеру, у нас могут быть настроены виртуальные интерфейсы (Dialer, Tunnel). Сам канальный протокол может быть в состоянии UP, но маршрутизация не будет работать. В этом случае нам и сгодится данная опция отслеживания.

 

Попробуем настроить сначала 1-й способ.  

Создаем трэкинг объект:

Router(config)# track 1  interface serial 0/0 line-protocol

 

Затем определим вес самого AVF и его нижний и верхний пороги весов:

Router(config)# interface fastethernet 0/0

Router(config-if)# glbp 1 weighting 150 lower 130 upper 140

 

И привязываем трэкинг объект к GLBP группе c шагом уменьшения веса:

Router(config-if)# glbp 1 weighting track 1 decrement 30

 

Теперь, выключив интерфейс на основном маршрутизаторе, через 30 секунд  резервный шлюз изменит свой статус GLBP.

 

Для настройки 2-го способа достаточно в трэкинг объекте выбрать ip routing:

Router(config)# track 1 interface serial 0/0 ip routing

 

Вот и все. Кстати, трэкинг объекты можно использовать и в HSRP/VRRP