OSPF Manual Adjacency SID

The OSPF manual adjacency SID feature supports configuration of static adjacency SIDs for Segment Routing with OSPFv2.

Feature Information for OSPF Manual Adjacency SID

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Table 1. Feature Information for OSPF Manual Adjacency SID

Feature Name

Releases

Feature Information

OSPF Manual Adjacency SID

Cisco IOS XE Gibraltar 16.11.1a

The OSPF manual adjacency SID feature supports configuration of static adjacency SIDs for Segment Routing with OSPFv2.

The following command was introduced by this feature:

adjacency-sid index value [protected]

Information About OSPF Manual Adjacency SID

Segment routing (SR) networks often use SR Traffic Engineering (SR-TE) to influence the path specific traffic takes over the network. SR-TE tunnels can be provisioned manually on the tunnel headend, or are calculated and provisioned by a central controller.

For traffic engineering, operators of a network need to be able to force traffic over specific nodes and links. To force traffic over a certain node in the SR network, operators can use the Prefix SID that is advertised by the node. An anycast Prefix SID can be used to route traffic to specific node when multiple nodes advertise the same Prefix SID.

To force traffic through a certain link, operators can use the adjacency SID of the link. Without the support for manually-configured adjacency SIDs, adjacency SIDs are dynamically allocated. Dynamically allocated SIDs have the following disadvantages in relation to traffic engineering:

  • The dynamic value is not persistent over reload or process restart.

  • The dynamic value is not known upfront, and so a controller cannot use it unless it has access to the information flooded by IGP (natively or through BGP-LS).

  • Each link is allocated a unique Adjacent SID value. With such an allocation, the same adjacency SID cannot be allocated to multiple links.

The OSPF Manual Adjacency SID feature introduces support for manually-configured adjacency SIDs. With manually-configured static adjacency SIDs,

  • provisioned adjacency SID is persistent over reload and restart.

  • multiple adjacency SIDs can be configured for a single adjacency.

Prerequisites for OSPF Manual Adjacency SID

  • Segment Routing must be configured globally.

  • Segment Routing must be configured for the OSPF instance.

Restrictions for OSPF Manual Adjacency SID

  • Static adjacency SIDs can be configured only for point-to-point links and not for broadcast links.

  • Do not assign the same adjacency SID to multiple links. Group adjacency SIDs are not supported.

  • Do not configure the same static adjacency SID in multiple IGPs or IGP instances. Such a configuration is not supported and a conflict handling mechanism for the scenario is yet to be implemented.

  • Specify static adjacency SIDs as an indices to the Segment Routing Local Block (SRLB). Static adjacency SIDs cannot be specified as absolute values of labels in the SRLB.

Manual Adjacency SIDs

Static adjacency SIDs can be configured for point-to-point links with OSPFv2.

Manual adjacency SIDs must be assigned from the SRLB. The default range of SRLB labels is 15000 to 15999. You can modify the SRLB range using the local-block range-start range-end command.

You can assign static adjacency SIDs as indices to the SRLB. Based on the index assigned, the label for the adjacency SID is calculated as label = SRLB_range_start + index_value.

By default, static adjacency SIDs are not protected, and therefore, you can specify whether a static adjacency SID must be protected or not during configuration.

Manual Adjacency SID Advertisement

Static adjacency SIDs are advertised using the existing Adj-SID Sub-TLV of the Extended Link LSA as defined in OSPF Extensions for Segment Routing.

For static adjacency SIDs, the P-flag (Persistent flag) is set in the Adj-SID Sub-TLV.

If a static adjacency SID is protected, then the B-flag is set in the Adj-SID Sub-TLV.

Static adjacency SIDs are always advertised as labels. When the static adjacency SID is configured as an index, the absolute value of the label is calculated and the label value is advertised.

Manual Adjacency SID Forwarding

