<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC8402 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8754 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
<!ENTITY RFC8986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY RFC9256 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml">
<!ENTITY RFC9259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9259.xml">
<!ENTITY RFC9350 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7942 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC9252 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9252.xml">
<!ENTITY RFC9352 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9352.xml">
<!ENTITY I-D.ietf-6man-sids SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6man-sids.xml">
<!ENTITY I-D.ietf-lsr-ospfv3-srv6-extensions SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsr-ospfv3-srv6-extensions.xml">
<!ENTITY I-D.ietf-idr-bgpls-srv6-ext SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgpls-srv6-ext.xml">
<!ENTITY I-D.ietf-idr-bgp-ls-sr-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-ls-sr-policy.xml">
<!ENTITY I-D.ietf-idr-segment-routing-te-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-segment-routing-te-policy.xml">
<!ENTITY I-D.ietf-pce-segment-routing-ipv6 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-segment-routing-ipv6.xml">
<!ENTITY I-D.clad-spring-srv6-srh-compression-illus SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.clad-spring-srv6-srh-compression-illus.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-spring-srv6-srh-compression-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Compressed SRv6 Segment List Encoding</title>

    <author initials="W." surname="Cheng" fullname="Weiqiang Cheng" role="editor">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>chengweiqiang@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Filsfils" fullname="Clarence Filsfils">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>cf@cisco.com</email>
      </address>
    </author>
    <author initials="Z." surname="Li" fullname="Zhenbin Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>lizhenbin@huawei.com</email>
      </address>
    </author>
    <author initials="B." surname="Decraene" fullname="Bruno Decraene">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>
    <author initials="F." surname="Clad" fullname="Francois Clad" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>fclad.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2023" month="October" day="23"/>

    <area>General</area>
    <workgroup>SPRING</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 232?>

<t>This document specifies new flavors for the Segment Routing (SR) segment endpoint behaviors defined in RFC 8986, which enable the compression of an SRv6 segment list. Such compression significantly reduces the size of the SRv6 encapsulation needed to steer packets over long segment lists.</t>



    </abstract>



  </front>

  <middle>


<?line 236?>

<section anchor="introduction"><name>Introduction</name>

<t>The Segment Routing (SR) architecture and SR for IPv6 (SRv6) are defined in <xref target="RFC8402"/>.</t>

<t>SRv6 Network Programming <xref target="RFC8986"/> defines a framework to build a network program with topological and service segments (also referred to by their Segment Identifier (SID)) carried in a Segment Routing header (SRH) <xref target="RFC8754"/>.</t>

<t>The SPRING working group has observed that some use cases, such as
strict path TE, may require long segment lists and that steering packets over such long segment lists using the SRv6 dataplane requires a large SRH. This document specifies new flavors to the SR segment endpoint behaviors defined in <xref target="RFC8986"/> that enable a compressed encoding of the SRv6 segment list.</t>

<t>The flavors defined in this document leverage the SRv6 data plane defined in <xref target="RFC8754"/> and <xref target="RFC8986"/>, and are compatible with the SRv6 control plane extensions for IS-IS <xref target="RFC9352"/>, OSPF <xref target="I-D.ietf-lsr-ospfv3-srv6-extensions"/>, and BGP <xref target="RFC9252"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>This document leverages the terms defined in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>. The reader is assumed to be familiar with this terminology.</t>

<t>This document introduces the following new terms:</t>

<t><list style="symbols">
  <t>Locator-Block: The most significant bits of a SID locator that represent the SRv6 SID block. The Locator-Block is referred to as &quot;B&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Locator-Node: The least significant bits of a SID locator that identify the SR segment endpoint node instantiating the SID. The Locator-Node is referred to as &quot;N&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Compressed-SID (C-SID): A compressed encoding of a SID. The C-SID includes the Locator-Node and Function bits of the SID being compressed.</t>
  <t>C-SID container: A 128-bit container holding a list of one or more C-SIDs.</t>
  <t>C-SID sequence: A group of one or more consecutive segment list entries carrying the common Locator-Block and at least one C-SID container.</t>
  <t>Uncompressed SID sequence: A group of one or more uncompressed SIDs in a segment list.</t>
  <t>Compressed segment list encoding: A segment list encoding that reduces the packet header length thanks to one or more C-SID sequences. A compressed segment list encoding may also contain any number of uncompressed SID sequences.</t>
</list></t>

<t>In this document, the length of each constituent part of a SID is referred to as follows.</t>

<t><list style="symbols">
  <t>LBL is the Locator-Block length of the SID.</t>
  <t>LNL is the Locator-Node length of the SID.</t>
  <t>FL is the Function length of the SID.</t>
  <t>AL is the Argument length of the SID.</t>
</list></t>

<t>In addition, LNFL is the sum of the Locator-Node length and the Function length of the SID. It is also referred to as the C-SID length.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="basic-concepts"><name>Basic Concepts</name>

<t>In an SR domain, all SRv6 SIDs instantiated from the same Locator-Block share the same most significant bits. In addition, when the combined length of the SRv6 SID Locator, Function, and Argument is smaller than 128 bits, the least significant bits of the SID are padded with zeros.
The compressed segment list encoding decreases the packet header length by avoiding the repetition of the same Locator-Block and reducing the use of padding bits.</t>

<t>The compressed segment list encoding is fully compatible with and builds upon the mechanisms specified in <xref target="RFC8754"/> and <xref target="RFC8986"/>. The compressed encoding is achieved by combining a compressed segment list encoding logic on the SR source node (<xref target="sec-source-node"/>) with new flavors of the base SRv6 segment endpoint behaviors that decode this compressed encoding (<xref target="sec-endpoint"/>).</t>

<t>A segment list can be encoded in the packet header using any combination of compressed and uncompressed sequences. The C-SID sequences leverage the flavors defined in this document, while the uncompressed sequences use behaviors and flavors defined in other documents, such as <xref target="RFC8986"/>. An SR source node constructs and compresses the SID-list depending on the capabilities of each SR segment endpoint node that the packet should traverse, as well as its own compression capabilities.</t>

<t>The compressed segment list encoding works with any Locator-Block allocation. For example, each routing domain within the SR domain can be allocated a /48 Locator-Block from a global IPv6 block available to the operator, or from a prefix allocated to SRv6 SIDs as discussed in Section 5 of <xref target="I-D.ietf-6man-sids"/>.</t>

</section>
<section anchor="sec-endpoint"><name>SR Segment Endpoint Flavors</name>

<t>This section defines two SR segment endpoint flavors, NEXT-C-SID and REPLACE-C-SID, for the End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, and End.BM behaviors of <xref target="RFC8986"/>.
This section also defines a REPLACE-C-SID flavor for the End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M behaviors of <xref target="RFC8986"/>.
A counterpart NEXT-C-SID flavor is not defined for these SIDs because they can be included within a C-SID sequence that uses the NEXT-C-SID flavor without any modification of the procedure defined in <xref target="RFC8986"/>.
Future documents may extend the applicability of the NEXT-C-SID and REPLACE-C-SID flavors to other SR segment endpoint behaviors.</t>

<t>The use of these flavors, either individually or in combination, enables the compressed segment list encoding.</t>

<t>The NEXT-C-SID flavor and the REPLACE-C-SID flavor both leverage the SID Argument to determine the next segment to be processed, but employ different segment list compression schemes.
With the NEXT-C-SID flavor, each C-SID container is a fully formed SRv6 SID with the common Locator-Block for all the C-SIDs in the C-SID container, a Locator-Node and Function that are those of the first C-SID, and an Argument carrying the subsequent C-SIDs.
With the REPLACE-C-SID flavor, only the first element in a C-SID sequence is a fully formed SRv6 SID. It has the common Locator-Block for all the C-SIDs in the C-SID sequence, and a Locator-Node and Function that are those of the first C-SID. The remaining elements in the C-SID sequence are C-SID containers carrying the subsequent C-SIDs without the Locator-Block.</t>

<t>The SIDs of both flavors can co-exist in the same SR domain, on the same SR segment endpoint node, and even in the same segment list. However, it is RECOMMENDED, for ease of operation, that a single compressed encoding flavor be used in a given routing domain. In a multi-domain deployment, different flavors MAY be used in different routing domains of the SR domain.</t>

<t>In the remainder of this document, the term &quot;a SID of this document&quot; refers to any End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, or End.BM SID with the NEXT-C-SID or the REPLACE-C-SID flavor, and with any combination of PSP, USP, and USD flavor, or any End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, or End.DT2M with the REPLACE-C-SID flavor. All the SIDs introduced in this document are listed in <xref target="tbl-iana-endpoint-behaviors"/>.</t>

<t>In the remainder of this document, the terms &quot;NEXT-C-SID flavor SID&quot; and &quot;REPLACE-C-SID flavor SID&quot; refer to any SID of this document with the NEXT-C-SID flavor and with the REPLACE-C-SID flavor, respectively.</t>

