Simplified Provisioning of RSVP-TE Signaled LSPs with Nokia SROS

This post will demonstrate some RSVP-TE LSP concepts using Nokia SROS. It will start off with the basic method of establishing a RSVP-TE Signaled LSP and a cursory glance of some of the TE options and then will jump into a more useful method to cope with larger deployments, depending on your impatience, it may could be worthwhile to jump directly to the “LSP Templates” section, however if you would like a bit of background, grab a cup of coffee and read on.

MPLS Label Switched Paths (LSPs) established using Label Distribution Protocol (LDP) signaling is fine for many applications and a primary advantage is that it is very quick to deploy and is widely supported across a range of device, however the Interior Gateway Routing Protocol (Typically OSPF or IS-IS) dictates the path taken by the LSP which may not always be desired particularly if you wish to steer particular flows one way or another. LSPs signaled using Resource Reservation Protocol with Traffic Engineering Extensions (RSVP-TE) introduces a lot more fine grained control (however it is equally valid to let the LSP follow the path of the IGP as well) however a disadvantage using such LSPs is that it can become quite cumbersome to build each one particularly if you have many to manage, or there is a lot of ongoing change.

The following 4 router partial mesh will be used to support this the configurations in this post.

4 Router Partial Mesh RSVP-TE

We’ll start with the initial configurations on the routers (simulated 7750 SR12s) which will including everything except for the MPLS related configuration.
[codegroup][php tab=”R1 Initial”]configure
system
name “R1”
exit
sfm 1
sfm-type m-sfm5-12
no shutdown
exit
card 1
card-type iom3-xp-b
mda 1
mda-type m10-1gb-xp-sfp
no shutdown
exit
no shutdown
exit
port 1/1/2
ethernet
exit
no shutdown
exit
port 1/1/3
ethernet
exit
no shutdown
exit
router
interface “R2”
address 10.1.2.1/24
port 1/1/2
no shutdown
exit
interface “R3”
address 10.1.3.1/24
port 1/1/3
no shutdown
exit
interface “system”
address 10.10.10.1/32
no shutdown
exit
ospf
area 0.0.0.0
interface “system”
no shutdown
exit
interface “R2”
no shutdown
exit
interface “R3″
no shutdown
exit
exit
no shutdown
exit
exit
exit all[/php]
[php tab=”R2 Initial”]configure
system
name “R2”
exit
sfm 1
sfm-type m-sfm5-12
no shutdown
exit
card 1
card-type iom3-xp-b
mda 1
mda-type m10-1gb-xp-sfp
no shutdown
exit
no shutdown
exit
port 1/1/2
ethernet
exit
no shutdown
exit
port 1/1/3
ethernet
exit
no shutdown
exit
port 1/1/4
ethernet
exit
no shutdown
exit
router
interface “R1”
address 10.1.2.2/24
port 1/1/2
no shutdown
exit
interface “R3”
address 10.2.3.2/24
port 1/1/4
no shutdown
exit
interface “R4”
address 10.2.4.2/24
port 1/1/3
no shutdown
exit
interface “system”
address 10.10.10.2/32
no shutdown
exit
ospf
area 0.0.0.0
interface “system”
no shutdown
exit
interface “R1”
no shutdown
exit
interface “R3”
no shutdown
exit
interface “R4″
no shutdown
exit
exit
no shutdown
exit
exit
exit all[/php]
[php tab=”R3 Initial”]configure
system
name “R3”
exit
sfm 1
sfm-type m-sfm5-12
no shutdown
exit
card 1
card-type iom3-xp-b
mda 1
mda-type m10-1gb-xp-sfp
no shutdown
exit
no shutdown
exit
port 1/1/2
ethernet
exit
no shutdown
exit
port 1/1/3
ethernet
exit
no shutdown
exit
port 1/1/4
ethernet
exit
no shutdown
exit
router
interface “R1”
address 10.1.3.3/24
port 1/1/3
no shutdown
exit
interface “R2”
address 10.2.3.3/24
port 1/1/4
no shutdown
exit
interface “R4”
address 10.3.4.3/24
port 1/1/2
no shutdown
exit
interface “system”
address 10.10.10.3/32
no shutdown
exit
ospf 0
area 0.0.0.0
interface “system”
no shutdown
exit
interface “R1”
no shutdown
exit
interface “R2”
no shutdown
exit
interface “R4″
no shutdown
exit
exit
no shutdown
exit
exit
exit all[/php]
[php tab=”R4 Initial”]configure
system
name “R4”
exit
sfm 1
sfm-type m-sfm5-12
no shutdown
exit
card 1
card-type iom3-xp-b
mda 1
mda-type m10-1gb-xp-sfp
no shutdown
exit
no shutdown
exit
port 1/1/2
ethernet
exit
no shutdown
exit
port 1/1/3
ethernet
exit
no shutdown
exit
router
interface “R2”
address 10.2.4.4/24
port 1/1/3
no shutdown
exit
interface “R3”
address 10.3.4.4/24
port 1/1/2
no shutdown
exit
interface “system”
address 10.10.10.4/32
no shutdown
exit
ospf
area 0.0.0.0
interface “system”
no shutdown
exit
interface “R3”
no shutdown
exit
interface “R2”
no shutdown
exit
exit
no shutdown
exit
exit
exit all[/php][/codegroup]There are 3 initial steps to enable RSVP-TE on Nokia SROS platforms:
1: Add the router interfaces into the MPLS Process (including the system interface) and enable the process. The follow will be applied on R1[php]configure
router
mpls
interface “system”
no shutdown
exit
interface “R2”
no shutdown
exit
interface “R3”
no shutdown
exit
no shutdown
exit[/php]
2: RSVP automatically adds the interfaces inserted into MPLS into its process, however RSVP is shutdown by default and required enabling
[php] rsvp
no shutdown
exit[/php]
3: As we are intending to use constrained paths which are not limited to that of the shortest path, the IGP traffic engineering extensions need enabling
[php] ospf
traffic-engineering
exit
exit
exit all[/php]

