CCIE SPv5.1 Labs
  • Intro
    • Setup
  • Purpose
  • Video Demonstration
  • Containerlab Tips
  • Labs
    • ISIS
      • Start
      • Topology
      • Prefix Suppression
      • Hello padding
      • Overload Bit
      • LSP size
      • Default metric
      • Hello/Hold Timer
      • Mesh groups
      • Prefix Summarization
      • Default Route Preference
      • ISIS Timers
      • Log Neighbor Changes
      • Troubleshooting 1 - No routes
      • Troubleshooting 2 - Adjacency
      • IPv6 Single Topology
      • IPv6 Single Topology Challenge
      • IPv6 Multi Topology
      • IPv6 Single to Multi Topology
      • Wide Metrics Explained
      • Route Filtering
      • Backdoor Link
      • Non-Optimal Intra-Area routing
      • Multi Area
      • Authentication
      • Conditional ATT Bit
      • Troubleshooting iBGP
      • Troubleshooting TE Tunnel
    • LDP
      • Start
      • Topology
      • LDP and ECMP
      • LDP and Static Routes
      • LDP Timers
      • LDP Authentication
      • LDP Session Protection
      • LDP/IGP Sync (OSPF)
      • LDP/IGP Sync (ISIS)
      • LDP Local Allocation Filtering
      • LDP Conditional Label Advertisement
      • LDP Inbound Label Advertisement Filtering
      • LDP Label Advertisement Filtering Challenge
      • LDP Implicit Withdraw
      • LDP Transport Address Troubleshooting
      • LDP Static Labels
    • MPLS-TE
      • Start
      • Topology
      • Basic TE Tunnel w/ OSPF
      • Basic TE Tunnel w/ ISIS
      • TE Tunnel using Admin Weight
      • TE Tunnel using Link Affinity
      • TE Tunnel with Explicit-Null
      • TE Tunnel with Conditional Attributes
      • RSVP message pacing
      • Reoptimization timer
      • IGP TE Flooding Thresholds
      • CSPF Tiebreakers
      • TE Tunnel Preemption
      • TE Tunnel Soft Preemption
      • Tunneling LDP inside RSVP
      • PE to P TE Tunnel
      • Autoroute Announce Metric (XE)
      • Autoroute Announce Metric (XR)
      • Autoroute Announce Absolute Metric
      • Autoroute Announce Backup Path
      • Forwarding Adjacency
      • Forwarding Adjacency with OSPF
      • TE Tunnels with UCMP
      • Auto-Bandwidth
      • FRR Link Protection (XE, BFD)
      • FRR Link Protection (XE, RSVP Hellos)
      • FRR Node Protection (XR)
      • FRR Path Protection
      • FRR Multiple Backup Tunnels (Node Protection)
      • FRR Multiple Backup Tunnels (Link Protection)
      • FRR Multiple Backup Tunnels (Backwidth/Link Protection)
      • FRR Backup Auto-Tunnels
      • FRR Backup Auto-Tunnels with SRLG
      • Full Mesh Auto-Tunnels
      • Full Mesh Dynamic Auto-Tunnels
      • One-Hop Auto-Tunnels
      • CBTS/PBTS
      • Traditional DS-TE
      • IETF DS-TE with MAM
      • IETF DS-TE with RDM
      • RDM w/ FRR Troubleshooting
      • Per-VRF TE Tunnels
      • Tactical TE Issues
      • Multicast and MPLS-TE
    • SR
      • Start
      • Topology
      • Basic SR with ISIS
      • Basic SR with OSPF
      • SRGB Modifcation
      • SR with ExpNull
      • SR Anycast SID
      • SR Adjacency SID
      • SR LAN Adjacency SID (Walkthrough)
      • SR and RSVP-TE interaction
      • SR Basic Inter-area with ISIS
      • SR Basic Inter-area with OSPF
      • SR Basic Inter-IGP (redistribution)
      • SR Basic Inter-AS using BGP
      • SR BGP Data Center (eBGP)
      • SR BGP Data Center (iBGP)
      • LFA
      • LFA Tiebreakers (ISIS)
      • LFA Tiebreakers (OSPF)
      • Remote LFA
      • RLFA Tiebreakers?
      • TI-LFA
      • Remote LFA or TILFA?
      • TI-LFA Node Protection
      • TI-LFA SRLG Protection
      • TI-LFA Protection Priorities (ISIS)
      • TI-LFA Protection Priorities (OSPF)
      • Microloop Avoidance
      • SR/LDP Interworking
      • SR/LDP SRMS OSPF Inter-Area
      • SR/LDP Design Challenge #1
      • SR/LDP Design Challenge #2
      • Migrate LDP to SR (ISIS)
      • OAM with SR
      • SR-MPLS using IPv6
      • Basic SR-TE with AS
      • Basic SR-TE with AS and ODN
      • SR-TE with AS Primary/Secondary Paths
      • SR-TE Dynamic Policies
      • SR-TE Dynamic Policy with Margin
      • SR-TE Explicit Paths
      • SR-TE Disjoint Planes using Anycast SIDs
      • SR-TE Flex-Algo w/ Latency
      • SR-TE Flex-Algo w/ Affinity
      • SR-TE Disjoint Planes using Flex-Algo
      • SR-TE BSIDs
      • SR-TE RSVP-TE Stitching
      • SR-TE Autoroute Include
      • SR Inter-IGP using PCE
      • SR-TE PCC Features
      • SR-TE PCE Instantiated Policy
      • SR-TE PCE Redundancy
      • SR-TE PCE Redundancy w/ Sync
      • SR-TE Basic BGP EPE
      • SR-TE BGP EPE for Unified MPLS
      • SR-TE Disjoint Paths
      • SR Converged SDN Transport Challenge
      • SR OAM DPM
      • SR OAM Tools
      • Performance-Measurement (Interface Delay)
    • SRv6
      • Start
      • Topology
      • Basic SRv6
      • SRv6 uSID
      • SRv6 uSID w/ EVPN-VPWS and BGP IPv4/IPv6
      • SRv6 uSID w/ SR-TE
      • SRv6 uSID w/ SR-TE Explicit Paths
      • SRv6 uSID w/ L3 IGW
      • SRv6 uSID w/ Dual-Connected PE
      • SRv6 uSID w/ Flex Algo
      • SRv6 uSID - Scale (Pt. 1)
      • SRv6 uSID - Scale (Pt. 2)
      • SRv6 uSID - Scale (Pt. 3) (UPA Walkthrough)
      • SRv6 uSID - Scale (Pt. 4) (Flex Algo)
      • SRv6 uSID w/ TI-LFA
    • Multicast
      • Start
      • Topology
      • Basic PIM-SSM
      • PIM-SSM Static Mapping
      • Basic PIM-SM
      • PIM-SM with Anycast RP
      • PIM-SM with Auto-RP
      • PIM-SM with BSR
      • PIM-SM with BSR for IPv6
      • PIM-BiDir
      • PIM-BiDir for IPv6
      • PIM-BiDir with Phantom RP
      • PIM Security
      • PIM Boundaries with AutoRP
      • PIM Boundaries with BSR
      • PIM-SM IPv6 using Embedded RP
      • PIM SSM Range Note
      • PIM RPF Troubleshooting #1
      • PIM RPF Troubleshooting #2
      • PIM RP Troubleshooting
      • PIM Duplicate Traffic Troubleshooting
      • Using IOS-XR as a Sender/Receiver
      • PIM-SM without Receiver IGMP Joins
      • RP Discovery Methods
      • Basic Interdomain Multicast w/o MSDP
      • Basic Interdomain Multicast w/ MSDP
      • MSDP Filtering
      • MSDP Flood Reduction
      • MSDP Default Peer
      • MSDP RPF Check (IOS-XR)
      • MSDP RPF Check (IOS-XE)
      • Interdomain MBGP Policies
      • PIM Boundaries using MSDP
    • MVPN
      • Start
      • Topology
      • Profile 0
      • Profile 0 with data MDTs
      • Profile 1
      • Profile 1 w/ Redundant Roots
      • Profile 1 with data MDTs
      • Profile 6
      • Profile 7
      • Profile 3
      • Profile 3 with S-PMSI
      • Profile 11
      • Profile 11 with S-PMSI
      • Profile 11 w/ Receiver-only Sites
      • Profile 9 with S-PMSI
      • Profile 12
      • Profile 13
      • UMH (Upstream Multicast Hop) Challenge
      • Profile 13 w/ Configuration Knobs
      • Profile 13 w/ PE RP
      • Profile 12 w/ PE Anycast RP
      • Profile 14 (Partitioned MDT)
      • Profile 14 with Extranet option #1
      • Profile 14 with Extranet option #2
      • Profile 14 w/ IPv6
      • Profile 17
      • Profile 19
      • Profile 21
    • MVPN SR
      • Start
      • Topology
      • Profile 27
      • Profile 27 w/ Constraints
      • Profile 27 w/ FRR
      • Profile 28
      • Profile 28 w/ Constraints and FRR
      • Profile 28 w/ Data MDTs
      • Profile 29
    • VPWS
      • Start
      • Topology
      • Basic VPWS
      • VPWS with Tag Manipulation
      • Redundant VPWS
      • Redundant VPWS (IOS-XR)
      • VPWS with PW interfaces
      • Manual VPWS
      • VPWS with Sequencing
      • Pseudowire Logging
      • VPWS with FAT-PW
      • MS-PS (Pseudowire stitching)
      • VPWS with BGP AD
    • VPLS
      • Start
      • Topology
      • Basic VPLS with LDP
      • VPLS with LDP and BGP
      • VPLS with BGP only
      • Hub and Spoke VPLS
      • Tunnel L2 Protocols over VPLS
      • Basic H-VPLS
      • H-VPLS with BGP
      • H-VPLS with QinQ
      • H-VPLS with Redundancy
      • VPLS with Routing
      • VPLS MAC Protection
      • Basic E-TREE
      • VPLS with LDP/BGP-AD and XRv RR
      • VPLS with BGP and XRv RR
      • VPLS with Storm Control
    • EVPN
      • Start
      • Topology
      • EVPN VPWS
      • EVPN VPWS Multihomed
      • EVPN VPWS Multihomed Single-Active
      • Basic Single-homed EVPN E-LAN
      • EVPN E-LAN Service Label Allocation
      • EVPN E-LAN Ethernet Tag
      • EVPN E-LAN Multihomed
      • EVPN E-LAN on XRv
      • EVPN IRB
      • EVPN-VPWS Multihomed IOS-XR (All-Active)
      • EVPN-VPWS Multihomed IOS-XR (Port-Active)
      • EVPN-VPWS Multihomed IOS-XR (Single-Active)
      • EVPN-VPWS Multihomed IOS-XR (Non-Bundle)
      • PBB-EVPN (Informational)
    • BGP Multi-Homing (XE)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 Shadow Session
      • Lab5 Shadow RR
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + Shadow RR
      • Lab9 MPLS + RDs + UCMP
    • BGP Multi-Homing (XR)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 “Shadow Session”
      • Lab5 “Shadow RR”
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + “Shadow RR”
      • Lab9 MPLS + RDs + UCMP
      • Lab10 MPLS + Same RD + Add-Path + UCMP
      • Lab11 MPLS + Same RD + Add-Path + Repair Path
    • BGP
      • Start
      • Conditional Advertisement
      • Aggregation and Deaggregation
      • Local AS
      • BGP QoS Policy Propagation
      • Non-Optimal eBGP Routing
      • Multihomed Enterprise Challenge
      • Provider Communities
      • Destination-Based RTBH
      • Destination-Based RTBH (Community-Based)
      • Source-Based RTBH
      • Source-Based RTBH (Community-Based)
      • Multihomed Enterprise Challenge (XRv)
      • Provider Communities (XRv)
      • DMZ Link BW Lab1
      • DMZ Link BW Lab2
      • PIC Edge in the Global Table
      • PIC Edge Troubleshooting
      • PIC Edge for VPNv4
      • AIGP
      • AIGP Translation
      • Cost-Community (iBGP)
      • Cost-Community (confed eBGP)
      • Destination-Based RTBH (VRF Provider-triggered)
      • Destination-Based RTBH (VRF CE-triggered)
      • Source-Based RTBH (VRF Provider-triggered)
      • Flowspec (Global IPv4/6PE)
      • Flowspec (VRF)
      • Flowspec (Global IPv4/6PE w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ Redirect) T-Shoot
      • Flowspec (VRF w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ CE Advertisement)
    • Intra-AS L3VPN
      • Start
      • Partitioned RRs
      • Partitioned RRs with IOS-XR
      • RT Filter
      • Non-Optimal Multi-Homed Routing
      • Troubleshoot #1 (BGP)
      • Troubleshoot #2 (OSPF)
      • Troubleshoot #3 (OSPF)
      • Troubleshoot #4 (OSPF Inter-AS)
      • VRF to Global Internet Access (IOS-XE)
      • VRF to Global Internet Access (IOS-XR)
    • Inter-AS L3VPN
      • Start
      • Inter-AS Option A
      • Inter-AS Option B
      • Inter-AS Option C
      • Inter-AS Option AB (D)
      • CSC
      • CSC with Option AB (D)
      • Inter-AS Option C - iBGP LU
      • Inter-AS Option B w/ RT Rewrite
      • Inter-AS Option C w/ RT Rewrite
      • Inter-AS Option A Multi-Homed
      • Inter-AS Option B Multi-Homed
      • Inter-AS Option C Multi-Homed
    • Russo Inter-AS
      • Start
      • Topology
      • Option A L3NNI
      • Option A L2NNI
      • Option A mVPN
      • Option B L3NNI
      • Option B mVPN
      • Option C L3NNI
      • Option C L3NNI w/ L2VPN
      • Option C mVPN
    • BGP RPKI
      • Start
      • RPKI on IOS-XE (Enabling the feature)
      • RPKI on IOS-XE (Validation)
      • RPKI on IOS-XR (Enabling the feature)
      • Enable SSH in Routinator
      • RPKI on IOS-XR (Validation)
      • RPKI on IOS-XR (RPKI Routes)
      • RPKI on IOS-XR (VRF)
      • RPKI iBGP Mesh (No Signaling)
      • RPKI iBGP Mesh (iBGP Signaling)
    • NAT
      • Start
      • Egress PE NAT44
      • NAT44 within an INET VRF
      • Internet Reachability between VRFs
      • CGNAT
      • NAT64 Stateful
      • NAT64 Stateful w/ Static NAT
      • NAT64 Stateless
      • MAP-T BR
    • BFD
      • Start
      • Topology
      • OSPF Hellos
      • ISIS Hellos
      • BGP Keepalives
      • PIM Hellos
      • Basic BFD for all protocols
      • BFD Asymmetric Timers
      • BFD Templates
      • BFD Tshoot #1
      • BFD for Static Routes
      • BFD Multi-Hop
      • BFD for VPNv4 Static Routes
      • BFD for VPNv6 Static Routes
      • BFD for Pseudowires
    • QoS
      • Start
      • QoS on IOS-XE
      • Advanced QoS on IOS-XE Pt. 1
      • Advanced QoS on IOS-XE Pt. 2
      • MPLS QoS Design
      • Notes - QoS on IOS-XR
    • NSO
      • Start
      • Basic NSO Usage
      • Basic NSO Template Service
      • Advanced NSO Template Service
      • Advanced NSO Template Service #2
      • NSO Template vs. Template Service
      • NSO API using Python
      • NSO API using Python #2
      • NSO API using Python #3
      • Using a NETCONF NED
      • Python Service
      • Nano Services
    • MDT
      • Start
      • MDT Server Setup
      • Basic Dial-Out
      • Filtering Data using XPATH
      • Finding the correct YANG model
      • Finding the correct YANG model #2
      • Event-Driven MDT
      • Basic Dial-In using gNMI
      • Dial-Out with TLS
      • Dial-In with TLS
      • Dial-In with two-way TLS
    • App-Hosting
      • Start
      • Lab - iperf3 Docker Container
      • Notes - LXC Container
      • Notes - Native Applications
      • Notes - Process Scripts
    • ZTP
      • Notes - Classic ZTP
      • Notes - Secure ZTP
    • L2 Connectivity Notes
      • 802.1ad (Q-in-Q)
      • MST-AG
      • MC-LAG
      • G.8032
    • Ethernet OAM
      • Start
      • Topology
      • CFM
      • y1731
      • Notes - y1564
    • Security
      • Start
      • Notes - Security ACLs
      • Notes - Hybrid ACLs
      • Notes - MPP (IOS-XR)
      • Notes - MPP (IOS-XE)
      • Notes - CoPP (IOS-XE)
      • Notes - LPTS (IOS-XR)
      • Notes - WAN MACsec White Paper
      • Notes - WAN MACsec Config Guide
      • Notes - AAA
      • Notes - uRPF
      • Notes - VTY lines (IOS-XR)
      • Lab - uRPF
      • Lab - MPP
      • Lab - AAA (IOS-XE)
      • Lab - AAA (IOS-XR)
      • Lab - CoPP and LPTS
    • Assurance
      • Start
      • Notes - Syslog on IOS-XE
      • Notes - Syslog on IOS-XR
      • Notes - SNMP Traps
      • Syslog (IOS-XR)
      • RMON
      • Netflow (IOS-XE)
      • Netflow (IOS-XR)