<section anchor="sec-next"><name>NEXT-C-SID Flavor</name>

<t>A C-SID sequence using the NEXT-C-SID flavor comprises one or more C-SID containers. Each C-SID container is a fully formed 128-bit SID. It carries a Locator-Block followed by a series of C-SIDs. The Locator-Node and Function of the C-SID container are those of the first C-SID, and its Argument is the contiguous series of subsequent C-SIDs. The second C-SID is encoded in the most significant bits of the C-SID container Argument, the third C-SID is encoded in the bits of the Argument that immediately follow the second C-SID, and so on. When all C-SIDs have the same length, a C-SID container can carry up to K C-SIDs, where K is computed as floor((128-LBL)/LNFL). Each C-SID container for NEXT-C-SID is independent, such that contiguous C-SID containers in a C-SID sequence can be considered as separate C-SID sequences.</t>

<t>The last C-SID in the C-SID sequence is not required to have the NEXT-C-SID flavor. It can be bound to any behavior and flavor(s), including the REPLACE-C-SID flavor, as long as it meets the conditions defined in <xref target="sec-source-node"/>.</t>

<t>The structure of a SID with the NEXT-C-SID flavor is shown in <xref target="fig-next-struct"/>. The same structure is also that of a C-SID container carrying NEXT-C-SID SIDs.</t>

<figure title="Structure of a NEXT-C-SID flavor SID (scaled for a 48-bit Locator-Block, 16-bit combined Locator-Node and Function, and 64-bit Argument)" anchor="fig-next-struct"><artwork><![CDATA[
+------------------------------------------------------------------+
|     Locator-Block      |Loc-Node|            Argument            |
|                        |Function|                                |
+------------------------------------------------------------------+
 <-------- LBL ---------> < LNFL > <------------- AL ------------->
]]></artwork></figure>

<t>An implementation SHOULD support a 32-bit Locator-Block length (LBL) and a 16-bit C-SID length (LNFL) for NEXT-C-SID flavor SIDs, and MAY support any other Locator-Block and C-SID length.
A deployment SHOULD use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain.</t>

<t>The Argument length (AL) for NEXT-C-SID flavor SIDs is equal to 128-LBL-LNFL.</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the NEXT-C-SID flavor, the SR segment endpoint node applies the procedure specified in the one following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-next-flavors"/>.</t>

<t>An SR segment endpoint node instantiating a SID with the NEXT-C-SID flavor MUST accept any Argument value for that SID.</t>

<t>At high level, for any SID with the NEXT-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. If the Argument value of the active SID is non-zero, the SR segment endpoint node constructs the next SID from the active SID by copying the entire SID Argument value to the bits that immediately follow the Locator-Block, thus overwriting the active SID Locator-Node and Function with those of the next C-SID, and filling the least significant LNFL bits of the Argument with zeros. If the Argument value is 0, the SR segment endpoint node instead copies the next 128-bit Segment List entry from the SRH to the Destination Address field of the IPv6 header.</t>

<section anchor="sec-next-end"><name>End with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor, the procedure described in Section 4.1 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The below pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<aside>
  <t>Notes:</t>

  <t><list style="symbols">
    <t><spanx style="verb">DA.Argument</spanx> identifies the bits <spanx style="verb">[(LBL+LNFL)..127]</spanx> in the Destination Address of the IPv6 header.</t>
    <t>The value in the Segments Left field of the SRH is not modified when <spanx style="verb">DA.Argument</spanx> in the received packet has a non-zero value.</t>
  </list></t>
</aside>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-end-complete"/>.</t>

</section>
<section anchor="sec-next-endx"><name>End.X with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor, the procedure described in Section 4.2 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.2 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

</section>
<section anchor="sec-next-endt"><name>End.T with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor, the procedure described in Section 4.3 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Set the packet's associated FIB table to T.
N08.2.   Submit the packet to the egress IPv6 FIB lookup for
           transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.3 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

</section>
<section anchor="sec-next-endb6"><name>End.B6.Encaps with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor, the procedure described in Section 4.13 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push a new IPv6 header with its own SRH containing B.
N08.2.   Set the outer IPv6 SA to A.
N08.3.   Set the outer IPv6 DA to the first SID of B.
N08.4.   Set the outer Payload Length, Traffic Class, Flow Label,
            Hop Limit, and Next Header fields.
N08.5.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.13 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<t>Similar to the base End.B6.Encaps SID defined in Section 4.13 of <xref target="RFC8986"/>, the NEXT-C-SID flavor variant updates the Destination Address field of the inner IPv6 header to the next SID in the original segment list before encapsulating the packet with the segment list of SR Policy B. At the endpoint of SR Policy B, the encapsulation is removed and the inner packet is forwarded towards the exposed destination address, which already contains the next SID in the original segment list.</t>

</section>
<section anchor="sec-next-endb6red"><name>End.B6.Encaps.Red with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps.Red SID with the NEXT-C-SID flavor, the procedure described in Section 4.14 of <xref target="RFC8986"/> is executed with the same modifications as in <xref target="sec-next-endb6"/> of this document.</t>

</section>
<section anchor="sec-next-endbm"><name>End.BM with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor, the procedure described in Section 4.15 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push the MPLS label stack for B.
N08.2.   Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.15 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

</section>
<section anchor="sec-next-flavors"><name>Combination with PSP, USP and USD flavors</name>

<t>PSP: The PSP flavor defined in Section 4.16.1 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

<t>USP: The USP flavor defined in Section 4.16.2 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

<t>USD: The USP flavor defined in Section 4.16.3 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

</section>
</section>
<section anchor="sec-replace"><name>REPLACE-C-SID Flavor</name>

<t>A C-SID sequence using the REPLACE-C-SID flavor starts with a C-SID container in fully formed 128-bit SID format. The Locator-Block of this SID is the common Locator-Block for all the C-SIDs in the C-SID sequence, its Locator-Node and Function are those of the first C-SID, and its Argument carries the index of the current C-SID in the current C-SID container. The Argument value is initially 0. When more segments are present in the segment list, the C-SID sequence continues with one or more C-SID containers in packed format carrying the subsequent C-SIDs in the sequence. Each container in packed format is a 128-bit Segment List entry split into K &quot;positions&quot; of LNFL bits, where K is computed as floor(128/LNFL). If LNFL does not divide into 128 perfectly, a zero pad is added in the least significant bits of the C-SID container to fill the bits left over. The second C-SID in the C-SID sequence is encoded in the least significant bit position of the first C-SID container in packed format (position K-1), the third C-SID is encoded in position K-2, and so on.</t>

<t>The last C-SID in the C-SID sequence is not required to have the REPLACE-C-SID flavor. It can be bound to any behavior and flavor(s), including the NEXT-C-SID flavor, as long as it meets the conditions defined in <xref target="sec-source-node"/>.</t>

<t>The structure of a SID with the REPLACE-C-SID flavor is shown in <xref target="fig-replace-struct"/>. The same structure is also that of the C-SID container for REPLACE-C-SID in fully formed 128-bit SID format.</t>

<figure title="Structure of a REPLACE-C-SID flavor SID (scaled for a 48-bit Locator-Block, 32-bit combined Locator-Node and Function, and 48-bit Argument)" anchor="fig-replace-struct"><artwork><![CDATA[
+-------------------------------------------------------------------+
|     Locator-Block      |  Locator-Node  |        Argument         |
|                        |   + Function   |                         |
+-------------------------------------------------------------------+
 <-------- LBL ---------> <---- LNFL ----> <--------- AL ---------->
]]></artwork></figure>

<t>The structure of a C-SID container for REPLACE-C-SID in packed format is shown in <xref target="fig-replace-container"/>.</t>

<figure title="Structure of a C-SID container for REPLACE-C-SID using a 32-bit C-SID length (K = 4)" anchor="fig-replace-container"><artwork><![CDATA[
+-------------------------------------------------------------------+
|  Fourth C-SID  |  Third C-SID   |  Second C-SID  |  First C-SID   |
|  (position 0)  |  (position 1)  |  (position 2)  |  (position 3)  |
+-------------------------------------------------------------------+
 <---- LNFL ----> <---- LNFL ----> <---- LNFL ----> <---- LNFL ---->
]]></artwork></figure>

<t>The RECOMMENDED Locator-Block lengths (LBL) for REPLACE-C-SID flavor SIDs are 48, 56, 64, 72, or 80 bits, depending on the needs of the operator.</t>

<t>The REPLACE-C-SID flavor supports both 16- and 32-bit C-SID lengths (LNFL). A C-SID length of 32-bit is RECOMMENDED.</t>

<t>Any other Locator-Block and C-SID length selection is possible, but may lead to suboptimal C-SID encoding in the C-SID containers (e.g., presence of padding bits).</t>