Once done we are ready to build MPLS paths and assign them to LSPs but before we do that, here is the equivalent configuration applied to R2, R3 and R4
[codegroup][php tab=”R2 Enable RSVP-TE”]configure
router
mpls
interface “system”
no shutdown
exit
interface “R1”
no shutdown
exit
interface “R3”
no shutdown
exit
interface “R4″
no shutdown
exit
no shutdown
exit
rsvp
no shutdown
exit
ospf
traffic-engineering
exit
exit
exit all[/php][php tab=”R3 Enable RSVP-TE”]configure
router
mpls
interface “system”
no shutdown
exit
interface “R1”
no shutdown
exit
interface “R2”
no shutdown
exit
interface “R4″
no shutdown
exit
no shutdown
exit
rsvp
no shutdown
exit
ospf
traffic-engineering
exit
exit
exit all[/php][php tab=”R4 Enable RSVP-TE”]configure
router
mpls
interface “system”
no shutdown
exit
interface “R2”
no shutdown
exit
interface “R3”
no shutdown
exit
no shutdown
exit
rsvp
no shutdown
exit
ospf
traffic-engineering
exit
exit
exit all[/php][/codegroup]

The first LSP to be created will be configured on R1 and destined to R3, however rather than use the directly connected path, the path will go via the outer Square (R1 -> R2 -> R4 -> R3). On R1 we will first define the path between R1 and R3 using strict hops where each hop is the system address of the next router:[php]/configure
router
mpls
path “R1-R3”
hop 1 10.10.10.2 strict
hop 2 10.10.10.4 strict
hop 3 10.10.10.3 strict
no shutdown
exit[/php] Once the path is defined, the LSP “LSP_R1-R3” will be created ensuring that a constraint based shortest based path can be used and using “R1-R3” as the primary path:[php] lsp “LSP_R1-R3”
to 10.10.10.3
cspf
primary “R1-R3”
exit
no shutdown
exit
exit
exit
exit all[/php]Once configured and enable, we can verify if the LSP is up and running:[php]*A:R1# show router mpls lsp