Powered by GitBook
On this page
  • Answer
  • Verification
  • Theory
  • IGP
  • The TE Tunnel and CSPF
  • RSVP-TE
  • Forwarding traffic onto the TE tunnel
  1. Labs
  2. MPLS-TE

Basic TE Tunnel w/ OSPF

Load mpls.te.init.with.ospf.cfg or mpls.te.init.with.ospf.and.rsvp.cfg (to skip enabling RSVP-TE)

#IOS-XE
config replace flash:mpls.te.init.with.ospf.cfg
! or
config replace flash:mpls.te.init.with.ospf.and.rsvp.cfg

#IOS-XR
configure
load bootflash:mpls.te.init.with.ospf.cfg
! or
load bootflash:mpls.te.init.with.ospf.and.rsvp.cfg
commit replace
y

The basic IP addresses, L3VPN between XRv14 and XRv13, and OSPF has been pre-configured.

Currently traffic between XRv14 and XRv13 is not working because LDP is not running in the core. Configure an RSVP tunnel on the PEs, CSR8 and XRv11, that takes the following path (both forward and reverse):

  • CSR8

  • CSR9

  • CSR2

  • CSR10

  • XRv11

Answer

First we must enable RSVP and MPLS-TE on all routers and all interfaces. CSR1 and XRv11 are given as an example. If mpls.te.init.with.ospf.and.rsvp.cfg was loaded, this step is skipped.

#CSR1
mpls traffic-eng tunnels
!
int GigabitEthernet2.513
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000
int GigabitEthernet2.514
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000
int GigabitEthernet2.516
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000
int GigabitEthernet2.517
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000
int GigabitEthernet2.518
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000
int GigabitEthernet2.519
 mpls traffic-eng tunnels
 ip rsvp bandwidth 1000000

#XRv11
mpls traffic-eng
 int Gi0/0/0/0.501
 int Gi0/0/0/0.512
 int Gi0/0/0/0.531
 int Gi0/0/0/0.551
!
rsvp
 int Gi0/0/0/0.501
  bandwidth 1 g
 int Gi0/0/0/0.512
  bandwidth 1 g
 int Gi0/0/0/0.531
  bandwidth 1 g
 int Gi0/0/0/0.551
  bandwidth 1 g

Next we enable MPLS-TE under the IGP, which is OSPF in our case

#CSR1
router ospf 1
 mpls traffic-eng area 0
 mpls traffic-eng router-id lo0

#XRv11
router ospf 1
 mpls traffic-eng router-id lo0
 area 0
  mpls traffic-eng

Additionally, on IOS-XR, we must enable LDP in order for the LFIB to function. We don’t need to actually enable LDP on any interfaces.

#XRv11
mpls ldp

Now we are ready to create the TE tunnel interfaces on each PE. Create an explict-path that defines the static path we want the LSP to take:

#CSR8
ip explicit-path name R9_R2_R10_R11 enable
 index 1 next-address loose 9.9.9.9
 index 2 next-address loose 2.2.2.2
 index 3 next-address loose 10.10.10.10
 index 4 next-address loose 11.11.11.11
!
interface Tunnel0
 description TE Tunnel To XRv11
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 11.11.11.11
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng path-option 1 explicit name R9_R2_R10_R11

#XRv11
explicit-path name R10_R2_R9_R8
 index 1 next-address loose ipv4 unicast 10.10.10.10
 index 2 next-address loose ipv4 unicast 2.2.2.2
 index 3 next-address loose ipv4 unicast 9.9.9.9
 index 4 next-address loose ipv4 unicast 8.8.8.8
!
interface tunnel-te0
 ipv4 unnumbered Loopback0
 autoroute announce
 !
 destination 8.8.8.8
 path-option 1 explicit name R10_R2_R9_R8

Verification

We can quickly verify that traffic between the two CEs (XRv13 and XRv14) is taking the correct path in the core. (We did not disable TTL propagation in the core).

This tells us the tunnel is working, but we can also verify the tunnel is up and signaled.

We can also see the ERO on the path for which CSR8 is the headend:

  • CSR8 is acting as the tailend for the second tunnel which is why it has no ERO

Any transit router in the path has state for these two tunnels as well:

We use the same command on XRv to verify the tunnels:

We can also filter this by role on both XE and XR, for example:

Theory

MPLS-TE allows you to preform source routing - the ingress LSR controls the path traffic will take. MPLS-TE allows for path calculation using many more constraints that just the IGP metric. You can use link affinity, available bandwidth, or TE metric. MPLS-TE also allows you to use the fast reroute feature, but we will hold off on exploring this until later.

MPLS-TE uses the following concepts:

  • A TED (TE database) to store these new metrics, and a way to feed it (using the IGP)

  • A protocol for signaling the LSP, keeping the state refreshed, advertising the label hop-by-hop, and reserving bandwidth in the control plane (RSVP)

  • A way to forward traffic over the LSP (autoroute announce or forwarding adjacency)

To start, we enable MPLS TE globally (mpls traffic-eng tunnels on IOS-XE) and enable MPLS-TE per interface (mpls traffic-eng tunnels under the interface on IOS-XE, and mpls traffic-eng int X on IOS-XR). Next we also need to enable RSVP on all interfaces, as RSVP is the signaling protocol used for MPLS-TE. This is done on IOS-XE with ip rsvp bandwidth [ bw ] and on IOS-XR under rsvp int X bandwidth [ bw ]. By default, if the bw is not specified, it defaults to 75%. (In this case, you just use the bandwidth statement with no specific bandwidth). Note that if you do not wish to allocate bandwidth on each interface, then you don’t need any rsvp commands on IOS-XE nor IOS-XR. RSVP is automatically activated when activating mpls traffic-eng tunnels under an interface in IOS-XE, and when activating an interface under mpls traffic-eng on IOS-XR.

