Cisco / [Из песочницы] Балансировка нагрузки между двумя каналами в динамической маршрутизации EIGRP

в 7:35, , рубрики: balancing, Cisco, eigrp, network, routing, метки: , , , ,

Рад приветствовать всех читателей.
В соответствии с новыми требованиями, на работе стали создаваться резервированные каналы связи, при первичной настройке которых, балансировка траффика в EIGRP не заработала, пришлось разбираться с этим интересным вопросом.

Схема сетиimage

Дано:
У нас есть сеть 172.18.230.224/27, назовем её «нашей сетью», из нее передаются очень важные данные в две других сети ID и IE соответственно. Передача должна осуществляться по резервированным каналам связи, то есть у нас есть основной и резервный каналы. Два интересных нюанса:
1) В сеть ID настроена статическая маршрутизация и, sla-monitors и ip load-sharing per-packet, балансировка работает исправно;
2) В сети IE работает протокол динамической маршрутизации EIGRP и при первичной настройке балансировка не заработала, а почему, разберемся далее.

Итак, посмотрим в чем дело по шагам:

1) Посмотрим на топологию EIGRP со второго в маршрутизатора в сеть IE командой: sh ip eigrp topology 192.168.10.0

2811-2#sh ip eigrp topology 192.168.10.0
IP-EIGRP (AS 1): Topology entry for 192.168.10.0/24
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 40512000
Routing Descriptor Blocks:
192.168.199.205 (Serial0/0/0:1), from 192.168.199.205, Send flag is 0x0
Composite metric is (40514560/28160), Route is External
Vector metric:
Minimum bandwidth is 64 Kbit
Total delay is 20100 microseconds
Reliability is 255/255
Load is 123/255
Minimum MTU is 1500
Hop count is 1
External data:
Originating router is 192.168.1.100
AS number of route is 0
External protocol is Connected, external metric is 0
Administrator tag is 0 (0x00000000)
192.168.198.98 (FastEthernet0/1), from 192.168.198.98, Send flag is 0x0
Composite metric is (40517120/40514560), Route is External
Vector metric:
Minimum bandwidth is 64 Kbit
Total delay is 20200 microseconds
Reliability is 255/255
Load is 11/255
Minimum MTU is 1500
Hop count is 2
External data:
Originating router is 192.168.0.100
AS number of route is 0
External protocol is Connected, external metric is 0
Administrator tag is 0 (0x00000000)

2) Посмотрим на топологию EIGRP с первого в маршрутизатора в сеть IE командой: sh ip eigrp topology 192.168.10.0

2811-1#sh ip eigrp topology 192.168.10.0/24
IP-EIGRP (AS 1): Topology entry for 192.168.10.0/24
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 40514560
Routing Descriptor Blocks:
192.168.199.201 (Serial0/0/0:1), from 192.168.199.201, Send flag is 0x0
Composite metric is (40514560/28160), Route is External
Vector metric:
Minimum bandwidth is 64 Kbit
Total delay is 20100 microseconds
Reliability is 255/255
Load is 11/255
Minimum MTU is 1500
Hop count is 1
External data:
Originating router is 192.168.0.100
AS number of route is 0
External protocol is Connected, external metric is 0
Administrator tag is 0 (0x00000000)
192.168.198.99 (FastEthernet0/1), from 192.168.198.99, Send flag is 0x0
Composite metric is (40517120/40514560), Route is External
Vector metric:
Minimum bandwidth is 64 Kbit
Total delay is 20200 microseconds
Reliability is 255/255
Load is 123/255
Minimum MTU is 1500
Hop count is 2
External data:
Originating router is 192.168.1.100
AS number of route is 0
External protocol is Connected, external metric is 0
Administrator tag is 0 (0x00000000)

Здесь мы видим bandwith (пропускная способность) и delay (задержка) для локального интерфейса S0/0/0:1 и интерфейса Fa0/1, через который анонсируется второй маршрут до сети IE. Метрика рассчитывается на основании вышеупомянутых коэффициентов K1-K5, а также bandwith (пропускная способность) и delay (задержка). Видим, что у первого прямого маршрута метрика 40514560, у второго через внутренний интерфейс и второй маршрутизатор метрика 40517120, следовательно можно предположить, почему не работает балансировка: первым маршрутизатором используется только первый маршрут, так как у него наилучшая метрика, а второй маршрут является резервным, и он заработает только в случае, если основной канал «упадет».
Проверим нашу догадку

2811-1#sh ip route 192.168.10.0
Routing entry for 192.168.10.0/24
Known via "eigrp 1", distance 170, metric 40514560, type external
Redistributing via eigrp 1
Last update from 192.168.199.209 on Serial0/0/0:1, 3d06h ago
Routing Descriptor Blocks:
* 192.168.199.209, from 192.168.199.209, 3d06h ago, via Serial0/0/0:1
Route metric is 40514560, traffic share count is 1
Total delay is 20100 microseconds, minimum bandwidth is 64 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 7/255, Hops 1