When a static adjacency SID is configured for a point-to-point interface, OSPFv2 installs forwarding entries for the manually allocated adjacency SID. The primary path for an adjacency SID is a POP operation over the point-to-point interface for which the adjacency SID is allocated.

If the manually-allocated adjacency SID is eligible for backup and a backup path is available, OSPFv2 programs the backup path as well. The backup path for a manually-allocated adjacency SID is the backup path computed for the neighbor router.

How to Configure OSPF Manual Adjacency SID

Modifying Segment Routing Local Block Range

Device#configure terminal
Device(config)#segment-routing mpls 
Device(config-srmpls)#local-block range-start range-end  

range-start and range-start indicate the modified range bounds for Segment Routing Local Block (SRLB).

OSPF advertises the SRLB in the SR Local Block TLV of the Router Information (R.I.) Opaque LSA.

Only a single range is supported for SRLB. If an SR Local Block TLV has multiple ranges, the receiving router ignores the TLV.

Device#configure terminal
Device(config)#segment-routing mpls 
Device(config-srmpls)#local-block 7000 7999

Configuring OSPF Manual Adjacency SID

Device#configure terminal 
Device(config)#interface <interface>
Device(config-if)#ip ospf adjacency-sid index <sid_value> [protected]

<sid_value> must be an index to the SRLB. Configuration of the adjacency SID as an absolute label value is yet to be supported.

[protected] (Optional) – This keyword is used to protect a manual adjacency SID. By default, manual adjacency SIDs are not protected.

Verifying OSPF Manual Adjacency SID

