Site icon Karneliuk

MPLS / RSVP-TE in Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR

Hello my friend,

So far we have reviewed two technology of building MPLS data plane (transport tunnel in Nokia (Alcatel-Lucent) terminology) that are LDP and BGP labeled unicast. Today we continue our journey with the third option, which is called RSVP-TE and provides you wide possibilities for Traffic Engineering (TE).

Disclaimer

Nokia (Alcatel-Lucent) SR OS has option to build so called “non-TE” RSVP-based MPLS tunnels (LSP – label switched path). In this case you don’t have to enable IGP extensions (OSPF-TE or ISIS-TE), but you don’t have all fancy features like link coloring, SRLG, Fast Reroute and so on. Moreover this option isn’t interoperable with Cisco IOS XR, and to be frank, I don’t know another vendor, who supports it. So in this article we’ll configure “ordinary” TE MPLS tunnel that implies creation and usage of TED (Traffic Engineering Database).

Topology

The physical topology remains the same as always:

The logical topology was also used previously in LDP article:

The initial configuration we’ll use also from that article. It will be easier for you to compare the configuration and operation of two different MPLS-forming technologies in the same conditions:

Preparation for building LSP (MPLS tunnel)

First of all we need to enable support of MPLS traffic engineering and RSVP in our network. To achieve it we’ll activate TE extension to routing protocol (as IGP we use ISIS, but the configuration for OSPF is pretty similar). Afterwards we enable RSVP and MPLS at all interfaces as all of them take part in our MPLS forwarding plane:

Nokia (Alcatel-Lucent) VSR (SR 7750) Cisco IOS XR (ASR 9000)
SR1 XR1

A:SR1>config>router# info
—————————
isis
traffic-engineering
exit
mpls
interface “system”
no shutdown
exit
interface “toSR3”
no shutdown
exit
interface “toXR1_p1”
no shutdown
exit
interface “toXR1_p2”
no shutdown
exit
no shutdown
exit
rsvp
no shutdown
exit
—————————

RP/0/0/CPU0:XR1(config)#show conf
router isis CORE
address-family ipv4 unicast
mpls traffic-eng level-2-only
mpls traffic-eng router-id Loopback0
!
!
mpls oam
!
rsvp
interface GigabitEthernet0/0/0/0.10
bandwidth 1000000
!
interface GigabitEthernet0/0/0/0.11
bandwidth 1000000
!
interface GigabitEthernet0/0/0/0.23
bandwidth 1000000
!
!
mpls traffic-eng
interface GigabitEthernet0/0/0/0.10
!
interface GigabitEthernet0/0/0/0.11
!
interface GigabitEthernet0/0/0/0.23
!
logging events all
!
mpls ldp
!
end

SR3

A:SR3>config>router# info
—————————
isis
traffic-engineering
exit
mpls
interface “system”
no shutdown
exit
interface “toSR1”
no shutdown
exit
interface “toXR1”
no shutdown
exit
no shutdown
exit
rsvp
no shutdown
exit
—————————

I assume that some explanation and verification is needed before we go further, as Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR behaves a little bit different:

Nokia (Alcatel-Lucent) SR OS Cisco IOS XR
ISIS-TE extension You simple enable TE and that’s it. Router-id is derived from global routing configuration You chose for which level you want activate TE extension and chose interface for router-id
RSVP Interfaces are automatically derived from MPLS context. Reservable BW is derived from capacity of physical port associated with interface. Interfaces and reservable BW must be explicitly configured.
MPLS TE MPLS LDP must be activated for proper operation. MPLS OAM must be explicitly activated.

So these differences in behavior must be taken into account during configuration of MPLS/RSVP-TE in multivendor network based on Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR.

After we’ve applied the configuration above, we can check if our interfaces are operational in MPLS and RSVP contexts. In Nokia (Alcatel-Lucent) SR OS you can check it as follows:

A:SR1# show router mpls interface
============================================================================
MPLS Interfaces
============================================================================
Interface                         Port-id        Adm    Opr   TE-metric
—————————————————————————-
system                            system         Up     Up    None
. Admin                           Groups         None
. SRLG                            Groups         None
toSR3                             1/1/1:13       Up     Up    None
. Admin                           Groups         None
. SRLG                            Groups         None
toXR1_p1                          1/1/1:10       Up     Up    None
. Admin                           Groups         None
. SRLG                            Groups         None
toXR1_p2                          1/1/1:11       Up     Up    None
. Admin                           Groups         None
. SRLG                            Groups         None
—————————————————————————-
Interfaces : 4
============================================================================
!
!
A:SR1# show router rsvp interface
============================================================================
RSVP Interfaces
============================================================================
Interface                Total   Active   Total BW   Resv BW   Adm   Opr
.Sessions Sessions                        (Mbps)     (Mbps)
—————————————————————————-
system                   –       –        –          –         Up    Up
toSR3                    0       0        1000       0         Up    Up
toXR1_p1                 0       0        1000       0         Up    Up
toXR1_p2                 0       0        1000       0         Up    Up
—————————————————————————-
Interfaces : 4
============================================================================

In Cisco IOS XR the commands are very similar:

RP/0/0/CPU0:XR1#show mpls interfaces
Interface                  LDP      Tunnel   Static   Enabled
————————– ——– ——– ——– ——–
GigabitEthernet0/0/0/0.10  No       Yes      No       Yes
GigabitEthernet0/0/0/0.11  No       Yes      No       Yes
GigabitEthernet0/0/0/0.23  No       Yes      No       Yes
!
!
RP/0/0/CPU0:XR1#show rsvp interface
*: RDM: Default I/F B/W % : 75% [default] (max resv/bc0), 0% [default] (bc1)
Interface   MaxBW (bps)  MaxFlow (bps) Allocated (bps)      MaxSub (bps)
———– ———— ————- ——————– ————-
Gi0/0/0/0.10          1G            1G              0 ( 0%)             0
Gi0/0/0/0.11          1G            1G              0 ( 0%)             0
Gi0/0/0/0.23          1G            1G              0 ( 0%)             0

In Cisco IOS XR the output of the command “show mpls interfaces” shows all type of protocols that can be used for build MPLS data plane, where “tunnel” means MPLS traffic engineering. In Nokia (Alcatel-Lucent) SR OS the output of “show router mpls interfaces” shows operation of interfaces for RSVP-TE based MPLS.

You can refer to article about LDP, where we haven’t activated MPLS context at Nokia (Alcatel-Lucent) VSR (SR 7750).

The next interesting point, what should be checked and what will be actively used, is TED (traffic engineering database). It’s information is distributed using ISIS updates in specific TLVs, so ISIS database is what we need. I’ll provide only part of this LSP (link-state packet in case of ISIS) that is related traffic engineering, because the whole LSP is really big:

