This post takes a look at a couple options we have when configuring load-sharing over multiple MPLS TE tunnels. We will look at 3 options of the “tunnel mpls traffic-eng” command: autoroute, bandwidth, and load-share. We can perform equal cost and unequal cost load sharing.
To begin with, R1 has two tunnels to R5 per the diagram below.
Tunnel 105 uses an explicit path that prevents it from going through R3.
interface Tunnel5 ip unnumbered Loopback0 tunnel destination 10.0.0.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng bandwidth 50 tunnel mpls traffic-eng path-option 1 dynamic ! interface Tunnel105 ip unnumbered Loopback0 tunnel destination 10.0.0.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng bandwidth 50 tunnel mpls traffic-eng path-option 1 explicit name R5-LONGWAY ip explicit-path name R5-LONGWAY enable exclude-address 192.168.13.3
Both tunnels are up:
R1#sho mpl traffic-eng tunnels | inc Name|Admin|Expli Name: R1_t5 (Tunnel5) Destination: 10.0.0.5 Admin: up Oper: up Path: valid Signalling: connected Explicit Route: 192.168.12.2 192.168.25.5 10.0.0.5 Name: R1_t105 (Tunnel105) Destination: 10.0.0.5 Admin: up Oper: up Path: valid Signalling: connected Explicit Route: 192.168.13.3 192.168.34.4 192.168.45.5 10.0.0.5
If we look in the route table, R1 still learns the destination through R2:
R1#sho ip route 10.0.0.5 Routing entry for 10.0.0.5/32 Known via "ospf 1", distance 110, metric 7, type intra area Last update from 192.168.12.2 on Serial2/0, 00:00:00 ago Routing Descriptor Blocks: * 192.168.12.2, from 10.0.0.5, 00:00:00 ago, via Serial2/0 Route metric is 7, traffic share count is 1
In order to learn the tunnel destination through the tunnel, we use the autoroute option in the tunnel configuration:
R1(config)#int tun 5 R1(config-if)#tunnel mpls traffic-eng autoroute announce R1(config-if)#int tun 105 R1(config-if)#tunnel mpls traffic-eng autoroute announce
Now we have two paths to R5:
R1#sho ip route 10.0.0.5 Routing entry for 10.0.0.5/32 Known via "ospf 1", distance 110, metric 7, type intra area Routing Descriptor Blocks: * directly connected, via Tunnel5 Route metric is 7, traffic share count is 1 directly connected, via Tunnel105 Route metric is 7, traffic share count is 1
Notice the traffic share is 1 for each tunnel. This is because our bandwidth statements are 50k for each tunnel. Let’s change the bandwidth on Tunnel5 to 100:
R1(config)#int tun 5 R1(config-if)#tunnel mpls traffic-eng bandwidth 100 R1(config-if)#shut R1(config-if)#no shut R1#sho ip route 10.0.0.5 Routing entry for 10.0.0.5/32 Known via "ospf 1", distance 110, metric 7, type intra area Routing Descriptor Blocks: * directly connected, via Tunnel105 Route metric is 7, traffic share count is 1 directly connected, via Tunnel5 Route metric is 7, traffic share count is 2
The traffic share is now a ratio of 2:1 in favor of Tunnel5. We can also use the load-share command to influence traffic share. Suppose we want to even things up again:
R1(config)#int tun 105 R1(config-if)#tunnel mpls traffic-eng load-share 100 R1#sho ip route 10.0.0.5 Routing entry for 10.0.0.5/32 Known via "ospf 1", distance 110, metric 7, type intra area Routing Descriptor Blocks: * directly connected, via Tunnel105 Route metric is 7, traffic share count is 1 directly connected, via Tunnel5 Route metric is 7, traffic share count is 1
Load-share on Tunnel 105 is now equal to bandwidth on Tunnel5 and the traffic share is equal again.
The bandwidth and load-share values are very similar in function. The major difference is that the bandwidth value will be used by RSVP to make reservations during tunnel setup. The load-share value is only used to adjust traffic share at the head-end. Another thing to remember is that neither of these values cause any traffic policing to be performed, bandwidth is used by RSVP during tunnel setup and both values can be used to specify traffic share counts.
Regards, Bryan (Blog Post by Bryan Bartik)









slight typo in the diagram. R2 is named as R3.
Is it a typing mistake? I think exclude-address command under the explicit-path is excluding the specified address in order to prefer the alternate route. I think correct would be :