Мы были правы: в таблице маршрутизации у первого маршрутизатора только один маршрут через основной канал.

Решение:

Конечно вариантов решения данной проблемы может быть несколько, но я уже намекнул что метрика рассчитывается на основе таких параметров как коэффициенты K1-K5, пропускной способности и задержки. Может быть, наше решение не будет самым элегантным, но мы постараемся подобрать такую задержку на интерфейсе S0/0/0:1 второго маршрутизатора, чтобы метрики двух маршрутов первого маршрутизатора совпадали.

Краткая теоретическая спарвка:

Общая метрика вычисляется с помощью значений bandwidth (пропускной способности) и delay (задержки). Bandwidth вычисляется по формуле:
bandwidth = (10000000/bandwidth(m)) * 256
где bandwidth(m) – это минимальная пропускная способность канала на всем пути следования к сети назначения.
Delay:
delay = delay(s) * 256 (в десятках микросекунд)
где delay(s) – это суммарная задержка на всех маршрутизаторах по пути следования к сети назначения.
Эти значения использует протокол EIGRP для подсчета метрики:
Metric=[K1*bandwidth+(K2* bandwidth)/(256-load)+K3*delay]*[K5/(reliability+K4)]
Если коэффициенты не менялись, то формула получает вид:
Metric=K1*bandwidth+ K3*delay
Количество переходов в протоколе EIGRP равно 224, чего более чем достаточно для современных сетей.

Расчет:

Для определения значений коэффициентов, используемых для расчета метрики в EIGRP воспользуемся командой: sh ip protocols
2811-1#sh ip protocols
Routing Protocol is "eigrp 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
EIGRP maximum hopcount 100
EIGRP maximum metric variance 1
Redistributing: connected, eigrp 1
EIGRP NSF-aware route hold timer is 240s
Automatic network summarization is not in effect
Maximum path: 2
Routing for Networks:
192.168.198.98/32
192.168.199.202/32
Routing Information Sources:
Gateway Distance Last Update
192.168.199.201 90 22:50:37
192.168.198.99 90 22:50:29
Distance: internal 90 external 170

Видим, что вЕса коэффициентов K1=1, K2=0, K3=1, K4=0, K5=0

Так как K2=K4=K5=0 => Metric=K1*bandwidth+ K3*delay, где Bandwidth = 10 ^ 7 / Slowest(B) (in Kbps), Slowest(B) — наименьшая пропускная способность на пути маршрута; Delay = Summa(D) / 10, Summa(D) — сумма всех задержек на пути.

(10^7/64 + 20100 / 10)*256 = (10^7 / 64 + (200+D2)/10)*256
(поделим обе части на 256 и взаимно уничтожим 10^7/64)
20100 = 200 + D2
D2=19900 данное число необходимо поделить на 10, чтобы получить необходимую задержку для S0/0/0:1
D2=1990

Примечание: D = D1 + D2, где D1 сумма задержек на двух интерфейсах Fa0/1, которые соединяют между собой маршрутизаторы и D1=100+100=200. Задержку на интерфейсе посмотрели командой show int fa0/1

Осталось совсем немного. Заходим на второй маршрутизатор в режиме глобальной конфигурации набираем команды:
int S0/0/0:1
delay 1990
*Не забываем выставить для процессов eigrp на маршрутизаторах maximum-paths 2

Результат:

На 2811-1 появился новый маршрут через интерфейс FastEthernet0/1 и метрики у двух маршрутов совпадают -----> балансировка работает:
2811-1#sh ip route 192.168.10.0
Routing entry for 192.168.10.0/24
Known via "eigrp 1", distance 170, metric 40514560, type external
Redistributing via eigrp 1
Last update from 192.168.198.99 on FastEthernet0/1, 00:14:09 ago
Routing Descriptor Blocks:
* 192.168.199.201, from 192.168.199.201, 00:14:09 ago, via Serial0/0/0:1
Route metric is 40514560, traffic share count is 1
Total delay is 20100 microseconds, minimum bandwidth is 64 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 39/255, Hops 1
192.168.198.99, from 192.168.198.99, 00:14:09 ago, via FastEthernet0/1
Route metric is 40514560, traffic share count is 1
Total delay is 20100 microseconds, minimum bandwidth is 64 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 35/255, Hops 2

Нагрузка основного канала:
image

Нагрузка резервного канала:
image

Послесловие:
данное решение может показаться не совсем логичным и изрядно усложняющим дальнейший траблшуттинг, я с этим тезисом полностью соглашусь. Для людей которые не имеют большого опыта работы с CISCO, я думаю, моя статья окажется полезной. Буду рад комментариям и предложениям.

Автор: RiddleRus

Поделиться

* - обязательные к заполнению поля