MPLS TE Unequal Cost Load Balancing

Regular IP routing uses equal-cost load balancing (or sharing). EIGRP is an exception because it can load balance over feasible successors. When multiple paths with the same metric exist between two routers, traffic is distributed evenly across those paths. Depending on your IOS version and platform, the router supports up to 32 parallel paths.

Load balancing traffic on your network by changing the IGP metric can be challenging. You can change the metric on one link to steer the traffic in a particular direction, only to discover that it also influences routing in another part of the network you didn’t think of.

With MPLS TE, load balancing is much easier, and unequal cost load sharing works out of the box. When you have two TE tunnels to the same destination, the router can load balance its traffic. When the bandwidth of two tunnels is the same, we’ll do equal-cost multi-path load balancing. When you have different bandwidths, we’ll do unequal cost-load balancing.




The router does so by looking at the configured bandwidth on the tunnel interfaces. We divide the bandwidth of a TE tunnel interface by the sum of bandwidths on all tunnel interfaces.

For example, let’s say we have two tunnel interfaces:

  • Tunnel one: bandwidth 1000 kbps.
  • Tunnel two: bandwidth 2000 kbps.

Tunnel one would get 1000 / 3000 = ~33% of the traffic, and tunnel two 2000 / 3000 = ~66%.

When the router wants to create a new tunnel, RSVP checks the bandwidth request of the tunnel against the available bandwidth. If there is not enough bandwidth, the tunnel won’t come up.  This can be an issue if you want to change the bandwidth for load-balancing reasons. There is another option. If you want to configure load sharing without taking bandwidth into account, you can also use the tunnel mpls traffic-eng load-share command.

If you use this command, it will be used for load sharing. Bandwidth will only be used for RSVP reservations.

Configuration

Let’s take a look at load sharing in action. Here is our topology:

Mpls Te Autoroute Announce Metric Topology

We have two tunnels between PE1 (headend) and PE2 (tailend). We use autoroute to install the tunnels in our routing table. I use IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.9(3)M6 on all routers.

Configurations

Want to take a look for yourself? Here you will find the startup configuration of each device.

CE1

hostname CE1
!
ip cef
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip router isis 
 isis circuit-type level-2-only
!
router isis
 net 49.0001.0001.0001.0001.0001.00
 is-type level-2-only
 metric-style wide
!
end

CE2

hostname CE2
!
ip cef
!
interface Loopback0
 ip address 7.7.7.7 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.67.7 255.255.255.0
 ip router isis 
 isis circuit-type level-2-only
!
router isis
 mpls traffic-eng level-2
 net 49.0001.0007.0007.0007.0007.00
 is-type level-2-only
 metric-style wide
!
end

P1

hostname P1
!
ip cef
!
mpls traffic-eng tunnels
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.23.3 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
interface GigabitEthernet0/1
 ip address 192.168.36.3 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
router isis
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2
 net 49.0001.0003.0003.0003.0003.00
 is-type level-2-only
 metric-style wide
!
mpls ldp router-id Loopback0 force
!
end

P2

hostname P2
!
ip cef
!
mpls traffic-eng tunnels
!
interface Loopback0
 ip address 4.4.4.4 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.24.4 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
interface GigabitEthernet0/1
 ip address 192.168.45.4 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
router isis
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2
 net 49.0001.0004.0004.0004.0004.00
 is-type level-2-only
 metric-style wide
!
mpls ldp router-id Loopback0 force
!
end

P3

hostname P3
!
ip cef
!
mpls traffic-eng tunnels
!
interface Loopback0
 ip address 5.5.5.5 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.56.5 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
interface GigabitEthernet0/1
 ip address 192.168.45.5 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
router isis
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2
 net 49.0001.0005.0005.0005.0005.00
 is-type level-2-only
 metric-style wide
!
mpls ldp router-id Loopback0 force
!
end

PE1

hostname PE1
!
ip cef
!
mpls traffic-eng tunnels
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface Tunnel1
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 6.6.6.6
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 1000
 tunnel mpls traffic-eng path-option 1 explicit name P2_EXCLUDE
 no routing dynamic
!
interface Tunnel2
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 6.6.6.6
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 2000
 tunnel mpls traffic-eng path-option 1 explicit name P1_EXCLUDE
 no routing dynamic
!
interface GigabitEthernet0/0
 ip address 192.168.12.2 255.255.255.0
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/1
 ip address 192.168.23.2 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
interface GigabitEthernet0/2
 ip address 192.168.24.2 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
router isis
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2
 net 49.0001.0002.0002.0002.0002.00
 is-type level-2-only
 metric-style wide
!
mpls ldp router-id Loopback0 force
!
end

PE2

hostname PE2
!
ip cef
!
mpls traffic-eng tunnels
!
interface Loopback0
 ip address 6.6.6.6 255.255.255.255
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/0
 ip address 192.168.67.6 255.255.255.0
 ip router isis 
 isis circuit-type level-2-only
!
interface GigabitEthernet0/1
 ip address 192.168.36.6 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
interface GigabitEthernet0/2
 ip address 192.168.56.6 255.255.255.0
 ip router isis 
 mpls traffic-eng tunnels
 mpls ip
 isis circuit-type level-2-only
 ip rsvp bandwidth 1000000
!
router isis
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2
 net 49.0001.0006.0006.0006.0006.00
 is-type level-2-only
 metric-style wide
!
mpls ldp router-id Loopback0 force
!
end

Verification

The two tunnel interfaces have different bandwidths:

PE1#show run interface Tunnel 1

interface Tunnel1
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 6.6.6.6
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 1000
 tunnel mpls traffic-eng path-option 1 explicit name P2_EXCLUDE
 no routing dynamic
end
PE1#show run interface Tunnel 2

interface Tunnel2
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 6.6.6.6
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 2000
 tunnel mpls traffic-eng path-option 1 explicit name P1_EXCLUDE
 no routing dynamic
end
  • Tunnel one requests a bandwidth of 1000 kbps.
  • Tunnel two requests a bandwidth of 2000 kbps.

I also use an explicit-path to send tunnel one through P1 and tunnel two through P2.

Autoroute Announce

Here’s how the headend router uses these two tunnels:

PE1#show ip route 6.6.6.6
Routing entry for 6.6.6.6/32
  Known via "isis", distance 115, metric 30, type level-2
  Redistributing via isis
  Last update from 6.6.6.6 on Tunnel2, 00:44:43 ago
  Routing Descriptor Blocks:
    6.6.6.6, from 6.6.6.6, 00:44:43 ago, via Tunnel2
      Route metric is 30, traffic share count is 2
  * 6.6.6.6, from 6.6.6.6, 00:44:43 ago, via Tunnel1
      Route metric is 30, traffic share count is 1

Both tunnels are installed in the routing table because they share the same metric. The reason why these tunnels have the same metric is explained in the autoroute metric lesson. You can see we have a 2:1 traffic share count.

Here we can see the routes that are announced to the IGP:

We're Sorry, Full Content Access is for Members Only...

If you like to keep on reading, Become a Member Now!

  • Learn any CCNA, CCNP and CCIE R&S Topic. Explained As Simple As Possible.
  • Try for Just $1. The Best Dollar You’ve Ever Spent on Your Cisco Career!
  • Full Access to our 801 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)
512 Sign Ups in the last 30 days
satisfaction-guaranteed

  • 100% Satisfaction Guaranteed!
  • You may cancel your monthly membership at any time.
  • No Questions Asked!