Configuring SRv6 SIDs

The headend can orchestrate network paths only if SIDs are allocated to adjacencies and nodes on the network.

Context

An SRv6 TE Policy can contain multiple candidate paths defined using segment lists. SIDs, such as End and End.X SIDs, are mandatory for SRv6 TE Policies. The SIDs can be configured manually, or they can be generated dynamically using an IGP.
  • In scenarios where SRv6 TE Policies are configured manually, if dynamic SIDs are used for the SRv6 TE Policies, the SIDs may change after an IGP restart. In this case, you need to manually adjust the SRv6 TE Policies so that they remain up. For this reason, dynamic SIDs are not suitable for large-scale use. You are therefore advised to configure SIDs manually and not to use dynamic SIDs.
  • In scenarios where SRv6 TE Policies are delivered dynamically by a controller, you are also advised to configure SIDs manually. Although the controller can detect SID changes through BGP-LS, SIDs that are generated dynamically using an IGP change randomly, complicating routine maintenance and fault locating.

Procedure

  • Configure SRv6 SIDs in non-compression mode.

    SRv6 paths are established based on SIDs. These SIDs can be configured manually, or they can be generated dynamically using IS-IS. Use either of the following configuration methods:

    • Configure SIDs manually.
      1. Run locator locator-name [ ipv6-prefix ipv6-address prefix-length [ static static-length | args args-length | flex-algo flexAlgoId ] * ]
        An SRv6 locator is configured.

        ipv6-prefix ipv6-address prefix-length specifies the locator prefix and prefix length.

        static static-length specifies the static segment length, which determines the number of static SIDs that can be configured in the locator.

        args args-length specifies the argument segment length. Arguments can be used to define flow, service, and other information for packets.

        flex-algo flexAlgoId specifies the Flex-Algo associated with the locator. An IGP advertises the locator together with the associated Flex-Algo through the SRv6 Locator TLV. Other nodes calculate locator routes based on constraints defined by the Flex-Algo.

      2. Run opcode func-opcode end { no-flavor | psp | psp-usp-usd }
        An opcode for static End SIDs is configured.

        If the no-flavor parameter is specified, SRv6 SIDs carry only the ultimate segment POP of the SRH (USP) flavor.

        If the psp parameter is specified, SRv6 SIDs carry only the penultimate segment POP of the SRH (PSP) flavor.

        If the psp-usp-usd parameter is specified, SRv6 SIDs carry all the PSP, USP, and ultimate segment decapsulation (USD) flavors. The USD flavor is often used in SRv6 TE Policy scenarios without service SIDs (for example, a scenario where IPv4 public network services without End.DT4 SIDs are redirected to an SRv6 TE Policy). When the packets of such services are forwarded to the device identified by the last SID and the SID is an SRv6 SID carrying the USD flavor, the device can properly decapsulate the packets.

      3. Run opcode func-opcode end-x interface interface-name nexthop nexthop-address { no-flavor | psp | psp-usp-usd }
        An opcode for static End.X SIDs is configured.

        The functions of the no-flavor, psp, and psp-usp-usd parameters are the same as those in the opcode end command described in the previous step.

        interface interface-name can be used to configure a GRE tunnel interface.

      4. Run quit

        Exit the Segment Routing IPv6 locator view.

      5. (Optional) Run timer end-x update-delay delay-time

        A delay in delivering a static End.X SID to an FES table is configured.

        The timer end-x update-delay command is mainly used in scenarios where the outbound interface associated with a static End.X SID changes from down to up and IS-IS routes reconverge.

      6. Run quit

        Exit the SRv6 view.

      7. Run isis [ process-id ]

        The IS-IS view is displayed.

      8. Run ipv6 enable topology ipv6

        IPv6 is enabled for the IS-IS process.

      9. Run cost-style { compatible [ relax-spf-limit ] | wide | wide-compatible }

        IS-IS wide metric is configured.

      10. Run segment-routing ipv6 locator locator-name [ auto-sid-disable ]

        IS-IS SRv6 is enabled.

      11. Run commit

        The configuration is committed.

    • Configure IS-IS to dynamically generate SIDs.
      1. Run locator locator-name [ ipv6-prefix ipv6-address prefix-length [ static static-length | args args-length | flex-algo flexAlgoId ] * ]
        An SRv6 locator is configured.

        ipv6-prefix ipv6-address prefix-length specifies the locator prefix and prefix length.

        static static-length specifies the static segment length, which determines the number of static SIDs that can be configured in the locator.

        args args-length specifies the argument segment length. Arguments can be used to define flow, service, and other information for packets.

        flex-algo flexAlgoId specifies the Flex-Algo associated with the locator. An IGP advertises the locator together with the associated Flex-Algo through the SRv6 Locator TLV. Other nodes calculate locator routes based on constraints defined by the Flex-Algo.

      2. Run quit

        Exit the Segment Routing IPv6 locator view.

      3. Run quit

        Exit the SRv6 view.

      4. Run isis [ process-id ]

        The IS-IS view is displayed.

      5. Run ipv6 enable topology ipv6

        IPv6 is enabled for the IS-IS process.

      6. Run cost-style { compatible [ relax-spf-limit ] | wide | wide-compatible }

        IS-IS wide metric is configured.

      7. Run segment-routing ipv6 locator locator-name

        IS-IS SRv6 is enabled.

      8. Run commit

        The configuration is committed.

  • Configure SRv6 SIDs in compression mode.

    SRv6 paths are established based on SIDs. These SIDs can be configured manually, or they can be generated dynamically using IS-IS. Use either of the following configuration methods:

    • Configure SIDs manually.
      1. Run locator locator-name [ ipv6-prefix ipv6-address prefix-length compress block block-length [ compress-static compress-length | static static-length | args args-length | flex-algo flexAlgoId ] * ]
        An SRv6 locator is configured.

        ipv6-prefix ipv6-address prefix-length specifies the locator prefix and prefix length.

        static static-length specifies the static segment length, which determines the number of static SIDs that can be configured in the locator.

        args args-length specifies the argument segment length. Arguments can be used to define flow, service, and other information for packets.

        flex-algo flexAlgoId specifies the Flex-Algo associated with the locator. An IGP advertises the locator together with the associated Flex-Algo through the SRv6 Locator TLV. Other nodes calculate locator routes based on constraints defined by the Flex-Algo.

        compress block block-length specifies a block length. The NodeID length is obtained by subtracting block-length from prefix-length.

        To implement SRv6 SRH compression, an SRv6 SID needs to be divided using the Locator:Compression Function:Non-compression Function:Args format. For this format:

        The Locator field is divided into the Block and NodeID parts. The Block part indicates the address space of an SRv6 domain, in which different nodes typically have the same block. The NodeID part uniquely identifies a node in an SRv6 domain.

        The Function field is divided into the Compression Function and Non-compression Function parts. The NodeID and Compression Function parts form a 32-bit generalized SID (G-SID). The Compression Function part is divided into the Compression Dynamic segment and Compression Static segment. When configuring SRv6 SRH compression, you can use the compress-static compress-length parameter to specify the length of the Compression Static segment to determine the range of compression static opcodes that can be configured in the corresponding locator. During SRv6 SRH compression, an IGP dynamically allocates opcodes outside the range of the Compression Function part's Compression Static segment to ensure that no SRv6 SID conflict occurs. The Non-compression Function part also consists of a dynamic opcode segment and a static opcode segment, with the ranges of the segments changed.

        The relationship between the preceding fields is expressed as follows:

        |-Block-|-NodeID-|-Compression Dynamic-|-Compression Static-|-Dynamic-|-Static-|-Args-|

      2. Run opcode compress func-opcode end { no-flavor | psp | psp-usp-usd | psp-usp-usd-coc }
        An opcode for static End SIDs is configured.

        The command carries the compress parameter, indicating that an opcode with the compression function is manually configured. The NodeID and opcode form a 32-bit G-SID.

        If the no-flavor parameter is specified, SRv6 SIDs carry only the USP flavor.

        If the psp parameter is specified, SRv6 SIDs carry only the PSP flavor.

        If the psp-usp-usd parameter is specified, SRv6 SIDs carry all the PSP, USP, and USD flavors. The USD flavor is often used in SRv6 TE Policy scenarios without service SIDs (for example, a scenario where IPv4 public network services without End.DT4 SIDs are redirected to an SRv6 TE Policy). When the packets of such services are forwarded to the device identified by the last SID and the SID is an SRv6 SID carrying the USD flavor, the device can properly decapsulate the packets.

        If the psp-usp-usd-coc parameter is specified, SRv6 SIDs carry all the PSP, USP, USD, and continuation of compression (COC) flavors. COC is a new flavor related to compressed SIDs (C-SIDs). It is installed in the local SID table to identify whether the current C-SID is the last C-SID of the current block.

      3. Run opcode compress func-opcode end-x interface interface-name nexthop nexthop-address { no-flavor | psp | psp-usp-usd | psp-usp-usd-coc }
        An opcode for static End.X SIDs is configured.

        The functions of the no-flavor, psp, psp-usp-usd, and psp-usp-usd-coc parameters are the same as those in the opcode compress end command described in the previous step.

        interface interface-name can be used to configure a GRE tunnel interface.

      4. Run quit

        Exit the Segment Routing IPv6 locator view.

      5. (Optional) Run timer end-x update-delay delay-time

        A delay in delivering a static End.X SID to an FES table is configured.

        The timer end-x update-delay command is mainly used in scenarios where the outbound interface associated with a static End.X SID changes from down to up and IS-IS routes reconverge.

      6. Run quit

        Exit the SRv6 view.

      7. Run isis [ process-id ]

        The IS-IS view is displayed.

      8. Run ipv6 enable topology ipv6

        IPv6 is enabled for the IS-IS process.

      9. Run cost-style { compatible [ relax-spf-limit ] | wide | wide-compatible }

        IS-IS wide metric is configured.

      10. Run segment-routing ipv6 locator locator-name [ auto-sid-disable ]

        IS-IS SRv6 is enabled.

      11. Run commit

        The configuration is committed.

    • Configure IS-IS to dynamically generate SIDs.
      1. Run locator locator-name [ ipv6-prefix ipv6-address prefix-length compress block block-length [ compress-static compress-length | static static-length | args args-length | flex-algo flexAlgoId ] * ]
        An SRv6 locator is configured.

        ipv6-prefix ipv6-address prefix-length specifies the locator prefix and prefix length.

        static static-length specifies the static segment length, which determines the number of static SIDs that can be configured in the locator.

        args args-length specifies the argument segment length. Arguments can be used to define flow, service, and other information for packets.

        flex-algo flexAlgoId specifies the Flex-Algo associated with the locator. An IGP advertises the locator together with the associated Flex-Algo through the SRv6 Locator TLV. Other nodes calculate locator routes based on constraints defined by the Flex-Algo.

        compress block block-length specifies a block length. The NodeID length is obtained by subtracting block-length from prefix-length.

        To implement SRv6 SRH compression, an SRv6 SID needs to be divided using the Locator:Compression Function:Non-compression Function:Args format. For this format:

        The Locator field is divided into the Block and NodeID parts. The Block part indicates the address space of an SRv6 domain, in which different nodes typically have the same block. The NodeID part uniquely identifies a node in an SRv6 domain.

        The Function field is divided into the Compression Function and Non-compression Function parts. The NodeID and Compression Function parts form a 32-bit generalized SID (G-SID). The Compression Function part is divided into the Compression Dynamic segment and Compression Static segment. When configuring SRv6 SRH compression, you can use the compress-static compress-length parameter to specify the length of the Compression Static segment to determine the range of compression static opcodes that can be configured in the corresponding locator. During SRv6 SRH compression, an IGP dynamically allocates opcodes outside the range of the Compression Function part's Compression Static segment to ensure that no SRv6 SID conflict occurs. The Non-compression Function part also consists of a dynamic opcode segment and a static opcode segment, with the ranges of the segments changed.

        The relationship between the preceding fields is expressed as follows:

        |-Block-|-NodeID-|-Compression Dynamic-|-Compression Static-|-Dynamic-|-Static-|-Args-|

      2. Run quit

        Exit the Segment Routing IPv6 locator view.

      3. Run quit

        Exit the SRv6 view.

      4. Run isis [ process-id ]

        The IS-IS view is displayed.

      5. Run ipv6 enable topology ipv6

        IPv6 is enabled for the IS-IS process.

      6. Run cost-style { compatible [ relax-spf-limit ] | wide | wide-compatible }

        IS-IS wide metric is configured.

      7. Run segment-routing ipv6 locator locator-name

        IS-IS SRv6 is enabled.

      8. Run commit

        The configuration is committed.

Copyright © Huawei Technologies Co., Ltd.
Copyright © Huawei Technologies Co., Ltd.
< Previous topic Next topic >