MPLS TE Path Options Explicit

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:

Mpls Te Pe C Router Topology

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.

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 799 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)
573 Sign Ups in the last 30 days
satisfaction-guaranteed

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

Forum Replies

  1. How can we have TE tunnel like A → B-> C → D - > A → E.

    This is a requirement. How can i achieve this ?

  2. Hello Kiran

    To confirm, do you need to create an TE tunnel that goes through router A twice? Can you clarify?

    Thanks!

    Laz

  3. Hi @kiranmandhare3214321 ,

    Why would you want this? :slight_smile: 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

Ask a question or join the discussion by visiting our Community Forum