<t>The Argument length (AL) for REPLACE-C-SID flavor SIDs is equal to 128-LBL-LNFL. The index value is encoded in the least significant X bits of the Argument, where X is computed as ceil(log_2(128/LNFL)).</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the REPLACE-C-SID flavor, the SR segment endpoint node applies the procedure specified in the one following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-replace-flavors"/>.</t>

<t>At high level, at the start of a C-SID sequence using the REPLACE-C-SID flavor, the first C-SID container in fully formed 128-bit SID format is copied to the Destination Address of the IPv6 header. Then, for any SID with the REPLACE-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. When an SRH is present, the SR segment endpoint node decrements the index value in the Argument of the active SID if the index value is not 0 or, if it is 0, decrements the Segments Left value in the SRH and sets the index value in the Argument of the active SID to K-1. The updated index value indicates the position of the next C-SID within the C-SID container in packed format at the &quot;Segment List&quot; index &quot;Segments Left&quot; in the SRH. The SR segment endpoint node then constructs the next SID by copying this next C-SID to the bits that immediately follow the Locator-Block in the Destination Address field of the IPv6 header, thus overwriting the active SID Locator-Node and Function with those of the next C-SID. If no SRH is present, the SR segment endpoint node ignores the index value in the SID Argument (except End.DT2M, see <xref target="sec-replace-enddx"/>) and processes the upper-layer header as per <xref target="RFC8986"/>. The C-SID sequence ends with a last C-SID in the last C-SID container that does not have the REPLACE-C-SID flavor, or with the special C-SID value 0, or when reaching the end of the segment list, whichever comes first.</t>

<section anchor="sec-replace-end"><name>End with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor, the SRH processing described in Section 4.1 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>Line S02 of SRH processing in Section 4.1 of <xref target="RFC8986"/> is replaced as follows.</t>

