ECMP Load Balancing

Equal-cost multi-path routing (ECMP) is a routing strategy where next-hop packet forwarding to a single destination can occur over multiple "best paths" which tie for top place in routing metric calculations. Multipath routing can be used in conjunction with most routing protocols, since it is a per-hop decision that is limited to a single router. It potentially offers substantial increases in bandwidth by load-balancing traffic over multiple paths.

Various routing protocols, including Open Shortest Path First (OSPF), Intermediate System to Intermediate System (ISIS), Enhanced Interior Gateway Routing Protocol (EIGRP), and Border Gateway Protocol (BGP) allow ECMP routing.

Load balancing between ECMP paths is performed on IOS-XE based CEF object called loadbalance.

ECMP Per-Flow Load Balancing

Load balancing is a forwarding mechanism that distributes traffic over multiple links based on certain parameters. ECMP Per-Flow Load Balancing distributes packets across multiple links based on Layer 3 routing information. If the router discovers multiple paths to a destination, the routing table is updated with multiple entries for that destination. Per-flow load balancing allows the router to use multiple paths to achieve load sharing across multiple source-destination host pairs. Packets for a given source-destination host pair are guaranteed to take the same path, even if multiple paths are available. Traffic streams destined for different pairs tend to take different paths.

Benefits of Per-Flow Load Balancing

  • Incoming data traffic is evenly distributed over multiple equal-cost connections.

  • Incoming data traffic is evenly distributed over multiple equal-cost connections member links within a bundle interface.

Figure 1. ECMP Load Balancing with MPLS Enabled

Finding Feature Information

Your software release may not support all the features documented in this module. For the latest caveats and feature information, see Bug Search Tool and the release notes for your platform and software release. To find information about the features documented in this module, and to see a list of the releases in which each feature is supported, see the feature information table.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/​go/​cfn. An account on Cisco.com is not required.

Restrictions for ECMP Load Balancing

  • Both 4 ECMP and 8 ECMP paths are supported.

  • Load balancing is supported on global IPv4 and IPv6 traffic. For global IPv4 and IPv6 traffic, the traffic distribution can be equal among the available 8 links.

  • Per packet load balancing is not supported.

  • Label load balancing is supported.

  • BGP multi-path is not supported with ECMP on the RSP3 module.

Configuring ECMP Load Balancing

Perform the following steps to configure ECMP load balancing.

SUMMARY STEPS

    1.    enable

    2.    configure terminal

    3.    platform loadbalance max-paths 8

    4.    exit


