ECMP (англ. Equal-cost multi-path routing) - это механизм маршрутизации, при котором пересылка пакетов в один пункт назначения может выполняться по нескольким путям. Равнозначность маршрутов определяется значениями preference и cost. Данный механизм позволяет распределять трафик между несколькими равнозначными маршрутами, повышая эффективность использования доступных каналов и суммарную пропускную способность.
Балансировка трафика между маршрутами ECMP выполняется на уровне сессий. В качестве сессии в передаваемом трафике учитываются значения таких полей заголовка IP как: Source Address, Destination Address и Protocol. Если данные параметры совпадают для транзитного трафика, то трафик будет маршрутизироваться в рамках одной сессии в одном направлении.
Поддержка ECMP в ESR
В сервисных маршрутизаторах ESR ECMP поддержан для таких протоколов динамической маршрутизации как OSPF и BGP. По умолчанию для OSPF количество next-hop'ов в одном multipath маршруте равно 16, для BGP - 1. Начиная с версии ПО 1.34.6, в ESR поддержана настройка static multipath-маршрутов. Максимальное число next-hop в одном multipath-маршруте для OSPF - 32, для BGP -16, для static multipath-маршрута - 10.
Настройка ECMP для протокола BGP применяется глобально как к iBGP, так и к eBGP.
Если достигнуто максимальное количество next-hop для одного multipath-маршрута, остальные next-hop для этого multipath-маршрута не отображаются в таблице маршрутизации FIB.
| Протокол маршрутизации | Количество next-hop в одном multipath-маршруте по умолчанию | Максимальное количество next-hop в одном multipath-маршруте |
|---|---|---|
| OSPF | 16 | 32 |
| (i/e)BGP | 1 | 16 |
| Static | - | 10 |
Пример отображения multipath маршрутов в таблице маршрутизации в случае использования OSPF:
ESR# show ip route Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - FIB route O * 192.0.2.1/32 [150/30] multipath [ospf1 01:10:43] (1.1.1.1) via 198.51.100.2 on gi1/0/1.2 weight 1 via 198.51.100.6 on gi1/0/1.3 weight 1 via 198.51.100.10 on gi1/0/1.4 weight 1 via 198.51.100.14 on gi1/0/1.5 weight 1 via 198.51.100.18 on gi1/0/1.6 weight 1 via 198.51.100.22 on gi1/0/1.7 weight 1
Настройка multipath-маршрутов в ESR
Пример для OSPF
Схема:
Задача:
На маршрутизаторе ESR необходимо ограничить количество multipath маршрутов до 2-х.
Исходные данные:
В исходной схеме от маршрутизаторов Router 2, Router 3, Router 4 анонсируется маршрут до подсети 192.0.2.0/24 с одинаковым cost на маршрутизатор ESR. По умолчанию для OSPF включено 16 multipath маршрутов. В результате чего в таблице маршрутизации есть 3 multipath маршрута:
ESR# show ip route Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - FIB route O * 192.0.2.0/24 [150/30] multipath [ospf1 02:33:15] (1.1.1.1) via 203.0.113.14 on gi1/0/1.10 weight 1 via 203.0.113.18 on gi1/0/1.20 weight 1 via 203.0.113.22 on gi1/0/1.30 weight 1
Конфигурация маршрутизатора ESR с выключенным firewall:
ESR# show running-configrouter ospf log-adjacency-changesrouter ospf 1 router-id 203.0.113.1 area 0.0.0.0 enable exit enableexit interface gigabitethernet 1/0/1.10 ip firewall disable ip address 203.0.113.13/30 ip ospf instance 1 ip ospfexitinterface gigabitethernet 1/0/1.20 ip firewall disable ip address 203.0.113.17/30 ip ospf instance 1 ip ospfexitinterface gigabitethernet 1/0/1.30 ip firewall disable ip address 203.0.113.21/30 ip ospf instance 1 ip ospfexit
Решение задачи:
Для изменения количества next-hop multipath-маршрутов для OSPF необходимо использовать команду maximum-paths при настройке OSPF-процесса. Произведем необходимые изменения в конфигурации в соответствии с условиями примера:
ESR# configureESR(config)# router ospf 1ESR(config-ospf)# maximum-paths 2ESR(config-ospf)# endESR# commitESR# confirm
В результате в таблице маршрутизации будут 2 multipath маршрута:
ESR# show ip route Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - FIB route O * 192.0.2.0/24 [150/30] multipath [ospf1 02:37:32] (1.1.1.1) via 203.0.113.14 on gi1/0/1.10 weight 1 via 203.0.113.18 on gi1/0/1.20 weight 1
Пример для BGP
Схема:
Задача:
Настроить ECMP с ограничением до 2 multipath маршрутов.
Исходные данные:
В исходной схеме маршрутизаторы ESR, Router 1 и Router 2 находятся в одной AS 1. От маршрутизаторов Router 1 и Router 2 анонсируется маршрут до подсети 192.0.2.0/24 с одинаковым cost на маршрутизатор ESR:
ESR# show bgp ipv4 unicastStatus codes: u - unicast, b - broadcast, m - multicast, a - anycast * - valid, > - bestOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> u 192.0.2.0/24 198.51.100.2 -- 100 0 i* u 192.0.2.0/24 203.0.113.2 -- 100 0 i
Поскольку multipath для BGP по умолчанию выключен (maximum-paths = 1), то в таблице маршрутизации будет 1 наилучший маршрут до подсети 192.0.2.0/24:
ESR# show ip route Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - FIB route B * 192.0.2.0/24 [170/0] via 198.51.100.2 on gi1/0/1 [bgp1 04:03:09] (i)C * 198.51.100.0/30 [0/0] dev gi1/0/1 [direct 02:40:37]C * 203.0.113.0/30 [0/0] dev gi1/0/2 [direct 04:00:27]
Конфигурация маршрутизатора с выключенным firewall:
ESR# show running-configrouter bgp log-neighbor-changesrouter bgp 1 router-id 198.51.100.1 neighbor 198.51.100.2 remote-as 1 address-family ipv4 unicast enable exit enable exit neighbor 203.0.113.2 remote-as 1 address-family ipv4 unicast enable exit enable exit enableexit interface gigabitethernet 1/0/1 ip firewall disable ip address 198.51.100.1/30exitinterface gigabitethernet 1/0/2 ip firewall disable ip address 203.0.113.1/30exit
Решение задачи:
Для изменения количества next-hop multipath-маршрутов (i/e)BGP необходимо использовать команду router bgp maximum-paths. Произведем необходимые изменения в конфигурации в соответствии с условиями примера:
ESR# configureESR(config)# router bgp maximum-paths 2ESR(config)# endESR# commitESR# confirm
В результате в таблице маршрутизации появится multipath маршрут:
ESR# show ip route Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - FIB route B * 192.0.2.0/24 [170/0] multipath [bgp1 04:03:09] via 198.51.100.2 on gi1/0/1 weight 1 via 203.0.113.2 on gi1/0/2 weight 1C * 198.51.100.0/30 [0/0] dev gi1/0/1 [direct 02:40:37]C * 203.0.113.0/30 [0/0] dev gi1/0/2 [direct 04:00:27]
Пример статических multipath-маршрутов
Схема:
Задача:
Настроить статических multipath маршрут по умолчанию через двух провайдеров ISP1 и ISP2.
Исходные данные:
Конфигурация маршрутизатора с выключенным firewall:
ESR# show running-config interface gigabitethernet 1/0/1 ip firewall disable ip address 203.0.113.2/30exitinterface gigabitethernet 1/0/2 ip firewall disable ip address 203.0.113.6/30exit
Решение задачи:
Настроим статический multipath маршрут по умолчанию через gateway 203.0.113.1 и 203.0.113.2
ESR# configure terminal ESR(config)# ESR(config)# ip route multipath 0.0.0.0/0ESR(config-multipath-route)# gateway 203.0.113.1ESR(config-multipath-route)# gateway 203.0.113.5 ESR(config-multipath-route)# endESR# commit ESR# confirm
В результате в таблице маршрутизации будет статический multipath маршрут по умолчанию:
ESR# show ip routeCodes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route, B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route, i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area, H - NHRP, * - FIB routeS * 0.0.0.0/0 [1/0] multipath [static 02:56:50] via 203.0.113.1 on gi1/0/1 weight 1 via 203.0.113.5 on gi1/0/2 weight 1C * 203.0.113.4/30 [0/0] dev gi1/0/2 [direct 02:56:49] C * 203.0.113.0/30 [0/0] dev gi1/0/1 [direct 02:56:49]