<figure><artwork><![CDATA[
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<t>Lines S09 to S15 are replaced by the following pseudo code.</t>

<figure><artwork><![CDATA[
R01. If (DA.Arg.Index != 0) {
R02.   If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R04.   }
R05.   Decrement DA.Arg.Index by 1.
R06.   If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.     Decrement Segments Left by 1.
R08.     Decrement IPv6 Hop Limit by 1.
R09.     Update IPv6 DA with Segment List[Segments Left]
R10.     Submit the packet to the egress IPv6 FIB lookup for
          transmission to the new destination.
R11.   }
R12. } Else {
R13.   If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R15.   }
R16.   Decrement Segments Left by 1.
R17.   Set DA.Arg.Index to (floor(128/LNFL) - 1).
R18. }
R19. Decrement IPv6 Hop Limit by 1.
R20. Write Segment List[Segments Left][DA.Arg.Index] into the bits
       [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
       header.
R21. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Notes:</t>

  <t><list style="symbols">
    <t><spanx style="verb">DA.Arg.Index</spanx> identifies the bits <spanx style="verb">[(128-ceil(log_2(128/LNFL)))..127]</spanx> in the Destination Address of the IPv6 header.</t>
    <t><spanx style="verb">Segment List[Segments Left][DA.Arg.Index]</spanx> identifies the bits <spanx style="verb">[DA.Arg.Index*LNFL..(DA.Arg.Index+1)*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
  </list></t>
</aside>

<t>The upper-layer header processing described in Section 4.1.1 of <xref target="RFC8986"/> is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-end-complete"/>.</t>

</section>
<section anchor="sec-replace-endx"><name>End.X with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor, the procedure described in Section 4.2 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing line R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.2 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

</section>
<section anchor="sec-replace-endt"><name>End.T with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor, the procedure described in Section 4.3 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing line R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Set the packet's associated FIB table to T.
R10.2. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Set the packet's associated FIB table to T.
R21.2. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.3 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

</section>
<section anchor="sec-replace-endb6"><name>End.B6.Encaps with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor, the procedure described in Section 4.13 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing line R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push a new IPv6 header with its own SRH containing B.
R10.2. Set the outer IPv6 SA to A.
R10.3. Set the outer IPv6 DA to the first SID of B.
R10.4. Set the outer Payload Length, Traffic Class, Flow Label,
       Hop Limit, and Next Header fields.
R10.5. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the next destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push a new IPv6 header with its own SRH containing B.
R21.2. Set the outer IPv6 SA to A.
R21.3. Set the outer IPv6 DA to the first SID of B.
R21.4. Set the outer Payload Length, Traffic Class, Flow Label,
       Hop Limit, and Next Header fields.
R21.5. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.13 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

</section>
<section anchor="sec-replace-endb6red"><name>End.B6.Encaps.Red with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps.Red SID with the REPLACE-C-SID flavor, the procedure described in Section 4.14 of <xref target="RFC8986"/> is executed with the same modifications as in <xref target="sec-replace-endb6"/> of this document.</t>

</section>
<section anchor="sec-replace-endbm"><name>End.BM with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor, the procedure described in Section 4.15 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing line R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push the MPLS label stack for B.
R10.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.15 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

</section>
<section anchor="sec-replace-enddx"><name>End.DX and End.DT with REPLACE-C-SID</name>

<t>New behaviors of End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, or End.DT2M <xref target="RFC8986"/> with REPLACE-C-SID flavor are also defined in this draft. These new behaviors can be used to indicate the capability of compression of Node and SID, which are required in path computation and compressed SID list encoding.</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U or End.DT2M SID with the REPLACE-C-SID flavor, the procedures described in <xref target="RFC8986"/> are executed.
For End.DT2M with REPLACE-C-SID flavor, when it is used as an uncompressed 128-bit SID, the Arg.FE2 is a 16-bit value located in the significant bits of the Argument. When it is used as a C-SID, the Arg.FE2 of the SID is carried in the end of the C-SID sequence.  For 16-bit compression, Arg.FE2 is carried in the last 16-bits of the C-SID sequence. For 32-bit compression, Arg.FE2 is carried in the least significant 16 bits of the last 32-bits of the C-SID sequence.
When the END.DT2M C-SID and its Argument cannot be included in the last container, the SID MUST NOT be compressed and MUST be encoded as a 128-bit uncompressed END.DT2M SID. When processing an IPv6 packet that matches a FIB entry locally instantiated as an END.DT2M with REPLACE-C-SID flavor, the node can obtain the Arg.FE2 from the DA.Argument if DA.Arg.Index is zero, or from the container if DA.Arg.Index is non zero.</t>

</section>
<section anchor="sec-replace-flavors"><name>Combination with PSP, USP, and USD flavors</name>

<t>PSP:
When combined with the REPLACE-C-SID flavor, the additional PSP flavor instructions defined in Section 4.16.1.2 of <xref target="RFC8986"/> are inserted after line R09 and R20 of the pseudocode in <xref target="sec-replace-end"/>, and the first line of the inserted instructions after R20 is modified as follows.</t>

<figure><artwork><![CDATA[
R20.1.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
             Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<aside>
  <t>Note: <spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx> identifies the bits <spanx style="verb">[(DA.Arg.Index-1)*LNFL..DA.Arg.Index*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
</aside>

<t>USP:
When combined with the REPLACE-C-SID flavor, the line S03 of the pseudocode in <xref target="sec-replace-end"/> are substituted by the USP flavor instructions S03.1 to S03.4 defined in Section 4.16.2 of <xref target="RFC8986"/>. Note that S03 is shown in the complete pseudocode in <xref target="sec-replace-end-complete"/>.</t>

<t>USD:
The USD flavor defined in Section 4.16.3 of <xref target="RFC8986"/> is unchanged when combined with the REPLACE-C-SID flavor.</t>

</section>
</section>
</section>
<section anchor="c-sid-allocation"><name>C-SID Allocation</name>

<t>The C-SID value of 0 is RESERVED. It is used to indicate the end of a C-SID container.</t>

<t>In order to efficiently manage the C-SID numbering space, it may be beneficial to divide it into two non-overlapping sub-spaces: a Global Identifiers Block (GIB) and a Local Identifiers Block (LIB).</t>

<t><list style="symbols">
  <t>The GIB is the pool of C-SID values available for global allocation.</t>
  <t>The LIB is the pool of C-SID values available for local allocation.</t>
</list></t>

<t>C-SID values that are allocated from the GIB have a global semantic within the Locator-Block, while those that are allocated from the LIB have a local semantic on an SR segment endpoint node and within the scope of the Locator-Block.</t>

<t>The concept of LIB is applicable to SRv6 and specifically to its NEXT-C-SID and REPLACE-C-SID flavors. The shorter the C-SID, the more benefit the LIB brings.</t>

<t>The opportunity to use these sub-spaces, their size, and their C-SID allocation policy depends on the C-SID length relative to the size of the network (e.g., number of nodes, links, service routes). Some guidelines for a typical deployment scenario are provided in the below subsections.</t>

<section anchor="global-c-sid"><name>Global C-SID</name>

<t>A global C-SID is a C-SID allocated from the GIB.</t>

<t>A global C-SID identifies a segment defined at the Locator-Block level. The tuple (Locator-Block, C-SID) identifies the same segment across all nodes of the SR domain. A typical example is a prefix segment bound to the End behavior.</t>

<t>A node can have multiple global C-SIDs under the same Locator-Block (e.g., one per IGP flexible algorithm (<xref target="RFC9350"/>)). Multiple nodes may share the same global C-SID (e.g., anycast).</t>

</section>
<section anchor="local-c-sid"><name>Local C-SID</name>

<t>A local C-SID is a C-SID allocated from the LIB.</t>

<t>A local C-SID identifies a segment defined at the node level and within the scope of a particular Locator-Block. The tuple (Locator-Block, C-SID) identifies a different segment on each node of the SR domain. A typical example is a non-routed Adjacency segment bound to the End.X behavior.</t>

<t>Let N1 and N2 be two different physical nodes of the SR domain and I a local C-SID value, N1 may allocate value I to SID S1 and N2 may allocate the same value I to SID S2.</t>

</section>
<section anchor="sec-c-sid-lib-recommendation"><name>GIB/LIB Usage</name>

<t>GIB and LIB usage is a local implementation and/or configuration decision, however, some guidelines for determining usage for specific SID behaviors and recommendations are provided.</t>

<t>The GIB number space is shared among all segment endpoint nodes using SRv6 locators under a Block space.  The more SIDs assigned from this space, per node, the faster it is exhausted.  Therefore its use is prioritized for global segments, such as SIDs that identify a node.</t>

<t>The LIB number space is unique per node. Each node is able to fully utilize the entire LIB number space without consideration of assignments at other nodes.  Therefore its use is prioritized for local segments, such as SIDs that identify services (of which there may be many) at nodes, cross-connects, or adjacencies.</t>

<t>While a longer C-SID length permits more flexibility in which SID behaviors may be assigned from the GIB, it also reduces the compression efficiency.</t>

<t>Given the previous Locator-Block and C-SID length recommendations, the following GIB/LIB usage is RECOMMENDED:</t>

<t><list style="symbols">
  <t>NEXT-C-SID:
  <list style="symbols">
      <t>GIB: End</t>
      <t>LIB: End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V (including large-scale pseudowire), End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
    </list></t>
  <t>REPLACE-C-SID:
  <list style="symbols">
      <t>GIB: End, End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V, End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
      <t>LIB: End.DX2/2V for large-scale pseudowire</t>
    </list></t>
</list></t>

<t>Any other allocation is possible but may lead to a suboptimal use of the C-SID numbering space.</t>

</section>
<section anchor="sec-c-sid-installation"><name>Recommended Installation of C-SIDs in FIB</name>

<t>An SR segment endpoint node instantiating a NEXT-C-SID or REPLACE-C-SID flavor SID SHOULD install the corresponding FIB entry to match only the Locator and Function parts of the SID (i.e., with a prefix length of LBL + LNL + FL). Any other mean of identifying a locally instantiated SID is possible as long as it is compliant with Section 4.3 of <xref target="RFC8754"/> and accepts all valid Argument values for the SID.</t>

<t>In addition, an SR segment endpoint node instantiating NEXT-C-SID flavor SIDs from both GIB and LIB MAY install combined &quot;Global + Local&quot; FIB entries to match a sequence of global and local C-SIDs in a single LPM lookup.</t>

<t>For example, let us consider an SR segment endpoint node 10 instantiating the following two NEXT-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b1:10::</spanx> bound to the End behavior with the NEXT-C-SID flavor is instantiated from GIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 16 (Locator-Node value <spanx style="verb">0x0010</spanx>),</t>
      <t>Function length (FL) = 0, and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
  <t><spanx style="verb">2001:db8:b1:f123::</spanx> bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor is instantiated from LIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 0,</t>
      <t>Function length (FL) = 16 (Function value <spanx style="verb">0xf123</spanx>), and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b1:10::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:10::/64</spanx> bound the End SID with the NEXT-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b1:f123::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:f123::/64</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>In addition, Node 10 may also install the combined FIB entry <spanx style="verb">2001:db8:b1:10:f123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>As another example, let us consider an SR segment endpoint node 20 instantiating the following two REPLACE-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b2:20:1::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End behavior with the REPLACE-C-SID flavor.</t>
  <t><spanx style="verb">2001:db8:b2:20:123::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b2:20:1::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:1::/80</spanx> bound the End SID with the REPLACE-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b2:20:123::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>

</section>
</section>
<section anchor="sec-source-node"><name>SR Source Node</name>

<section anchor="segment-validation"><name>Segment Validation</name>

<t>An SR source node MUST validate all SIDs defined in this document that it uses as part of a segment list, regardless of whether the segment list is explicitly configured, locally computed, or advertised by a controller (e.g., via BGP <xref target="I-D.ietf-idr-segment-routing-te-policy"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>).</t>

<t>A SID of this document is valid if it is associated with a valid SID structure.</t>

<t>The structure of a SID is valid if <strong>all</strong> the following conditions are met.</t>

<t><list style="symbols">
  <t>The Locator-Block length is not 0.</t>
  <t>The sum of the Locator-Node length and Function length is not 0.</t>
  <t>The Argument length is equal to 128-LBL-LNL-FL.</t>
</list></t>

<t>An SR source node MUST NOT include an invalid SID in a segment list. If an explicitly configured or advertised segment list (e.g., from a controller) contains an invalid SID, the segment list MUST be declared invalid (<xref target="RFC9256"/>).</t>

<t><xref target="sec-control-plane"/> discusses how the SIDs of this document and their structure can be advertised to the SR source node through various control plane protocols.</t>

</section>
<section anchor="segment-list-compression"><name>Segment List Compression</name>

<t>An SR source node MAY compress a segment list when it includes NEXT-C-SID and/or REPLACE-C-SID flavor SIDs in order to reduce the packet header length.</t>

<t>The segment list that the SR source node pushes onto the packet MUST comply with the rules in <xref target="sec-source-next"/> and <xref target="sec-source-replace"/> and result in a path equivalent to the original segment list.</t>

<t>If an SR source node chooses to compress the segment list, one method is described below for illustrative purposes. Any other method producing a compressed segment list of equal or shorter length than the uncompressed segment list is compliant.</t>

<t>This method walks the uncompressed segment list and compresses each series of consecutive NEXT-C-SID flavor SIDs and each series of consecutive REPLACE-C-SID flavor SIDs.</t>

<t><list style="symbols">
  <t>When the compression method encounters a series of one or more consecutive compressible NEXT-C-SID flavor SIDs, it compresses the series as follows. A SID with the NEXT-C-SID flavor is compressible if its structure is known to the SR source node and its Argument value is 0.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize a C-SID container equal to the first SID in the
       series, and initialize the remaining capacity of the C-SID
       container to the AL of that SID
S02. For each subsequent SID in the series {
S03.   If the current SID Locator-Block matches that of the C-SID
         container and the current SID LNFL is lower than or equal to
         the remaining capacity of the C-SID container {
S04.     Copy the current SID Locator-Node and Function to the most
           significant remaining Argument bits of the C-SID container
           and decrement the remaining capacity by LNFL
S05.   } Else {
S06.     Push the C-SID container onto the compressed segment list
S07.     Initialize a new C-SID container equal to the current SID in
           the series, and initialize the remaining capacity of the
           C-SID container to the AL of that SID
S08.   } // End If
S09. } // End For
S10. If at least one SID remains in the uncompressed segment list
       (following the series of compressible NEXT-C-SID flavor SIDs){
S11.   Set S to the next SID in the uncompressed segment list
S12.   If S is advertised with a SID structure, and the Locator-Block
         of S matches that of the C-SID container, and the sum of the
         Locator-Node, Function, and Argument length of S is lower
         than or equal to the remaining capacity of the C-SID
         container {
S13.     Copy the Locator-Node, Function, and Argument of S to the
           most significant remaining Argument bits of the C-SID
           container
S14.   } // End If
S15. } // End If
S16. Push the C-SID container onto the compressed segment list
]]></artwork></figure>

<t><list style="symbols">
  <t>When the compression method encounters a series of REPLACE-C-SID flavor SIDs of the same C-SID length in the uncompressed segment list, it compresses the series as per the following high-level pseudo code. A compression checking function ComCheck(F, S) is defined to check if two SIDs F and S share the same SID structure and Locator-Block value, and if S has either no Argument or an Argument with value 0. If the check passes, then ComCheck(F,S) returns true.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize the first C-SID container in full SID format equal to
       the first SID in the series
S02. Initialize the second C-SID container in packed format if there
       are more than one SIDs, and initialize the remaining capacity
       of the C-SID container to 128 bits
S03. For each subsequent SID in the uncompressed segment list {
S04.   Set S to the current SID in the uncompressed segment list
S05.   If ComCheck(First SID, S) {
S06.     If the LNFL of S is lower than or equal to
           the remaining capacity of the C-SID container {
S07.       Copy the Locator-Node and Function of S to the least
             significant remaining bits of the C-SID container
             and decrement the remaining capacity by LNFL  // Note
S08.     } Else {
S09.       Push the C-SID container onto the compressed segment list
S10.       Initialize a new C-SID container in packed format with all
             bits set to 0
S11        Copy the Locator-Node and Function of S to the least
             significant remaining bits of the C-SID container
             and decrement the remaining capacity by LNFL  // Note
S12.     }
S13.     If S is not a REPLACE-C-SID flavor SID, then break
S14.   } Else {
S15.     Break
S16.   } // End If
S17. } // End For
S18. Push the C-SID container (if it is not empty) onto the
       compressed segment list
]]></artwork></figure>

<aside>
  <t>Note: When the last C-SID is an END.DT2M with REPLACE-C-SID flavor SID, the Argument of it is encoded as per the rules in <xref target="sec-replace-enddx"/>.</t>
</aside>

<t><list style="symbols">
  <t>In all remaining cases (i.e., when the compression method encounters a SID in the uncompressed segment list that is not handled by any of the previous subroutines), it pushes this SID as is onto the compressed segment list.</t>
</list></t>

<t>Regardless of how a compressed segment list is produced, it is encoded in the IPv6 header and optional SRH as described in Section 4.1 and 4.1.1 of <xref target="RFC8754"/>. The text is reproduced below for reference.</t>

<blockquote>
  <t>A source node steers a packet into an SR Policy. If the SR Policy
results in a Segment List containing a single segment, and there is
no need to add information to the SRH flag or add TLV; the DA is set
to the single Segment List entry, and the SRH MAY be omitted.</t>

  <t>When needed, the SRH is created as follows:</t>

  <t>The Next Header and Hdr Ext Len fields are set as specified in
  [RFC8200].</t>

  <t>The Routing Type field is set to 4.</t>

  <t>The DA of the packet is set with the value of the first segment.</t>

  <t>The first element of the SRH Segment List is the ultimate segment.
  The second element is the penultimate segment, and so on.</t>

  <t>The Segments Left field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>The Last Entry field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>TLVs (including HMAC) may be set according to their specification.</t>

  <t>The packet is forwarded toward the packet&#39;s Destination Address
  (the first segment).</t>

  <t>When a source does not require the entire SID list to be preserved
in the SRH, a reduced SRH may be used.</t>

  <t>A reduced SRH does not contain the first segment of the related SR
Policy (the first segment is the one already in the DA of the IPv6
header), and the Last Entry field is set to n-2, where n is the
number of elements in the SR Policy.</t>
</blockquote>

</section>
<section anchor="sec-source-next"><name>Rules for segment lists containing NEXT-C-SID flavor SIDs</name>

<t><list style="numbers">
  <t>If a Destination Option header would follow an SRH with a segment list of more than one segment compressed as a single NEXT-C-SID container, the SR source node MUST NOT omit the SRH.</t>
  <t>When the last Segment List entry (index 0) in the SRH is a C-SID container representing more than one segment, the PSP operation is performed at the segment preceding the first segment of this C-SID container in the segment list. If the PSP behavior should instead be performed at the penultimate segment along the path, the SR source node MUST NOT compress the ultimate segment of the segment list into a C-SID container.</t>
  <t>If a Destination Option header would follow an SRH with a last Segment List entry being a NEXT-C-SID container representing more than one segment, the SR source node MUST ensure that the PSP operation is not performed before the penultimate SR segment endpoint node along the path.</t>
</list></t>

</section>
<section anchor="sec-source-replace"><name>Rules for segment lists containing REPLACE-C-SID flavor SIDs</name>

<t><list style="numbers">
  <t>All SIDs compressed in a REPLACE-C-SID sequence MUST share the same Locator-Block and the same compression scheme.</t>
  <t>All SIDs except the last one in a C-SID sequence for REPLACE-C-SID MUST have the REPLACE-C-SID flavor. If the last C-SID container is fully filled (i.e., the last C-SID is at position 0 in the C-SID container) and the last SID in the C-SID sequence is not the last segment in the segment list, the last SID in the C-SID sequence MUST NOT have the REPLACE-C-SID flavor.</t>
  <t>When a REPLACE-C-SID flavor C-SID is present as the last SID in a container that is not the last Segment List entry (index 0) in the SRH, the next element in the segment list MUST be a REPLACE-C-SID container in packed format carrying at least one C-SID.</t>
</list></t>

<t>The SR source node determines the compression scheme of REPLACE-C-SID flavor SIDs as follows.</t>

<t>When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNL=16, FL=0, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 16-bit compression. All other SIDs allocated from this locator with LNL=16, FL=16, AL=128-LBL-NL-FL, and the value of the Argument is all 0 are also marked as using 16-bit compression. When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNFL=32, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 32-bit compression.</t>

</section>
</section>
<section anchor="inter-routing-domains-with-the-endxps-behavior"><name>Inter Routing Domains with the End.XPS behavior</name>

<t>The End.XPS behavior described in this section is OPTIONAL.</t>

<t>Some SRv6 traffic may need to cross multiple routing domains, such as different Autonomous Systems (ASes) or different routing areas within an SR domain. Different routing domains may use different addressing schema and Locator-Blocks.</t>

<t>This section defines an optional solution and SID behavior allowing for the use of different Locator-Blocks between routing domains.</t>

<t>The solution requires a new SID behavior, called &quot;Endpoint with cross-connect to an array of layer-3 adjacencies and SRv6 Prefix Swap&quot; (End.XPS for short) allowing for this transition of Locator-Block between two routing domains.</t>

<t>End.XPS is a variant of End.X, performing both &quot;End.X Layer-3 Cross-Connect&quot; and the translation of the Locator-Block between the two routing domains.</t>

<t>The processing takes as an additional parameter the prefix B2/m corresponding to the Locator-Block in the second domain. This parameter is a property of the (received) SID and is given as a result of the lookup on the IPv6 destination address which identifies the SRv6 SID and its properties.</t>

<t>The End.XPS behavior is compatible with the NEXT-C-SID and REPLACE-C-SID flavors described in this document.</t>

<t>When a router R receives a packet whose IPv6 DA matches a local End.XPS SID with the NEXT-C-SID flavor, that is associated with a set J of one or more Layer-3 adjacencies and the Locator-Block B2/m of the neighbor routing domain, R processes the packet as follows.</t>

<figure><artwork><![CDATA[
 1.   If (DA.Argument != 0) {
 2.     Write B2 into the most significant bits of the Destination
          Address of the IPv6 header.
 3.     Write DA.Argument into the bits [m..(m+AL-1)] of the
          Destination Address of the IPv6 header.
 4.     Set the bits [(m+AL)..127] of the Destination Address
          of the IPv6 header to zero.
 5.   } Else {
 6.     Decrement Segments Left by 1.
 7.     Copy Segment List[Segments Left] from the SRH to the
          Destination Address of the IPv6 header.
 8.   }
 9.   Submit the packet to the IPv6 module for transmission to the
        new destination via a member of J.
]]></artwork></figure>

<t>When a router R receives a packet whose IPv6 DA matches a local End.XPS SID with the REPLACE-C-SID flavor, that is associated with a set J of one or more Layer-3 adjacencies and the Locator-Block B2/m of the neighbor routing domain, R processes the packet as follows.</t>

<figure><artwork><![CDATA[
 1.   If (DA.Arg.Index != 0) {
 2.     Decrement DA.Arg.Index by 1.
 3.   } Else {
 4.     Decrement Segments Left by 1.
 5.     Set DA.Arg.Index to (128/LNFL - 1).
 6.   }
 7.   Write B2 into the most significant bits of the Destination
        Address of the IPv6 header.
 8.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
        [m..m+LNFL-1] of the Destination Address of the IPv6 header.
 9.   Write DA.Arg.Index into the bits [m+LNFL..m+LNFL+AL-1] of the
        Destination Address of the IPv6 header.
10.   Set the bits [(m+LNFL+AL)..127] of the Destination Address
        of the IPv6 header to zero.
11.   Submit the packet to the IPv6 module for transmission to the
        new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the way the Locator-Block B2 of the next routing domain is known is out of scope of this document. As examples, it could be learnt via configuration, or using a signaling protocol either with the peer domain or with a central controller.</t>
</aside>

</section>
<section anchor="sec-control-plane"><name>Control Plane</name>

<t>This document does not require any new extensions to routing protocols.</t>

<t>Section 8 of <xref target="RFC8986"/> provides an overview of the control plane protocols used for signaling of the SRv6 SIDs introduced by that document.
The SRv6 SIDs introduced by this document are advertised using the same SRv6 extensions for various routing protocols, such as</t>

<t><list style="symbols">
  <t>IS-IS <xref target="RFC9352"/></t>
  <t>OSPFv3 <xref target="I-D.ietf-lsr-ospfv3-srv6-extensions"/></t>
  <t>BGP <xref target="RFC9252"/>, <xref target="I-D.ietf-idr-bgpls-srv6-ext"/>, <xref target="I-D.ietf-idr-segment-routing-te-policy"/>, <xref target="I-D.ietf-idr-bgp-ls-sr-policy"/></t>
  <t>PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/></t>
</list></t>

<t>The SR segment endpoint node MUST set the SID Argument bits to 0 when advertising a locally instantiated SID of this document in the routing protocol (e.g., IS-IS <xref target="RFC9352"/>, OSPF <xref target="I-D.ietf-lsr-ospfv3-srv6-extensions"/>, or BGP-LS <xref target="I-D.ietf-idr-bgpls-srv6-ext"/>).</t>

<t>Signaling the SRv6 SID Structure is REQUIRED for all the SIDs introduced in this document. It is used by an SR source node to compress a segment list as described in <xref target="sec-source-node"/>.
The node initiating the SID advertisement MUST set the length values in the SRv6 SID Structure to match the format of the SID on the SR segment endpoint node. For example, for a SID of this document instantiated from a /48 SRv6 SID block and a /64 Locator, and having a 16-bit Function, the SRv6 SID Structure advertisement carries the following values.</t>

<t><list style="symbols">
  <t>Locator-Block length: 48</t>
  <t>Locator-Node length: 16</t>
  <t>Function length: 16</t>
  <t>Argument length: 48 (= 128-48-16-16)</t>
</list></t>

<t>A local C-SID MAY be advertised in the control plane individually and/or in combination with a global C-SID instantiated on the same SR segment endpoint node, with the End behavior, and the same Locator-Block and flavor as the local C-SID. A combined global and local C-SID is advertised as follows.</t>

<t><list style="symbols">
  <t>The SID Locator-Block is that shared by the global and local C-SIDs</t>
  <t>The SID Locator-Node is that of global C-SID</t>
  <t>The SID Function is that of the local C-SID</t>
  <t>The SID Argument length is equal to 128-LBL-LNL-FL and the SID Argument value is 0</t>
  <t>All other attributes of the SID (e.g., endpoint behavior or algorithm) are those of the local C-SID</t>
</list></t>

<t>The local C-SID combined advertisement is needed in particular for control plane protocols mandating that the SID is a subnet of a locator advertised in the same protocol (e.g., Sec. 8 of <xref target="RFC9352"/> and Sec. 9 of <xref target="I-D.ietf-lsr-ospfv3-srv6-extensions"/> for advertising Adjacency SIDs in IS-IS and OSPFv3, respectively).</t>

<t>For a segment list computed by a controller and signaled to an SR source node (e.g., via BGP <xref target="I-D.ietf-idr-segment-routing-te-policy"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>), the controller provides the ordered segment list comprising the uncompressed SIDs, with their respective behavior and structure, to the SR source node. The SR source node may then compress the segment list as described in <xref target="sec-source-node"/>.</t>

</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<section anchor="pinging-a-sid"><name>Pinging a SID</name>

<t>An SR source node may ping an SRv6 SID by sending an ICMPv6 echo request packet destined to the SRv6 SID, with or without a segment list, as illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document without a segment list, the SR source node places the SID in the destination address of the ICMPv6 echo request and MUST set the Argument of the SID to 0. The Argument value 0 allows the SID SR segment endpoint node (<xref target="sec-endpoint"/>) to identify itself as the ultimate destination of the packet and process the ICMPv6 payload. If the SR source node sets a non-zero Argument value, the SR segment endpoint node would instead attempt to determine the next destination of the packet.</t>

<t>When pinging a SID of this document via a segment list, the SR source node MUST construct the IPv6 packet as described in <xref target="sec-source-node"/> and compute the ICMPv6 checksum using the IPv6 destination address as it is expected to appear at the ultimate destination of the packet.</t>

</section>
<section anchor="icmp-error-processing"><name>ICMP Error Processing</name>

<t>When an IPv6 node encounters an error while processing a packet, it may report that error by sending an IPv6 error message to the packet source with an enclosed copy of the invoking packet. For the source of an invoking packet to process the ICMP error message, the ultimate destination address of the IPv6 header may be required.</t>

<t>Section 5.4 of <xref target="RFC8754"/> defines the logic that an SR source node follows to determine the ultimate destination of an invoking packet containing an SRH.</t>

<t>For an SR source node that supports the compressed segment list encoding defined in this document, the logic to determine the ultimate destination is generalized as follows.</t>

<t><list style="symbols">
  <t>If the destination address of the invoking IPv6 packet matches a known SRv6 SID, modify the invoking IPv6 packet by applying the SID behavior associated with the matched SRv6 SID;</t>
  <t>Repeat until the application of the SID behavior would result in the processing of the upper-layer header.</t>
</list></t>

<t>The destination address of the resulting IPv6 packet may be used as the ultimate destination of the invoking IPv6 packet.</t>

<t>Since the SR source node that needs to determine the ultimate destination is the same node that originally built the segment list in the invoking packet, it is able to perform this operation for all the SIDs in the packet.</t>

</section>
</section>
<section anchor="illustrations"><name>Illustrations</name>

<t>Illustrations for the functionalities defined in this document are provided in <xref target="I-D.clad-spring-srv6-srh-compression-illus"/>.</t>

</section>
<section anchor="deployment-model"><name>Deployment Model</name>

<t>Section 5 of <xref target="RFC8754"/> defines the intra-SR-domain deployment model and associated security procedures.</t>

<t>The same deployment model applies to the SIDs defined in this document.</t>

</section>
<section removeInRFC="true" anchor="implementation-status"><name>Implementation Status</name>

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>

<t>According to <xref target="RFC7942"/>, &quot;this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit&quot;.</t>

<t>This section is provided in compliance with the SPRING working group policies (<xref target="SPRING-WG-POLICIES"/>).</t>

<section anchor="cisco-systems"><name>Cisco Systems</name>

<t>Cisco Systems reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and the SR source node efficient SID-list encoding (<xref target="sec-source-node"/>) for NEXT-C-SID flavor SIDs. These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Cisco NCS 540 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS540"/></t>
  <t>Cisco NCS 560 Series routers running IOS XR 7.6.x or above <xref target="IMPL-CISCO-NCS560"/></t>
  <t>Cisco NCS 5500 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS5500"/></t>
  <t>Cisco NCS 5700 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-NCS5700"/></t>
  <t>Cisco 8000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-8000"/></t>
  <t>Cisco ASR 9000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-ASR9000"/></t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="huawei-technologies"><name>Huawei Technologies</name>

<t>Huawei Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).
These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Huawei ATN8XX,ATN910C,ATN980B routers running VRPV800R021C00 or above.</t>
  <t>Huawei CX600-M2 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE40E,ME60-X1X2,ME60-X3X8X16 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE5000E,NE9000 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NCE-IP Controller running V1R21C00 or above.</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the REPLACE-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="nokia"><name>Nokia</name>

<t>Nokia reported the following implementations (<xref target="IMPL-NOKIA-20.10"/>) of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).  These are used as part of its shortest path forwarding (in algorithm 0 and Flex-Algo), remote and TI-LFA repair tunnel, and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Nokia 7950 XRS 20/20e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-12e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7/12 routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7s/14s routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-1/1s/2s routers running SROS Release 22.10 or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on February 3, 2023.</t>

</section>
<section anchor="arrcus"><name>Arrcus</name>

<t>Arrcus reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo),  TI-LFA, micro-loop avoidance and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Arrcus running on Ufi Space routers S9510-28DC, S9710-76D, S9600-30DX and S9700-23D with ArcOS v5.2.1 or above</t>
  <t>Arrcus running n Ufi Space routers S9600-72XC and S9700-53DX with ArcOS v5.1.1D or above</t>
  <t>Arrcus running on Quanta router IXA and IXAE with ArcOS v5.1.1D or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on March 11, 2023.</t>

</section>
<section anchor="juniper-networks"><name>Juniper Networks</name>

<t>Juniper Networks reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo), TI-LFA, micro-loop avoidance, and Traffic Engineering functionalities.</t>

