Со временем обрывки знаний и умений становится все труднее удержать в голове. Они расползаются по уголкам памяти заполняя все свободное место. Извлекать необходимое на свет становится все сложнее. Этот блог - рабочая записная книжка.

Tuesday, September 4, 2007

GLBP

Продолжая тему резервирования...

0. Официальная документация

http://cisco.com/en/US/products/sw/iosswrel/ps1839/products_white_paper09186a00801541c8.shtml
http://cisco.com/en/US/products/ps6600/products_data_sheet0900aecd803a546c.html
http://cisco.com/en/US/products/ps6600/prod_presentation0900aecd801790a3.html


1. Зачем это нужно и как это работает
Зачем нужен еще один протокол? В отличии от HSRP который работает в режиме Active/Standby GLBP работает в режиме Active/Active.
Это означает, что дополнительно к функциям резервирования реализуемым HSRP добавилась возвожность реализовать Load Sharing.

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

Максимальное количество рутеров в одной GLBP группе равно четырем.
Количество GLBP групп на одном интерфейсе не должно превышать 1024. Соответственно от 0 до 1023.

AVG - Active Virtual Gateway - главный рутер, основная задача присвоение участвующим рутерам различных виртуальных МАС адресов и ответ на ARP запросы касающиеся виртуального IP.
Дополнительно выбирается Standby Virtual Gateway который перебирает на себя функции AVG в случае отказа последнего.
AVF - Active Virtual Forwarder - занимается непосредственно пересылкой клиентского трафика.

2. Минимальная настройка
Команды вводятся в режиме конфигурации интерфейса

// Основной адрес интерфейса
RouterA(config-if)# ip address 10.0.0.254 255.255.255.0

// Группа в пределах которой работает GLBP и "разделяемый" адрес.
RouterA(config-if)# glbp 20 ip 10.0.0.1
Также есть возможность использовать несколько адресов в пределах конкретной группы. Для этого необходимо использовать ключевое слово secondary после ip адреса.

3. Дополнительные команды
// Приоритет при выборе AVG. Значение по умолчанию - 100.
RouterА(config-if)# glbp 20 priority 254

// Обращать внимание на приоритет при перераспределении ролей AVG/AVF. Действует аналогично HSRP
RouterA(config-if)# glbp 20 preempt

// Алгоритм отвечающий за порядок ответа на
ARP запросы. Может быть:
none - в этом случае балансировка не выполняется. AVG всегда отвечает на ARP запросы только своим МАС. Т.е. работаем как обычный HSRP.

round-robin - Крутить по кругу. По истечению тайм-аута хранения МАС адреса у клиента он может получить новый МАС в ответ от AVG. Значение по умолчанию.

host-dependent
-
По истечению тайм-аута хранения
МАС адреса у клиента он гарантированно получит тот же МАС от AVF в ответ на новый запрос. Конечно, до тех пор пока состояние группы неизменно.
Используется в том случае если на рутерах входящих в GLBP группу осуществляется трансляция адресов (NAT), это гарантирует что текущие сессии не потеряются.

weighted
- Разделять полосу основываясь на весах весах каждого рутера.

Для использования весов необходимо задать их в конфигурации для каждого рутера участвующего в группе с помощью команды:


RouterA(config-if)# glbp 10 weighting 70
Работает по простому принципу. Если на другом рутере в той же группе задать вес 140, то распределение будет один к двум. Необходимо учитывать, что это не распределение трафика, а распределение хостов.

// Пример
RouterA(config-if)# glbp 20 load-balancing
round-robin

// Команда аналогичная
HSRP, в ситауции когда рутер с большим приоритетом для данной группы появляется в сети. Отдавать ли ему роль AVG или нет. И если отдавать, то сколько подождать.
Router(config-if)# glbp 20 forwarder preempt delay minimum 30

// tracking. Первым делом нужно создать объект трекинга. Сделать это можно используя следующую команду:
Router(config)# track 100 interface Serial 2/0 line-protocol

todo: разобратся с трекингом подробнее

// Применяем трекинг к
glbp. Т.е. в glbp группе 20 отслеживать объект 100 и в случае падения уменьшать приоритет на 20.
Router(config-if)# glbp 20 weighting track 100 decrement 200


При этом что интересно, если один товарищ устал и оставшимся приходится работать за себя и за того парня, AVG ответственнен за пересылку трафика ранее ходившего через упавший AVF. Т.е. отвечает на
ARP запросы по его адресам тоже. Тут мне видится такая штука: видимо при использовании в GLBP группе более чем двух активных AVF полезно изначально (с помощью весов) занизить трафик идущий через AVG, поскольку в случае поломки ему и так приходится работать за двоих.


4. Команды диагностики
Легче всего проверить как это выглядит со стороны клиента. Например в данном случае используется алгорит балансировки round-robin. Вывод команды sh arp с двух
клиентов.


// Главное поле: Hardware Addr.
Client#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.10.10.1 6 0007.b400.1401 ARPA FastEthernet0/0

client1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.10.10.1 4 0007.b400.1402 ARPA FastEthernet0/0



// Еще одна полезная команда
RouterA# sh glbp br
Interface Grp Fwd Pri State Address Active router Standby route
Fa0/0 20 - 254 Active 10.10.10.1 local 10.10.10.4
Fa0/0 20 1 7 Active 0007.b400.1401 local -
Fa0/0 20 2 7 Active 0007.b400.1402 local -

No comments: