Segment Routing with IS-IS Control Plane

This chapter provides information about Segment Routing (SR) with Intermediate System to Intermediate System (IS-IS) control plane.

Topics in this chapter include:

Applicability

Segment routing is supported in SR OS Release 13.0, and later. This chapter was initially written for SR OS Release 13.0.R3, but the CLI in the current edition corresponds to SR OS Release 21.2.R1.

Overview

Segment Routing (SR) is a technology for IP/Multi-Protocol Label Switching (MPLS) networks that enables source routing. With source routing, operators can specify a forwarding path, from ingress to egress, that is independent of the shortest path determined by the Interior Gateway Protocol (IGP).

The main benefit of segment routing compared to other source routing protocols (such as ReSource reserVation Protocol with Traffic Engineering (RSVP-TE)) is that, from a control plane perspective, no signaling protocol is required. Segment routing provides a path or tunnel, encoded as a sequential list of sub-paths or segments that are advertised within the segment routing domain, using extensions to well-known link state routing protocols, such as IS-IS or Open Shortest Path First (OSPF).

Implementation

A segment routing tunnel can contain a single segment that represents the destination node, or it can contain a list of segments that the tunnel must traverse. The tunnel can be established over an IPv4/IPv6 MPLS or IPv6 data plane, encoded as a stack of MPLS labels or as a number of IPv6 addresses contained in an IPv6 extension header.

Network elements are modeled as segments. For each segment, IGP advertises an identifier referred to as a segment ID (SID).

The two segment types are:

  • Prefix segment — Globally unique and allocated from a Segment Routing Global Block (SRGB), typically multi-hop and signaled by the IGP. It is the Equal Cost Multi-Path ECMP-aware shortest path IGP route to a related prefix. A typical example of a prefix segment is a node SID. Within the SR OS implementation, the node SID is either the system address or another interface address in the Global Routing Table (GRT) of type loopback. Node SIDs are advertised in IS-IS using a prefix SID sub-TLV (Type Length Value).

  • Adjacency segment — Locally unique and allocated from the (local) dynamic label space, so that other routers in the SR domain can use the same label space. Adjacency segments are signaled by the IGP. Within the SR OS implementation, adjacency SIDs are automatically assigned and advertised when the SR context within the IGP instance is set in no shutdown. Adjacency SIDs are advertised in IS-IS using an adjacency SID sub-TLV.

To make prefix segments globally unique within the segment routing domain, an indexing mechanism is required, because production networks consist of multiple vendors and multiple products. As a result, it is often difficult to agree on a common SRGB for the prefix SIDs.

All routers within the SR domain are expected to configure and advertise the same Prefix SID index range for an IGP instance. The label value used by each router to represent a prefix can be local to that router by the use of an offset label, referred to as a start label:

Local label (for a prefix) = (local) start label + {Prefix SID index}

Within the SR OS implementation, prefix Loop-Free Alternate (LFA) is supported for segment routing to improve the Fast ReRoute (FRR) coverage. Remote LFA (RLFA) is also supported. With RLFA, segment routing shortest path tunnels are used as a virtual LFA or repair tunnel toward the PQ node.

The following example uses IS-IS as an IGP protocol, with an MPLS data plane and services enabled using LFA and RLFA. Example topology shows the example topology with seven PEs.

Figure 1. Example topology