<t>Juniper release 23.3 onwards supports this functionality.</t>

<t>At the time of this report, all the implementations listed above are in development and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on May 30, 2023.</t>

</section>
<section anchor="marvell"><name>Marvell</name>

<t>Marvell reported support in the Marvell Prestera Packet Processor for the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t>This report was last updated on February 15, 2023.</t>

</section>
<section anchor="broadcom"><name>Broadcom</name>

<t>Broadcom reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).  These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities. All implementation of the following list is in general availability for customers using BCM SDK 6.5.26 or above.</t>

<t><list style="symbols">
  <t>88850 (Jericho2c+) series</t>
  <t>88690 (Jericho2) series</t>
  <t>88800 (Jericho2c) series</t>
  <t>88480 (Qunran2a) series</t>
  <t>88280 (Qunran2u) series</t>
  <t>88295 (Qunran2n) series</t>
  <t>88830 (Jericho2x) series</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID and REPLACE-C-SID flavors.</t>

<t>For 78900 (Tomahawk) series-related support, please contact the Broadcom team.</t>

<t>This report was last updated on February 21, 2023.</t>

</section>
<section anchor="zte-corporation"><name>ZTE Corporation</name>

<t>ZTE Corporation reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>ZTE M6000-18S(BRAS), M6000-8S Plus(BRAS) routers running V5.00.10.09 or above.</t>
  <t>ZTE M6000-18S(SR), M6000-8S Plus(SR) routers running V5.00.10.80 or above.</t>
  <t>ZTE T8000-18 routers running V5.00.10.07 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="new-h3c-technologies"><name>New H3C Technologies</name>