You can verify SIDs assigned to adjacencies and whether an SID is static or dynamic using the commands show ip ospf segment-routing adjacency-sid and show ip ospf segment-routing adjacency-sid detail . The output of either command also shows additional information such as the neighbor linked through an adjacency, whether an adjacency is protected or not, and the backup next-hop and interface for a protected adjacency.

  • router#show ip ospf segment-routing adjacency-sid
    
                OSPF Router with ID (2.0.0.0) (Process ID 1)
        Flags: S - Static, D - Dynamic,  P - Protected, U - Unprotected, G - Group, L - Adjacency Lost
    
    Adj-Sid  Neighbor ID     Interface          Neighbor Addr   Flags   Backup Nexthop  Backup Interface
    -------- --------------- ------------------ --------------- ------- --------------- ------------------
    16       3.0.0.0         Et0/2.3            3.3.3.3         D U
    17       3.0.0.0         Et0/2.1            2.3.1.3         D U
    24       3.0.0.0         Et0/2.1            2.3.1.3         D P     2.3.2.3         Et0/2.2
    25       1.0.0.0         Et0/0              1.2.0.1         D U
    26       1.0.0.0         Et0/0              1.2.0.1         D P     2.3.1.3         Et0/2.1
    27       3.0.0.0         Et0/2.2            2.3.2.3         D U
    28       3.0.0.0         Et0/2              2.3.0.3         D U
    29       3.0.0.0         Et0/2              2.3.0.3         D P     2.4.0.4         Et0/1
    30       4.0.0.0         Et0/1              2.4.0.4         D U
    34       4.0.0.0         Et0/1              2.4.0.4         D P     2.3.1.3         Et0/2.1
    15010    1.0.0.0         Et0/0              1.2.0.1         S P     2.3.1.3         Et0/2.1
    15210    1.0.0.0         Et0/0              1.2.0.1         S U
    15230    3.0.0.0         Et0/2              2.3.0.3         S P     2.4.0.4         Et0/1
    15240    4.0.0.0         Et0/1              2.4.0.4         S U
    15800    3.0.0.0         Et0/2.1            2.3.1.3         S U
    15801    3.0.0.0         Et0/2.2            2.3.2.3         S U
    15802    3.0.0.0         Et0/2.3            3.3.3.3         S U
    15810    3.0.0.0         Et0/2.1            2.3.1.3         S P     2.3.2.3         Et0/2.2
  • router#show ip ospf segment-routing adjacency-sid detail
    
                OSPF Router with ID (2.0.0.0) (Process ID 1)
    Label 16, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 3.3.3.3 on Et0/2.3, Unprotected
    Label 17, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 2.3.1.3 on Et0/2.1, Unprotected
    Label 24, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 2.3.1.3 on Et0/2.1, Protected, Nbr Prefix 33.33.33.33
          Primary path: via 2.3.1.3 on Et0/2.1, out-label 3
          Repair path: via 2.3.2.3 on Et0/2.2, out-label 3, cost 31, labels 0
    Label 25, Paths 1, Dynamic
       Nbr id 1.0.0.0, via 1.2.0.1 on Et0/0, Unprotected
    Label 26, Paths 1, Dynamic
       Nbr id 1.0.0.0, via 1.2.0.1 on Et0/0, Protected, Nbr Prefix 1.1.1.1
          Primary path: via 1.2.0.1 on Et0/0, out-label 3
          Repair path: via 2.3.1.3 on Et0/2.1, out-label 16001, cost 31, labels 0
    Label 27, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 2.3.2.3 on Et0/2.2, Unprotected
    Label 28, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 2.3.0.3 on Et0/2, Unprotected
    Label 29, Paths 1, Dynamic
       Nbr id 3.0.0.0, via 2.3.0.3 on Et0/2, Protected, Nbr Prefix 3.3.3.3
          Primary path: via 2.3.0.3 on Et0/2, out-label 3
          Repair path: via 2.4.0.4 on Et0/1, out-label 16003, cost 21, labels 0
    Label 30, Paths 1, Dynamic
       Nbr id 4.0.0.0, via 2.4.0.4 on Et0/1, Unprotected
    Label 34, Paths 1, Dynamic
       Nbr id 4.0.0.0, via 2.4.0.4 on Et0/1, Protected, Nbr Prefix 4.4.4.4
          Primary path: via 2.4.0.4 on Et0/1, out-label 3
          Repair path: via 2.3.1.3 on Et0/2.1, out-label 16004, cost 31, labels 0
    Label 15010, Paths 1, Static
       Nbr id 1.0.0.0, via 1.2.0.1 on Et0/0, Protected, Nbr Prefix 1.1.1.1
          Primary path: via 1.2.0.1 on Et0/0, out-label 3
          Repair path: via 2.3.1.3 on Et0/2.1, out-label 16001, cost 31, labels 0
    Label 15210, Paths 1, Static
       Nbr id 1.0.0.0, via 1.2.0.1 on Et0/0, Unprotected
    Label 15230, Paths 1, Static
       Nbr id 3.0.0.0, via 2.3.0.3 on Et0/2, Protected, Nbr Prefix 3.3.3.3
          Primary path: via 2.3.0.3 on Et0/2, out-label 3
          Repair path: via 2.4.0.4 on Et0/1, out-label 16003, cost 21, labels 0
    Label 15240, Paths 1, Static
       Nbr id 4.0.0.0, via 2.4.0.4 on Et0/1, Unprotected
    Label 15800, Paths 1, Static
       Nbr id 3.0.0.0, via 2.3.1.3 on Et0/2.1, Unprotected
    Label 15801, Paths 1, Static
       Nbr id 3.0.0.0, via 2.3.2.3 on Et0/2.2, Unprotected
    Label 15802, Paths 1, Static
       Nbr id 3.0.0.0, via 3.3.3.3 on Et0/2.3, Unprotected
    Label 15810, Paths 1, Static
       Nbr id 3.0.0.0, via 2.3.1.3 on Et0/2.1, Protected, Nbr Prefix 33.33.33.33
          Primary path: via 2.3.1.3 on Et0/2.1, out-label 3
          Repair path: via 2.3.2.3 on Et0/2.2, out-label 3, cost 31, labels 0