Lesson Contents
In the MPLS Traffic Engineering (TE) configuration lesson, I explained how to configure an MPLS network into a network that supports MPLS TE. With a dynamic path option and no constraints, a tunnel follows the same path as your IGP routing. In this lesson, I’ll explain how to configure an explicit path. This means that you can decide which routers and/or interfaces the tunnel should use or avoid.
This is the topology we’ll use:
This network has been pre-configured to support MPLS TE. We have a tunnel from PE1 to PE2. I use Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.9(3)M4.
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
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
mpls traffic-eng logging lsp setups
mpls traffic-eng logging lsp teardowns
mpls traffic-eng reoptimize events link-up
!
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 priority 7 7
tunnel mpls traffic-eng bandwidth 750
tunnel mpls traffic-eng path-option 1 dynamic
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
The tunnel I have uses a dynamic path option. Here is the configuration:
PE1#show running-config interface Tunnel 1
interface Tunnel1
ip unnumbered Loopback0
tunnel mode mpls traffic-eng
tunnel destination 6.6.6.6
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth 750
tunnel mpls traffic-eng path-option 1 dynamic
This tunnel takes the shortest path through P1:
PE1#show mpls traffic-eng tunnels tunnel 1
Name: PE1_t1 (Tunnel1) Destination: 6.6.6.6
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 1, type dynamic (Basis for Setup, path weight 20)
Config Parameters:
Bandwidth: 750 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: disabled LockDown: disabled Loadshare: 750 bw-based
auto-bw: disabled
Active Path Option Parameters:
State: dynamic path option 1 is active
BandwidthOverride: disabled LockDown: disabled Verbatim: disabled
InLabel : -
OutLabel : GigabitEthernet0/1, 17
RSVP Signalling Info:
Src 2.2.2.2, Dst 6.6.6.6, Tun_Id 1, Tun_Instance 6
RSVP Path Info:
My Address: 192.168.23.2
Explicit Route: 192.168.23.3 192.168.36.3 192.168.36.6 6.6.6.6
Record Route: NONE
Tspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
Shortest Unconstrained Path Info:
Path Weight: 20 (TE)
Explicit Route: 192.168.23.2 192.168.23.3 192.168.36.3 192.168.36.6
6.6.6.6
History:
Tunnel:
Time since created: 2 days, 23 hours, 35 minutes
Time since path change: 2 days, 23 hours, 34 minutes
Number of LSP IDs (Tun_Instances) used: 6
Current LSP:
Uptime: 2 days, 23 hours, 34 minutes
The output above shows that PE1 uses the shortest path to P1 to get to PE2. Let’s see if we can force the tunnel through P2 and P3 instead.
Configuration
There are multiple options to accomplish this. We can either include or exclude specific router IDs or interface IP addresses, forcing the tunnel to take another path. We’ll try all combinations.
Exclude
We’ll start with examples of how to exclude specific router IDs or interfaces.
Router ID
We’ll configure PE1 so that a tunnel can’t use a path with P1 in it. We do this with the ip explicit-path
command:
PE1(config)#ip explicit-path name EXCLUDE_P1 enable
PE1(cfg-ip-expl-path)#?
Explicit-Path configuration commands:
append-after Append additional entry after specified index
exclude-address Exclude an address from subsequent partial path segments
exit Exit from explicit-path configuration mode
index Specify the next entry index to add, edit (or delete)
list Re-list all or part of the explicit path entries
next-address Specify the next address in the path
no Delete a specific explicit-path entry index
An explicit path can have a name or identifier. I use a name and I’ll add the router ID of P1:
PE1(cfg-ip-expl-path)#exclude-address 3.3.3.3
To test this, I’ll create a new tunnel:
PE1(config)#interface Tunnel 2
PE1(config-if)#ip unnumbered loopback 0
PE1(config-if)#tunnel mode mpls traffic-eng
PE1(config-if)#tunnel destination 6.6.6.6
PE1(config-if)#tunnel mpls traffic-eng bandwidth 750
We’ll add a new path option:
PE1(config-if)#tunnel mpls traffic-eng path-option 1 ?
dynamic setup based on dynamically calculcated path
explicit setup based on preconfigured path
Instead of dynamic, we’ll select explicit
and select name:
PE1(config-if)#tunnel mpls traffic-eng path-option 1 explicit ?
identifier Specify an IP explicit path by number
name Specify an IP explicit path by name
We refer to the name of the explicit path we created:
PE1(config-if)#tunnel mpls traffic-eng path-option 1 explicit name EXCLUDE_P1
Now check out our new tunnel:
PE1#show mpls traffic-eng tunnels tunnel 2
Name: PE1_t2 (Tunnel2) Destination: 6.6.6.6
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 1, type explicit EXCLUDE_P1 (Basis for Setup, path weight 30)
Config Parameters:
Bandwidth: 750 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: disabled LockDown: disabled Loadshare: 750 bw-based
auto-bw: disabled
Active Path Option Parameters:
State: explicit path option 1 is active
BandwidthOverride: disabled LockDown: disabled Verbatim: disabled
InLabel : -
OutLabel : GigabitEthernet0/2, 16
RSVP Signalling Info:
Src 2.2.2.2, Dst 6.6.6.6, Tun_Id 2, Tun_Instance 1
RSVP Path Info:
My Address: 192.168.24.2
Explicit Route: 192.168.24.4 192.168.45.4 192.168.45.5 192.168.56.5
192.168.56.6 6.6.6.6
Record Route: NONE
Tspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
Shortest Unconstrained Path Info:
Path Weight: 20 (TE)
Explicit Route: 192.168.23.2 192.168.23.3 192.168.36.3 192.168.36.6
6.6.6.6
History:
Tunnel:
Time since created: 1 minutes, 42 seconds
Time since path change: 6 seconds
Number of LSP IDs (Tun_Instances) used: 1
Current LSP:
Uptime: 6 seconds
The output above shows the explicit path that we use. Because we can’t go through P1, this tunnel goes through P2 and P3 to get to PE2.
Interfaces
Now let’s see if we can exclude specific interfaces. I’ll try to exclude the GigabitEthernet 0/1 interface on PE1. We’ll use the ip explicit-path
command again:
PE1(config)#ip explicit-path name EXCLUDE_P1_GI01
PE1(cfg-ip-expl-path)#?
Explicit-Path configuration commands:
append-after Append additional entry after specified index
exclude-address Exclude an address from subsequent partial path segments
exit Exit from explicit-path configuration mode
index Specify the next entry index to add, edit (or delete)
list Re-list all or part of the explicit path entries
next-address Specify the next address in the path
no Delete a specific explicit-path entry index
Once again, we’ll use the exclude-address
command. I’ll exclude the IP address:
PE1(cfg-ip-expl-path)#exclude-address 192.168.36.3
Let’s create a new tunnel interface with a path option that uses our explicit path:
PE1(config)#interface Tunnel 3
PE1(config-if)#ip unnumbered Loopback0
PE1(config-if)#tunnel mode mpls traffic-eng
PE1(config-if)#tunnel destination 6.6.6.6
PE1(config-if)#tunnel mpls traffic-eng bandwidth 750
PE1(config-if)#tunnel mpls traffic-eng path-option 1 explicit name EXCLUDE_P1_GI01
Here’s our new tunnel interface:
PE1#show mpls traffic-eng tunnels tunnel 3
Name: PE1_t3 (Tunnel3) Destination: 6.6.6.6
Status:
Admin: up Oper: up Path: valid Signalling: connected
path option 1, type explicit EXCLUDE_P1_GI01 (Basis for Setup, path weight 30)
Config Parameters:
Bandwidth: 750 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: disabled LockDown: disabled Loadshare: 750 bw-based
auto-bw: disabled
Active Path Option Parameters:
State: explicit path option 1 is active
BandwidthOverride: disabled LockDown: disabled Verbatim: disabled
InLabel : -
OutLabel : GigabitEthernet0/2, 29
RSVP Signalling Info:
Src 2.2.2.2, Dst 6.6.6.6, Tun_Id 3, Tun_Instance 1
RSVP Path Info:
My Address: 192.168.24.2
Explicit Route: 192.168.24.4 192.168.45.4 192.168.45.5 192.168.56.5
192.168.56.6 6.6.6.6
Record Route: NONE
Tspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=750 kbits, burst=1000 bytes, peak rate=750 kbits
Shortest Unconstrained Path Info:
Path Weight: 20 (TE)
Explicit Route: 192.168.23.2 192.168.23.3 192.168.36.3 192.168.36.6
6.6.6.6
History:
Tunnel:
Time since created: 3 minutes, 45 seconds
Time since path change: 3 minutes, 31 seconds
Number of LSP IDs (Tun_Instances) used: 1
Current LSP:
Uptime: 3 minutes, 31 seconds
This tunnel goes through P2 and P3 because it’s not allowed to go through P1’s GigabitEthernet 0/1 interface.
Include
We can also configure PE1 so that the tunnel path has to include specific router IDs or interfaces.
How can we have TE tunnel like A → B-> C → D - > A → E.
This is a requirement. How can i achieve this ?
Hello Kiran
To confirm, do you need to create an TE tunnel that goes through router A twice? Can you clarify?
Thanks!
Laz
yes, you are right. is it possible?
Hi @kiranmandhare3214321 ,
Why would you want this? I haven’t tried to see what happens when you create an explicit path that includes the headend router as one of the hops.
Rene