<t>New H3C Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>H3C CR16000-F, SR8800-X routers running Version 7.1.075 or above.</t>
  <t>H3C CR18000, CR19000 routers running Version 7.1.071 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="ruijie-network"><name>Ruijie Network</name>

<t>Ruijie Network reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>RUIJIE RG-N8018-R, RG-N8010-R routers running N8000-R_RGOS 12.8(3)B0801 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="open-source"><name>Open Source</name>

<t>The authors found the following open source implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).</t>

<t><list style="symbols">
  <t>The Linux kernel, version 6.1 <xref target="IMPL-OSS-LINUX"/></t>
  <t>The Software for Open Networking in the Cloud (SONiC), version 202212 <xref target="IMPL-OSS-SONIC"/>, and Switch Abstraction Interface (SAI), version  1.9.0 <xref target="IMPL-OSS-SAI"/></t>
  <t>The Vector Packet Processor (VPP), version 20.05 <xref target="IMPL-OSS-VPP"/></t>
  <t>A generic P4 implementation <xref target="IMPL-OSS-P4"/></t>
</list></t>

<t>The authors found the following open source implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t><list style="symbols">
  <t>ONOS and P4 Programmable Switch based <xref target="IMPL-OSS-ONOS"/></t>
  <t>Open SRv6 Project <xref target="IMPL-OSS-OPEN-SRV6"/></t>
