ECMP (англ. Equal-cost multi-path routing) - это метод маршрутизации, при котором пересылка пакетов в один пункт назначения может выполняться по нескольким путям (маршрутам) с равным preference и cost. Данный метод маршрутизации позволяет сбалансировать нагрузку трафика и увеличить пропускную способность за счет передачи пакетов по нескольким путям с равным preference и cost до одного и того же места назначения. Балансировка трафика ECMP происходит по сессиям.
ECMP поддержан для протоколов маршрутизации OSPF и BGP. По умолчанию для OSPF количество multipath маршрутов - 16, для BGP количество multipath маршрутов - 1.
Для изменения количества multipath маршрутов для OSPF необходимо указать maximum-paths при настройке OSPF-процесса. Пример:
ESR# configure
ESR(config)# router ospf 1
ESR(config-ospf)# maximum-paths ?
1 - 32 Number of paths
|
ECMP настраивается глобально для всех IBGP-процессов и EBGP-процессов. Для изменения количества multipath маршрутов необходимо использовать следующую команду:
ESR(config)# router bgp maximum-paths ?
1 - 16 Number of paths
|
Список multipath маршрутов сортируется по адресам nexthop. Если лимит multipath исчерпан, то остальные ECMP маршруты не отображаются в таблице маршрутизации FIB.
Пример отображения 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 маршрутов для 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-config
router ospf log-adjacency-changes
router ospf 1
router-id 203.0 . 113.1
area 0.0 . 0.0
enable
exit
enable
exit
interface gigabitethernet 1 / 0 / 1.10
ip firewall disable
ip address 203.0 . 113.13 / 30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1 / 0 / 1.20
ip firewall disable
ip address 203.0 . 113.17 / 30
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1 / 0 / 1.30
ip firewall disable
ip address 203.0 . 113.21 / 30
ip ospf instance 1
ip ospf
exit
|
Решение задачи:
Для решения поставленной задачи необходимо указать maximum-paths, равный 2, при настройке OSPF-процесса. Произведем необходимые изменения в конфигурации:
ESR# configure
ESR(config)# router ospf 1
ESR(config-ospf)# maximum-paths 2
ESR(config-ospf)# do commit
ESR(config-ospf)# do confirm
ESR(config-ospf)# end
|
В результате в таблице маршрутизации будут 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
|
Пример настройки ECMP для 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 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin 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-config
router bgp log-neighbor-changes
router 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
enable
exit
interface gigabitethernet 1 / 0 / 1
ip firewall disable
ip address 198.51 . 100.1 / 30
exit
interface gigabitethernet 1 / 0 / 2
ip firewall disable
ip address 203.0 . 113.1 / 30
exit
|
Решение задачи:
Для решения поставленной задачи необходимо настроить maximum-paths, равный 2, для всех BGP-процессов. Произведем необходимые изменения в конфигурации:
ESR# configure
ESR(config)# router bgp maximum-paths 2
ESR(config)# do commit
ESR(config)# do confirm
ESR(config)# exit
|
В результате в таблице маршрутизации будут 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
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 1
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 ]
|