ECMP

Equal-cost multi-path routing (ECMP) is a routing plan of action where next-hop packet forwarding to a single destination takes place over multiple "best paths" which tie for top place in routing metric calculations. Use multi-path routing in conjunction with most routing protocols, because it is a per-hop decision limited to a single router.

Adding ECMP

Describes how to add ECMP to new or existing VMs.

  1. Have the following line in a device's running-configuration.

    If an instance is created with an older, pre-vEOS 4.20.5 image, add the command line in the example below.

    If an instance is created with vEOS 4.20.5 or later image, there is no need for additional configuration changes because the command line appears in the configuration by default.

    agent KernelFib environment KERNELFIB_PROGRAM_ALL_ECMP='true'
  2. Reload the device or restart the KernelFib agent via agent KernelFib terminate.
    This step is needed only if the instance was created with an older, pre-vEOS 4.20.5 image.
  3. To enable ECMP in a routing protocol, issue the maximum-paths <#> command inside the routing protocol used.
    veos#configure terminal
    veos(config)#router bgp 65112
    veos(config-router-bgp)#maximum-paths 16
    
  4. When ECMP starts, and there are multiple routes, display output may be similar to the following example.
    veos#show ip route 10.4.3.0
    
    VRF: default
    Codes: C - connected, S - static, K - kernel,
     O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
     E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
     N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
     R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,
     O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,
     NG - Nexthop Group Static Route, V - VXLAN Control Service,
     DH - DHCP client installed default route, M - Martian
    
     S10.4.3.0/24 [1/0] via 190.19.11.2, Tunnel1
    via 190.19.11.102, Tunnel3
  5. To determine the route that the interface traffic takes to specific addresses, issue the bash ip route get <address> command to determine which link the traffic uses. In the following example, traffic to 10.4.3.5 takes Tunnel1, while traffic to 10.4.3.6 takes Tunnel3.
    veos#bash ip route get 10.4.3.5
    10.4.3.5 via 190.19.11.2 dev tun1 src 190.19.11.1
    cache
    veos#bash ip route get 10.4.3.6
    10.4.3.6 via 190.19.11.102 dev tun3 src 190.19.11.101
    cache
    

    For additional information regarding ECMP, refer to the current release notes.