When a headend router creates a new TE tunnel, the router compares the requested bandwidth with the available bandwidth. When there is enough bandwidth, the tunnel is established. When there is insufficient bandwidth, we can’t establish the new tunnel.




This can be an issue. This means that the tunnels you configure first can reserve bandwidth and will be created. Tunnels that carry more important traffic that you configure later might be unable to reserve bandwidth and won’t be established.

Priorities help to deal with this situation. By assigning different priorities to tunnels, a tunnel can preempt another tunnel. This means that the router will tear down the existing tunnel to create the new tunnel with more important traffic.

With enough bandwidth, we don’t have to check these priorities, and we can create a new tunnel. When there is insufficient bandwidth, we’ll check the priorities to decide whether the new tunnel is more important than the existing tunnel.

Each TE tunnel has two priority values:

  • Setup priority: how important is it to establish the new tunnel?
  • Hold priority: how important is it to keep an existing tunnel established?

A new tunnel can preempt an existing tunnel when the new TE tunnel has a better setup priority than our existing TE tunnel’s hold priority.

The advantage of two priorities instead of one is that you can configure a TE tunnel that is difficult to set up (low setup priority) but, once established, difficult to preempt (high hold priority).

There are eight priority values for both the setup and hold priority. A lower value means higher importance:

  • 0 is the highest and most important priority
  • 7 is the lowest and least important.
  • 7 is the default priority for both the setup and hold priority.

Let me give you an example of how this works:

  • Tunnel one:
    • Bandwidth request for 500 kbps.
    • Setup priority: 6
    • Hold priority: 5
  • Tunnel two:
    • Bandwidth request for 1600 kbps.
    • Setup priority: 4
    • Hold priority: 3

We have a total available bandwidth of 2000 kbps. Tunnel one is up and running, and we want to create tunnel two.  There is not enough available bandwidth for both tunnels.

The router wants to establish tunnel two and realizes there is insufficient bandwidth available. It looks at the priorities:

Tunnel two setup priority 4 > Tunnel one hold priority 5.

As a result, tunnel two will preempt tunnel one.

The setup priority can’t be lower than the hold priority. If this was possible, you could have a situation where two tunnels preempt each other repeatedly.

Tunnels that need more bandwidth should have a better setup and hold priority. They can preempt tunnels that require less bandwidth, but these tunnels have more options because they require less bandwidth.

Configuration

Let’s look at this in action.




I’ll use the following topology:

Mpls Te Setup Hold Priority Topology

We can use a small topology to test this. PE1 is our headend router, PE2 is the tailend router. We have two tunnels from PE1 to PE2. I use IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.9(3)M6 on all routers.

  • Configurations
  • P1
  • PE1
  • PE2

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

We have two tunnel interfaces:

PE1#show running-config interface Tunnel 1

interface Tunnel1
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 3.3.3.3
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 500
 tunnel mpls traffic-eng path-option 1 dynamic
 no routing dynamic
PE1#show running-config interface Tunnel 2

interface Tunnel2
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 3.3.3.3
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 500
 tunnel mpls traffic-eng path-option 1 dynamic
 no routing dynamic

Each tunnel reserves 500 kbps and uses the default setup and hold priorities. We can use up to 2000 kbps of bandwidth in total:

PE1#show mpls traffic-eng link-management summary  | begin Link ID
Link ID::  Gi0/0 (192.168.12.1)
    Local Intfc ID:         1
    Link Status:
      SRLGs:                None
      Intfc Switching Capability Descriptors:  
         Default:           Intfc Switching Cap psc1, Encoding ethernet
      Link Label Type:      Packet
      Physical Bandwidth:   1000000 kbits/sec
      Max Res Global BW:    2000 kbits/sec (reserved: 0% in, 80% out)
      Max Res Sub BW:       0 kbits/sec (reserved: 100% in, 100% out)
      MPLS TE Link State:   MPLS TE on, RSVP on, admin-up, flooded, allocated
      Inbound Admission:    reject-huge
      Outbound Admission:   allow-if-room
      Link MTU:             IP 1500, MPLS 1500
      Admin. Weight:        10 (IGP)
      IGP Neighbor Count:   1

This shows the bandwidth of the GigabitEthernet 0/0 interface, but the bottleneck will be the interface in the path with the lowest bandwidth. My interfaces are all configured for 2000 kbps.

We currently require 2x 500 kbps bandwidth and have 2000 kbps in total. Both tunnels can be created:

PE1#show mpls traffic-eng tunnels | include connected
    Admin: up         Oper: up     Path: valid       Signalling: connected
    Admin: up         Oper: up     Path: valid       Signalling: connected

So far, everything is good.

Let’s change the tunnels. I’ll shut tunnel two for now:

PE1(config)#interface Tunnel 2
PE1(config-if)#shutdown

Let’s change the priorities on PE1:

PE1(config)#interface Tunnel 1
PE1(config-if)#tunnel mpls traffic-eng priority 6 5

We’ll change the priorities on PE1 and also increase the bandwidth requirement:

PE1(config)#interface Tunnel 2
PE1(config-if)#tunnel mpls traffic-eng priority 4 3
PE1(config-if)#tunnel mpls traffic-eng bandwidth 1600

We won’t have enough bandwidth available for tunnel two.

Here’s what will happen when you try to establish tunnel two:

  • The router will compare tunnel two’s setup priority (4) against tunnel one’s hold priority (5).
  • Tunnel two’s setup priority is better than tunnel one’s hold priority, so tunnel one will go down so that tunnel two can be created.