A:SR1# show router isis database SR1.00-00 detail
============================================================================
Rtr Base ISIS Instance 0 Database (detail)
============================================================================
Displaying Level 2 database
—————————————————————————-
LSP ID    : SR1.00-00                                       Level     : L2
Sequence  : 0x2a                       Checksum  : 0x918b   Lifetime  : 845
Version   : 1                          Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                       Max Area  : 3        Alloc Len : 1492
SYS ID    : 0100.0025.5001             SysID Len : 6        Used Len  : 520
TLVs :
.  TE IS Nbrs :
.    Nbr : SR3.00
.    Default Metric : 10
.    Sub TLV Len : 69
.    IF Addr : 10.1.0.0
.    Nbr IP : 10.1.0.1
.    MaxLink BW: 1000000 kbps
.    Resvble BW: 1000000 kbps
.    Unresvd BW:
.      BW[0] : 1000000 kbps
.      BW[1] : 1000000 kbps
.      BW[2] : 1000000 kbps
.      BW[3] : 1000000 kbps
.      BW[4] : 1000000 kbps
.      BW[5] : 1000000 kbps
.      BW[6] : 1000000 kbps
.      BW[7] : 1000000 kbps
.    Admin Grp : 0x0
.    TE Metric : 10
.  TE IS Nbrs :
.    Nbr : XR1.00
.    Default Metric : 10
.    Sub TLV Len : 69
.    IF Addr : 10.0.0.2
.    Nbr IP : 10.0.0.3
.    MaxLink BW: 1000000 kbps
.    Resvble BW: 1000000 kbps
.    Unresvd BW:
.      BW[0] : 1000000 kbps
.      BW[1] : 1000000 kbps
.      BW[2] : 1000000 kbps
.      BW[3] : 1000000 kbps
.      BW[4] : 1000000 kbps
.      BW[5] : 1000000 kbps
.      BW[6] : 1000000 kbps
.      BW[7] : 1000000 kbps
.    Admin Grp : 0x0
.    TE Metric : 10
.  TE IS Nbrs :
.    Nbr : XR1.00
.    Default Metric : 10
.    Sub TLV Len : 69
.    IF Addr : 10.0.0.0
.    Nbr IP : 10.0.0.1
.    MaxLink BW: 1000000 kbps
.    Resvble BW: 1000000 kbps
.    Unresvd BW:
.      BW[0] : 1000000 kbps
.      BW[1] : 1000000 kbps
.      BW[2] : 1000000 kbps
.      BW[3] : 1000000 kbps
.      BW[4] : 1000000 kbps
.      BW[5] : 1000000 kbps
.      BW[6] : 1000000 kbps
.      BW[7] : 1000000 kbps
.    Admin Grp : 0x0
.    TE Metric : 10
.  TE IP Reach :
.    Default Metric : 0
.    Control Info: , prefLen 32
.    Prefix : 10.1.101.1
.    Default Metric : 0
.    Control Info: , prefLen 32
.    Prefix : 10.0.201.1
.    Default Metric : 0
.    Control Info: , prefLen 32
.    Prefix : 10.0.255.1
============================================================================

In Cisco IOS XR you can use the very similar command “show isis database SR1.00-00 verbose” to see the detailed structure of LSP. But there is another useful command available at Cisco IOS XR:

RP/0/0/CPU0:XR1#show mpls traffic-eng topology brief
My_System_id: 0100.0025.5002.00 (IS-IS CORE level-2)
IGP Id: 0100.0025.5001.00, MPLS TE Id: 10.0.255.1 Router Node (IS-IS CORE level-2)
.  Link[0]:Point-to-Point, Nbr IGP Id:0100.0025.5003.00, Nbr Node Id:6, gen:2237
.    Frag Id:0, Intf Address:10.1.0.0, Intf Id:0
.    Nbr Intf Address:10.1.0.1, Nbr Intf Id:0
.    TE Metric:10, IGP Metric:10
.    Attribute Flags: 0x0
.    Ext Admin Group:
.      Length: 256 bits
.      Value : 0x::
.    Attribute Names:
.    Switching Capability:None, Encoding:unassigned
.    BC Model ID:RDM
.    Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.    Max Reservable BW Sub:0 (kbps)
.  Link[1]:Point-to-Point, Nbr IGP Id:0100.0025.5002.00, Nbr Node Id:5, gen:2238
.    Frag Id:0, Intf Address:10.0.0.2, Intf Id:0
.    Nbr Intf Address:10.0.0.3, Nbr Intf Id:0
.    TE Metric:10, IGP Metric:10
.    Attribute Flags: 0x0
.    Ext Admin Group:
.      Length: 256 bits
.      Value : 0x::
.    Attribute Names:
.    Switching Capability:None, Encoding:unassigned
.    BC Model ID:RDM
.    Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.    Max Reservable BW Sub:0 (kbps)
.  Link[2]:Point-to-Point, Nbr IGP Id:0100.0025.5002.00, Nbr Node Id:5, gen:2239
.    Frag Id:0, Intf Address:10.0.0.0, Intf Id:0
.    Nbr Intf Address:10.0.0.1, Nbr Intf Id:0
.    TE Metric:10, IGP Metric:10
.    Attribute Flags: 0x0
.    Ext Admin Group:
.      Length: 256 bits
.      Value : 0x::
.    Attribute Names:
.    Switching Capability:None, Encoding:unassigned
.    BC Model ID:RDM
.    Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.    Max Reservable BW Sub:0 (kbps)

I’ve reduced the output just to one node, as basically you see all nodes and their interconnection. So this is the actual TED built using information extracted from ISIS. If you omit keyword “brief”, you’ll see detailed information including BW utilization per priority.

The last thing that I want to show you, before going to MPLS tunnels themselves, is the CSPF tool in Nokia (Alcatel-Lucent) SR OS. It’s really powerful tool that allow you to determine the actual path of LSP from point head-end to tail-end MPLS router based on the mentioned constrains. This provide you valuable input on possible path before you configure (or activate) LSP. Take a look at the basic example:

A:SR3# tools perform router mpls cspf from 10.0.255.1 to 10.0.255.2 bandwidth 567
Req CSPF for all ECMP paths
from: 10.0.255.1 to: 10.0.255.2 w/(no Diffserv) class: 0 , setup Priority 7, Hold Priority 0 TE Class: 7
CSPF Path
To      : 10.0.255.2
From    : 10.0.255.1
Path 1  : (cost 10)
.   Src: 10.0.255.1 (= Rtr)
.   Egr: 10.0.0.0 -> Ingr: 10.0.0.1 Rtr: 10.0.255.2 (met 10)
.   Dst: 10.0.255.2 (= Rtr)
Path 2  : (cost 10)
.   Src: 10.0.255.1 (= Rtr)
.   Egr: 10.0.0.2 -> Ingr: 10.0.0.3 Rtr: 10.0.255.2 (met 10)
.   Dst: 10.0.255.2 (= Rtr)

As constrains for example we added that we want to avoid certain next-hop and reserved BW should 567 Mbps. Pay attention that we do this calculation at SR3, though we are determining path between SR1 and XR1. It’s possible because all the routers has the same TED across the RSVP-TE domain, otherwise MPLS-TE won’t work.

Basic RSVP-TE LSP

Let’s shutdown the direct links between SR1 and XR3 so that the only available path between them pass SR3.