Configuration

  1. Configure router interfaces and IS-IS according to Example topology.

    • The system and IP interface addresses are configured according to Example topology.

    • IS-IS level 2 is selected as the IGP to distribute routing information between all PEs. All IS-IS interfaces are of type point-to-point to avoid running the Designated Router/Backup Designated Router (DR/BDR) election process.

  2. Configure segment routing.

    Before enabling segment routing on a router, define a dedicated SRGB. This SRGB is required on each individual router part of the SR domain and is used to allocate the Prefix SIDs.

    By default, an SRGB is not instantiated and, when configured by the operator, it is taken from the system dynamic label range. By default, the following label ranges are available:

    *A:PE-1# show router mpls-labels label-range  
      
    =============================================================================== 
    Label Ranges 
    =============================================================================== 
    Label Type      Start Label End Label   Aging       Available   Total 
    ------------------------------------------------------------------------------- 
    Static          32          18431       -           18400       18400 
    Dynamic         18432       524287      0           505856      505856 
    Seg-Route   0           0           -           0           0
     ===============================================================================
    

    For simplicity, the same SRGB is used in this example for all SR domain routers. Within the command, a start value and end value define the size of the SRGB. The following command configures an SRGB of 100 MPLS labels, from label 20000 to label 20099:

    # on PE-1, PE-2, PE-3, PE-4, PE-5, PE-6, PE-7:
    configure 
        router Base
            mpls-labels
                sr-labels start 20000 end 20099
            exit
    
    *A:PE-1# show router mpls-labels label-range  
      
    =============================================================================== 
    Label Ranges 
    =============================================================================== 
    Label Type      Start Label End Label   Aging       Available   Total 
    ------------------------------------------------------------------------------- 
    Static          32          18431       -           18400       18400 
    Dynamic         18432       524287      0           505756      505856 
    Seg-Route   20000       20099       -           0           100
     =============================================================================== 
    

    This command is repeated for all other nodes. The allocated MPLS labels are only for the prefix SIDs. The adjacency SIDs, which are only locally unique, are taken from the dynamic range; in this example, between 18432 and 524287.

    1. Enable router capability in the IGP instance.

      It is mandatory to enable the router-capability parameter inside the IS-IS instance, to advertise SR support among the IS-IS adjacencies. By configuring this command within the IGP instance, the SR capability sub-TLV is propagated and is used to indicate the index range and the start label. The SR algorithm sub-TLV is also used to advertise the algorithm used for path calculations. Only Shortest Path First (SPF) (value 0) is defined. This is configured as follows:

      # on PE-1, PE-2, PE-3, PE-4, PE-5, PE-6, PE-7:
      configure 
          router Base
              isis 0
                  advertise-router-capability area
      

      The flooding parameter is a mandatory parameter in this CLI command. The keyword area or as indicates that the router capabilities label switched path (LSP) should be advertised throughout the same level or throughout the whole Autonomous System (AS). In the preceding example, all routers belong to the same level, so the area argument is sufficient. When the SR context within the IGP instance is set in no shutdown, both IS-IS sub-TLVs are flooded.

    2. Define the Prefix SID index range.

      The SR OS implementation for SR provides two mutually exclusive modes of operation to define the Prefix SID index range: global mode and per-instance mode. Per-instance mode is useful in a seamless MPLS environment when multiple IGP instances are used. The main difference between the modes is the way that the start label and index range are calculated.

      A comparison of the modes is shown in following table:

      Table 1. Mode comparison

      Global

      Per instance

      Applicable for all IGP instances on that node

      Applicable for one dedicated IGP instance

      Start label is first label of SRGB

      Start label is configurable (but part of SRGB range); use of non-overlapping sub-ranges of SRGB

      Prefix SID index range is ‟size” of SRGB

      Prefix SID index-range is configurable

      If SRGB needs to change, shut down SR and delete prefix-SID-ranges in all IGP instances

      If prefix SID index and/or label range needs to change, shut down SR in that specific IGP instance

      SW checks whether any allocated SID index/label goes out of range.

      SW checks also for overlaps of the resulting net label value range across IGP instances.

      For simplicity, global mode is used for this example, as follows:

      # on PE-1, PE-2, PE-3, PE-4, PE-5, PE-6, PE-7: 
      configure 
          router Base
              isis 0
                  segment-routing
                      prefix-sid-range global
      
    3. Assign a prefix SID index or label to the prefix representing a node.

      To be able to set up SR shortest path tunnels to all routers of the SR domain, each router needs to be uniquely defined within the SR domain. Therefore, the system address or other loopback interface in the GRT will be assigned an ipv4-node-sid index or label value that is unique within the SR domain. The prefix SID index is assigned as follows:

      # on PE-1:
      configure 
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 1
      
      # on PE-2:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 2
      
      # on PE-3:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 3
      
      # on PE-4:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 4
      
      # on PE-5:
      configure 
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 5
      
      # on PE-6:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 6
      
      # on PE-7:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid index 7
      

      Because the SRGB is the same on all nodes, each node in the network can be reached using the same MPLS label. For example, the node SID for PE-5 on all nodes has a start label (first label of the SRGB (= 20000) + ipv4-node-sid index on node PE-5 (= 5)) of 20005.

      When there is one consistent SRGB for the SR domain, the SR OS allows the use of absolute MPLS label values instead of index values. For example, on PE-1, an operator can use an explicit MPLS label value, as follows:

      # on PE-1:
      configure
          router Base
              isis 0
                  interface "system" 
                      ipv4-node-sid label 20001
      

      Internally, this explicit value is translated into an index value (index-value 1) before advertising it toward its neighbors, taking into account the prefix SID index-range mode (global or per-instance) and the SRGB.

    4. Enable SR context within the IGP instance, as follows:

      # on PE-1, PE-2, PE-3, PE-4, PE-5, PE-6, PE-7:
      configure
          router Base
              isis 0
                  segment-routing
                      no shutdown
      

      After enabling the SR context within an IGP instance, the SR capability sub-TLV, and the SR algorithm sub-TLV between all routers within the SR domain, are flooded. The following show command displays the SR related router capability information on PE-1:

      *A:PE-1# show router isis capabilities level 2  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Capabilities 
      =============================================================================== 
      
      Displaying Level 2 capabilities 
      ------------------------------------------------------------------------------- 
      LSP ID    : PE-1.00-00 
        Router Cap : 192.0.2.1, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-2.00-00 
        Router Cap : 192.0.2.2, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-3.00-00 
        Router Cap : 192.0.2.3, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-4.00-00 
        Router Cap : 192.0.2.4, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-5.00-00 
        Router Cap : 192.0.2.5, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-6.00-00 
        Router Cap : 192.0.2.6, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      LSP ID    : PE-7.00-00 
        Router Cap : 192.0.2.7, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      
      Level (2) Capability Count : 7 
      ===============================================================================
      

      A similar output occurs for each router in the SR domain.

      After enabling the SR context within the IGP instance, the assigned index for each locally configured prefix SID is advertised. After the advertisement of prefix SIDs, MPLS data plane Ingress Label Mapping (ILM) is programmed with a pop operation. In this context, a show command can be used to display the prefix SIDs, in order, within the SR domain. As an example, on PE-1, this becomes:

      *A:PE-1# show router isis prefix-sids  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Prefix/SID Table 
      
      =============================================================================== 
      Prefix                            SID        Lvl/Typ    SRMS   AdvRtr 
                                                               MT     Flags
       ------------------------------------------------------------------------------- 
      192.0.2.1/32                      1          2/Int.      N     PE-1 
                                                                  0      NnP 
      192.0.2.2/32                      2          2/Int.      N     PE-2 
                                                                  0      NnP 
      192.0.2.3/32                      3          2/Int.      N     PE-3 
                                                                  0      NnP 
      192.0.2.4/32                      4          2/Int.      N     PE-4 
                                                                  0      NnP 
      192.0.2.5/32                      5          2/Int.      N     PE-5 
                                                                  0      NnP 
      192.0.2.6/32                      6          2/Int.      N     PE-6 
                                                                  0      NnP 
      192.0.2.7/32                      7          2/Int.      N     PE-7 
                                                                  0      NnP
      ------------------------------------------------------------------------------- 
      No. of Prefix/SIDs: 7 (7 unique)  
      ------------------------------------------------------------------------------- 
      SRMS : Y/N  = prefix SID advertised by SR Mapping Server (Y) or not (N) 
             S    = SRMS prefix SID is selected to be programmed 
      Flags: R    = Re-advertisement 
             N    = Node-SIDnP   = no penultimate hop POP
             E    = Explicit-Null   
             V    = Prefix-SID carries a value   
             L    = value/index has local significance  
      =============================================================================== 
      

      By default, the SR OS implementation sets the node SID (or N–flag) and no Penultimate hop PoP (or nP–flag) inside the prefix SID TLV. Another useful flag that can be set is the re-advertisement (or R-flag). The R-flag is set when a prefix SID is propagated between levels or areas, or redistribution is in place (from another protocol).

      Prefix SID information can also be viewed within the IGP database attached to (extended) IP prefix reachability TLVs. For example, on PE-1, as follows:

      *A:PE-1# show router isis database level 2 PE-1.00-00 detail  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Database (detail) 
      =============================================================================== 
      
      Displaying Level 2 database 
      ------------------------------------------------------------------------------- 
      LSP ID    : PE-1.00-00                                  Level     : L2  
      Sequence  : 0x5                    Checksum  : 0xc83f   Lifetime  : 1146 
      Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1 
      Attributes: L1L2                   Max Area  : 3        Alloc Len : 1492 
      SYS ID    : 1920.0000.2001         SysID Len : 6        Used Len  : 254 
      
      TLVs :  
        Supp Protocols: 
          Protocols     : IPv4 
        IS-Hostname   : PE-1 
        Router ID   : 
          Router ID   : 192.0.2.1 
        Router Cap : 192.0.2.1, D:0, S:0 
          TE Node Cap : B E M  P 
          SR Cap: IPv4 MPLS-IPv6 
             SRGB Base:20000, Range:100 
          SR Alg: metric based SPF 
          Node MSD Cap: BMI : 12 ERLD : 15 
      ---snip--- 
        Internal Reach: 
      ---snip--- 
          Default Metric: (I) 0 
          Delay Metric  : (I) 0 
          Expense Metric: (I) 0 
          Error Metric  : (I) 0 
          IP Address    : 192.0.2.1 
          IP Mask       : 255.255.255.255 
        I/F Addresses : 
          I/F Address   : 192.0.2.1 
      ---snip--- 
        TE IP Reach   : 
      ---snip--- 
          Default Metric  : 0 
          Control Info:   S, prefLen 32 
          Prefix   : 192.0.2.1 
          Sub TLV   : 
            Prefix-SID Index:1, Algo:0, Flags:NnP
      Level (2) LSP Count : 1 
      ------------------------------------------------------------------------------- 
      ---snip--- 
      Prefix-SID Flags : R = Re-advertisement Flag 
      N = Node-SID FlagnP = no penultimate hop POP
                   E = Explicit-Null Flag 
                         V = Prefix-SID carries a value 
                         L = value/index has local significance 
      ---snip--- 
      
      =============================================================================== 
      

      After enabling the SR context within the IGP instance, adjacency SIDs are also automatically assigned and advertised for each formed adjacency over an IP interface. From a data plane perspective, one local adjacency SID consumes one ILM entry, programming a pop operation.

      Similar to prefix SIDs, adjacency SID information can be viewed within the IGP database attached to IS neighbor TLVs, as follows:

      *A:PE-1# show router isis database level 2 PE-1.00-00 detail  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Database (detail) 
      =============================================================================== 
      
      Displaying Level 2 database 
      ------------------------------------------------------------------------------- 
      LSP ID    : PE-1.00-00                                  Level     : L2  
      Sequence  : 0x5                    Checksum  : 0xc83f   Lifetime  : 1146 
      Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1 
      Attributes: L1L2                   Max Area  : 3        Alloc Len : 1492 
      SYS ID    : 1920.0000.2001         SysID Len : 6        Used Len  : 254 
      
      TLVs :  
        Supp Protocols: 
          Protocols     : IPv4 
        IS-Hostname   : PE-1 
        Router ID   : 
          Router ID   : 192.0.2.1 
      ---snip--- 
        IS Neighbors  : 
          Virtual Flag  : 0 
          Default Metric: (I) 10 
          Delay Metric  : (I) 0 
          Expense Metric: (I) 0 
          Error Metric  : (I) 0 
          Neighbor      : PE-2.00 
        IS Neighbors  : 
          Virtual Flag  : 0 
          Default Metric: (I) 10 
          Delay Metric  : (I) 0 
          Expense Metric: (I) 0 
          Error Metric  : (I) 0 
          Neighbor      : PE-7.00 
        Internal Reach: 
          Default Metric: (I) 10 
          Delay Metric  : (I) 0 
          Expense Metric: (I) 0 
          Error Metric  : (I) 0 
          IP Address    : 192.168.12.0 
          IP Mask       : 255.255.255.252 
          Default Metric: (I) 10 
          Delay Metric  : (I) 0 
          Expense Metric: (I) 0 
          Error Metric  : (I) 0 
          IP Address    : 192.168.17.0 
          IP Mask       : 255.255.255.252 
      ---snip--- 
        I/F Addresses : 
      ---snip--- 
          I/F Address   : 192.168.12.1 
          I/F Address   : 192.168.17.1 
        TE IS Nbrs   : 
          Nbr   : PE-2.00 
          Default Metric  : 10 
          Sub TLV Len     : 19 
          IF Addr   : 192.168.12.1 
          Nbr IP    : 192.168.12.2 
      Adj-SID: Flags:v4VL Weight:0 Label:524287 
        TE IS Nbrs   : 
          Nbr   : PE-7.00 
          Default Metric  : 10 
          Sub TLV Len     : 19 
          IF Addr   : 192.168.17.1 
          Nbr IP    : 192.168.17.2 
      Adj-SID: Flags:v4VL Weight:0 Label:524286 
        TE IP Reach   : 
          Default Metric  : 10 
          Control Info:    , prefLen 30 
          Prefix   : 192.168.12.0 
          Default Metric  : 10 
          Control Info:    , prefLen 30 
          Prefix   : 192.168.17.0 
      ---snip--- 
      
      Level (2) LSP Count : 1 
      ------------------------------------------------------------------------------- 
      ---snip--- 
      Adj-SID Flags    : v4/v6 = IPv4 or IPv6 Address-Family
                         B = Backup Flag
                         V = Adj-SID carries a valueL = value/index has local significance
                         S = Set of Adjacencies
                         P = Persistently allocated 
      ---snip--- 
      =============================================================================== 
      

      By default, the SR OS implementation sets the value (V-flag), meaning that the adjacency SID carries a value (as opposed to an index). Also, the local L-flag is set by default, meaning that the adjacency SID has only local significance. The v4-flag set to 0 means that the adjacency SID references to an adjacency with outgoing IPv4 encapsulation.

      Another way to display adjacency SID information is using the show router isis adjacency detail command.

      *A:PE-1# show router isis adjacency "int-PE-1-PE-2" detail  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Adjacency (detail) 
      =============================================================================== 
      Hostname    : PE-2 
      SystemID    : 1920.0000.2002                   SNPA        : 04:14:01:01:00:02 
      Interface   : int-PE-1-PE-2                    Up Time     : 0d 00:07:15 
      State       : Up                               Priority    : 0 
      Nbr Sys Typ : L2                               L. Circ Typ : L2 
      Hold Time   : 24                               Max Hold    : 27 
      Adj Level   : L2                               MT Enabled  : No 
      Topology    : Unicast 
      
      IPv6 Neighbor     : :: 
      IPv4 Neighbor     : 192.168.12.2 
      IPv4 Adj SID      : Label 524287 
      Restart Support   : Disabled 
      Restart Status    : Not currently being helped 
      Restart Supressed : Disabled 
      Number of Restarts: 0 
      Last Restart at   : Never 
      
      =============================================================================== 
      
      *A:PE-1# show router isis adjacency "int-PE-1-PE-7" detail  
        
      =============================================================================== 
      Rtr Base ISIS Instance 0 Adjacency (detail) 
      =============================================================================== 
      Hostname    : PE-7 
      SystemID    : 1920.0000.2007                   SNPA        : 04:27:01:01:00:01 
      Interface   : int-PE-1-PE-7                    Up Time     : 0d 00:05:55 
      State       : Up                               Priority    : 0 
      Nbr Sys Typ : L2                               L. Circ Typ : L2 
      Hold Time   : 23                               Max Hold    : 27 
      Adj Level   : L2                               MT Enabled  : No 
      Topology    : Unicast 
      
      IPv6 Neighbor     : :: 
      IPv4 Neighbor     : 192.168.17.2 
      IPv4 Adj SID      : Label 524286 
      Restart Support   : Disabled 
      Restart Status    : Not currently being helped 
      Restart Supressed : Disabled 
      Number of Restarts: 0 
      Last Restart at   : Never 
      
      =============================================================================== 
      

    Finally, when enabling the SR context within the IGP instance, the SR module resolves received prefixes with prefix SID sub-TLVs present. As a result, MPLS data plane resources are consumed. The ILM is programmed with a swap operation and the label-to-next-hop-label-forwarding-entry (LTN) with a push operation, both pointing to the primary and/or LFA next-hop label forwarding entry (NHLFE). Also, an SR tunnel is added in the Tunnel Table Manager (TTM). As a result, an SR shortest path tunnel is set up to each other router that is part of the SR domain. Now, SR shortest path tunnels can be used for all users of TTM.

    Example 1: VPRN service with LFA and RLFA enabled

    In the network topology of Example topology, no LDP and RSVP-TE signaling protocols are enabled. Each router of the SR domain has a full mesh of SR shortest path tunnels to the other routers, and no LDP and RSVP-TE LSPs are present. For example, on PE-1, the TTM looks as follows:

    *A:PE-1# show router tunnel-table  
      
    =============================================================================== 
    IPv4 Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination           Owner     Encap TunnelId  Pref   Nexthop        Metric 
       Color                                                               
    ------------------------------------------------------------------------------- 
    192.0.2.2/32          isis (0)  MPLS  524291    11     192.168.12.2   10 
    192.0.2.3/32          isis (0)  MPLS  524292    11     192.168.12.2   20 
    192.0.2.4/32          isis (0)  MPLS  524293    11     192.168.12.2   30 
    192.0.2.5/32          isis (0)  MPLS  524294    11     192.168.17.2   30 
    192.0.2.6/32          isis (0)  MPLS  524295    11     192.168.17.2   20 
    192.0.2.7/32          isis (0)  MPLS  524296    11     192.168.17.2   10 
    192.168.12.2/32       isis (0)  MPLS  524289    11     192.168.12.2   0 
    192.168.17.2/32       isis (0)  MPLS  524290    11     192.168.17.2   0 
    ------------------------------------------------------------------------------- 
    Flags: B = BGP or MPLS backup hop available 
           L = Loop-Free Alternate (LFA) hop available 
           E = Inactive best-external BGP route 
           k = RIB-API or Forwarding Policy backup hop
    =============================================================================== 
    

    The objective is to configure a VPRN between PE-1 and PE-7, using SR shortest path tunnels as transport tunnel. The configuration is as follows:

    # on PE-1:
    configure
        service 
            vprn 100 name "VPRN 100" customer 1 create 
                autonomous-system 64496 
                interface "loopback" create 
                    address 192.0.1.1/32 
                    loopback 
                exit 
                bgp-ipvpn 
                    mpls 
                        auto-bind-tunnel 
                            resolution any 
                        exit 
                        route-distinguisher 64496:10001 
                        vrf-target target:64496:100 
                        no shutdown 
                    exit 
                exit 
                no shutdown 
    
    # on PE-7:
    configure 
        service 
            vprn 100 name "VPRN 100" customer 1 create 
                autonomous-system 64496 
                interface "loopback" create 
                    address 192.0.1.7/32 
                    loopback 
                exit 
                bgp-ipvpn 
                    mpls 
                        auto-bind-tunnel 
                            resolution any 
                        exit 
                        route-distinguisher 64496:10007 
                        vrf-target target:64496:100 
                        no shutdown 
                    exit 
                exit
                no shutdown 
    

    Within the VPRN service configuration, a loopback interface is created on both PEs to verify the transport mechanism. Tunnel information displaying the MPLS label value is retrieved using the show router fp-tunnel-table <slot number> command, as follows:

    *A:PE-1# show router fp-tunnel-table 1 192.0.2.7/32  
      
    =============================================================================== 
    IPv4 Tunnel Table Display 
    
    Legend:  
    label stack is ordered from bottom-most to top-most 
    B - FRR Backup 
    =============================================================================== 
    Destination                                  Protocol            Tunnel-ID 
      Lbl                                                              
        NextHop                                                      Intf/Tunnel 
      Lbl     (backup)                                                
        NextHop   (backup)                                            
    ------------------------------------------------------------------------------- 
    192.0.2.7/32                                 SR-ISIS-0            524296 
      20007 
        192.168.17.2                                                  1/1/2 
    ------------------------------------------------------------------------------- 
    Total Entries : 1 
    ------------------------------------------------------------------------------- 
    =============================================================================== 
    

    This means that, when traffic arrives on PE-1, the MPLS label 20007 is pushed to reach destination PE-7. Because, in this example, the prefix SID index range global mode is used, the value 20007 comes from the start label on PE-7 (first label of the SRGB, which is 20000, plus the configured index value of node SID PE-7 (7)), so 20007.

    Enabling prefix LFA within the isis 0 context on PE-1 will enable LFA/FRR protection. Next-hop LFA protection is present for node PE-4, node PE-5, and the link between PE-4 and PE-5, as follows:

    # on PE-1:
    configure
        router Base
            isis 0
                loopfree-alternates
    
    *A:PE-1# show router isis lfa-coverage  
      
    =============================================================================== 
    Rtr Base ISIS Instance 0 LFA Coverage 
    =============================================================================== 
    Topology         Level   Node           IPv4                IPv6 
    ------------------------------------------------------------------------------- 
    IPV4 Unicast     L1      0/0(0%)        3/11(27%)           0/0(0%) 
    IPV6 Unicast     L1      0/0(0%)        0/0(0%)             0/0(0%) 
    IPV4 Multicast   L1      0/0(0%)        0/0(0%)             0/0(0%) 
    IPV6 Multicast   L1      0/0(0%)        0/0(0%)             0/0(0%) 
    IPV4 Unicast     L2      2/6(33%)       3/11(27%)           0/0(0%) 
    IPV6 Unicast     L2      0/0(0%)        0/0(0%)             0/0(0%) 
    IPV4 Multicast   L2      0/0(0%)        0/0(0%)             0/0(0%) 
    IPV6 Multicast   L2      0/0(0%)        0/0(0%)             0/0(0%) 
    =============================================================================== 
    
    *A:PE-1# show router route-table alternative  
      
    =============================================================================== 
    Route Table (Router: Base) 
    =============================================================================== 
    Dest Prefix[Flags]                            Type    Proto     Age        Pref 
          Next Hop[Interface Name]                                    Metric    
          Alt-NextHop                                                Alt-       
                                                                    Metric      
    ------------------------------------------------------------------------------- 
    192.0.2.1/32                                  Local   Local     00h15m15s  0 
           system                                                       0 
    192.0.2.2/32                                  Remote  ISIS      00h09m15s  18 
           192.168.12.2                                                 10 
    192.0.2.3/32                                  Remote  ISIS      00h09m13s  18 
           192.168.12.2                                                 20 
    192.0.2.4/32                                  Remote  ISIS      00h09m11s  18 
           192.168.12.2                                                 30 
           192.168.17.2 (LFA)                                           40 
    192.0.2.5/32                                  Remote  ISIS      00h09m07s  18 
           192.168.17.2                                                 30 
           192.168.12.2 (LFA)                                           40 
    192.0.2.6/32                                  Remote  ISIS      00h09m07s  18 
           192.168.17.2                                                 20 
    192.0.2.7/32                                  Remote  ISIS      00h09m07s  18 
           192.168.17.2                                                 10 
    192.168.12.0/30                               Local   Local     00h15m15s  0 
           int-PE-1-PE-2                                                0 
    192.168.17.0/30                               Local   Local     00h15m15s  0 
           int-PE-1-PE-7                                                0 
    192.168.23.0/30                               Remote  ISIS      00h14m59s  18 
           192.168.12.2                                                 20 
    192.168.34.0/30                               Remote  ISIS      00h14m43s  18 
           192.168.12.2                                                 30 
    192.168.45.0/30                               Remote  ISIS      00h14m26s  18 
           192.168.12.2                                                 40 
           192.168.17.2 (LFA)                                           50 
    192.168.56.0/30                               Remote  ISIS      00h13m39s  18 
           192.168.17.2                                                 30 
    192.168.67.0/30                               Remote  ISIS      00h13m39s  18 
           192.168.17.2                                                 20 
    ------------------------------------------------------------------------------- 
    No. of Routes: 14 
    Flags: n = Number of times nexthop is repeated 
           Backup = BGP backup route 
           LFA = Loop-Free Alternate nexthop       S = Sticky ECMP requested
    ============================================================================== 
    
    *A:PE-1# show router fp-tunnel-table 1  
      
    =============================================================================== 
    IPv4 Tunnel Table Display 
    
    Legend:  
    label stack is ordered from bottom-most to top-most 
    B - FRR Backup 
    =============================================================================== 
    Destination                                  Protocol            Tunnel-ID 
      Lbl                                                              
        NextHop                                                      Intf/Tunnel 
      Lbl     (backup)                                                
        NextHop   (backup)                                            
    ------------------------------------------------------------------------------- 
    192.0.2.2/32                                 SR-ISIS-0            524291 
      20002 
        192.168.12.2                                                  1/1/1 
    192.0.2.3/32                                 SR-ISIS-0            524292 
      20003 
        192.168.12.2                                                  1/1/1 
    192.0.2.4/32                                 SR-ISIS-0            524293 
      20004 
        192.168.12.2                                                  1/1/1 
      20004 
        192.168.17.2(B)                                               1/1/2 
    192.0.2.5/32                                 SR-ISIS-0            524294 
      20005 
        192.168.17.2                                                  1/1/2 
      20005 
        192.168.12.2(B)                                               1/1/1 
    192.0.2.6/32                                 SR-ISIS-0            524295 
      20006 
        192.168.17.2                                                  1/1/2 
    192.0.2.7/32                                 SR-ISIS-0            524296 
      20007 
        192.168.17.2                                                  1/1/2 
    192.168.12.2/32                              SR                   524289 
      3 
        192.168.12.2                                                  1/1/1 
    192.168.17.2/32                              SR                   524290 
      3 
        192.168.17.2                                                  1/1/2 
    ------------------------------------------------------------------------------- 
    Total Entries : 8 
    ------------------------------------------------------------------------------- 
    =============================================================================== 
    
    *A:PE-1# show router tunnel-table detail  
      
    =============================================================================== 
    Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination      : 192.0.2.2/32 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : entropy-label-capable 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524291               Preference       : 11 
    Tunnel Label     : 20002                Tunnel Metric    : 10 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.3/32 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : entropy-label-capable 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524292               Preference       : 11 
    Tunnel Label     : 20003                Tunnel Metric    : 20 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.4/32 [L] 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h01m25s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524293               Preference       : 11 
    Tunnel Label     : 20004                Tunnel Metric    : 30 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.5/32 [L] 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h01m25s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524294               Preference       : 11 
    Tunnel Label     : 20005                Tunnel Metric    : 30 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.6/32 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : entropy-label-capable 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524295               Preference       : 11 
    Tunnel Label     : 20006                Tunnel Metric    : 20 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.7/32 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : entropy-label-capable 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524296               Preference       : 11 
    Tunnel Label     : 20007                Tunnel Metric    : 10 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.168.12.2/32 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : is-adjacency-tunnel 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524289               Preference       : 11 
    Tunnel Label     : 3                    Tunnel Metric    : 0 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Destination      : 192.168.17.2/32 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : is-adjacency-tunnel 
    Age              : 00h01m26s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524290               Preference       : 11 
    Tunnel Label     : 3                    Tunnel Metric    : 0 
    Tunnel MTU       : 1560                 Max Label Stack  : 1 
    ------------------------------------------------------------------------------- 
    Number of tunnel-table entries          : 8 
    Number of tunnel-table entries with LFA : 2 
    ===============================================================================
    

    When a failure occurs on the primary SR path (only applicable for prefix PE-4/PE-5 and the link between PE-4 and PE-5), the traffic takes the LFA backup SR path to the destination using the same MPLS label value.

    To extend the LFA/FRR coverage, for example, to find an LFA protection for node PE-7, which is one of the VPRN service endpoints, RLFA can be enabled. RLFA creates a virtual LFA by using a repair tunnel to carry packets to a point in the network from where they will not be looped back to the source, but forwarded (SPF-based) toward the destination prefix.

    The RLFA implementation uses the PQ algorithm. The node where RLFA is configured (PE-1 in this example) computes an extended P-space and a Q-space. The intersection of both spaces is called the PQ-node. This PQ node is the destination node of the repair tunnel using an SR shortest path tunnel. To compute both spaces, SPF is used.

    In this example, IS-IS is used as the IGP, using a default metric value of 10 for all links. With the assumption that the link between PE-1 and PE-7 is broken, the calculation of both the extended P-space and the Q-space at PE-1 is as follows:

    • extended P-space — An SPF computed from node PE-1 and rooted at PE-2. It is used to calculate the set of routers that are reachable without any path transiting the protected link between PE-1 and PE-7. The following nodes belong to the extended P-space: PE-2, PE-3, PE-4, and PE-5.

    • Q-space — A reverse SPF computed from PE-1 and rooted from PE-7 (acting as destination proxy). It is used to calculate the set of routers that can reach PE-7 without transiting the protected link between PE-1 and PE-7. The nodes PE-4, PE-5, and PE-6 belong to the Q-space.

    Possible PQ-nodes are PE-4 or PE-5, because they are in the intersection of both spaces.

    RLFA is configured as follows:

    # on PE-1:
    configure 
        router Base
            isis 0
                 loopfree-alternates
                     remote-lfa
    

    The nodes PE-2, PE-3, PE-6, and PE-7 now have RLFA protection, whereas PE-4 and PE-5 have LFA protection.

    *A:PE-1# show router fp-tunnel-table 1  
    
    =============================================================================== 
    IPv4 Tunnel Table Display 
    
    Legend:  
    label stack is ordered from bottom-most to top-most 
    B - FRR Backup 
    =============================================================================== 
    Destination                                  Protocol            Tunnel-ID 
      Lbl                                                              
        NextHop                                                      Intf/Tunnel 
      Lbl     (backup)                                                
        NextHop   (backup)                                            
    ------------------------------------------------------------------------------- 
    192.0.2.2/32                                 SR-ISIS-0            524291 
      20002 
        192.168.12.2                                                  1/1/1 
      20002/20005 
        192.168.17.2(B)                                               1/1/2 
    192.0.2.3/32                                 SR-ISIS-0            524292 
      20003 
        192.168.12.2                                                  1/1/1 
      20003/20005 
        192.168.17.2(B)                                               1/1/2 
    192.0.2.4/32                                 SR-ISIS-0            524293 
      20004 
        192.168.12.2                                                  1/1/1 
      20004
        192.168.17.2(B)                                               1/1/2 
    192.0.2.5/32                                 SR-ISIS-0            524294 
      20005 
        192.168.17.2                                                  1/1/2 
      20005
        192.168.12.2(B)                                               1/1/1 
    192.0.2.6/32                                 SR-ISIS-0            524295 
      20006 
        192.168.17.2                                                  1/1/2 
      20006/20004 
        192.168.12.2(B)                                               1/1/1 
    192.0.2.7/32                                 SR-ISIS-0            524296 
      20007 
        192.168.17.2                                                  1/1/2 
      20007/20004
        192.168.12.2(B)                                               1/1/1 
    192.168.12.2/32                              SR                   524289 
      3 
        192.168.12.2                                                  1/1/1 
      20002/20005
        192.168.17.2(B)                                               1/1/2 
    192.168.17.2/32                              SR                   524290 
      3 
        192.168.17.2                                                  1/1/2 
      20007/20004 
        192.168.12.2(B)                                               1/1/1 
    ------------------------------------------------------------------------------- 
    Total Entries : 8 
    -------------------------------------------------------------------------------
    ===============================================================================
    

    The main difference between normal prefix LFA and RLFA is that for RLFA a two-MPLS label stack is pushed by the head-end node (PE-1). The top label is the SR-label to reach the PQ node (for example, 20004 for PE-4) and the bottom label is the SR-label to reach the destination node (for example, 20007 for PE-7). The notation inside the show command is bottom-label/top-label.

    RLFA traffic path during protection illustrates the RLFA traffic path protecting the link between PE-1 and PE-7:

    Figure 2. RLFA traffic path during protection

    Inside the TTM, a tunnel-flag, has-lfa, is set for all destination nodes that have LFA protection available. The last two tunnels are adjacency tunnels and have in addition the flag is-adjacency-tunnel.

    *A:PE-1# show router tunnel-table detail  
      
    =============================================================================== 
    Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination      : 192.0.2.2/32 [L] 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524291               Preference       : 11 
    Tunnel Label     : 20002                Tunnel Metric    : 10 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.3/32 [L] 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524292               Preference       : 11 
    Tunnel Label     : 20003                Tunnel Metric    : 20 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.4/32 [L] 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h00m40s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524294               Preference       : 11 
    Tunnel Label     : 20005                Tunnel Metric    : 30 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.6/32 [L] 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524295               Preference       : 11 
    Tunnel Label     : 20006                Tunnel Metric    : 20 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.0.2.7/32 [L] 
    NextHop          : 192.168.17.2
    Tunnel Flags     : has-lfa entropy-label-capable 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524296               Preference       : 11 
    Tunnel Label     : 20007                Tunnel Metric    : 10 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.168.12.2/32 [L] 
    NextHop          : 192.168.12.2 
    Tunnel Flags     : has-lfa is-adjacency-tunnel 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524289               Preference       : 11 
    Tunnel Label     : 3                    Tunnel Metric    : 0 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Destination      : 192.168.17.2/32 [L] 
    NextHop          : 192.168.17.2 
    Tunnel Flags     : has-lfa is-adjacency-tunnel 
    Age              : 00h00m39s 
    CBF Classes      : (Not Specified) 
    Owner            : isis (0)             Encap            : MPLS 
    Tunnel ID        : 524290               Preference       : 11 
    Tunnel Label     : 3                    Tunnel Metric    : 0 
    Tunnel MTU       : 1556                 Max Label Stack  : 2 
    ------------------------------------------------------------------------------- 
    Number of tunnel-table entries          : 8 
    Number of tunnel-table entries with LFA : 8 
    ===============================================================================
    

    Verification of the loopback address configured within the VPRN service context on PE-7 (using loopback address 192.0.1.7/32) shows that an SR shortest path tunnel is used as the transport mechanism:

    *A:PE-1# show router 100 route-table 192.0.1.7/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.7/32 
      Protocol              : BGP_VPN 
      Age                   : 00h00m40s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.7 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.7 (SR-ISIS tunnel:524296)
          Label             : 524285 
          Metric            : 10 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

    Example 2: TTM preference with VPRN service

    The following example is a variant on the previous example. The difference in this example is that, in addition to SR, LDP and RSVP-TE are also enabled between PE-1 and PE-7. A single RSVP LSP is configured originating at PE-1 and terminating at PE-7.

    The objective of this example is to show the difference in protocol preference within TTM and how to influence the default behavior. This can be useful in case of migration scenarios from a non-SR environment toward a hybrid environment having LDP/RSVP and SR enabled.

    In the following example, LFA/RLFA is no longer configured on the PE-1 node:

    # on PE-1:
    configure
        router Base
            isis 0
                no loopfree-alternates
    
    # on PE-1:
    configure 
        router Base
            mpls 
                interface "int-PE-1-PE-7"
                exit
                path "dyn"
                    no shutdown
                exit
                lsp "LSP-PE-1-PE-7"
                    to 192.0.2.7
                    primary "dyn"
                    exit
                    no shutdown
                exit
                no shutdown
            exit
            rsvp 
                no shutdown
            exit
            ldp 
                interface-parameters
                    interface "int-PE-1-PE-7" dual-stack
                        ipv4
                            no shutdown
                        exit
                        no shutdown
                    exit
                exit
            exit
    
    # on PE-7:
    configure 
        router Base
            mpls
                interface "int-PE-7-PE-1"
                exit
                no shutdown
            exit
            rsvp 
                no shutdown
            exit
            ldp 
                interface-parameters
                    interface "int-PE-7-PE-1" dual-stack
                        ipv4
                            no shutdown
                        exit
                        no shutdown
                    exit
                exit
            exit
    

    By enabling LDP and RSVP between PE-1 and PE-7, the TTM on both nodes changed. With the VPRN service between PE-1 and PE-7 of example 1, only those two specific service endpoints are displayed:

    *A:PE-1# show router tunnel-table 192.0.2.7  
    
    =============================================================================== 
    IPv4 Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination           Owner     Encap TunnelId  Pref   Nexthop        Metric 
       Color                                                               
    ------------------------------------------------------------------------------- 
    192.0.2.7/32          rsvp      MPLS  1         7      192.168.17.2   10 
    192.0.2.7/32          ldp       MPLS  65537     9      192.168.17.2   10 
    192.0.2.7/32          isis (0)  MPLS  524296    11     192.168.17.2   10 
    ------------------------------------------------------------------------------- 
    Flags: B = BGP or MPLS backup hop available 
           L = Loop-Free Alternate (LFA) hop available 
           E = Inactive best-external BGP route 
           k = RIB-API or Forwarding Policy backup hop 
    ===============================================================================
    
    *A:PE-7# show router tunnel-table 192.0.2.1  
    
    =============================================================================== 
    IPv4 Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination           Owner     Encap TunnelId  Pref   Nexthop        Metric 
       Color                                                               
    ------------------------------------------------------------------------------- 
    192.0.2.1/32          ldp       MPLS  65537     9      192.168.17.1   10 
    192.0.2.1/32          isis (0)  MPLS  524293    11     192.168.17.1   10 
    ------------------------------------------------------------------------------- 
    Flags: B = BGP or MPLS backup hop available 
           L = Loop-Free Alternate (LFA) hop available 
           E = Inactive best-external BGP route 
           k = RIB-API or Forwarding Policy backup hop 
    =============================================================================== 
    

    On node PE-1, an RSVP LSP, an LDP LSP, and an SR shortest path tunnel (using IS-IS) are present. Because the VPRN service has auto-bind-tunnel resolution any enabled, the protocol type with the highest TTM preference (meaning the lowest absolute preference value in TTM) is taken; in this case, the RSVP LSP. This can be verified for the configured loopback address within the VPRN service context, as follows:

    *A:PE-1# show router 100 route-table 192.0.1.7/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.7/32 
      Protocol              : BGP_VPN 
      Age                   : 00h01m07s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.7 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.7 (RSVP tunnel:1)
          Label             : 524285 
          Metric            : 10 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

    On node PE-7, only an LDP LSP and an SR shortest path tunnel (using IS-IS) are present. Because the VPRN service has auto-bind-tunnel resolution any enabled, the protocol type with highest TTM preference (meaning the lowest absolute preference value in TTM) is taken; in this case, the LDP LSP. This can be verified for the configured loopback address within the VPRN service context, as follows:

    *A:PE-7# show router 100 route-table 192.0.1.1/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.1/32 
      Protocol              : BGP_VPN 
      Age                   : 00h01m35s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.1 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.1 (LDP tunnel) 
          Label             : 524285 
          Metric            : 10 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

    Some configuration changes are possible to change this default behavior:

    • It is possible to change the auto-bind-tunnel resolution any command into auto-bind-tunnel resolution filter. Because this is a service-specific parameter, the operator has the choice to only configure this on one specific service endpoint. From a migration point of view, a smooth and easy SR migration is possible, not affecting any other deployed services on this node.

    • It is possible to change the SR tunnel-table protocol preference on a node. From a migration point of view, this affects all services initiating on this node.

    Using the current example, PE-1 implements the auto-bind-tunnel change (option 1), while PE-7 implements the TTM preference change (option 2).

    A resolution-filter CLI context within VPRN service 100 on node PE-1 must be created. The example uses a resolution-filter context, which uses a filter to only allow SR shortest path tunnels (IS-IS based).The auto-bind-tunnel resolution any command is changed into resolution filter on PE-1, as follows:

    # on PE-1:
    configure
        service
            vprn "VPRN 100" 
                bgp-ipvpn
                    mpls
                        auto-bind-tunnel
                            resolution-filter
                                sr-isis
                            exit
                            resolution filter
                        exit
    

    As a result, the RSVP LSP is no longer used. Instead, the SR shortest path tunnel is used for the traffic from PE-1 to PE-7:

    *A:PE-1# show router 100 route-table 192.0.1.7/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.7/32 
      Protocol              : BGP_VPN 
      Age                   : 00h00m12s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.7 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.7 (SR-ISIS tunnel:524296)
          Label             : 524285 
          Metric            : 10 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

    The VPRN service on node PE-7 is still using the LDP LSP as transport mechanism to reach node PE-1 at this point. Because the previous CLI change is only done within the VPRN service context 100 on PE-1, only the direction from PE-1 to PE-7 is affected.

    Another way to influence the default TTM preference is shown as follows on the PE-7 node. Using the default behavior, the LDP LSP is used, because of the preference value of 9. If the SR tunnel table preference value is lowered to a value smaller than LDP, for instance 4, the SR shortest path tunnels originating on this node will always have preference compared to LDP LSP. On PE-7, the SR tunnel table preference is configured with a value of 4, as follows:

    # on PE-7:
    configure 
        router Base
            isis 0
                segment-routing
                    tunnel-table-pref 4
    
    *A:PE-7# show router tunnel-table 192.0.2.1 
    
    =============================================================================== 
    IPv4 Tunnel Table (Router: Base) 
    =============================================================================== 
    Destination           Owner     Encap TunnelId  Pref   Nexthop        Metric 
       Color                                                               
    ------------------------------------------------------------------------------- 
    192.0.2.1/32          isis (0)  MPLS  524293    4      192.168.17.1   10 
    192.0.2.1/32          ldp       MPLS  65537     9      192.168.17.1   10 
    ------------------------------------------------------------------------------- 
    Flags: B = BGP or MPLS backup hop available 
           L = Loop-Free Alternate (LFA) hop available 
           E = Inactive best-external BGP route 
           k = RIB-API or Forwarding Policy backup hop 
    =============================================================================== 
    

    As a result, the LDP LSP is no longer used and the SR shortest path tunnel is the preferred transport tunnel:

    *A:PE-7# show router 100 route-table 192.0.1.1/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.1/32 
      Protocol              : BGP_VPN 
      Age                   : 00h00m44s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.1 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.1 (SR-ISIS tunnel:524293)
          Label             : 524285 
          Metric            : 10 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

    At this point, within the VPRN service, the SR shortest path tunnels are used bidirectionally between PE-1 and PE-7.

    If, for example, an operator configures explicit SDP binding within the same VPRN service on both endpoints, the explicit SDPs will always have preference. In this example, manual SDPs are configured on nodes PE-1 and PE-7, both using LDP, as follows:

    # on PE-1:
    configure 
        service
            sdp 17 mpls create
                far-end 192.0.2.7
                ldp
                no shutdown
            exit
            vprn "VPRN 100"
                spoke-sdp 17 create
                exit
            exit
    
    # on PE-7:
    configure 
        service 
            sdp 71 mpls create
                far-end 192.0.2.1
                ldp
                no shutdown
            exit
            vprn "VPRN 100" 
                spoke-sdp 71 create
                exit
            exit
    

    As a result, SR shortest path tunnels are no longer used, but rather LDP-based SDPs are used instead:

    *A:PE-1# show router 100 route-table 192.0.1.7/32 extensive  
    
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.7/32 
      Protocol              : BGP_VPN 
      Age                   : 00h01m11s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.7 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.7 (SDP tunnel:17) 
          Label             : 524285 
          Metric            : 0 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1
    =============================================================================== 
    
    *A:PE-7# show router 100 route-table 192.0.1.1/32 extensive  
      
    =============================================================================== 
    Route Table (Service: 100) 
    =============================================================================== 
    Dest Prefix             : 192.0.1.1/32 
      Protocol              : BGP_VPN 
      Age                   : 00h01m40s 
      Preference            : 170 
      Indirect Next-Hop     : 192.0.2.1 
        Label               : 524285 
        QoS                 : Priority=n/c, FC=n/c 
        Source-Class        : 0 
        Dest-Class          : 0 
        ECMP-Weight         : N/A 
        Resolving Next-Hop  : 192.0.2.1 (SDP tunnel:71)
          Label             : 524285 
          Metric            : 0 
          ECMP-Weight       : N/A 
    ------------------------------------------------------------------------------- 
    No. of Destinations: 1 
    =============================================================================== 
    

Conclusion

Segment Routing is a technique using extensions of the existing link state protocols, and using existing MPLS or IPv6 infrastructure as the data plane. It is a source routing technique similar to RSVP-TE, but without the need to run an extra signaling protocol. SR also avoids other scaling restrictions of associated RSVP-TE, such as midpoint state. SR is simple to control and operate because the intelligence and state are part of the packet, not held by the network. Other benefits are that SR can be introduced in an incremental way using different migration scenarios to assure a smooth transition.