</list></t>

<t>This section was last updated on January 11, 2023.</t>

</section>
<section anchor="interoperability-reports"><name>Interoperability Reports</name>

<section anchor="bell-canada-ciena-2023"><name>Bell Canada / Ciena 2023</name>

<t>Bell Canada is currently evaluating interoperability between Ciena and Cisco implementations of the NEXT-C-SID flavor defined in this document. Further information will be added to this section when the evaluation is complete.</t>

</section>
<section anchor="eantc-2023"><name>EANTC 2023</name>

<t>In April 2023, the European Advanced Networking Test Center (EANTC) successfully validated multiple implementations of SRv6 NEXT-C-SID flavor (a.k.a., SRv6 uSID) <xref target="EANTC-23"/>.</t>

<t>The participating vendors included Arista, Arrcus, Cisco, Huawei, Juniper, Keysight, Nokia, and Spirent.</t>

</section>
<section anchor="china-mobile-2020"><name>China Mobile 2020</name>

<t>In November 2020, China Mobile successfully validated multiple interoperable implementations of the NEXT-C-SID and REPLACE-C-SID flavors defined in this document.</t>

<t>This testing covered two different implementations of the SRv6 endpoint flavors defined in this document:</t>

<t><list style="symbols">
  <t>Hardware implementation in Cisco ASR 9000 running IOS XR</t>
  <t>Software implementation in Cisco IOS XRv9000 virtual appliance</t>
  <t>Hardware implementation in Huawei NE40E and NE5000E running VRP</t>
</list></t>

<t>The interoperability testing consisted of a packet flow sent by an SR source node N0 via an SR traffic engineering policy with a segment list <spanx style="verb">&lt;S1, S2, S3, S4, S5, S6, S7&gt;</spanx>, where S1..S7 are SIDs instantiated on SR segment endpoint nodes N1..N7, respectively.</t>

<figure><artwork><![CDATA[
N0 --- N1 --- N2 --- N3 --- N4 --- N5 --- N6 --- N7
      (S1)   (S2)   (S3)   (S4)   (S5)   (S6)   (S7)
]]></artwork></figure>

<t><list style="symbols">
  <t>N0 is a generic packet generator.</t>
  <t>N1, N2, and N3 are Huawei routers.</t>
  <t>N4, N5, and N6 are Cisco routers.</t>
  <t>N7 is a generic traffic generator acting as a packet receiver.</t>
</list></t>

<t>The SR source node N0 steers the packets onto the SR policy by setting the IPv6 destination address and creating an SRH (as described in Section 4.1 of <xref target="RFC8754"/>) using a compressed segment list encoding. The length of the compressed segment list encoding varies for each scenario.</t>

<t>All SR segment endpoint nodes execute a variant of the End behavior: regular End behavior (as defined in Section 4.1 of <xref target="RFC8986"/>), End behavior with NEXT-C-SID flavor, and End behavior with REPLACE-C-SID flavor. The variant being used at each segment endpoint varies for each scenario.</t>

<t>The interoperability was validated for the following scenarios:</t>

<t><strong>Scenario 1:</strong></t>

<t><list style="symbols">
  <t>S1 and S2 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>S3 is associated with the regular End behavior (no flavor)</t>
  <t>S4, S5, and S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

<t><strong>Scenario 2:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 2 SIDs.</t>
</list></t>

<t><strong>Scenario 3:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The security requirements and mechanisms described in <xref target="RFC8402"/> and <xref target="RFC8754"/> also apply to this document.</t>

<t>This document does not introduce any new security considerations.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="srv6-endpoint-behaviors"><name>SRv6 Endpoint Behaviors</name>

<t>This I-D. requests the IANA to update the reference of the following registrations from the &quot;SRv6 Endpoint Behaviors&quot; registry under the top-level &quot;Segment Routing&quot; registry-group (https://www.iana.org/assignments/segment-routing/) with the RFC number of this document once it is published, and transfer change control to the IETF.</t>

<texttable title="Registration List" anchor="tbl-iana-endpoint-behaviors">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>43</c>
      <c>End with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>44</c>
      <c>End with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>45</c>
      <c>End with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>46</c>
      <c>End with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>47</c>
      <c>End with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>48</c>
      <c>End with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>49</c>
      <c>End with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>50</c>
      <c>End with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>52</c>
      <c>End.X with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>53</c>
      <c>End.X with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>54</c>
      <c>End.X with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>55</c>
      <c>End.X with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>56</c>
      <c>End.X with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>57</c>
      <c>End.X with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>58</c>
      <c>End.X with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>59</c>
      <c>End.X with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>85</c>
      <c>End.T with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>86</c>
      <c>End.T with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>87</c>
      <c>End.T with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>88</c>
      <c>End.T with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>89</c>
      <c>End.T with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>90</c>
      <c>End.T with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>91</c>
      <c>End.T with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>92</c>
      <c>End.T with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>93</c>
      <c>End.B6.Encaps with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>94</c>
      <c>End.B6.Encaps.Red with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>95</c>
      <c>End.BM with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>101</c>
      <c>End with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>102</c>
      <c>End with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>103</c>
      <c>End with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>104</c>
      <c>End with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>105</c>
      <c>End.X with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>106</c>
      <c>End.X with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>107</c>
      <c>End.X with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>108</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>109</c>
      <c>End.T with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>110</c>
      <c>End.T with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>111</c>
      <c>End.T with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>112</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>114</c>
      <c>End.B6.Encaps with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>115</c>
      <c>End.BM with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>116</c>
      <c>End.DX6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>117</c>
      <c>End.DX4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>118</c>
      <c>End.DT6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>119</c>
      <c>End.DT4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>120</c>
      <c>End.DT46 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>121</c>
      <c>End.DX2 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>122</c>
      <c>End.DX2V with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>123</c>
      <c>End.DT2U with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>124</c>
      <c>End.DT2M with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>127</c>
      <c>End.B6.Encaps.Red with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>128</c>
      <c>End with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>129</c>
      <c>End with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>130</c>
      <c>End with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>131</c>
      <c>End with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>132</c>
      <c>End.X with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>133</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>134</c>
      <c>End.X with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>135</c>
      <c>End.X with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>136</c>
      <c>End.T with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>137</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>138</c>
      <c>End.T with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>139</c>
      <c>End.T with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
</texttable>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Kamran Raza, Xing Jiang, YuanChao Su, Han Li, Yisong Liu, Martin Vigoureux, and Joel Halpern for their insightful feedback and suggestions.</t>

<t>The authors would also like to thank Andrew Alston, Linda Dunbar, and Adrian Farrel for their thorough review of this document.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

&RFC8402;
&RFC8754;
&RFC8986;
&RFC9256;
&RFC9259;
&RFC9350;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC7942;
&RFC9252;
&RFC9352;
&I-D.ietf-6man-sids;
&I-D.ietf-lsr-ospfv3-srv6-extensions;
&I-D.ietf-idr-bgpls-srv6-ext;
&I-D.ietf-idr-bgp-ls-sr-policy;
&I-D.ietf-idr-segment-routing-te-policy;
&I-D.ietf-pce-segment-routing-ipv6;
&I-D.clad-spring-srv6-srh-compression-illus;
<reference anchor="EMAIL1" target="https://mailarchive.ietf.org/arch/msg/spring/VjVIxo7fZFhsIHJ5wFQXIBvvtNM/">
  <front>
    <title>SPRING chairs email on the adoption of draft-filsfilscheng-spring-srv6-srh-compression-02</title>
    <author >
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>
<reference anchor="EMAIL2" target="https://mailarchive.ietf.org/arch/msg/spring/vCc9Ckvwu5HA-RCleV712dsA5OA/">
  <front>
    <title>SPRING chairs email on working group process</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022" month="February"/>
  </front>
</reference>
<reference anchor="SPRING-WG-POLICIES" target="https://wiki.ietf.org/en/group/spring/WG_Policies">
  <front>
    <title>SPRING Working Group Policies</title>
    <author >
      <organization>SPRING Working Group Chairs</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS540" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5xx/segment-routing/73x/b-segment-routing-cg-73x-ncs540/configure-srv6.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 540 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="02"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS560" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs560/segment-routing/76x/b-segment-routing-cg-76x-ncs560/m-configure-srv6-usid-ncs5xx.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 560 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5500" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/73x/b-segment-routing-cg-ncs5500-73x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5500 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5700" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/75x/b-segment-routing-cg-ncs5500-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5700 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-8000" target="https://www.cisco.com/c/en/us/td/docs/iosxr/cisco8000/segment-routing/75x/b-segment-routing-cg-cisco8000-75x/configuring-segment-routing-over-ipv6-srv6-micro-sids.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco 8000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="04"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-ASR9000" target="https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r7-5/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco ASR 9000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-NOKIA-20.10" target="https://documentation.nokia.com/sr/22-10/books/Segment%20Routing%20and%20PCE%20User%20Guide/segment-rout-with-ipv6-data-plane-srv6.html">
  <front>
    <title>Segment Routing and PCE User Guide</title>
    <author >
      <organization>Nokia</organization>
    </author>
    <date year="2022" month="December"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-LINUX" target="https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=cec9d59e89362809f17f2d854faf52966216da13">
  <front>
    <title>Add NEXT-C-SID support for SRv6 End behavior</title>
    <author initials="P." surname="Abeni" fullname="Paolo Abeni">
      <organization></organization>
    </author>
    <date year="2022" month="September" day="20"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SONIC" target="https://github.com/sonic-net/SONiC/blob/master/doc/srv6/SRv6_uSID.md">
  <front>
    <title>SONiC uSID</title>
    <author initials="S." surname="Shah" fullname="Shitanshu Shah">
      <organization></organization>
    </author>
    <author initials="R." surname="Sudarshan" fullname="Reshma Sudarshan">
      <organization></organization>
    </author>
    <date year="2022" month="August" day="21"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SAI" target="https://github.com/opencomputeproject/SAI/pull/1231/commits/02e58d95ad966ca9efc24eb9e0c0fa10b21de2a4">
  <front>
    <title>Added new behaviors to support uSID instruction</title>
    <author initials="A." surname="Agrawal" fullname="Ashutosh Agrawal">
      <organization></organization>
    </author>
    <date year="2021" month="June" day="08"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-VPP" target="https://s3-docs.fd.io/vpp/23.02/cli-reference/clis/clicmd_src_vnet_srv6.html">
  <front>
    <title>Srv6 cli reference</title>
    <author >
      <organization>FD.io</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IMPL-OSS-P4" target="https://github.com/netgroup/p4-srv6-usid">
  <front>
    <title>SRv6 uSID (micro SID) implementation on P4</title>
    <author initials="S." surname="Salsano" fullname="Stefano Salsano">
      <organization></organization>
    </author>
    <author initials="A." surname="Tulumello" fullname="Angelo Tulumello">
      <organization></organization>
    </author>
    <date year="2021" month="January" day="03"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-ONOS" target="https://wiki.opennetworking.org/display/COM/Stratum+CMCC+G-SRv6+Project">
  <front>
    <title>Stratum CMCC G-SRv6 Project</title>
    <author >
      <organization>Open Networking Foundation</organization>
    </author>
    <date year="2021" month="March" day="24"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-OPEN-SRV6" target="http://opensrv6.org.cn/en/srv6-2/">
  <front>
    <title>Open SRv6 Project</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EANTC-23" target="https://eantc.de/fileadmin/eantc/downloads/events/2023/EANTC-InteropTest2023-TestReport.pdf">
  <front>
    <title>Multi-Vendor MPLS SDN Interoperability Test Report</title>
    <author >
      <organization>European Advanced Networking Test Center (EANTC)</organization>
    </author>
    <date year="2023" month="April" day="18"/>
  </front>
</reference>


    </references>


<?line 1347?>

<section removeInRFC="true" anchor="open-issues"><name>Open Issues</name>

<t>This section was added as requested by the SPRING chair in <xref target="EMAIL1"/>.</t>

<t>Issues raised during and after the adoption call for this draft are
tracked in an issue tracker. The remainder of this section identifies
the most significant open issues, from the adoption call, for the
working group to keep track of.</t>

<t>As a reminder to those reading this section, this document is a work in
progress, and subject to change by the working group.  As noted at the
front of this document, &quot;It is inappropriate to use Internet-Drafts as
reference material&quot;</t>

<t><list style="symbols">
  <t>Given that the working group has said that it wants to standardize one
data plane solution, and given that the document contains multiple SRv6
EndPoint behaviors that some WG members have stated are multiple data
plane solutions, the working group will address whether this is valid
and coherent with its one data plane solution objective.</t>
  <t>As reminded in the conclusion of the adoption call, this document is
subject to the policy announced by the SPRING chairs in
<xref target="EMAIL2"/>.
In particular, this means that this document can not go to WG last call
until 6man completes handling of an Internet Draft that deals with the
relationship of C-SIDs to RFC 4291.  It is hoped and expected that said
resolution will be a WG last call and document approval in 6man of a
document providing for the way that C-SIDs use the IPv6 destination
address field.</t>
</list></t>

</section>
<section anchor="complete-pseudocodes"><name>Complete pseudocodes</name>

<t>The content of this section is purely informative rendering of the pseudocodes of <xref target="RFC8986"/> with the modifications in this document. This rendering may not be used as a reference.</t>

<section anchor="sec-next-end-complete"><name>End with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
S02. If (Segments Left == 0) {
S03.    Stop processing the SRH, and proceed to process the next
          header in the packet, whose type is identified by
          the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.    Send an ICMP Time Exceeded message to the Source Address
          with Code 0 (Hop limit exceeded in transit),
          interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.    Send an ICMP Parameter Problem to the Source Address
          with Code 0 (Erroneous header field encountered)
          and Pointer set to the Segments Left field,
          interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Submit the packet to the egress IPv6 FIB lookup for
        transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-end-complete"><name>End with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.       Submit the packet to the egress IPv6 FIB lookup for
            transmission to the new destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="L." surname="Aihua" fullname="Liu Aihua">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liu.aihua@zte.com.cn</email>
      </address>
    </contact>
    <contact initials="D." surname="Cai" fullname="Dennis Cai">
      <organization>Alibaba</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>d.cai@alibaba-inc.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Dukes" fullname="Darren Dukes">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>ddukes@cisco.com</email>
      </address>
    </contact>
    <contact initials="J." surname="Guichard" fullname="James N Guichard">
      <organization>Futurewei Technologies Ltd.</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>james.n.guichard@futurewei.com</email>
      </address>
    </contact>
    <contact initials="C." surname="Li" fullname="Cheng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>c.l@huawei.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Raszuk" fullname="Robert Raszuk">
      <organization>NTT Network Innovations</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>robert@raszuk.net</email>
      </address>
    </contact>
    <contact initials="K." surname="Talaulikar" fullname="Ketan Talaulikar">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>ketant.ietf@gmail.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Voyer" fullname="Daniel Voyer">
      <organization>Bell Canada</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>daniel.voyer@bell.ca</email>
      </address>
    </contact>
    <contact initials="S." surname="Zadok" fullname="Shay Zadok">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>shay.zadok@broadcom.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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

-->

</rfc>

