Ключевые слова:cisco, balance, route, (найти похожие документы)
From: Roman Shramko <rshramko@gmail.com.>
Date: Mon, 15 Nov 2008 17:02:14 +0000 (UTC)
Subject: Cisco: Неравнозначная балансировка нагрузки при помощи статических маршрутов
Оригинал: http://blog.ronix.net.ua/2008/10/ciso.html
Многие, прочитав название поста, решат что автор, мягко говоря, некомпетентен. Однако, не
спешите судить поспешно, вначале дочитайте данную заметку до конца :). В последнее время
мне очень понравилось собирать информацию о недокументированных возможностях (в ряде
случаев -- глюках) маршрутизаторов cisco. Иногда наденный материал настолько мне интересен,
что я решаюсь запостить его сюда.
Наверняка, большинство людей, знакомых хоть немного с данными маршрутизаторами, знают что
они могут выполнять балансировку нагрузки ( load-balancing), если к точке назначения
пакетов (destination) ведут несколько маршрутов. При этом, как правило, осуществляется
равнозначная балансировка нагрузки, которая бывает двух типов: per packets или per
destination. Балансировка нагрузки по месту назначения (per destination) является более
предпочтительной.
Если немного отвлечся от темы... В жизни, упоминание о балансировке per packet я встречал
только в документации. Даже приставание к сертифицированным инструкторам cisco с вопросами
о балансировке не пролило свет на эту ситуацию. Так что реально я видел работающей только
балансировку per destination. Но это так, мысли в слух...
К примеру, если у Вас два канала на отделение и они разной пропускной способности, ну
например один шире другого в 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. В дебаге можно увидеть на какой адрес форвардится каждый
конкретный пакет.