===============================================================================
MPLS LSPs (Originating)
===============================================================================
LSP Name To Tun Fastfail Adm Opr
Id Config
——————————————————————————-
LSP_R1-R3 10.10.10.3 3 No Up Up
——————————————————————————-
LSPs : 1
===============================================================================[/php]Yes it is, however that summary doesn’t provide details on the path, so a more detailed command will be called[php]*A:R1# show router mpls lsp “LSP_R1-R3” path detail | match Explicit post-lines 100
Explicit Hops :
10.10.10.2(S) -> 10.10.10.4(S) -> 10.10.10.3(S)
Actual Hops :
10.1.2.1 (10.10.10.1) Record Label : N/A
-> 10.1.2.2 (10.10.10.2) Record Label : 262143
-> 10.2.4.4 (10.10.10.4) Record Label : 262139
-> 10.3.4.3 (10.10.10.3) Record Label : 262143
Computed Hops :
10.1.2.1(S)
-> 10.1.2.2(S)
-> 10.2.4.4(S)
-> 10.3.4.3(S)
Resignal Eligible: False
Last Resignal : n/a CSPF Metric : 300
===============================================================================[/php]The path is taken as specified, and we can also confirm this on the transit (MPLS Label Switch Routers) and terminating (Egress MPLS Label Edge Router)[php]*A:R2# show router mpls lsp transit
===============================================================================
MPLS LSPs (Transit)
===============================================================================
Legend : @ – Active Detour
===============================================================================
From To In I/F Out I/F State LSP Name
——————————————————————————-
10.10.10.1 10.10.10.3 1/1/2 1/1/3 Up LSP_R1-R3::R1-R3
——————————————————————————-
LSPs : 1
——————————————————————————-[/php][php]*A:R4# show router mpls lsp transit
===============================================================================
MPLS LSPs (Transit)
===============================================================================
Legend : @ – Active Detour
===============================================================================
From To In I/F Out I/F State LSP Name
——————————————————————————-
10.10.10.1 10.10.10.3 1/1/3 1/1/2 Up LSP_R1-R3::R1-R3
——————————————————————————-
LSPs : 1
——————————————————————————-[/php][php]*A:R3# show router mpls lsp terminate
===============================================================================
MPLS LSPs (Terminate)
===============================================================================
Legend : @ – Active Detour
===============================================================================
From To In I/F Out I/F State LSP Name
——————————————————————————-
10.10.10.1 10.10.10.3 1/1/2 n/a Up LSP_R1-R3::R1-R3
——————————————————————————-
LSPs : 1
——————————————————————————-[/php]As MPLS LSPs are unidirectional, we would need to provision a corresponding LSP on R3 to terminate on R1, to have something more than just a demonstration – however I’ll skip that step and shutdown the LSP on R1 and do something a little different.[php]*A:R1# /configure router mpls lsp “LSP_R1-R3” shutdown[/php]Firstly we are going to define an admin-group or link color which can be used to give input into the specific hops the path of an LSP will take (rules can be made based on the presence or non-presence of certain admin-groups however with 32 values available, care needs to be given on how these are allocated)[php]/configure
router
if-attribute
admin-group “R1-R2” value 5
exit[/php]Then this admin-group will be associated to the R2 facing interface within the MPLS context[php] mpls
interface “R2”
admin-group “R1-R2”
exit[/php]Now to create an unconstrained path (by simply creating and administratively enabling the path, providing nothing else limits the selection criteria, the IGP path will be used for the LSP)[php] path “PATH_LOOSE”
no shutdown
exit[/php]First we will create a LSP to R1 that is not constrained at all:[php] lsp “LSP_R1-R2-U”
to 10.10.10.2
cspf
primary “PATH_LOOSE”
exit
no shutdown
exit[/php] and now a constrained path that is configured in the same manner, except that it requires the path to exclude links with the R1-R2 admin-group[php] lsp “LSP_R1-R2-C”
to 10.10.10.2
cspf
exclude “R1-R2”
primary “PATH_LOOSE”
exit
no shutdown
exit[/php]To compare the two different paths taken for each LSP:[php]*A:R1>config>router>mpls# show router mpls lsp “LSP_R1-R2-U” path detail | match Actual post-lines 100
Actual Hops :
10.1.2.1 (10.10.10.1) Record Label : N/A
-> 10.1.2.2 (10.10.10.2) Record Label : 262143
Computed Hops :
10.1.2.1(S)
-> 10.1.2.2(S)
Resignal Eligible: False
Last Resignal : n/a CSPF Metric : 100
===============================================================================
*A:R1>config>router>mpls# show router mpls lsp “LSP_R1-R2-C” path detail | match Actual post-lines 100
Actual Hops :
10.1.3.1 (10.10.10.1) Record Label : N/A
-> 10.1.3.3 (10.10.10.3) Record Label : 262143
-> 10.2.3.2 (10.10.10.2) Record Label : 262142
Computed Hops :
10.1.3.1(S)
-> 10.1.3.3(S)
-> 10.2.3.2(S)
Resignal Eligible: False
Last Resignal : n/a CSPF Metric : 200
===============================================================================[/php]The output shows that the constrained path avoided the R1-R2 link due to the admin-group “R1-R2” attached to the interface and the directive to exclude links with that admin-group. R2 can be used to confirm the entry of each LSP as well with the terminate directive:[php]*A:R2# show router mpls lsp terminate
===============================================================================
MPLS LSPs (Terminate)
===============================================================================
Legend : @ – Active Detour
===============================================================================
From To In I/F Out I/F State LSP Name
——————————————————————————-
10.10.10.1 10.10.10.2 1/1/2 n/a Up LSP_R1-R2-U::PATH_LOOSE
10.10.10.1 10.10.10.2 1/1/4 n/a Up LSP_R1-R2-C::PATH_LOOSE
——————————————————————————-
LSPs : 2
——————————————————————————-[/php]
This post has not touched upon secondary or standby paths, Fast Reroute, bandwidth reservation, set up or hold priority or a myriad of other features that may be considered within a production environment, however even when using admin-groups as a tool to steer traffic, the setup of LSPs can become quite tiresome in very short order, if you require a full-mesh of LSPs to be defined, each time you add a router to the network, you have to revist each router and build an LSP to the new one (similar to the IBGP problem before concepts like route reflectors reduced the configuration overhead) – larger configurations are more prone to errors and can make the time to deploy nodes more painful which may result in deciding that LDP signaled LSPs are a reasonable trade off.

LSP-Templates

LSP-Templates are one way to help take back the configuration overhead for initial builds, and to make it easier when adding nodes to an existing network. This example will be performed on R2. Define the a loose path with the name “PATH_LOOSE” as was done on R1 and create a Point-to-Point Mesh LSP-Template named AUTOLSP, that will use that path and be enabled for cspf:[php]configure
router
mpls
path “PATH_LOOSE”
no shutdown
exit
lsp-template “AUTOLSP” mesh-p2p
default-path “PATH_LOOSE”
cspf
no shutdown
exit
exit all[/php]To leverage the LSP-Template, we need to create a routing-policy which will be used to determine what nodes we will wish to establish a LSP with. In this case each nodes system address is in the 10.10.10.0/24 network, so we’ll create a match for host routes within that network using the prefix list and policy statement below.[php]configure
router
policy-options
begin
prefix-list “PL_MPLSNETWORK”
prefix 10.10.10.0/24 prefix-length-range 32-32
exit
policy-statement “PS_AUTOMESH_RSVP”
entry 10
from
prefix-list “PL_MPLSNETWORK”
exit
action accept
exit
exit
exit
commit
exit all[/php]The OSPF router LSA will be associated with the system addresses (since we haven’t changed the router ids):
[php]*A:R2# show router ospf database type router

