MPLS-TE Basics, Pt.2 (RSVP)
In this section we’ll create MPLS-TE tunnels. RSVP will be used to signal the path, reserve bandwidth, and advertise the label.
We need to configure a tunnel interface on the headend router, which is R1. For reference, here is the topology again:

The tunnel interface looks similar to configuring any other tunnel interface you might be familiar with, such as a GRE tunnel. However there is no tunnel source. Also the tunnel uses the loopback for the IP address.
#R1
int tun1
tunnel mode mpls traffic-eng
path-option 1 dynamic instructs the router to use CSPF to determine the shortest path. Right now we have no constraints, so CSPF will choose the path based on the lowest TE metric. Because the TE metric (or weight) is by default the IGP metric, the path should be R1-R2-XR3-XR5.
Let’s examine the RSVP PATH message sent by R1 to R2:

It’s amazing how much data is here. We see the tunnel ID as 1 under SESSION, current hop (which is R1’s Gi1 interface), the refresh interval (30 seconds by default) under TIME VALUES, the ERO which explicitly defines each hop, a label request object which asks each router to reserve a label for this tunnel, and the tunnel priority (7 for both setup and hold) under SESSION ATTRIBUTE.
An interesting tidbit is that the packet is sourced by the tunnel unnumbered IP, and destined to the tailend PE (XR5). So why doesn’t R2 simply forward the packet to XR5? The reason is because the Router Alert option is set in the packet’s IPv4 options, which causes each router to process it in software.

Let’s look at the RESV message that is sent from R2 to R1. XR5 originated this RESV message in response to the PATH message that had its own IP as the destination. This packet below is the very last RESV message in the chain of messages from the tailend to the headend.

One very important piece of information is the label at the bottom of the packet. This is R2’s dynamically allocated label for the tunnel, and is advertised to R1. R1 will push label 16 onto traffic destined out the tun1 interface.
Notice that none of the other routers have a tunnel interface. Instead they preform label swap/pop operations and forward the packet to a next hop:
R2#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 24000 1.1.1.1 1 [1] 0 Gi3 10.2.3.3
RP/0/0/CPU0:XR3#show mpls forwarding
Tue Aug 16 20:39:42.180 UTC
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
24000 Pop TE: 1 Gi0/0/0/2 10.3.5.5 0
RP/0/0/CPU0:XR5#show mpls forwarding
Tue Aug 16 20:39:59.951 UTC
RP/0/0/CPU0:XR5#
XR5 has nothing at all in its LFIB because it is the tailend of the LSP. XR5 advertised an implicit-null label to XR3.
Let’s verify the tunnel in the CLI.
R1#show mpls traffic-eng tunnels br
Signalling Summary:
LSP Tunnels Process: running
Passive LSP Listener: running
RSVP Process: running
Forwarding: enabled
auto-tunnel:
p2p Disabled (0), id-range:62336-64335
Periodic reoptimization: every 3600 seconds, next in 1571 seconds
Periodic FRR Promotion: Not Running
Periodic auto-bw collection: every 300 seconds, next in 71 seconds
SR tunnel max label push: 13 primary path labels (13 repair path labels)
P2P TUNNELS/LSPs:
TUNNEL NAME DESTINATION STATE/PROT
R1_t1 5.5.5.5 - Gi1
Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails
P2MP TUNNELS:
Displayed 0 (of 0) P2MP heads
P2MP SUB-LSPS:
Displayed 0 P2MP sub-LSPs:
0 (of 0) heads, 0 (of 0) midpoints, 0 (of 0) tails
The output above shows us that the tunnel is up. There is no upstream interface because R1 is the headend router itself. The downstream interface, towards the destination, is Gi1. What will the output show if we run this command on R2?
R2#show mpls traffic-eng tunnels brief
Signalling Summary:
LSP Tunnels Process: running
Passive LSP Listener: running
RSVP Process: running
Forwarding: enabled
auto-tunnel:
p2p Disabled (0), id-range:62336-64335
Periodic reoptimization: every 3600 seconds, next in 3129 seconds
Periodic FRR Promotion: Not Running
Periodic auto-bw collection: every 300 seconds, next in 129 seconds
SR tunnel max label push: 13 primary path labels (13 repair path labels)
P2P TUNNELS/LSPs:
TUNNEL NAME DESTINATION UP IF DOWN IF STATE/PROT
R1_t1 5.5.5.5 Gi1 Gi3 up/up
Displayed 0 (of 0) heads, 1 (of 1) midpoints, 0 (of 0) tails
P2MP TUNNELS:
Displayed 0 (of 0) P2MP heads
P2MP SUB-LSPS:
Displayed 0 P2MP sub-LSPs:
0 (of 0) heads, 0 (of 0) midpoints, 0 (of 0) tails
Notice that R2 has learned the name of this tunnel (R1_t1). This is signaled in the RSVP Path message under the Session Attribute.
By creating this tunnel interface, we also formed RSVP neighborship sessions. Notice that R2 has two RSVP neighbors, R1 and XR3. These neighborships are not formed until there is at least one RSVP path that has been setup through adjacent routers.
R2#show ip rsvp neighbor
Neighbor Encapsulation Time since msg rcvd/sent
10.1.2.1 Raw IP 00:00:22 00:00:04
10.2.3.3 Raw IP 00:00:13 00:00:11
* Neighbors inactive for more than one hour are not shown.
Use the "inactive" keyword to display them.
Notice below that the tunnel is refreshed at approx. 25 second intervals. R1 does this by resending the complete PATH message. The complete RESV message is sent back, along with the label allocation.

You can see that this is quite a waste of resources. Imagine a few hundred tunnels in a single network and the amount of RSVP traffic that would result.
Now that we have seen how RSVP works, let’s explore options for steering the traffic along a different path.
Last updated