Настройка балансировки трафика на каналах с одинаковой стоимостью
Топология сети:
В EIGRP есть крайне полезная опция, которая называется балансировка трафика. Это бывает полезно в случае, когда нам необходимо пустить весь трафик, или его часть по определенному каналу.
Исходная конфигурация устройств следующая: на интерфейсах настроены IP-адреса, все адреса анонсируются EIGRP-соседу, автоматическое суммирование отключено.
R1:
R1#sh run | section router eigrp 100
router eigrp 100
network 1.0.0.0
network 2.0.0.0
network 10.0.0.0
eigrp router-id 1.1.1.1
no auto-summary
R2:
R2#sh run | sec router eigrp 100
router eigrp 100
network 1.0.0.0
network 2.0.0.0
network 20.0.0.0
eigrp router-id 2.2.2.2
no auto-summary
После того, как между устройствами установлено EIGRP-соседство, смотрим список маршрутов, полученных по EIGRP от R1:
R2#sh ip route eigrp | begin Gateway
Gateway of last resort is not set
D 10.0.0.0/8 [90/2195456] via 2.2.2.1, 00:07:21, Serial1/0
[90/2195456] via 1.1.1.1, 00:07:21, Serial1/1
Разберем более подробно верхнюю строку:
Из таблицы маршрутизации видно, что до сети 10.0.0.0/8 у нас есть 2 маршрута с одинаковой метрикой и административной дистанцией (FD). Теперь с R2 выполним трассировку до адреса 10.1.1.1:
R2#traceroute 10.1.1.1
Type escape sequence to abort.
Tracing the route to 10.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 1.1.1.1 10 msec
2.2.2.1 11 msec *
Повторим данную процедуру:
R2#traceroute 10.1.1.1
Type escape sequence to abort.
Tracing the route to 10.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 2.2.2.1 10 msec
1.1.1.1 10 msec *
Как видно из трассировки, первый трейс пошел через интерфейс s1/1, а второй через s1/0. EIGRP, понимая, что между ними 2 равноправных маршрута, посылает трафик поочередно через разные каналы в сторону R1.
По умолчанию EIGRP может добавлять в таблицу маршрутизации до 4 маршрутов с одинаковой стоимостью для каждой подсети. Изменить количество маршрутов можно, используя команду maximum-path number (число number должно быть в диапазоне от 1 до 32) в режиме конфигурации eigrp:
R2(config)#router eigrp 100
R2(config-router)#maximum-path 1
R2(config-router)#end
R2#
Смотрим, что вышло:
R2#sh ip route eigrp | begin Gateway
Gateway of last resort is not set
D 10.0.0.0/8 [90/2195456] via 1.1.1.1, 00:06:24, Serial1/1
В таблицу маршрутизации действительно попал всего лишь один маршрут, но в таблице топологии по-прежнему 2 варианта маршрутов:
R2#sh ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(2.2.2.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 2.0.0.0/8, 1 successors, FD is 2169856
via Connected, Serial1/0
P 10.0.0.0/8, 1 successors, FD is 2195456
via 1.1.1.1 (2195456/281600), Serial1/1
via 2.2.2.1 (2195456/281600), Serial1/0
P 1.0.0.0/8, 1 successors, FD is 2169856
via Connected, Serial1/1
P 20.0.0.0/8, 1 successors, FD is 281600
via Connected, Ethernet0/0
Настройка балансировки трафика на каналах с разной стоимостью
В данном случае топология и IP-адресация остается неизменной. Поменяем только «стоимость» канала.
R2(config)#int s1/0
R2(config-if)#bandwidth 800
Примечание: команда bandwidth несет исключительно информационный характер для протоколов динамической маршрутизации. Скорость на интерфейсе она не ограничивает.
После этого смотрим таблицу маршрутизации:
R2#sh ip route eigrp | begin Gateway
Gateway of last resort is not set
D 10.0.0.0/8 [90/2195456] via 1.1.1.1, 00:00:17, Serial1/1
Теперь видно, что в таблицу маршрутизации попал «лучший» маршрут, с более широкой пропускной способностью.
Глянем топологию eigrp для сети 10.0.0.0/8:
R2#sh ip eigrp topology | section 10.0.0.0/8
P 10.0.0.0/8, 1 successors, FD is 2195456
via 1.1.1.1 (2195456/281600), Serial1/1
via 2.2.2.1 (3737600/281600), Serial1/0
По таблицы топологии видно, что лучшая административная дистанция (FD, возможное расстояния) = 2195456, именно поэтому путь через s1/1 попал в таблицу маршрутизации.
Теперь давайте попробуем сделать так, чтобы оба маршрута попали в таблицу маршрутизации, делается это командой variance в режиме настройки роутера:
R2(config)#router eigrp 100
R2(config-router)#variance 2
Давайте разберемся, для чего нужна variance: как известно, в таблицу маршрутизации попадает лучший маршрут, но в реальной жизни значения метрики маршрутов бывают близки, но все же не равны, поскольку она может исчисляться миллионами, и полное совпадение метрик маловероятно. Для того, чтобы близкие по стоимости маршруты могли попадать в таблицу маршрутизации и используется команда variance — она позволяет считать равными маршруты с относительно близкими значениями метрики, а следовательно, добавлять в таблицу маршрутизации несколько маршрутов неравной метрики к той же подсети.
В режиме конфигурирования EIGRP с помощью команды variance multiplier можно указать число в диапазоне от 1 до 128 (параметр вариации метрики). Маршрутизатор после указания variance умножает FD (метрику оптимального маршрута) на это число и получает диапазон метрики маршрутов, которые могут быть добавлены в таблицу маршрутизации.
В нашем примере multiplier = 2, это означает, что диапазон метрик будет от 2195456 до 2195456*2=4390912. В таком случае второй маршрут до сети 10.0.0.0/8 с метрикой 3737600 попадает в указанный нами диапазон, что позволяет ему быть успешно добавленным в таблицу маршрутизации:
R2#sh ip route eigrp | begin Gateway
Gateway of last resort is not set
D 10.0.0.0/8 [90/3737600] via 2.2.2.1, 00:00:53, Serial1/0
[90/2195456] via 1.1.1.1, 00:00:53, Serial1/1
Отсюда видно, что вопреки разной стоимости путей в таблицу маршрутизации попали оба маршрута до сети 10.0.0.0/8