Now we can proceed with the establishment of MPLS LSP (label switch path) or MPLS tunnel from Nokia (Alcatel-Lucent) SR OS router SR1 to Cisco IOS XR router XR1. As the first step the LSP will be quite simple without any constrains (though it will be CSPF enabled in terms of Nokia (Alcatel-Lucent).

Nokia (Alcatel-Lucent) VSR (SR 7750) Cisco IOS XR (ASR 9000)
SR1 XR1

A:SR1>config>router# info
—————————
mpls
path “loose”
no shutdown
exit
lsp “SR1_to_XR1”
to 10.0.255.2
cspf
primary “loose”
exit
no shutdown
exit
no shutdown
exit
—————————

RP/0/0/CPU0:XR1(config)#show conf
interface tunnel-te21
ipv4 unnumbered Loopback0
autoroute destination 10.0.255.1
destination 10.0.255.1
record-route
path-option 10 dynamic
!
end

We’ve configured appropriate logging at SR1 and SR3 in order see the RSVP-TE and MPLS LSP operation in the real time.

In Nokia (Alcatel-Lucent) SR OS you create a separate object called “path”, which is a key component of MPLS LSP. You must enable it before enabling LSP, otherwise LSP will be operationally down. The only parameter that can be configured inside path is explicit path (we’ll talk about it later), and if there are no hops configured the path is considered to be totally loose and TED will be consulted to build exact path to destination. Keyword “cspf” means that TED will be used. As a source of MPLS LSP the system interface of the Nokia (Alcatel-Lucent) VSR (SR 7750) is used.

In Cisco IOS XR you manually mentioned, which interface should be used as source for MPLS tunnel. “Autoroute destination” mean that route to destination IP will be installed in routing table and will be available for routing look up for all other protocols. Also in Cisco IOS XR you have to explicitly enable “record-route” in order RRO to be built. “Path-option dynamic” in IOS XR equals “primary loose” in SR OS.

Just after you bring up (enters “no shutdown”) at MPLS LSP SR1_to_XR1 configured at SR1, you see the following log messages:

SR OS:
5 2016/10/11 20:04:42.93 UTC WARNING: MPLS #2003 Base VR 1:
“Tunnel loose is operationally enabled (‘no shutdown’)”
6 2016/10/11 20:05:42.17 UTC WARNING: MPLS #2011 Base VR 1:
“LSP path SR1_to_XR1::loose is operationally enabled (‘no shutdown’)”
7 2016/10/11 20:05:42.17 UTC WARNING: MPLS #2009 Base VR 1:
“LSP SR1_to_XR1 is operationally enabled (‘no shutdown’)”
!
!
IOS XR:
RP/0/0/CPU0:Sep 29 04:42:01.984 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_UPDOWN : tail (signalled-name: SR1_to_XR1::loose, LSP Id: 4608) state changed to up

The similar messages you see, when you make commit at Cisco IOS XR and configuration of MPLS tunnel is being applied. LSP is up and running, but before checking it lets overview some useful commands for trouble shooting.

A:SR1# show router rsvp session
============================================================================
RSVP Sessions
============================================================================
From               To              Tunnel LSP    Name                 State
.                                  ID     ID
—————————————————————————-
10.0.255.1         10.0.255.2      1      4608   SR1_to_XR1::loose    Up
10.0.255.2         10.0.255.1      21     3      XR1_t21              Up
—————————————————————————-
Sessions : 2
============================================================================
!
!
A:SR3# show router rsvp session
============================================================================
RSVP Sessions
============================================================================
From               To              Tunnel LSP    Name                 State
.                                  ID     ID
—————————————————————————-
10.0.255.1         10.0.255.2      1      4608   SR1_to_XR1::loose    Up
10.0.255.2         10.0.255.1      21     3      XR1_t21              Up
—————————————————————————-
Sessions : 2
============================================================================
!
!
RP/0/0/CPU0:XR1#show rsvp session
Type Destination Add DPort Proto/ExtTunID  PSBs  RSBs  Reqs
—- ————— —– ————— —– —– —–
LSP4      10.0.255.1    21      10.0.255.2     1     1     0
LSP4      10.0.255.2     1      10.0.255.1     1     1     1

The output above shows you that all the routers along the path participates in RSVP. For each MPLS LSP there is a separate RSVP session. The most important information here is triplet “To/destination address” – “Tunnel ID/DPort” – “From/ExtTunID”, what forms SESSION object in RSVP and uniquely identifies MPLS LSP. This triplets remains stable until restart in Nokia (Alcatel-Lucent) SR OS. In Cisco IOS XR it remains the same even after restart, because you manually configure tunnel ID. At the same time LSP ID increases each time the tunnel flaps or is reoptimized (resignaled in Nokia (Alcatel-Lucent) terms).

For sure we are interested in the details, and one of the most interesting one is MPLS label that is used for traffic forwarding. You can check it as follows:

A:SR1# show router rsvp session detail | match expression “LSP|Label|From|Hop|Interface”
LSP             : XR1_t21
From            : 10.0.255.2                 To             : 10.0.255.1
Tunnel ID       : 21                         LSP ID         : 4
In Interface    : 1/1/1:13                   Out Interface  : n/a
In Label        : 262143                     Out Label      : n/a
Previous Hop    : 10.1.0.1                   Next Hop       : n/a
LSP Attr Flags  : N/A
LSP : SR1_to_XR1::loose
From            : 10.0.255.1                 To             : 10.0.255.2
Tunnel ID       : 1                          LSP ID         : 54272
In Interface    : n/a                        Out Interface  : 1/1/1:13
In Label        : n/a                        Out Label      : 262142
Previous Hop    : n/a                        Next Hop       : 10.1.0.1
Hops            :
.  No Hops Specified
LSP Attr Flags  : N/A
!
!
A:SR3# show router rsvp session detail | match expression “LSP|Label|From|Hop|Interface”
LSP : XR1_t21
From            : 10.0.255.2                 To             : 10.0.255.1
Tunnel ID       : 21                         LSP ID         : 4
In Interface    : 1/1/1:23                   Out Interface  : 1/1/1:13
In Label        : 262143                     Out Label      : 262143
Previous Hop    : 10.1.0.3                   Next Hop       : 10.1.0.0
LSP Attr Flags  : N/A
LSP : SR1_to_XR1::loose
From            : 10.0.255.1                 To             : 10.0.255.2
Tunnel ID       : 1                          LSP ID         : 54272
In Interface    : 1/1/1:13                   Out Interface  : 1/1/1:23
In Label        : 262142                     Out Label      : 3
Previous Hop    : 10.1.0.0                   Next Hop       : 10.1.0.3
LSP Attr Flags  : N/A
!
!
SESSION: IPv4-LSP Addr: 10.0.255.1, TunID: 21, ExtID: 10.0.255.2
.  LSPId: 3
.    InLabel: No intf, No label
.    OutLabel: GigabitEthernet0/0/0/0.23, 262142
.    FRR OutLabel: No intf, No label
SESSION: IPv4-LSP Addr: 10.0.255.2, TunID: 1, ExtID: 10.0.255.1
.  LSPId: 4608
.    InLabel: GigabitEthernet0/0/0/0.23, 3
.    OutLabel: No intf, No label
.    FRR OutLabel: No intf, No label

Remember, value “3” for Label means implicit NULL and calls penultimate hop popping (PHP) at pre-last hop router. By default Cisco IOS XR signals this label and Nokia (Alcatel-Lucent) SR OS not.

Output of RSVP-TE show commands contains the information from control plane (to be more precise – LIB (Label Information Base)). To check forwarding plane including MPLS labels for configured LSPs, we have another option:

A:SR1# show router mpls lsp detail terminate
============================================================================
MPLS LSPs (Terminate) (Detail)
============================================================================
—————————————————————————-
LSP XR1_t21
—————————————————————————-
From                : 10.0.255.2            To            : 10.0.255.1
State               : Up
SetupPriority       : 7                     Hold Priority : 7
Class Type          : 0
In Interface        : 1/1/1:13              In Label      : 262143
Previous Hop        : 10.1.0.1
============================================================================
!
!
A:SR3# show router mpls lsp transit detail
============================================================================
MPLS LSPs (Transit) (Detail)
============================================================================
—————————————————————————-
LSP XR1_t21
—————————————————————————-
From                : 10.0.255.2            To            : 10.0.255.1
State               : Up
SetupPriority       : 7                     Hold Priority : 7
Class Type          : 0
In Interface        : 1/1/1:23              In Label      : 262143
Out Interface       : 1/1/1:13              Out Label     : 262143
Previous Hop        : 10.1.0.3              Next Hop      : 10.1.0.0
Reserved BW         : 0 Kbps
—————————————————————————-
LSP SR1_to_XR1::loose
—————————————————————————-
From                : 10.0.255.1            To            : 10.0.255.2
State               : Up
SetupPriority       : 7                     Hold Priority : 0
Class Type          : 0
In Interface        : 1/1/1:13              In Label      : 262142
Out Interface       : 1/1/1:23              Out Label     : 3
Previous Hop        : 10.1.0.0              Next Hop      : 10.1.0.3
Reserved BW         : 0 Kbps
============================================================================

In Nokia (Alcatel-Lucent) SR OS you need add specific keyword “transit” or “detail” to see the state of MPLS tunnel, if LSP doesn’t start at the device.

In MPLS/RSVP-TE model the most interesting and complex work is done at the head-end router that is router that calculates and establishes LSP. There will be big output following. At Nokia (Alcatel-Lucent) VSR (SR 7750) the details of establishing LSP you can check in the following command:

A:SR1# show router mpls lsp path detail
============================================================================
MPLS LSP Path (Detail)
============================================================================
Legend :
@ – Detour Available # – Detour In Use
b – Bandwidth Protected n – Node Protected
s – Soft Preemption
S – Strict L – Loose
A – ABR
============================================================================
—————————————————————————-
LSP SR1_to_XR1 Path loose
—————————————————————————-
LSP Name            : SR1_to_XR1
Path LSP ID         : 54272
From                : 10.0.255.1           To                  : 10.0.255.2
Admin State         : Up                   Oper State          : Up
Path Name           : loose                Path Type           : Primary
Path Admin          : Up                   Path Oper           : Up
Out Interface       : 1/1/1:13             Out Label           : 262142
Path Up Time        : 0d 00:34:59          Path Down Time      : 0d 00:00:00
Retry Limit         : 0                    Retry Timer         : 30 sec
Retry Attempt       : 0                    Next Retry In       : 0 sec
BFD Template        : None                 BFD Ping Interval   : 60
BFD Enable          : False

Adspec              : Disabled             Oper Adspec         : Disabled
CSPF                : Enabled              Oper CSPF           : Enabled
Least Fill          : Disabled             Oper LeastFill      : Disabled
FRR                 : Disabled             Oper FRR            : Disabled
Propogate Adm Grp   : Disabled             Oper Prop Adm Grp   : Disabled
Inter-area          : False
—-
Neg MTU             : 500                  Oper MTU            : 500
Bandwidth           : No Reservation       Oper Bandwidth      : 0 Mbps
Hop Limit           : 255                  Oper HopLimit       : 255
Record Route        : Record               Oper Record Route   : Record
Record Label        : Record               Oper Record Label   : Record
Setup Priority      : 7                    Oper Setup Priority : 7
Hold Priority       : 0                    Oper Hold Priority  : 0
Class Type          : 0                    Oper CT             : 0
Backup CT           : None
MainCT Retry        : n/a
Rem                 :
MainCT Retry        : 0
Limit               :
Include Groups      : Oper                 Include Groups      :
None                                       None
Exclude Groups      : Oper                 Exclude Groups      :
None                                       None
—-
Adaptive            : Enabled              Oper Metric         : 20
Preference          : n/a
Path Trans          : 1                    CSPF Queries        : 1
Failure Code        : noError
Failure Node        : n/a
Explicit Hops       :
.  No Hops Specified
Actual Hops         :
.  10.1.0.0 (10.0.255.1)                   Record Label : N/A
-> 10.1.0.1 (10.0.255.3)                   Record Label : 262142
-> 10.1.0.3 (10.0.255.2)                   Record Label : 3
Computed Hops :
.  10.1.0.0(S)
-> 10.1.0.1(S)
-> 10.1.0.3(S)
Resignal Eligible: False
Last Resignal : n/a CSPF Metric : 20
============================================================================

There are a lot information above, so I advise you to spend some time here to familiarize yourself, if you aren’t. For now the most interesting information is two fields: “Computed Hops” and “Actual hops”. In “Computed hops” you see the results of CSPF calculation upon MPLS LSP establishment. In RSVP PATH messages these hops are copied to ERO (Explicit Route Object), which is analyzed by each router along the path from head-end to tail-end router. “Actual hops” contains information from RRO (Record Route Object) extracted from RSVP RESV message. These hops are identical, what is correct. Now let’s take a look at information that Cisco IOS XR tells us regarding its tunnel:

RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels detail
Name: tunnel-te21 Destination: 10.0.255.1 Ifhandle:0x1a80
.  Signalled-Name: XR1_t21
.  Status:
.    Admin: up Oper: up Path: valid Signalling: connected
.    path option 10, type dynamic (Basis for Setup, path weight 20)
.    G-PID: 0x0800 (derived from egress interface properties)
.    Bandwidth Requested: 0 kbps CT0
.    Creation Time: Thu Sep 29 05:58:56 2016 (01:01:24 ago)
.  Config Parameters:
.    Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0xffff
.    Metric Type: TE (default)
.    Path Selection:
.      Tiebreaker: Min-fill (default)
.    Hop-limit: disabled
.    Cost-limit: disabled
.    Path-invalidation timeout: 45000 msec (default), Action: Tear (default)
.    AutoRoute: disabled LockDown: disabled Policy class: not set
.    Forward class: 0 (default)
.    Forwarding-Adjacency: disabled
.    Loadshare: 0 equal loadshares
.    Auto-bw: disabled
.    Fast Reroute: Disabled, Protection Desired: None
.    Path Protection: Not Enabled
.    BFD Fast Detection: Disabled
.    Reoptimization after affinity failure: Enabled
.    Soft Preemption: Disabled
.  SNMP Index: 23
.  Binding SID: None
.  History:
.    Tunnel has been up for: 00:33:14 (since Thu Sep 29 06:27:06 UTC 2016)
.    Current LSP:
.      Uptime: 00:33:14 (since Thu Sep 29 06:27:06 UTC 2016)
.    Reopt. LSP:
.      Last Failure:
.        LSP not signalled, identical to the [CURRENT] LSP
.        Date/Time: Thu Sep 29 06:45:37 UTC 2016 [00:14:43 ago]
.    Prior LSP:
.      ID: 3 Path Option: 10
.      Removal Trigger: path verification failed
.  Current LSP Info:
.    Instance: 4, Signaling Area: IS-IS CORE level-2
.    Uptime: 00:33:14 (since Thu Sep 29 06:27:06 UTC 2016)
.    Outgoing Interface: GigabitEthernet0/0/0/0.23, Outgoing Label: 262143
.    Router-IDs: local      10.0.255.2
.                downstream 10.0.255.3
.    Soft Preemption: None
.    SRLGs: not collected
.    Path Info:
.      Outgoing:
.        Explicit Route:
.          Strict, 10.1.0.2
.          Strict, 10.1.0.0
.          Strict, 10.0.255.1
.      Record Route: Empty
.      Tspec: avg rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
.      Session Attributes: Local Prot: Not Set, Node Prot: Not Set, BW Prot: Not Set
.      Soft Preemption Desired: Not Set
.    Resv Info:
.      Record Route:
.        IPv4 10.1.0.2, flags 0x0
.        IPv4 10.1.0.0, flags 0x0
.      Fspec: avg rate=0 kbits, burst=1000 bytes, peak rate=0 kbits

The provided information is identical, as all the data is necessary for tunnel establishment and RFC defined. You can find ERO in PATH message and RRO in RESV.

You can spot the difference in interpretation of these fields between our vendors. Nokia (Alcatel-Lucent) SR OS show egress interfaces of the LSP head-end as the first hop in the ERO/RRO, though technically this hop won’t be included in the RSVP packet header in ERO/RRO field. It will be stripped and inserted in HOP field in PATH message. Cisco IOS XR doesn’t include its egress’s interface IP address in ERO/RRO.

What else is worth to be mentioned is the difference in default setup/hold priorities for LSP. Nokia (Alcatel-Lucent) SR OS has 7/0 default priorities respectively and Cisco IOS XR has 7/7

Let’s check LSP operation. Remember, we have activated MPLS OAM toolset at Cisco IOS XR in the initial configuration, because it’s necessary for MPLS tunnel’s check. Nokia (Alcatel-Lucent) SR OS has this feature activated by default. The following output provides checks from SR1 side:

A:SR1# oam lsp-ping “SR1_to_XR1”
LSP-PING SR1_to_XR1: 92 bytes MPLS payload
Seq=1, send from intf toSR3, reply from 10.1.0.3
udp-data-len=32 ttl=255 rtt=22.2ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1 PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 22.2ms, avg = 22.2ms, max = 22.2ms, stddev = 0.000ms
!
!
A:SR1# oam lsp-trace “SR1_to_XR1” detail
lsp-trace to SR1_to_XR1: 0 hops min, 0 hops max, 116 byte packets
1 10.0.255.3 rtt=24.9ms rc=8(DSRtrMatchLabel) rsc=1
DS 1: ipaddr=10.1.0.3 ifaddr=10.1.0.3 iftype=ipv4Numbered MRU=1500
label[1]=3 protocol=4(RSVP-TE)
2 10.1.0.3 rtt=19.3ms rc=3(EgressRtr) rsc=1

Let’s text XR1 side (remember, all LSP are unidirectional):

RP/0/0/CPU0:XR1#traceroute mpls traffic-eng tunnel-te 21
Tracing MPLS TE Label Switched Path on tunnel-te21, timeout is 2 seconds
Codes: ‘!’ – success, ‘Q’ – request not sent, ‘.’ – timeout,
‘L’ – labeled output interface, ‘B’ – unlabeled output interface,
‘D’ – DS Map mismatch, ‘F’ – no FEC mapping, ‘f’ – FEC mismatch,
‘M’ – malformed request, ‘m’ – unsupported tlvs, ‘N’ – no rx label,
‘P’ – no rx intf label prot, ‘p’ – premature termination of LSP,
‘R’ – transit router, ‘I’ – unknown upstream index,
‘X’ – unknown return code, ‘x’ – return code 0
Type escape sequence to abort.
0 10.1.0.3 MRU 1500 [Labels: 262143 Exp: 0]
L 1 10.0.255.3 MRU 1500 [Labels: 262143 Exp: 0] 10 ms
! 2 10.0.255.1 20 ms

The same commands were used during LSP checks in LDP.

Constrains: explicit path link coloring, priority, bandwidth reservation and hops

One of the biggest advance of RSVP-TE over LDP is that RSVP-TE provides you very rich toolset for traffic engineering.

I hope, you know how RSVP constrains work in general. If no, please, refer to RFC or any networking courses that explains it. I can recommend MPLS course from Nokia (Alcatel-Lucent) that I’ve taken myself.

Before going to the configuration part, let’s review our topology from MPLS constrains point of view:

In this topology we’ll configure three tunnels with the following parameters:

Before configuring these LSPs we remove the previous configured LSP and bring back to operation all direct links between SR1 and XR1.

Nokia (Alcatel-Lucent) VSR (SR 7750) Cisco IOS XR (ASR 9000)
SR1 XR1

A:SR1>config>router# info
—————————
if-attribute
admin-group “GREEN” value 0
admin-group “RED” value 1
exit
mpls
interface “toXR1_p2”
admin-group “GREEN”
exit
interface “toSR3”
admin-group “RED”
exit
lsp “SR1_to_XR1_1_NO_GREEN”
cspf
least-fill
to 10.0.255.2
primary “loose”
bandwidth 123
priority 4 4
hop 2
exclude “GREEN”
exit
no shut
exit
lsp “SR1_to_XR1_2_RED”
cspf
least-fill
to 10.0.255.2
primary “loose”
bandwidth 222
include “RED”
priority 2 2
exit
no shut
exit
path “LINK_10.0.0.0”
hop 10 strict 10.0.0.1
no shut
exit
lsp “SR1_to_XR1_3_EP”
cspf
least-fill
to 10.0.255.2
primary “LINK_10.0.0.0”
bandwidth 444
exit
no shut
exit
exit
—————————

RP/0/0/CPU0:XR1(config)#show conf
explicit-path name LINK_10_0_0_0
index 10 next-address strict ipv4 unicast 10.0.0.0
!
interface tunnel-te1
ipv4 unnumbered Loopback0
signalled-name XR1_to_SR1_1_NO_GREEN
priority 4 4
signalled-bandwidth 123000
autoroute destination 10.0.255.1
destination 10.0.255.1
record-route
soft-preemption
path-option 10 dynamic attribute-set NO_GREEN
!
interface tunnel-te2
ipv4 unnumbered Loopback0
signalled-name XR1_to_SR1_2_RED
priority 2 2
signalled-bandwidth 222000
autoroute destination 10.0.255.1
destination 10.0.255.1
record-route
soft-preemption
path-option 10 dynamic attribute-set RED
!
interface tunnel-te3
ipv4 unnumbered Loopback0
signalled-name XR1_to_SR1_3_EP
signalled-bandwidth 444000
autoroute destination 10.0.255.1
destination 10.0.255.1
record-route
soft-preemption
path-option 10 explicit name LINK_10_0_0_0
!
mpls traffic-eng
interface GigabitEthernet0/0/0/0.11
attribute-names GREEN
!
interface GigabitEthernet0/0/0/0.23
attribute-names RED
!
affinity-map RED bit-position 1
affinity-map GREEN bit-position 0
attribute-set path-option RED
affinity include RED
!
attribute-set path-option NO_GREEN
affinity exclude GREEN
!
!
end

SR3

A:SR3>config>router# info
—————————
if-attribute
admin-group RED value 1
exit
mpls
interface toXR1
admin-group RED
exit
interface toSR1
admin-group RED
exit
exit
—————————

For the sake of consistency, I’ve configured all Cisco IOS XR LSPs with meaningful names that correspond to the names at SR1. In general the configuration is self-explanatory and if know how one vendor works, you will understand how other vendor works as well. Some key point are here:

Do you have ideas already, over which links the tunnels are built, how much BW is utilized and how much is available? Compare your ideas with outputs from our lab. Nokia (Alcatel-Lucent) SR OS router SR1:

A:SR1# show router rsvp session
============================================================================
RSVP Sessions
============================================================================
From               To              Tunnel LSP    Name                 State
.                                  ID     ID
—————————————————————————-
10.0.255.1         10.0.255.2      3      7168   SR1_to_XR1_3_EP::LINK_10.0.* Up
10.0.255.1         10.0.255.2      1      16896  SR1_to_XR1_1_NO_GREEN::loose Up
10.0.255.1         10.0.255.2      2      56832  SR1_to_XR1_2_RED::loose      Up
10.0.255.2         10.0.255.1      3      2      XR1_to_SR1_3_EP              Up
10.0.255.2         10.0.255.1      1      3      XR1_to_SR1_1_NO_GREEN        Up
10.0.255.2         10.0.255.1      2      2      XR1_to_SR1_2_RED             Up
—————————————————————————-
Sessions : 6
============================================================================
!
!
A:SR1# show router rsvp interface
============================================================================
RSVP Interfaces
============================================================================
Interface                Total   Active   Total BW   Resv BW   Adm   Opr
.Sessions Sessions                        (Mbps)     (Mbps)
—————————————————————————-
system                   –       –        –           –        Up    Up
toSR3                    1       1        1000        222      Up    Up
toXR1_p1                 2       2        1000        567      Up    Up
toXR1_p2                 0       0        1000        0        Up    Up
—————————————————————————-
Interfaces : 4
============================================================================
!
!
A:SR1# show router rsvp interface “toXR1_p1” detail
============================================================================
RSVP Interface (Detailed) : toXR1_p1
============================================================================
—————————————————————————-
Interface : toXR1_p1
—————————————————————————-
Interface         : toXR1_p1
Port ID           : 1/1/1:10
Admin State       : Up                   Oper State     : Up
Active Sessions   : 2                    Active Resvs   : 2
Total Sessions    : 2
Subscription      : 100 %                Port Speed     : 1000 Mbps
Total BW          : 1000 Mbps            Aggregate      : Dsabl
Hello Interval    : 3000 ms              Hello Timeouts : 0
Key Type Auth     : Disabled
Keychain Auth     : Disabled
Auth Rx Seq Num   : n/a                  Auth Key Id    : n/a
Auth Tx Seq Num   : n/a                  Auth Win Size  : n/a
Refresh Reduc.    : Disabled             Reliable Deli. : Disabled
Bfd Enabled       : No                   Graceful Shut. : Disabled
ImplicitNullLabel : Disabled*            GR helper      : Disabled

Percent Link Bandwidth for Class Types*
Link Bw CT0       : 100                  Link Bw CT4    : 0
Link Bw CT1       : 0                    Link Bw CT5    : 0
Link Bw CT2       : 0                    Link Bw CT6    : 0
Link Bw CT3       : 0                    Link Bw CT7    : 0

Bandwidth Constraints for Class Types (Kbps)
BC0               : 1000000              BC4            : 0
BC1               : 0                    BC5            : 0
BC2               : 0                    BC6            : 0
BC3               : 0                    BC7            : 0

Bandwidth for TE Class Types (Kbps)
TE0-> Resv. Bw    : 444000               Unresv. Bw     : 556000
TE1-> Resv. Bw    : 0                    Unresv. Bw     : 556000
TE2-> Resv. Bw    : 0                    Unresv. Bw     : 556000
TE3-> Resv. Bw    : 0                    Unresv. Bw     : 556000
TE4-> Resv. Bw    : 123000               Unresv. Bw     : 433000
TE5-> Resv. Bw    : 0                    Unresv. Bw     : 433000
TE6-> Resv. Bw    : 0                    Unresv. Bw     : 433000
TE7-> Resv. Bw    : 0                    Unresv. Bw     : 433000

IGP Update
Up Thresholds(%)   : 0 15 30 45 60 75 80 85 90 95 96 97 98 99 100 *
Down Thresholds(%) : 100 99 98 97 96 95 90 85 80 75 60 45 30 15 0 *
IGP Update Pending : No
Next Update        : N/A
Neighbors          : 10.0.0.1
* indicates inherited values
============================================================================

At Cisco IOS XR the same information is obtained by following command:

RP/0/0/CPU0:XR1#show rsvp session
Type Destination Add DPort Proto/ExtTunID  PSBs  RSBs  Reqs
—- ————— —– ————— —– —– —–
LSP4      10.0.255.1     1     10.0.255.2      1     1     0
LSP4      10.0.255.1     2     10.0.255.2      1     1     0
LSP4      10.0.255.1     3     10.0.255.2      1     1     0
LSP4      10.0.255.2     1     10.0.255.1      1     1     1
LSP4      10.0.255.2     2     10.0.255.1      1     1     1
LSP4      10.0.255.2     3     10.0.255.1      1     1     1
!
!
RP/0/0/CPU0:XR1#show rsvp interface
*: RDM: Default I/F B/W % : 75% [default] (max resv/bc0), 0% [default] (bc1)
Interface   MaxBW (bps)  MaxFlow (bps) Allocated (bps)      MaxSub (bps)
———– ———— ————- ——————– ————-
Gi0/0/0/0.10          1G            1G          567M ( 56%)             0
Gi0/0/0/0.11          1G            1G              0 ( 0%)             0
Gi0/0/0/0.23          1G            1G          222M ( 22%)             0
!
!
RP/0/0/CPU0:XR1#show mpls traffic-eng topology 10.0.0.1
IGP Id: 0100.0025.5002.00, MPLS TE Id: 10.0.255.2 Router Node (IS-IS CORE level-2)
.  Link[0]:Point-to-Point, Nbr IGP Id:0100.0025.5001.00, Nbr Node Id:4, gen:4411
.    Frag Id:0, Intf Address:10.0.0.1, Intf Id:0
.    Nbr Intf Address:10.0.0.0, Nbr Intf Id:0
.    TE Metric:10, IGP Metric:10
.    Attribute Flags: 0x0
.    Ext Admin Group:
.      Length: 256 bits
.      Value : 0x::
.    Attribute Names:
.    Switching Capability:None, Encoding:unassigned
.    BC Model ID:RDM
.    Physical BW:1000000 (kbps), Max Reservable BW Global:1000000 (kbps)
.    Max Reservable BW Sub:0 (kbps)
.                        Global Pool Sub Pool
.        Total Allocated Reservable  Reservable
.        BW (kbps)       BW (kbps)   BW (kbps)
.        ————— ———– ———-
. bw[0]:             0      1000000          0
. bw[1]:             0      1000000          0
. bw[2]:             0      1000000          0
. bw[3]:             0      1000000          0
. bw[4]:        123000       877000          0
. bw[5]:             0       877000          0
. bw[6]:             0       877000          0
. bw[7]:        444000       433000          0

So two tunnels (tunnel 1 and tunnel 3) are established over link SR1 (toXR1_p1) — (gig0/0/0/0.10) XR1, due to configured constrains (exclude green links and explicit path). The tunnel 2 is established over SR3 due to constrain (include red links) as well. Due to different default hold priorities between Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR you see that bandwidth for the 3rd tunnel is reserved in different TE class depending on direction (hold priority 0 for SR1_to_XR1 tunnel and priority 7 for XR1_to_SR1 tunnel).

Let’s test if the tunnels work:

A:SR1# oam lsp-ping “SR1_to_XR1_1_NO_GREEN”
LSP-PING SR1_to_XR1_1_NO_GREEN: 92 bytes MPLS payload
Seq=1, send from intf toXR1_p1, reply from 10.0.0.1
udp-data-len=32 ttl=255 rtt=6.27ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1_1_NO_GREEN PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 6.27ms, avg = 6.27ms, max = 6.27ms, stddev = 0.000ms
!
!
A:SR1# oam lsp-ping “SR1_to_XR1_2_RED”
LSP-PING SR1_to_XR1_2_RED: 92 bytes MPLS payload
Seq=1, send from intf toSR3, reply from 10.1.0.3
udp-data-len=32 ttl=255 rtt=5.59ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1_2_RED PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 5.59ms, avg = 5.59ms, max = 5.59ms, stddev = 0.000ms
!
!
A:SR1# oam lsp-ping “SR1_to_XR1_3_EP”
LSP-PING SR1_to_XR1_3_EP: 92 bytes MPLS payload
Seq=1, send from intf toXR1_p1, reply from 10.0.0.1
udp-data-len=32 ttl=255 rtt=9.24ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1_3_EP PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 9.24ms, avg = 9.24ms, max = 9.24ms, stddev = 0.000ms

There is one more constrain that I don’t review, which is called SLRG. It isn’t supported in Cisco IOS XR at sub interfaces, so I can’t show you its operation.

LSP Protection (secondary LSP)

The next point in our MPLS/RSVP-TE is protection. First of let’s we’ll configure so called “global protection”, what implies the configuration of the secondary path inside primary tunnel. There are two options: hot standby and cold standby. Hot standby means that the secondary tunnel is presignaled and the traffic will be immediately switched to it after detection of the failure on the first one. Cold standby means that the secondary tunnel starts to being signaled only after the failure at the primary is detected. Though the first option is seems to be more preferable, it consumes more resources, whereas the second option is sufficient if fast reroute is implemented (see the next point).

Both vendors support both option, but Cisco IOS XRv doesn’t support hot standby in VMWare image. So we’ll configure the secondary path as hot standby in Nokia (Alcatel-Lucent) SR OS and as cold standby in Cisco IOS XR for tunnel 2. We’ll allow only green links to be used as constrain for the path:

Nokia (Alcatel-Lucent) VSR (SR 7750) Cisco IOS XR (ASR 9000)
SR1 XR1

A:SR1>config>router# info
—————————
mpls
path “another_loose”
no shutdown
exit
lsp “SR1_to_XR1_2_RED”
secondary “another_loose”
standby
include “GREEN”
bandwidth 222
priority 2 2
exit
no shutdown
exit
exit
—————————

RP/0/0/CPU0:XR1(config)#show conf
interface tunnel-te2
path-option 10 dynamic attribute-set RED protected-by 20
path-option 20 dynamic attribute-set GREEN
!
mpls traffic-eng
attribute-set path-option GREEN
affinity include GREEN
!
!
end

The keyword fur path to be standby is “standby” in Nokia (Alcatel-Lucent) SR OS. The same keyword in Cisco IOS XR is “path-protections”, but as I’ve already, it isn’t supported in XRv.

To check the status of the secondary path in Nokia (Alcatel-Lucent) SR OS you should use the following command:

A:SR1# show router mpls lsp “SR1_to_XR1_2_RED” path
============================================================================
MPLS LSP SR1_to_XR1_2_RED Path
============================================================================
—————————————————————————-
LSP Name    : SR1_to_XR1_2_RED      To            : 10.0.255.2
Adm State   : Up                    Oper State    : Up
—————————————————————————-
Path Name                 Next Hop    Type      Out I/F     Adm    Opr
—————————————————————————-
loose                     10.1.0.1    Primary   1/1/1:13    Up     Up
another_loose             10.0.0.3    Standby   1/1/1:11    Up     Up
============================================================================

The standby tunnel has the same BW requirement as a primary one. As it’s already signaled, this BW must is reserved as well:

A:SR1# show router rsvp interface
============================================================================
RSVP Interfaces
============================================================================
Interface                Total   Active   Total BW   Resv BW   Adm   Opr
.Sessions Sessions                        (Mbps)     (Mbps)
—————————————————————————-
system                   –       –        –          –         Up    Up
toSR3                    1       1        1000       222       Up    Up
toXR1_p1                 2       2        1000       567       Up    Up
toXR1_p2                 1       1        1000       222       Up    Up
—————————————————————————-
Interfaces : 4
============================================================================

Now let’s check the secondary tunnel at Cisco IOS XR side:

RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels name tunnel-te2
Name: tunnel-te2 Destination: 10.0.255.1 Ifhandle:0x1f80
.  Signalled-Name: XR1_to_SR1_2_RED
.  Status:
.    Admin: up Oper: up Path: valid Signalling: connected
.    path option 10, type dynamic (Basis for Setup, path weight 20)
.      Protected-by PO index: 20
.      Path-option attribute: RED
.      Number of affinity constraints: 1
.        Include bit map : 0x2
.        Include ext bit map :
.          Length: 256 bits
.          Value : 0x::2
.        Include affinity name : RED(1)
.    path option 20, type dynamic
.      Path-option attribute: GREEN
.    G-PID: 0x0800 (derived from egress interface properties)
.    Bandwidth Requested: 222000 kbps CT0
.    Creation Time: Thu Sep 29 09:16:57 2016 (03:22:15 ago)
.  Config Parameters:
.    Bandwidth: 222000 kbps (CT0) Priority: 2 2 Affinity: 0x0/0xffff
.    Metric Type: TE (default)
.    Path Selection:
.      Tiebreaker: Min-fill (default)
.    Hop-limit: disabled
.    Cost-limit: disabled
.    Path-invalidation timeout: 45000 msec (default), Action: Tear (default)
.    AutoRoute: disabled LockDown: disabled Policy class: not set
.    Forward class: 0 (default)
.    Forwarding-Adjacency: disabled
.    Loadshare: 0 equal loadshares
.    Auto-bw: disabled
.    Fast Reroute: Disabled, Protection Desired: None
.    Path Protection: Not Enabled
.    BFD Fast Detection: Disabled
.    Reoptimization after affinity failure: Enabled
.    Soft Preemption: Enabled, Current Status: Preemption not pending

I’ve omitted the output a little bit in order to save the space. The most relevant information regarding protection is marked with bold. This tunnel isn’t presignaled, so there is no BW reservation for secondary path:

RP/0/0/CPU0:XR1#show rsvp interface
*: RDM: Default I/F B/W % : 75% [default] (max resv/bc0), 0% [default] (bc1)
Interface   MaxBW (bps)  MaxFlow (bps) Allocated (bps)      MaxSub (bps)
———– ———— ————- ——————– ————-
Gi0/0/0/0.10          1G            1G          567M ( 56%)             0
Gi0/0/0/0.11          1G            1G              0 ( 0%)             0
Gi0/0/0/0.23          1G            1G          222M ( 22%)             0

Let’s check the operation of the protection. First of all we make trace of the path:

RP/0/0/CPU0:XR1#traceroute mpls traffic-eng tunnel-te 2
0 10.1.0.3 MRU 1500 [Labels: 262140 Exp: 0]
L 1 10.0.255.3 MRU 1500 [Labels: 262138 Exp: 0] 10 ms
! 2 10.0.255.1 10 ms
!
!
A:SR1# oam lsp-trace “SR1_to_XR1_2_RED”
lsp-trace to SR1_to_XR1_2_RED: 0 hops min, 0 hops max, 116 byte packets
1 10.0.255.3 rtt=2.12ms rc=8(DSRtrMatchLabel) rsc=1
2 10.1.0.3 rtt=14.2ms rc=3(EgressRtr) rsc=1

We see that traffic path SR3. Now we break link SR3-XR1 and wait a little bit for convergence (usually the convergence is really high, just a couple of hundreds of milliseconds, but as my lab is fully virtual, I have to disable interfaces both at SR3 and XR3 in order avoid waiting 30 seconds of RSVP PATH/RESV refresh).

In logs at Cisco IOS XR we see that the primary path for tunnel 2 is down, new is calculated and signaled:

RP/0/0/CPU0:Sep 29 12:48:56.523 : ifmgr[227]: %PKT_INFRA-LINK-5-CHANGED : Interface GigabitEthernet0/0/0/0.23, changed state to Administratively Down
RP/0/0/CPU0:Sep 29 12:48:56.523 : isis[1010]: %ROUTING-ISIS-5-ADJCHANGE : Adjacency to SR3 (GigabitEthernet0/0/0/0.23) (L2) Down, Interface state down
RP/0/0/CPU0:XR1(config-subif)#RP/0/0/CPU0:Sep 29 12:48:56.553 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_UPDOWN : tail (signalled-name: SR1_to_XR1_2_RED::loose, LSP Id: 56832) state changed to down
RP/0/0/CPU0:Sep 29 12:48:56.553 : te_control[1051]: %ROUTING-MPLS_TE-5-S2L_SIGNALLING_STATE : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP id: 6): signalling state changed to Down
RP/0/0/CPU0:Sep 29 12:48:56.553 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_UPDOWN : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP Id: 6) state changed to down
RP/0/0/CPU0:Sep 29 12:48:56.553 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_EXPLICITROUTE : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP Id: 7) explicit-route, 10.0.0.2, 10.0.255.1.
RP/0/0/CPU0:Sep 29 12:48:56.593 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_RECORDROUTE : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP Id: 7) record-route, 10.0.0.2 (flags 0x0).
RP/0/0/CPU0:Sep 29 12:48:56.593 : te_control[1051]: %ROUTING-MPLS_TE-5-S2L_SIGNALLING_STATE : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP id: 7): signalling state changed to Up
RP/0/0/CPU0:Sep 29 12:48:56.593 : te_control[1051]: %ROUTING-MPLS_TE-5-LSP_UPDOWN : tunnel-te2 (signalled-name: XR1_to_SR1_2_RED, LSP Id: 7) state changed to up
!
!
RP/0/0/CPU0:XR1#show rsvp interface
*: RDM: Default I/F B/W % : 75% [default] (max resv/bc0), 0% [default] (bc1)
Interface   MaxBW (bps)  MaxFlow (bps) Allocated (bps)      MaxSub (bps)
———– ———— ————- ——————– ————-
Gi0/0/0/0.10          1G            1G          567M ( 56%)             0
Gi0/0/0/0.11          1G            1G          222M ( 22%)             0
Gi0/0/0/0.23          1G            1G              0 ( 0%)             0

