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.

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
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 "R7"
                    no shutdown
                exit
           exit
           no shutdown
       exit
    exit all
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
            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 all
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 "R2"
                    no shutdown
                exit
                interface "R3"
                    no shutdown
                exit
           exit
           no shutdown
       exit
    exit all

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

configure
    router
        mpls
            interface "system"
                no shutdown
            exit
            interface "R2"
                no shutdown
            exit
            interface "R3"
                no shutdown
            exit
            no shutdown
        exit all

2: RSVP automatically adds the interfaces inserted into MPLS into its process, however RSVP is shutdown by default and required enabling

configure
    router
        rsvp
            no shutdown
        exit all

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

configure
    router
        ospf
            traffic-engineering
        exit all

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

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 all
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 all
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 all

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:

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
        exit all

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:

configure
    router
        mpls
            lsp "LSP_R1-R3"
                to 10.10.10.3
                cspf
                primary "R1-R3"
                exit
                no shutdown
            exit
        exit all

Once configured and enable, we can verify if the LSP is up and running:

*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
===============================================================================

Yes it is, however that summary doesn’t provide details on the path, so a more detailed command will be called to obtain path detail (we are filtering the output to start from when the Explicit Hops are listed)

*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
===============================================================================

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)

*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
-------------------------------------------------------------------------------
*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
-------------------------------------------------------------------------------
*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
-------------------------------------------------------------------------------

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.

*A:R1# /configure
    router
        mpls
            lsp "LSP_R1-R3" shutdown
        exit all

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)

/configure
    router
        if-attribute
            admin-group "R1-R2" value 5
        exit

Then this admin-group will be associated to the R2 facing interface within the MPLS context

        mpls
            interface "R2"
                admin-group "R1-R2"
            exit

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)

            path "PATH_LOOSE"
                no shutdown
            exit

First we will create a LSP to R1 that is not constrained at all:

            lsp "LSP_R1-R2-U"
                to 10.10.10.2
                cspf
                primary "PATH_LOOSE"
                exit
                no shutdown
            exit

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

            lsp "LSP_R1-R2-C"
                to 10.10.10.2
                cspf
                exclude "R1-R2"
                primary "PATH_LOOSE"
                exit
                no shutdown
            exit

To compare the two different paths taken for each LSP:

*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
===============================================================================

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:

*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
-------------------------------------------------------------------------------

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:

configure
    router
        mpls
            path "PATH_LOOSE"
                no shutdown
            exit
            lsp-template "AUTOLSP" mesh-p2p
                default-path "PATH_LOOSE"
                cspf
                no shutdown
            exit
        exit all

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.

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

The OSPF router LSA will be associated with the system addresses (since we haven’t changed the router ids):

*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
===============================================================================

Back within the MPLS configuration context, auto-created lsps using the lsp-template AUTOLSP and the routing policy PS_AUTOMESH_RSVP will be enabled:

configure
    router
        mpls
            auto-lsp lsp-template "AUTOLSP" policy "PS_AUTOMESH_RSVP"
        exit
    exit all

Now to determine what LSPs have been automatically created:

*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
===============================================================================

The LSP name is system derived from the lsp-template name, the destination router, and the tunnel id:

*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
===============================================================================

The same configuration can be applied to R1, R3 and R4, when consolidated it looks like this:

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
        exit all

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.