IGP

Next, we need to enable MPLS-TE on the IGP, because it will be used to carry the link attribute information. Specifically it will carry the TE metric, the link affinity, and the available and reserved bandwidth for each bandwidth priority level (0-7).

OSPF and ISIS are the only supported IGPs for MPLS-TE, because MPLS-TE can only work with a link-state protocol. This is because the ingress router is preforming source routing - it is independently calculating the entire route from itself (the headend) to the tailend. This means the headend needs to know the entire database of links and their attributes, hence the need for a link-state protocol.

We will look at ISIS in the next lab. In this lab we enable MPLS-TE for OSPF using two commands:

! IOS-XE
router ospf 1
 mpls traffic-eng area 0
 mpls traffic-eng router-id lo0

! IOS-XR
router ospf 1
 mpls traffic-eng router-id lo0
 area 0
  mpls traffic-eng

The router-id must be specified to give the router its identifier in the TED graph. This is not automatically generated as the loopback, so if we don’t specify this, the node won’t have a TE RID and can’t originate the TE LSAs.

OSPF was extended with support for Opaque LSAs which provide a general mechanism to extend OSPF. Opaque means that OSPF itself is not using the information for SPF, it is just carrying the information for some other application (in this case MPLS-TE). LSA 9 is link-local scope, LSA 10 is area scope, and LSA 11 is AS-wide scope. MPLS-TE only uses LSA 10 because the link-state graph is only area-wide. MPLS-TE support for inter-area TE does not actually use LSA 11, interestingly enough. (We will see inter-area TE in a future lab).

The Opaque LSAs carry TLVs which makes OSPF easier to extend, similar to ISIS. Opaque LSAs use the same 32 bit Link ID as any other LSA, but the first 8 bits are the Opaque type, and the last 24 bits are the instance number (ID). Type 1 is the TE LSA type for Opaque LSAs, so all of our LSAs will start with 1.x.x.x

Each router will originate one LSA with ID 0 for itself, as a sort of “Opaque router LSA.” This contains its TE RID. Additionally, one LSA is originated for each link, containing the attributes of the link. For example:

The ID is the interface’s ifIndex value. So above, the interface must have the ifIndex value of 8. The Link ID in the above LSA indicates the neighbor on the other end of the link. Also note that bandwidth is expressed in bytes per sec, not bits per sec, which can throw you off.

Once all Opaque LSAs have been flooded, we can see the TED on any router in the area using show mpls traffic-eng topology.

When reservable bandwidth values change “signficantly enough” they are flooded using regular LSA flooding techniques. You don’t want to constantly flood LSAs for very small changes. So by default, LSA flooding is triggered when bandwidth crosses certain percentage thresholds: 15, 30, 45, 60, 75, 80, 85, etc…

The TE Tunnel and CSPF

Now that the IGP has flooded the TE information, each router has a complete TED. This allows any router to compute an LSP that meets a wide variety of constraints, such as:

  • Bandwidth required

  • Link affinity

  • Setup/hold priority

  • Use TE metric (this is the default setting, as opposed to using IGP metric)

Note that the tunnel destination is the TE RID of the tailend router, which is not necessarily a reachable IP address, but usually the lo0 address.

The TE tunnel path-option controls how the tunnel is setup. In this lab we used an explicit path-option to 100% dictate the path the tunnel will go. We could add a second path-option as dynamic which means “if the first path-option fails, then setup the tunnel using TE metric.”

interface Tunnel0
 tunnel mpls traffic-eng path-option 2 dynamic

We can also use explicit paths that exclude nodes/links or loosely include a single node/link, etc.

When you give the TE tunnel a path option, it tries to run CSPF using the constaints you’ve given it. CSPF runs against the TED and prunes away links that don’t meet the constaints. If a path cannot be calculated, the next path-option is tried. If no path-options can find a path, the tunnel is not signaled at all. But if a path is calculated, it is translated into an ERO (explicit route object) and signaled via RSVP.

RSVP-TE

Now that a path has been calculated, we need a way to signal the path and keep it refreshed, as well as signal the labels hop-by-hop. Every router along the path also needs to reserve the bandwidth requested by the LSP (if there is any bandwidth requirement on the tunnel). RSVP was extended to do exactly this for MPLS-TE, and is called RSVP-TE.

RSVP uses a PATH message from headend→tailend, and a RESV message from tailend→headend.

The PATH message, as it leaves the headend, has the full path the LSP should take listed in the ERO. The ERO is an ordered list of every hop the LSP will take. At each hop, the router removes its own IP address from the ERO. The length of the ERO gets shorter hop by hop. There is also an optional record route object, in which each router places its IP address. This object gets longer hop by hop.

Here is the PATH as it leaves CSR8 (the headend):

  • The time value is the refresh rate (30 seconds)

  • The Label request means that a label value is requested. The label value will be signaled “on the way back” in the RESV message

  • The Sender TSPEC contains the bandwidth requirement (although there is no bandwidth required for this particular TE tunnel)

If we look at the PATH as it leaves CSR9, we can see that CSR9 has removed itself from the ERO, and added itself to the Record Route:

When the tailend receives the PATH message, it sees that it is the tailend (destination) from the Session object. It then sends a RESV message in the reverse direction. Each router knows the previous hop the PATH message took by storing the “HOP” value on the PATH message in memory. (Notice this is separate from the ERO - two fields above the ERO in the pcap above). This is recorded on each router and associated with the path’s session ID. As the router receives a RESV message, it looks up the previous hop known from the PATH message in order to send it in the exact reverse direction. The RESV message contains the label at each hop.

Here is the RESV message received at CSR8:

  • Style: Shared Explicit means that make-before-break is implemented. If a reroute occurs, bandwidth would otherwise be accounted for twice in the time during which both the old and new paths are setup. With SE, the double booking of bandwidth is prevented on the same link on all routers in the path of the LSP. (Routers recognize that the new TE tunnel has the same session ID as the old one, so they know not to reserve bandwidth for this new TE tunnel if it crosses the same interface.)

By default, the tailend advertises implicit null to its upstream hop. You can optionally change this to explicit null, but IOS-XE still interprets this as implicit null, and preforms PHP. You must change this behaviour using mpls traffic-eng signalling interpret explicit-null verbatim on the penultimate hop router if you want the router to honor an explicit null.

Forwarding traffic onto the TE tunnel

The tunnel is now setup but it is not carrying traffic yet. We have a few options for directing traffic into the tunnel:

  • statically route the tailend via the tunnel interface

  • autoroute destination, which puts a static route to the destination via the tunnel in the RIB automatically

  • autoroute announce, which lets the local IGP use the tunnel interface for SPF calculation. This could use the tunnel for destinations one or more hops beyond the tunnel destination.

  • forwarding adjacency, which advertises the tunnel as an adjacency into the IGP, so other routers in the area can use the tunnel as part of their own SPF.

  • class-based tunnel selection, which directs traffic into a tunnel based on the EXP marking

In this lab we simply used autoroute annouce, which is a frequently used option.

PreviousTopologyNextBasic TE Tunnel w/ ISIS

Last updated 1 month ago