You can see that BW is reserved at another interface now. On the other hand Nokia (Alcatel-Lucent) SR OS shows only the message about down primary path and that’s it. The secondary route is hot standby and is already presignalled:

17 2016/10/12 15:35:32.29 UTC WARNING: MPLS #2012 Base VR 1:
“LSP path SR1_to_XR1_2_RED::loose is operationally disabled (‘shutdown’) because noError”
!
!
A:SR1# show router mpls lsp “SR1_to_XR1_2_RED” path
============================================================================
MPLS LSP SR1_to_XR1_2_RED Path
============================================================================
—————————————————————————-
LSP Name    : SR1_to_XR1_2_RED      To            : 10.0.255.2
Adm State   : Up                    Oper State    : Up
—————————————————————————-
Path Name                 Next Hop    Type      Out I/F     Adm    Opr
—————————————————————————-
loose                     n/a         Primary   n/a         Up     Dwn
another_loose             10.0.0.3    Standby   1/1/1:11    Up     Up
============================================================================

Let’s check lsp again:

RP/0/0/CPU0:XR1#traceroute mpls traffic-eng tunnel-te 2
0 10.0.0.3 MRU 1500 [Labels: 262143 Exp: 0]
! 1 10.0.255.1 10 ms
!
!
A:SR1# oam lsp-trace “SR1_to_XR1_2_RED”
lsp-trace to SR1_to_XR1_2_RED: 0 hops min, 0 hops max, 116 byte packets
1 10.0.0.3 rtt=3.87ms rc=3(EgressRtr) rsc=1

