Steering Traffic into MPLS TE Tunnels
An MPLS TE tunnel that is up still carries no traffic. Packets enter it only when the routing table picks the tunnel as the next hop. This article explains three ways to put traffic into a tunnel (autoroute announce, forwarding adjacency and a static route), then uses an IOS XR (XRd) lab to see whose routing table changes. Which path the tunnel itself takes is covered in MPLS TE CSPF and Path Constraints.
Three steering methods
| Method | How it works | Routers whose routing table changes |
|---|---|---|
| autoroute announce | The head-end uses the tunnel as a next hop in its own SPF (IGP shortcut) | Head-end only |
| forwarding adjacency | The tunnel is advertised as a link in the IGP | Every router in the area |
| Static route | Points only the specified destination at the tunnel | Head-end only (specified destination only) |
autoroute announce
RFC 3906 describes using a tunnel as the next hop when the head-end reaches the tunnel’s tail-end during SPF. As a result, traffic to the tail-end, and also traffic to nodes downstream of the tail-end, flows over the tunnel. Nodes before the tail-end are not affected.
The tunnel is not advertised, so other routers know nothing about it. The metric carries over the IGP cost to the tail-end, so the metric in the routing table stays the same and only the next hop becomes the tunnel.
forwarding adjacency
The tunnel is advertised as an IGP link and enters the SPF of every router in the area. This concept is defined as a forwarding adjacency (FA) in RFC 4206.
- In OSPF it appears in the Router-LSA as a point-to-point link. No routing adjacency (Hello) runs over the tunnel
- An IGP link is used by SPF only when it is bidirectional, so the reverse tunnel needs the same configuration
- IOS XR advertises the FA link with metric 1 (changeable with
metricunderforwarding-adjacency). That is smaller than the physical links, so traffic from other routers is pulled toward the head-end too
Cisco’s IOS XR configuration guide lists IS-IS as the IGP that supports FA. In this article’s lab (XRd 26.1.1), the FA also appeared in the OSPF Router-LSA and was used in route computation.
Static route
Points a specified destination at the tunnel. With administrative distance 1 it wins over the IGP route, and only that destination changes.
VPN traffic follows the route to the BGP next hop
A VPN route (a VRF prefix) is resolved recursively through its BGP next hop (the remote PE’s loopback). Once the route to PE2’s loopback (9.9.9.9/32) points at the tunnel, every VPN route with that next hop goes through the tunnel. There is no need to point VRF prefixes at the tunnel one by one.
Lab topology
There are three paths with the same hop count between PE1 and PE2. The IGP shortest path is the middle one. The tunnel (PE1 → PE2) is pinned to the lower path with an affinity. Whether traffic entered the tunnel shows up as the P router names in the CE1-to-CE2 traceroute.
| Router | Lo0 | Role |
|---|---|---|
| CE1 / CE2 | 1.1.1.1 / 10.10.10.10 | AS 65101 / AS 65102 (VRF CUST-A) |
| PE1 | 2.2.2.2 | head-end |
| P1 / P2 | 3.3.3.3 / 4.4.4.4 | Upper path (OSPF cost 30 per link) |
| P3 / P4 | 5.5.5.5 / 6.6.6.6 | Middle path (10 per link, IGP shortest) |
| P5 / P6 | 7.7.7.7 / 8.8.8.8 | Lower path (20 per link, used by the tunnel) |
| PE2 | 9.9.9.9 | tail-end, BGP next hop of CE2’s route |
Overview of the test
| STEP | Change | What it shows |
|---|---|---|
| 0 | Create the tunnel (lower path, no steering) | The tunnel is up, but CE1 to CE2 stays on the middle path |
| 1 | autoroute announce |
Only PE1’s routing table changes. Destinations beyond the tail-end also use the tunnel |
| 2 | Remove autoroute and add forwarding-adjacency to tunnels in both directions |
A PE1 - PE2 link appears in the Router-LSA, and the routes on P1, P3 and P5 change too |
| 3 | Remove FA and point a static route for 9.9.9.9/32 at the tunnel | VPN traffic follows the BGP next hop alone. Other routers return to normal |
| 4 | Remove everything (final state) | Back to the STEP 0 state |
STEP 0: an up tunnel is not used
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:29:50.770 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
ipv4 unnumbered Loopback0
destination 9.9.9.9
record-route
affinity 0x2 mask 0x2
path-option 10 dynamic
!
end Path info (OSPF 1 area 0):
Hop0: 10.2.7.7
Hop1: 10.7.8.8
Hop2: 10.8.9.9
Hop3: 9.9.9.9The tunnel is up on the lower path (P5 → P6). The next hop of CE2’s route, 9.9.9.9, is still resolved over the IGP middle path.
via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8856e168 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 9.9.9.9/32 via 24013/0/21
next hop 10.2.5.5/32 GigabitEthernet0/0/0/2 labels imposed {24013 24013}RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 08:36:58.683 UTC
Type escape sequence to abort.
Tracing the route to 192.168.2.1
1 10.1.2.2 6 msec 4 msec 31 msec
2 10.2.5.5 [MPLS: Labels 24013/24013 Exp 0] 18 msec 17 msec 22 msec
3 10.5.6.6 [MPLS: Labels 24013/24013 Exp 0] 18 msec 16 msec 19 msec
4 10.6.9.9 [MPLS: Label 24013 Exp 0] 18 msec 16 msec 32 msec
5 10.9.10.10 23 msec * 16 msec CE1 to CE2 goes through P3 and P4. Both labels are 24013; the outer one is LDP and the inner one is the VPN label.
STEP 1: autoroute announce
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:39:22.638 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
autoroute announce
!
!
endO 3.3.3.3/32 [110/31] via 10.2.3.3, 00:25:51, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/61] via 9.9.9.9, 00:05:21, tunnel-te0
[110/61] via 10.2.3.3, 00:05:21, GigabitEthernet0/0/0/1
O 5.5.5.5/32 [110/11] via 10.2.5.5, 00:25:58, GigabitEthernet0/0/0/2
O 6.6.6.6/32 [110/21] via 10.2.5.5, 00:25:58, GigabitEthernet0/0/0/2
O 7.7.7.7/32 [110/21] via 10.2.7.7, 00:25:59, GigabitEthernet0/0/0/3
O 8.8.8.8/32 [110/41] via 10.2.7.7, 00:25:59, GigabitEthernet0/0/0/3
O 9.9.9.9/32 [110/31] via 9.9.9.9, 00:05:21, tunnel-te0The next hop of 9.9.9.9/32 became tunnel-te0. The metric stays 31; only the next hop changed. P2’s loopback beyond PE2 (4.4.4.4/32) also gained tunnel-te0 as a path, forming two-way ECMP with the upper path. Destinations downstream of the tail-end use the tunnel too. P5 (7.7.7.7) and P6 (8.8.8.8), which lie along the tunnel, and P4 (6.6.6.6) on the middle path stay on physical interfaces.
via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8856e168 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 9.9.9.9/32 via 24013/0/21
next hop 9.9.9.9/32 tunnel-te0 labels imposed {ImplNull 24013}The VPN route is now resolved through the tunnel via the next hop 9.9.9.9/32. The outer label is shown as ImplNull; the tunnel label is pushed on the output interface (tunnel-te0) side.
The routing tables of other routers did not change.
RP/0/RP0/CPU0:P1#show route 9.9.9.9/32
Sun Sep 13 08:40:10.494 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 61, type intra area
Installed Sep 13 08:21:51.141 for 00:18:19
Routing Descriptor Blocks
10.2.3.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
Route metric is 61
10.3.4.4, from 9.9.9.9, via GigabitEthernet0/0/0/1
Route metric is 61
No advertising protos. RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 08:41:42.196 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 21, type intra area
Installed Sep 13 08:21:51.143 for 00:19:51
Routing Descriptor Blocks
10.5.6.6, from 9.9.9.9, via GigabitEthernet0/0/0/1
Route metric is 21
No advertising protos. RP/0/RP0/CPU0:P5#show route 9.9.9.9/32
Sun Sep 13 08:43:11.597 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 41, type intra area
Installed Sep 13 08:21:49.530 for 00:21:22
Routing Descriptor Blocks
10.7.8.8, from 9.9.9.9, via GigabitEthernet0/0/0/1
Route metric is 41
No advertising protos. RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 08:46:46.179 UTC
Type escape sequence to abort.
Tracing the route to 192.168.2.1
1 10.1.2.2 6 msec 16 msec 5 msec
2 10.2.7.7 [MPLS: Labels 24014/24013 Exp 0] 18 msec 15 msec 15 msec
3 10.7.8.8 [MPLS: Labels 24014/24013 Exp 0] 25 msec 16 msec 43 msec
4 10.8.9.9 [MPLS: Label 24013 Exp 0] 16 msec 16 msec 18 msec
5 10.9.10.10 17 msec * 17 msec CE1 to CE2 moved to the lower path (P5 and P6). The outer label 24014 is the tunnel (RSVP) and the inner 24013 is the VPN label.
STEP 2: forwarding adjacency
FA is configured on both ends. PE2 gets a reverse tunnel (PE2 → PE1), also pinned to the lower path.
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:49:01.869 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
no autoroute announce
forwarding-adjacency
!
!
endRP/0/RP0/CPU0:PE2#show configuration commit changes last 1
Sun Sep 13 08:48:56.033 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
ipv4 unnumbered Loopback0
destination 2.2.2.2
record-route
affinity 0x2 mask 0x2
forwarding-adjacency
!
path-option 10 dynamic
!
endA point-to-point link to PE2 (9.9.9.9) with metric 1 was added at the top of PE1’s Router-LSA.
RP/0/RP0/CPU0:PE1#show ospf database router self-originate
Sun Sep 13 08:55:46.906 UTC
OSPF Router with ID (2.2.2.2) (Process ID 1)
Router Link States (Area 0)
LS age: 239
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 2.2.2.2
Advertising Router: 2.2.2.2
LS Seq Number: 80000007
Checksum: 0xb2a9
Length: 120
Number of Links: 8
Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 9.9.9.9
(Link Data) Router Interface address: 0.0.0.9
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: a Stub Network
(Link ID) Network/subnet number: 2.2.2.2
(Link Data) Network Mask: 255.255.255.255
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 3.3.3.3
(Link Data) Router Interface address: 10.2.3.2
Number of TOS metrics: 0
TOS 0 Metrics: 30
Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.2.3.0
(Link Data) Network Mask: 255.255.255.0
Number of TOS metrics: 0
TOS 0 Metrics: 30
Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 5.5.5.5
(Link Data) Router Interface address: 10.2.5.2
Number of TOS metrics: 0
TOS 0 Metrics: 10
Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.2.5.0
(Link Data) Network Mask: 255.255.255.0
Number of TOS metrics: 0
TOS 0 Metrics: 10
Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 7.7.7.7
(Link Data) Router Interface address: 10.2.7.2
Number of TOS metrics: 0
TOS 0 Metrics: 20
Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.2.7.0
(Link Data) Network Mask: 255.255.255.0
Number of TOS metrics: 0
TOS 0 Metrics: 20In the attached capture between PE1 and P3, No.1777 is the LS Update that carried this Router-LSA.
Internet Protocol Version 4, Src: 10.2.5.2, Dst: 224.0.0.5
Message Type: LS Update (4)
Source OSPF Router: 2.2.2.2
LS Type: Router-LSA (1)
Link State ID: 2.2.2.2
Advertising Router: 2.2.2.2
Sequence Number: 0x80000006
Number of Links: 8
Type: PTP ID: 9.9.9.9 Data: 0.0.0.9 Metric: 1
Type: Stub ID: 2.2.2.2 Data: 255.255.255.255 Metric: 1
Type: PTP ID: 3.3.3.3 Data: 10.2.3.2 Metric: 30
Type: Stub ID: 10.2.3.0 Data: 255.255.255.0 Metric: 30
Type: PTP ID: 5.5.5.5 Data: 10.2.5.2 Metric: 10
Type: Stub ID: 10.2.5.0 Data: 255.255.255.0 Metric: 10
Type: PTP ID: 7.7.7.7 Data: 10.2.7.2 Metric: 20
Type: Stub ID: 10.2.7.0 Data: 255.255.255.0 Metric: 20In PE1’s routing table, even the loopbacks of P2, P4 and P6 now go through the tunnel, because the cost to PE2 is only metric 1.
O 3.3.3.3/32 [110/31] via 10.2.3.3, 00:36:47, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/32] via 0.0.0.0, 00:06:37, tunnel-te0
O 5.5.5.5/32 [110/11] via 10.2.5.5, 00:36:54, GigabitEthernet0/0/0/2
O 6.6.6.6/32 [110/12] via 0.0.0.0, 00:06:37, tunnel-te0
O 7.7.7.7/32 [110/21] via 10.2.7.7, 00:36:55, GigabitEthernet0/0/0/3
O 8.8.8.8/32 [110/22] via 0.0.0.0, 00:06:37, tunnel-te0
O 9.9.9.9/32 [110/2] via 0.0.0.0, 00:06:37, tunnel-te0Other routers’ routing tables changed as well. On all three, the next hop of 9.9.9.9/32 points toward PE1.
RP/0/RP0/CPU0:P1#show route 9.9.9.9/32
Sun Sep 13 08:51:02.825 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 32, type intra area
Installed Sep 13 08:49:01.460 for 00:02:01
Routing Descriptor Blocks
10.2.3.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
Route metric is 32
No advertising protos. RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 08:52:36.673 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 12, type intra area
Installed Sep 13 08:49:01.460 for 00:03:35
Routing Descriptor Blocks
10.2.5.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
Route metric is 12
No advertising protos. RP/0/RP0/CPU0:P5#show route 9.9.9.9/32
Sun Sep 13 08:54:07.791 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 22, type intra area
Installed Sep 13 08:49:01.460 for 00:05:06
Routing Descriptor Blocks
10.2.7.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
Route metric is 22
No advertising protos. P3 used P4 (metric 21) through STEP 1, but going back to PE1 and into the tunnel (10 + 1 + 1 = 12) is now shorter. P5’s traceroute goes up to PE1 and then comes back through P5 itself (10.2.7.7) in the tunnel.
RP/0/RP0/CPU0:P5#traceroute 9.9.9.9 source 7.7.7.7
Sun Sep 13 08:54:26.626 UTC
Type escape sequence to abort.
Tracing the route to 9.9.9.9
1 10.2.7.2 [MPLS: Label 24013 Exp 0] 15 msec 13 msec 14 msec
2 10.2.7.7 [MPLS: Label 24014 Exp 0] 27 msec 12 msec 14 msec
3 10.7.8.8 [MPLS: Label 24014 Exp 0] 14 msec 13 msec 13 msec
4 10.8.9.9 14 msec * 16 msec STEP 3: static route
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:59:58.517 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
no forwarding-adjacency
!
router static
address-family ipv4 unicast
9.9.9.9/32 tunnel-te0
!
!
endRP/0/RP0/CPU0:PE2#show configuration commit changes last 1
Sun Sep 13 08:59:52.143 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
no interface tunnel-te0
endrouter static is added per prefix.
RP/0/RP0/CPU0:PE1#show route 9.9.9.9/32
Sun Sep 13 09:05:31.342 UTC
Routing entry for 9.9.9.9/32
Known via "static", distance 1, metric 0 (connected)
Installed Sep 13 08:59:57.812 for 00:05:33
Routing Descriptor Blocks
directly connected, via tunnel-te0
Route metric is 0
No advertising protos. O 3.3.3.3/32 [110/31] via 10.2.3.3, 00:46:39, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/61] via 10.2.3.3, 00:05:39, GigabitEthernet0/0/0/1
[110/61] via 10.2.5.5, 00:05:39, GigabitEthernet0/0/0/2
O 5.5.5.5/32 [110/11] via 10.2.5.5, 00:46:46, GigabitEthernet0/0/0/2
O 6.6.6.6/32 [110/21] via 10.2.5.5, 00:05:39, GigabitEthernet0/0/0/2
O 7.7.7.7/32 [110/21] via 10.2.7.7, 00:46:47, GigabitEthernet0/0/0/3
O 8.8.8.8/32 [110/41] via 10.2.7.7, 00:05:39, GigabitEthernet0/0/0/3
S 9.9.9.9/32 is directly connected, 00:05:33, tunnel-te0Only 9.9.9.9/32 points at tunnel-te0 as a static route; the other loopbacks are back on IGP routes. The VPN route is still resolved through the tunnel.
via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8856e168 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 9.9.9.9/32 via 24013/0/21
next hop 0.0.0.0/32 tunnel-te0 labels imposed {ImplNull 24013}With FA removed, the link to PE2 disappeared from PE1’s Router-LSA (No.2411).
Internet Protocol Version 4, Src: 10.2.5.2, Dst: 224.0.0.5
Message Type: LS Update (4)
Source OSPF Router: 2.2.2.2
LS Type: Router-LSA (1)
Link State ID: 2.2.2.2
Advertising Router: 2.2.2.2
Sequence Number: 0x80000008
Number of Links: 7
Type: Stub ID: 2.2.2.2 Data: 255.255.255.255 Metric: 1
Type: PTP ID: 3.3.3.3 Data: 10.2.3.2 Metric: 30
Type: Stub ID: 10.2.3.0 Data: 255.255.255.0 Metric: 30
Type: PTP ID: 5.5.5.5 Data: 10.2.5.2 Metric: 10
Type: Stub ID: 10.2.5.0 Data: 255.255.255.0 Metric: 10
Type: PTP ID: 7.7.7.7 Data: 10.2.7.2 Metric: 20
Type: Stub ID: 10.2.7.0 Data: 255.255.255.0 Metric: 20RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 09:02:27.028 UTC
Routing entry for 9.9.9.9/32
Known via "ospf 1", distance 110, metric 21, type intra area
Installed Sep 13 08:59:51.374 for 00:02:35
Routing Descriptor Blocks
10.5.6.6, from 9.9.9.9, via GigabitEthernet0/0/0/1
Route metric is 21
No advertising protos. RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 09:07:32.982 UTC
Type escape sequence to abort.
Tracing the route to 192.168.2.1
1 10.1.2.2 23 msec 6 msec 5 msec
2 10.2.7.7 [MPLS: Labels 24014/24013 Exp 0] 63 msec 17 msec 17 msec
3 10.7.8.8 [MPLS: Labels 24014/24013 Exp 0] 19 msec 18 msec 18 msec
4 10.8.9.9 [MPLS: Label 24013 Exp 0] 18 msec 18 msec 17 msec
5 10.9.10.10 19 msec * 16 msec P3 is back on P4, and CE1 to CE2 stays on the lower path.
STEP 4: remove everything
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 09:09:46.338 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
no interface tunnel-te0
router static
address-family ipv4 unicast
no 9.9.9.9/32 tunnel-te0
!
!
endRP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 09:17:09.673 UTC
Type escape sequence to abort.
Tracing the route to 192.168.2.1
1 10.1.2.2 18 msec 5 msec 5 msec
2 10.2.5.5 [MPLS: Labels 24013/24013 Exp 0] 16 msec 17 msec 17 msec
3 10.5.6.6 [MPLS: Labels 24013/24013 Exp 0] 67 msec 18 msec 17 msec
4 10.6.9.9 [MPLS: Label 24013 Exp 0] 19 msec 32 msec 17 msec
5 10.9.10.10 18 msec * 20 msec CE1 to CE2 is back on the middle path.
Comparing the three methods
| STEP | Method | 9.9.9.9/32 on PE1 | 9.9.9.9/32 on P3 | CE1 → CE2 |
|---|---|---|---|---|
| 0 | None | Middle path (Gi0/0/0/2) | Via P4 | Middle |
| 1 | autoroute announce | tunnel-te0 | Via P4 | Lower |
| 2 | forwarding adjacency | tunnel-te0 (metric 2) | Via PE1 | Lower |
| 3 | Static route | tunnel-te0 (static) | Via P4 | Lower |
| 4 | None | Middle path | Via P4 | Middle |
Design notes
- autoroute and static routes are one-way. Carrying return traffic needs a tunnel and configuration on PE2 as well
- FA pulls traffic in. Adding a metric-1 link makes some routers take a detour, like P5. Set the FA metric to match the cost of the real path
- FA is used by SPF only once tunnels exist in both directions
- To carry VPN traffic, the destination to point at the tunnel is the remote PE’s loopback (the BGP next hop)
Lab configuration and show outputs
In each STEP the following files were collected from all ten routers, one file per router. The lab configuration is the ..._run.txt (the final state is in the last STEP).
| File | Contents |
|---|---|
..._show.txt |
show version / show route / show ospf database router / show mpls traffic-eng tunnels / show cef vrf CUST-A (PEs only) and more |
..._log.txt |
show logging limited to that STEP |
..._run.txt |
show running-config at that STEP (the lab configuration of that STEP) |
..._ping.txt |
ping (50 packets, 1-second timeout) and traceroute in that STEP |
..._oam.txt |
ping / traceroute mpls traffic-eng tunnel-te 0 and ping / traceroute mpls ipv4 (PE1 and PE2) |
..._trace.txt |
show mpls traffic-eng trace head-end / link and show rsvp trace signalling (eight core routers) |
..._commit.cfg |
Only the configuration actually committed in that STEP, for the routers that changed |
STEP 0: Create the tunnel (lower path, no steering)
| Router | show output | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | ping | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | ping | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | ping | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 1: autoroute announce
| Router | show output | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | ping | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | ping | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | ping | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 2: Remove autoroute and add forwarding-adjacency to tunnels in both directions
| Router | show output | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | ping | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | ping | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | ping | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | cfg |
| CE2 | show | log | run | ping | - | - | - |
STEP 3: Remove FA and point a static route for 9.9.9.9/32 at the tunnel
| Router | show output | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | ping | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | ping | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | ping | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | cfg |
| CE2 | show | log | run | ping | - | - | - |
STEP 4: Remove everything (final state)
| Router | show output | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | ping | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | ping | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | ping | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
Full captures of the three links from PE1 (toward P1, P3 and P5). They contain the OSPF and RSVP packets of all STEPs.
Download the full capture between PE1 and P1 (upper path)
Download the full capture between PE1 and P3 (middle path)
Download the full capture between PE1 and P5 (lower path)
References
| Source | Sections used |
|---|---|
| RFC 3906 Calculating Interior Gateway Protocol (IGP) Routes Over Traffic Engineering Tunnels | 2 (using the tunnel tail-end as the next hop in SPF; destinations downstream of the tail-end also use the tunnel), 4.1 (absolute and relative metrics) |
| RFC 4206 Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE) | 1 (definition of FA; nodes connected by an FA would not usually have a routing adjacency), 3.1.1 (link type is point-to-point) |
| Cisco IOS XR MPLS Configuration Guide, “Implementing MPLS Traffic Engineering” | Restrictions of MPLS-TE Forwarding Adjacency (bidirectional configuration, IS-IS as the supported IGP) |
The FA metric of 1 and the behavior with OSPF are observations on the lab router (XRd 26.1.1).
- What Is MPLS
- MPLS Labels and the Label Stack
- MPLS Label Operations (push / swap / pop) and PHP
- MPLS TTL Processing and MTU
- What Is LDP
- LDP Label Distribution Modes and Label Spaces
- LDP-IGP Synchronization and LDP Session Protection
- LDP Label Advertisement Control (Filtering)
- LDP Session Authentication (TCP MD5)
- MPLS OAM (LSP Ping and LSP Traceroute)
- What Is MPLS TE (RSVP-TE)
- MPLS TE CSPF and Path Constraints (Bandwidth, Affinity, TE Metric)
- Steering Traffic into MPLS TE Tunnels