DETAILED STEPS
     Command or ActionPurpose
    Step 1enable


    Example:
    Device> enable
     

    Enables privileged EXEC mode.

    • Enter your password if prompted.

     
    Step 2configure terminal


    Example:
    Device# configure terminal
     

    Enters global configuration mode.

     
    Step 3platform loadbalance max-paths 8


    Example:
    Device(config)# platform loadbalance max-paths 8
     

    Configures the loadbalance maximum paths. Select Yes to save the configuration and reload the router.

    Note   

    ISIS by default supports only 4 paths. To increase ISIS max-paths, use the command config-maximum-paths 8 under router ISIS. IGP by default supports only 4 paths. To increase IGP max-paths, use the command config-maximum-paths 8 under respective IGP (OSPF and ISIS) process.

     
    Step 4exit

    Example:
    Device(config)#exit
     

    Returns to privileged EXEC mode.

     

    Configuration Examples for ECMP Load Balancing

    This section shows sample configurations for ECMP load balancing.

    Example: Configuring ECMP Load balancing

    The following is a sample configuration for ECMP load balancing.
    Router#  show  run-configuration | in platform loadbalance
    platform loadbalance max-paths 8
     
    Router#  show  ip cef 200.0.0.0 detail
    200.0.0.0/24, epoch 2, per-destination sharing
      local label info: global/266
      nexthop 21.1.1.2 GigabitEthernet0/1/3 label 141
      nexthop 21.1.6.1 GigabitEthernet0/0/0 label 269
      nexthop 21.2.1.2 GigabitEthernet0/1/0 label 141
      nexthop 21.2.6.1 GigabitEthernet0/0/1 label 269
      nexthop 21.3.1.2 GigabitEthernet0/1/1 label 141
      nexthop 21.3.6.1 GigabitEthernet0/0/2 label 269
      nexthop 21.4.1.2 GigabitEthernet0/0/4 label 141
      nexthop 21.4.6.1 GigabitEthernet0/0/7 label 269
    Router#
     
    Router# show interface GigabitEthernet 0/1/3 | in output rate
      5 minute output rate 548000 bits/sec, 1009 packets/sec
    Router# show interface GigabitEthernet 0/0/0 | in output rate
      5 minute output rate 547000 bits/sec, 1008 packets/sec
    Router# show interface GigabitEthernet 0/1/0 | in output rate
      5 minute output rate 539000 bits/sec, 992 packets/sec
    Router# show interface GigabitEthernet 0/0/1 | in output rate
      5 minute output rate 539000 bits/sec, 991 packets/sec
    Router# show interface GigabitEthernet 0/1/1 | in output rate
      5 minute output rate 540000 bits/sec, 993 packets/sec
    Router# show interface GigabitEthernet 0/0/2 | in output rate
      5 minute output rate 540000 bits/sec, 993 packets/sec
    Router# show interface GigabitEthernet 0/0/4 | in output rate
      5 minute output rate 548000 bits/sec, 1009 packets/sec
    Router# show interface GigabitEthernet 0/0/7 | in output rate       
      5 minute output rate 548000 bits/sec, 1009 packets/sec
    Router#

    Verifying ECMP Load Balancing

    Use the following commands to verify ECMP load balancing.
    Building configuration...
     
    Current configuration : 10710 bytes
    !
    ! Last configuration change at 00:29:01 IST Sat Jan 17 2015
    !
    version 15.5
    no service pad
    service timestamps debug datetime msec
    service timestamps log datetime msec
    platform loadbalance max-paths 8
    no platform punt-keepalive disable-kernel-core
    platform bfd-debug-trace 1
    platform tcam-parity-error enable
    platform tcam-threshold alarm-frequency 1
    platform shell
    !
    hostname RM-PE1
    !
    boot-start-marker
    boot-end-marker
    !
    !
    vrf definition Mgmt-intf
    !
    address-family ipv4
    exit-address-family
    !
    address-family ipv6
    exit-address-family
    !
    !
    no aaa new-model
    clock timezone IST 5 30
    facility-alarm critical exceed-action shutdown
    no ip routing protocol purge interface
    !
    ip vrf test
    rd 100:100
    route-target export 1000:1000
    route-target import 1000:1000
    !
    no ip domain lookup
     
    !
    !
    !
    !
    !
    !
    !
    !
    !
    !
    mpls label protocol ldp
    mpls ldp explicit-null
    mpls ldp session protection
    mpls ldp discovery targeted-hello accept
    multilink bundle-name authenticated
    !
    !
    license udi pid ASR-903 sn FOX1551P04E
    license accept end user agreement
    license boot level metroaggrservices
    sdm prefer default
    !
    !
    redundancy
    mode sso
    !
    !
    !
    !
    !
    transceiver type all
    monitoring
    !
    ip tftp source-interface GigabitEthernet0
    !
    !
    !
    !
    !
    !
    !
    !
    !
    !
    !
    !
    interface Loopback0
    ip address 100.111.14.1 255.255.255.255
    !
    interface Loopback101
    ip address 65.1.101.1 255.255.255.255
    !
    interface Loopback102
    ip address 65.1.102.1 255.255.255.255
    !
    interface Loopback103
    ip address 65.1.103.1 255.255.255.255
    !
    interface Loopback104
    ip address 65.1.104.1 255.255.255.255
    !
    interface Loopback105
    ip address 65.1.105.1 255.255.255.255
    !
    interface Loopback106
    ip address 65.1.106.1 255.255.255.255
    !
    interface Loopback107
    ip address 65.1.107.1 255.255.255.255
    !
    interface Loopback108
    ip address 65.1.108.1 255.255.255.255
    !
    interface Loopback109
    ip address 65.1.109.1 255.255.255.255
    !
    interface Loopback110
    ip address 65.1.110.1 255.255.255.255
    !
    interface Loopback111
    ip address 65.1.111.1 255.255.255.255
    !
    interface Loopback112
    ip address 65.1.112.1 255.255.255.255
    !
    interface Loopback113
    ip address 65.1.113.1 255.255.255.255
    !
    interface Loopback114
    ip address 65.1.114.1 255.255.255.255
    !
    interface Loopback115
    ip address 65.1.115.1 255.255.255.255
    !
    interface Loopback116
    ip address 65.1.116.1 255.255.255.255
    !
    interface Loopback117
    ip address 65.1.117.1 255.255.255.255
    !
    interface Loopback118
    ip address 65.1.118.1 255.255.255.255
    !
    interface Loopback119
    ip address 65.1.119.1 255.255.255.255
    !
    interface Loopback120
    ip address 65.1.120.1 255.255.255.255
    !
    interface Loopback121
    ip address 65.1.121.1 255.255.255.255
    !
    interface Loopback122
    ip address 65.1.122.1 255.255.255.255
    !
    interface Loopback123
    ip address 65.1.123.1 255.255.255.255
    !
    interface Loopback124
    ip address 65.1.124.1 255.255.255.255
    !
    interface Loopback125
    ip address 65.1.125.1 255.255.255.255
    !
    interface Loopback126
    ip address 65.1.126.1 255.255.255.255
    !
    interface Loopback127
    ip address 65.1.127.1 255.255.255.255
    !
    interface Loopback128
    ip address 65.1.128.1 255.255.255.255
    !
    interface Loopback129
    ip address 65.1.129.1 255.255.255.255
    !
    interface Loopback130
    ip address 65.1.130.1 255.255.255.255
    !
    interface Loopback131
    ip address 65.1.131.1 255.255.255.255
    !
    interface Loopback132
    ip address 65.1.132.1 255.255.255.255
    !
    interface Loopback133
    ip address 65.1.133.1 255.255.255.255
    !
    interface Loopback134
    ip address 65.1.134.1 255.255.255.255
    !
    interface Loopback135
    ip address 65.1.135.1 255.255.255.255
    !
    interface Loopback136
    ip address 65.1.136.1 255.255.255.255
    !
    interface Loopback137
    ip address 65.1.137.1 255.255.255.255
    !
    interface Loopback138
    ip address 65.1.138.1 255.255.255.255
    !
    interface Loopback139
    ip address 65.1.139.1 255.255.255.255
    !
    interface Loopback140
    ip address 65.1.140.1 255.255.255.255
    !
    interface Loopback141
    ip address 65.1.141.1 255.255.255.255
    !
    interface Loopback142
    ip address 65.1.142.1 255.255.255.255
    !
    interface Loopback143
    ip address 65.1.143.1 255.255.255.255
    !
    interface Loopback144
    ip address 65.1.144.1 255.255.255.255
    !
    interface Loopback145
    ip address 65.1.145.1 255.255.255.255
    !
    interface Loopback146
    ip address 65.1.146.1 255.255.255.255
    !
    interface Loopback147
    ip address 65.1.147.1 255.255.255.255
    !
    interface Loopback148
    ip address 65.1.148.1 255.255.255.255
    !
    interface Loopback149
    ip address 65.1.149.1 255.255.255.255
    !
    interface Loopback150
    ip address 65.1.150.1 255.255.255.255
    !
    interface Loopback151
    ip address 65.1.151.1 255.255.255.255
    !
    interface Loopback152
    ip address 65.1.152.1 255.255.255.255
    !
    interface Loopback153
    ip address 65.1.153.1 255.255.255.255
    !
    interface Loopback154
    ip address 65.1.154.1 255.255.255.255
    !
    interface Loopback155
    ip address 65.1.155.1 255.255.255.255
    !
    interface Loopback156
    ip address 65.1.156.1 255.255.255.255
    !
    interface Loopback157
    ip address 65.1.157.1 255.255.255.255
    !
    interface Loopback158
    ip address 65.1.158.1 255.255.255.255
    !
    interface Loopback159
    ip address 65.1.159.1 255.255.255.255
    !
    interface Loopback160
    ip address 65.1.160.1 255.255.255.255
    !
    interface GigabitEthernet0/0/0
    ip address 21.1.6.2 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/0/1
    ip address 21.2.6.2 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/0/2
    ip address 21.3.6.2 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/0/3
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/0/4
    ip address 21.4.1.1 255.255.255.0
    ip router isis core-agg
    shutdown
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/0/5
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/0/6
    ip address 51.1.0.1 255.255.255.0
    negotiation auto
    !
    interface GigabitEthernet0/0/7
    ip address 21.4.6.2 255.255.255.0
    ip router isis core-agg
    shutdown
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/1/0
    ip address 21.2.1.1 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/1/1
    ip address 21.3.1.1 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/1/2
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/1/3
    ip address 21.1.1.1 255.255.255.0
    ip router isis core-agg
    negotiation auto
    mpls ip
    !
    interface GigabitEthernet0/1/4
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/1/5
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/1/6
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0/1/7
    no ip address
    shutdown
    negotiation auto
    !
    interface GigabitEthernet0
    vrf forwarding Mgmt-intf
    ip address 7.43.21.101 255.255.0.0
    shutdown
    negotiation auto
    !
    router isis core-agg
    net 49.0000.0000.1111.00
    is-type level-1
    metric-style wide
    fast-flood 10
    ip route priority high tag 10000
    set-overload-bit on-startup 360
    max-lsp-lifetime 65535
    lsp-refresh-interval 65000
    spf-interval 5 50 200
    prc-interval 5 50 200
    lsp-gen-interval 5 50 200
    log-adjacency-changes
    passive-interface Loopback0
    passive-interface Loopback101
    passive-interface Loopback102
    passive-interface Loopback103
    passive-interface Loopback104
    passive-interface Loopback105
    passive-interface Loopback106
    passive-interface Loopback107
    passive-interface Loopback108
    passive-interface Loopback109
    passive-interface Loopback110
    passive-interface Loopback111
    passive-interface Loopback112
    passive-interface Loopback113
    passive-interface Loopback114
    passive-interface Loopback115
    passive-interface Loopback116
    passive-interface Loopback117
    passive-interface Loopback118
    passive-interface Loopback119
    passive-interface Loopback120
    passive-interface Loopback121
    passive-interface Loopback122
    passive-interface Loopback123
    passive-interface Loopback124
    passive-interface Loopback125
    passive-interface Loopback126
    passive-interface Loopback127
    passive-interface Loopback128
    passive-interface Loopback129
    passive-interface Loopback130
    passive-interface Loopback131
    passive-interface Loopback132
    passive-interface Loopback133
    passive-interface Loopback134
    passive-interface Loopback135
    passive-interface Loopback136
    passive-interface Loopback137
    passive-interface Loopback138
    passive-interface Loopback139
    passive-interface Loopback140
    passive-interface Loopback141
    passive-interface Loopback142
    passive-interface Loopback143
    passive-interface Loopback144
    passive-interface Loopback145
    passive-interface Loopback146
    passive-interface Loopback147
    passive-interface Loopback148
    passive-interface Loopback149
    passive-interface Loopback150
    passive-interface Loopback151
    passive-interface Loopback152
    passive-interface Loopback153
    passive-interface Loopback154
    passive-interface Loopback155
    passive-interface Loopback156
    passive-interface Loopback157
    passive-interface Loopback158
    passive-interface Loopback159
    passive-interface Loopback160
    maximum-paths 8
    mpls ldp sync
    !
    router bgp 100
    bgp router-id 100.111.14.1
    bgp log-neighbor-changes
    neighbor ABR peer-group
    neighbor ABR remote-as 100
    neighbor ABR update-source Loopback0
    neighbor 100.111.10.1 peer-group ABR
    neighbor 100.111.10.1 shutdown
    neighbor 100.111.10.2 peer-group ABR
    neighbor 100.111.10.2 shutdown
    !
    address-family ipv4
      bgp additional-paths install
      network 100.111.14.1 mask 255.255.255.255 route-map set-PAN-comm
      neighbor ABR send-community both
      neighbor ABR next-hop-self all
      neighbor ABR route-map deny-PAN-loopbacks in
      neighbor ABR send-label
      neighbor 100.111.10.1 activate
      neighbor 100.111.10.2 activate
    exit-address-family
    !
    address-family vpnv4
      neighbor ABR send-community both
      neighbor 100.111.10.1 activate
      neighbor 100.111.10.2 activate
    exit-address-family
    !
    address-family ipv4 vrf test
      redistribute connected
    exit-address-family
    !
    ip forward-protocol nd
    !
    ip bgp-community new-format
    ip community-list 1 permit 100:100
    no ip http server
    no ip http secure-server
    ip route vrf Mgmt-intf 10.0.0.0 255.0.0.0 7.43.0.1
    ip route vrf Mgmt-intf 202.153.144.0 255.255.255.0 7.43.0.1
    !
    !
    route-map set-service-nh permit 10
    !
    route-map deny-PAN-loopbacks deny 10
    match community 1
    !
    route-map deny-PAN-loopbacks permit 20
    !
    route-map set-PAN-comm permit 10
    set community 100:100
    !
    mpls ldp router-id Loopback0
    !
    !
    control-plane
    !
    alias exec psh reques plat soft sys shell
    alias exec shpp6 sh platform hard pp act fea cef da ipv6
    alias exec shpp sh platform hard pp act fea cef da ipv4
    !
    line con 0
    exec-timeout 0 0
    logging synchronous
    stopbits 1
    line aux 0
    stopbits 1
    line vty 0
    exec-timeout 0 0
    password lab
    login
    line vty 1 4
    login
    !
    !
    !
    end