Our traffic passes the backup LSP now without any manual intervention in the configuration, so our protection works. When we enable the link and wait for reconvergence, the traffic will be switched back to primary path. By default Nokia (Alcatel-Lucent) SR OS retries to reestablish the primary tunnel every 30 seconds (it’s called retry timer). In Cisco you have to do it manually by using command “mpls traffic-eng reoptimize” or you can configure optimize timer to any number of seconds/minutes. On the other hand reoptimization in Cisco IOS XR means not only attempt to reestablish primary path back, but it’s rather recalculation of CSPF for the path. This implies that if there is a new better path in the network, it will be used rather than previously used before the failure. In Nokia (Alcatel-Lucent) such process is called resignalling and it’s disabled by default. You can configure timer with the minimum value of 30 minutes.

So to make things clear: reoptimization of MPLS-TE tunnel in Cisco equals resignal of MPLS-TE tunnel in Nokia. Cisco seems not to have the analog for retry function of Nokia. Probably if the path protection was enabled, there will be another result, but I can’t test it now.

Fast reroute

Another method of MPLS LSP protection is called fast reroute. The theory is quite tough, but the configuration is really easy. Both in Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR you should just add one option to MPLS LSP configuration and that’s it. But in case of Cisco you also have to configure the MPLS LSPs that will be used for fast reroute. You can do it either manually (that is really time consuming) or you can use auto-tunnels. We’ll use the last option in our lab. There are also two type of fast-reroute protection: one-to-one (detour tunnel)) and facility (bypass tunnel). Cisco IOS XR supports only facility fast-reroute, so we’ll configure it both for tunnels 1 and 3:

Nokia (Alcatel-Lucent) VSR (SR 7750) Cisco IOS XR (ASR 9000)
SR1 XR1

A:SR1>config>router# info
—————————
mpls
lsp “SR1_to_XR1_1_NO_GREEN”
fast-reroute facility
exit
exit
lsp “SR1_to_XR1_3_EP”
fast-reroute facility
exit
exit
exit
—————————

RP/0/0/CPU0:XR1(config)#show conf
ipv4 unnumbered mpls traffic-eng Loopback0
interface tunnel-te1
fast-reroute
!
mpls traffic-eng
interface GigabitEthernet0/0/0/0.10
auto-tunnel backup
!
!
interface GigabitEthernet0/0/0/0.11
auto-tunnel backup
!
!
interface GigabitEthernet0/0/0/0.23
auto-tunnel backup
!
!
auto-tunnel backup
tunnel-id min 100 max 199
affinity ignore
!
!
end

Pay attention to “affinity ignore at Cisco. Default affinity at all Cisco RSVP-TE LSPs is 0x0/0xFFFF, meaning that tunnel is built only over link without any affinity bit set. This behavior must be changed.

At Nokia (Alcatel-Lucent) SR OS router SR1 both LSPs, which we want to protect, passes link with prefix 10.0.0.0/31. The fast-reroute analyze the topology and finds another suitable path (by default it tries to build node-protection, if it isn’t possible then it builds link-protection). Here is the result:

A:SR1# show router mpls bypass-tunnel protected-lsp
============================================================================
MPLS Bypass Tunnels
============================================================================
Legend : m – Manual d – Dynamic p – P2mp
============================================================================
Session-name
.  To              State          Out I/F    Out Label   Protected   Type
.LSP Count
—————————————————————————-
bypass-link10.0.0.1-61441
.  10.0.0.3        Up             1/1/1:11   3           2           d
. Protected LSPs –
. SR1_to_XR1_1_NO_GREEN::loose      From: 10.0.255.1     To: 10.0.255.2
. SR1_to_XR1_3_EP::LINK_10.0.0.0    From: 10.0.255.1     To: 10.0.255.2
—————————————————————————-
Bypass Tunnels : 1
—————————————————————————-

Cisco side:

RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels brief
.                TUNNEL NAME          DESTINATION        STATUS      STATE
.                 tunnel-te1           10.0.255.1            up         up
.                 tunnel-te2           10.0.255.1            up         up
.                 tunnel-te3           10.0.255.1            up         up
.              *tunnel-te100           10.0.255.1            up         up
.         SR1_to_XR1_1_NO_GR           10.0.255.2            up         up
.         SR1_to_XR1_2_RED::           10.0.255.2            up         up
.         SR1_to_XR1_2_RED::           10.0.255.2            up         up
.         SR1_to_XR1_3_EP::L           10.0.255.2            up         up
.         bypass-link10.0.0.             10.0.0.3            up         up
* = automatically created backup tunnel
!
!
RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels 100
Name: tunnel-te100 Destination: 10.0.255.1 Ifhandle:0x2180 (auto-tunnel
.  Auto Backup:
.    Protected LSPs: 1
.    Protected S2L Sharing Families: 0
.    Protected S2L: 0
.    Protected i/f: Gi0/0/0/0.10
.    Attribute-set: Not configured
.    Protection: NHOP
.    Unused removal timeout: not running
.  Path info (IS-IS CORE level-2):
.  Node hop count: 1
.    Hop0: 10.0.0.2
.    Hop1: 10.0.255.1

Under normal conditions tunnel 3 can’t use another link and tunnel 1 can use “red” link. Nevertheless if we break link 10.0.0.0/31, both of our tunnels continue working:

23 2016/10/12 16:38:35.03 UTC WARNING: MPLS #2013 Base VR 1:
“LSP path SR1_to_XR1_1_NO_GREEN::loose rerouted”
!
!
24 2016/10/12 16:38:35.03 UTC WARNING: MPLS #2013 Base VR 1:
“LSP path SR1_to_XR1_3_EP::LINK_10.0.0.0 rerouted”
!
!
*A:SR1# oam lsp-ping “SR1_to_XR1_1_NO_GREEN”
LSP-PING SR1_to_XR1_1_NO_GREEN: 92 bytes MPLS payload
Seq=1, send from intf toXR1_p2, reply from 10.0.0.3
udp-data-len=32 ttl=255 rtt=7.25ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1_1_NO_GREEN PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 7.25ms, avg = 7.25ms, max = 7.25ms, stddev = 0.000ms
!
!
*A:SR1# oam lsp-ping “SR1_to_XR1_3_EP”
LSP-PING SR1_to_XR1_3_EP: 92 bytes MPLS payload
Seq=1, send from intf toXR1_p2, reply from 10.0.0.3
udp-data-len=32 ttl=255 rtt=5.67ms rc=3 (EgressRtr)
—- LSP SR1_to_XR1_3_EP PING Statistics —-
1 packets sent, 1 packets received, 0.00% packet loss
round-trip min = 5.67ms, avg = 5.67ms, max = 5.67ms, stddev = 0.000ms

RSVP performance optimization

There are two differences, how Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR implements RSVP:

So, let’s configure refresh-reduction at both our SR routers:

Nokia (Alcatel-Lucent) VSR (SR 7750) – SR1 and SR3

A:SR1>config>router# info
————————–
rsvp
interface “toSR3”
refresh-reduction
reliable-delivery
exit
exit
interface “toXR1_p1”
refresh-reduction
reliable-delivery
exit
exit
interface “toXR1_p2”
refresh-reduction
reliable-delivery
exit
exit
exit
—————————

After applying the config you can check, that this technology work looking at RSVP interfaces:

A:SR1# show router rsvp interface detail | match expression “Interface|Ref”
RSVP Interfaces (Detailed)
Interface : system
Interface      : system
Refresh Reduc. : Disabled            Reliable Deli. : Disabled
Interface : toSR3
Interface      : toSR3
Refresh Reduc. : Enabled             Reliable Deli. : Enabled
Interface : toXR1_p1
Interface      : toXR1_p1
Refresh Reduc. : Enabled             Reliable Deli. : Enabled
Interface : toXR1_p2
Interface      : toXR1_p2
Refresh Reduc. : Enabled             Reliable Deli. : Enabled

In order to see the real difference, I advise you to make packet capture at the interface level in the lab.

Lessons learned

There are some problems due to the fact that Cisco IOS XR is virtual device. So unfortunately (at least now), I was not able to test all features that I want. Take care of these things and search in Internet information about possible limitations.

Conclusion

MPLS/RSVP-TE was the best choice for communication service providers (CSP) networks and continues to hold its positions all over the world. The new rising technology that can replace it is called Segment Routing (SR) and we’ll get to know it in the next article. Nevertheless RSVP-TE is really strong and I’m absolutely sure that it will be used further in CSP networks for a long years. I hope you enjoy our journey today. Take care and good bye!

Support us





BR,

Anton Karneliuk

Exit mobile version