===============================================================================
Rtr Base OSPFv2 Instance 0 Link State Database (type: Router)
===============================================================================
Type Area Id Link State Id Adv Rtr Id Age Sequence Cksum
——————————————————————————-
Router 0.0.0.0 10.10.10.1 10.10.10.1 1698 0x8000000a 0xaf19
Router 0.0.0.0 10.10.10.2 10.10.10.2 1114 0x8000000c 0xbb6a
Router 0.0.0.0 10.10.10.3 10.10.10.3 67 0x8000000d 0x1efb
Router 0.0.0.0 10.10.10.4 10.10.10.4 101 0x8000000b 0x4d5c
——————————————————————————-
No. of LSAs: 4
===============================================================================[/php]Back within the MPLS configuration context, auto-created lsps using the lsp-template AUTOLSP and the routing policy PS_AUTOMESH_RSVP will be enabled:[php]configure
router
mpls
auto-lsp lsp-template “AUTOLSP” policy “PS_AUTOMESH_RSVP”
exit
exit all[/php]Now to determine what LSPs have been automatically created:[php]*A:R2# show router mpls lsp auto-lsp mesh-p2p

===============================================================================
MPLS Auto-LSP
===============================================================================
LSP Name Type Fastfail Admin Oper
Config State State
——————————————————————————-
AUTOLSP-10.10.10.1-61453 MeshP2P Yes Up Up
AUTOLSP-10.10.10.3-61454 MeshP2P Yes Up Up
AUTOLSP-10.10.10.4-61455 MeshP2P Yes Up Up
——————————————————————————-
Auto-LSPs : 3
===============================================================================[/php]The LSP name is system derived from the lsp-template name, the destination router, and the tunnel id:[php]*A:R2# show router tunnel-table

===============================================================================
IPv4 Tunnel Table (Router: Base)
===============================================================================
Destination Owner Encap TunnelId Pref Nexthop Metric
——————————————————————————-
10.10.10.1/32 rsvp MPLS 61453 7 10.1.2.1 100
10.10.10.3/32 rsvp MPLS 61454 7 10.2.3.3 100
10.10.10.4/32 rsvp MPLS 61455 7 10.2.4.4 100
——————————————————————————-
Flags: B = BGP backup route available
E = inactive best-external BGP route
===============================================================================[/php]The same configuration can be applied to R1, R3 and R4, when consolidated it looks like this:[php]configure
router
policy-options
begin
prefix-list “PL_MPLSNETWORK”
prefix 10.10.10.0/24 prefix-length-range 32-32
exit
policy-statement “PS_AUTOMESH_RSVP”
entry 10
from
prefix-list “PL_MPLSNETWORK”
exit
action accept
exit
exit
exit
commit
exit
mpls
path “PATH_LOOSE”
no shutdown
exit
lsp-template “AUTOLSP” mesh-p2p
default-path “PATH_LOOSE”
cspf
no shutdown
exit
auto-lsp lsp-template “AUTOLSP” policy “PS_AUTOMESH_RSVP”
exit
exit
exit all[/php]
What I really like about this, is that it brings configuration consistency, relatively small configurations that can do some good things, particularly if you have a well thought out deployment strategy – e.g. if you deploy another router, e.g. R5 with the system address of 10.10.10.5/32, R1-R4 will automatically attempt to establish LSPs to it which resulting in lower touch provisioning when adding new network elements to your network. LSP-Templates have been around on the 7×50 platform for some time, however it is only recently that the software on the 7705 SAR platforms have had this feature introduced allowing simplified RSVP-TE provisioning on large, medium and small platforms.

Please note that the specific LSP-Template that was used in this example is very simple and only used to demonstrate the basic concept – in a live deployment additional attributes such as fast-reroute, adspec and admin-groups if appropriate should be considered.