Dormestmass: Админ — это состояние души

Маршрутизаторы cisco: Неравнозначная балансировка нагрузки при помощи статических маршрутов

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

Наверняка, большинство людей, знакомых хоть немного с данными маршрутизаторами, знают что они могут выполнять балансировку нагрузки ( load-balancing), если к точке назначения пакетов (destination) ведут несколько маршрутов. При этом, как правило, осуществляется равнозначная балансировка нагрузки, которая бывает двух типов: per packets или per destination. Тип балансировки зависит от типа switching на маршрутизаторе:
  • For process-switching—load balancing is on a per-packet basis and the asterisk (*) points to the interface over which the next packet is sent.
  • For fast-switching—load balancing is on a per-destination basis and the asterisk (*) points to the interface over which the next destination-based flow is sent.


Более подробно о балансировке можно прочитать в документе How Does Load Balancing Work?.

К примеру, если у Вас два канала на отделение и они разной пропускной способности, ну например один шире другого в 3 раза, то в случае попыток задействовать равнозначную балансировку (прописав 2 равнозначных маршрута на два удаленных адреса) Вас постигнут глюки :), т.к. при достаточно большой нагрузке один из каналов станет перегруженным и на нем начнут терятся пакеты. Единственным официальным выходом из этой ситуации является использование протокола динамической маршрутизации EIGRP, который позволяет определить отношение пропускной способности каналов друг к другу и полноценно использовать их одновременно на всю катушку.

Желающие почитать об этом могут обратится к документации на www.cisco.com, например How Does Unequal Cost Path Load Balancing (Variance) Work in IGRP and EIGRP?.

На самом деле, как оказалось, в маршрутизаторах cisco есть одна тонкость, позволяющая сделать неравнозначную балансировку нагрузки в случае статической маршрутизации…

Вся хитрость заключается в том, что при разделении трафика учитывается только адрес назначения; интерфейс, через который будет уходить этот трафик не учитывается. Т.е. на одном интерфейсе мы можем прописать несколько вторичных адресов, в которые мы завернем маршруты. Этим то и можно произвести неравнозначную балансировку. Конечно, это решение не очень гибко (до версии IOS 12.3 (T) максимальное количество эквивалентных маршрутов было 6, с версии 12.3© максимальное количество — 16), но решить большинство задач с его помощью можно.

Простой пример на тему (для наглядности использовал цвет):


router A:

interface Serial 0
 ip address 192.168.1.1 255.255.255.252
 ip address 192.168.2.1 255.255.255 252 secondary
 ip address 10.10.10.1 255.255.255.252 secondary

interface Serial 1
 ip address 172.16.16.1 255.255.255.252

interface FastEthernet 0/0
 ip address 10.0.0.1 255.255.255.0

ip route 10.0.1.0 255.255.255.0 192.168.1.2
ip route 10.0.1.0 255.255.255.0 192.168.2.2
ip route 10.0.1.0 255.255.255.0 10.10.10.2
ip route 10.0.1.0 255.255.255.0 172.16.16.2


router B:

interface Serial 0
 ip address 192.168.1.2 255.255.255.252
 ip address 192.168.2.2 255.255.255 252 secondary
 ip address 10.10.10.2 255.255.255.252 secondary

interface Serial 1
 ip address 172.16.16.2 255.255.255.252

interface FastEthernet 0/0
 ip address 10.0.1.1 255.255.255.0

ip route 10.0.0.0 255.255.255.0 192.168.1.1
ip route 10.0.0.0 255.255.255.0 192.168.2.1
ip route 10.0.0.0 255.255.255.0 10.10.10.1
ip route 10.0.0.0 255.255.255.0 172.16.16.1

Таким образом, мы у нас получается соотношение 3:1, т.е. например для трафика между 10.0.0.0/24 и 10.0.1.0/24 через router A три пакета будут уходить через Serial0, а четвертый через Serial1.

Желающие посмотреть на это чудо в действии, могут у себя выключить ip cef (fast-switching) и запустить дебаг debug ip packet. В дебаге можно увидеть на какой адрес форвардится каждый конкретный пакет.

Популярность: 10%

Post to Twitter

P.S.

Вы можете следить за обсуждением с помощью RSS 2.0 ленты.