Lesson Contents
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:
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: