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
    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, Tunnel1
    via, 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 takes Tunnel1, while traffic to takes Tunnel3.
    veos#bash ip route get via dev tun1 src
    veos#bash ip route get via dev tun3 src

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