<?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.5 (Ruby 3.1.2) -->


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

<!ENTITY RFC8200 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!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 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 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 RFC9352 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9352.xml">
<!ENTITY RFC9513 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9513.xml">
<!ENTITY RFC9514 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9514.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-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-sr-policy-safi SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-sr-policy-safi.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">
]>


<rfc ipr="trust200902" docName="draft-ietf-spring-srv6-srh-compression-18" 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="2024" month="July" day="22"/>

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

    <abstract>


<?line 243?>

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



    </abstract>



  </front>

  <middle>


<?line 247?>

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

<t>The Segment Routing (SR) architecture <xref target="RFC8402"/> describes two data plane instantiations of SR: SR over MPLS (SR-MPLS) and SR over IPv6 (SRv6).</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>Some SRv6 applications such as strict path traffic engineering may require long segment lists. Compressing the encoding of these long segment lists in the packet header can significantly reduce the header size. 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="RFC9513"/>, 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 SID 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 consecutive uncompressed SIDs in a SID list.</t>
  <t>Compressed SID list: A segment list encoding that reduces the packet header length thanks to one or more C-SID sequences. A compressed SID list also contains zero, one, or more uncompressed SID sequences.</t>
  <t>Global Identifiers Block (GIB): The pool of C-SID values available for global allocation.</t>
  <t>Local Identifiers Block (LIB): The pool of C-SID values available for local allocation.</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 seeks to decrease 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 leverages a SID list compression logic on the SR source node (<xref target="sec-source-node"/>) in combination with new flavors of the base SRv6 segment endpoint behaviors that process the compressed SID list (<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 SIDs instantiated on 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 (see <xref target="sec-future"/>).</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 SID to be processed, but employ different SID 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>SRv6 is intended for use in a variety of networks that require different prefix lengths and SID numbering spaces. Each of the two flavors introduced in this document comes with its own recommendations for Locator-Block and C-SID length, as specified in <xref target="sec-next"/> and <xref target="sec-replace"/>. These flavors are best suited for different environments, depending on the requirements of the network. For instance, larger C-SID lengths may be more suitable for networks requiring ample SID numbering space, while smaller C-SID lengths are better for compression efficiency. The two compression flavors allow the compressed segment list encoding to adapt to a range of requirements, with support for multiple compression levels. Network operators can choose the flavor that best suits their use case, deployment design, and network scale.</t>

<t>Both C-SID flavors can coexist in the same SR domain, on the same SR segment endpoint node, and even in the same segment list. However, operators should generally avoid instantiating SIDs of different C-SID flavors within the same routing domain since these SIDs have different length and allocation recommendations. 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 Penultimate Segment Pop (PSP), Ultimate Segment Pop (USP), and Ultimate Segment Decapsulation (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"/> at the end of the document.</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 structured as shown in <xref target="fig-next-struct"/>. 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) (floor(x) is the greatest integer less than or equal to x <xref target="GKP94"/>). 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>When a C-SID sequence comprises at least two C-SIDs, the last C-SID in the 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 the updated destination address resulting from the processing of the previous C-SID in the sequence is a valid form for that last SID. Line S12 of the first pseudocode in <xref target="sec-source-compression"/> provides sufficient conditions to ensure this property.</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"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="552" viewBox="0 0 552 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,80" fill="none" stroke="black"/>
<path d="M 208,40 L 208,72" fill="none" stroke="black"/>
<path d="M 280,40 L 280,72" fill="none" stroke="black"/>
<path d="M 544,32 L 544,80" fill="none" stroke="black"/>
<path d="M 8,32 L 544,32" fill="none" stroke="black"/>
<path d="M 8,80 L 544,80" fill="none" stroke="black"/>
<path d="M 16,96 L 200,96" fill="none" stroke="black"/>
<path d="M 216,96 L 272,96" fill="none" stroke="black"/>
<path d="M 288,96 L 536,96" fill="none" stroke="black"/>
<polygon class="arrowhead" points="544,96 532,90.4 532,101.6" fill="black" transform="rotate(0,536,96)"/>
<polygon class="arrowhead" points="296,96 284,90.4 284,101.6" fill="black" transform="rotate(180,288,96)"/>
<polygon class="arrowhead" points="280,96 268,90.4 268,101.6" fill="black" transform="rotate(0,272,96)"/>
<polygon class="arrowhead" points="224,96 212,90.4 212,101.6" fill="black" transform="rotate(180,216,96)"/>
<polygon class="arrowhead" points="208,96 196,90.4 196,101.6" fill="black" transform="rotate(0,200,96)"/>
<polygon class="arrowhead" points="24,96 12,90.4 12,101.6" fill="black" transform="rotate(180,16,96)"/>
<g class="text">
<text x="104" y="52">Locator-Block</text>
<text x="244" y="52">Loc-Node</text>
<text x="412" y="52">Argument</text>
<text x="244" y="68">Function</text>
<text x="104" y="116">LBL</text>
<text x="244" y="116">LNFL</text>
<text x="412" y="116">AL</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+------------------------------------------------------------------+
|     Locator-Block      |Loc-Node|            Argument            |
|                        |Function|                                |
+------------------------------------------------------------------+
 <----------------------> <------> <------------------------------>
           LBL              LNFL                  AL
]]></artwork></artset></figure>

<t><xref target="fig-next-csid-list"/> illustrates a compressed SID list as could be produced by an SR source node steering a packet into an SR policy SID list of eight NEXT-C-SID flavor SIDs. All SIDs in this example have a 48-bit Locator-Block, 16-bit combined Locator-Node and Function, and 64-bit Argument. The SR source node compresses the SR policy SID list as a compressed SID list of two C-SID containers. The first C-SID container carries a Locator-Block and the first five C-SIDs. The second C-SID container carries a Locator-Block and the sixth, seventh, and eighth C-SIDs. Since the SR source node does not use the second C-SID container at full capacity, it sets the 32 least significant bits to zero. With reduced SRH, the SR source node sets the IPv6 Destination Address (DA) with the value of the first C-SID container and the first (and only) element of the SRH Segment List with the value of the second C-SID container.</t>

<figure title="Compressed SID list of eight NEXT-C-SID flavor SIDs with a 48-bit Locator-Block, 16-bit combined Locator-Node and Function, and 64-bit Argument" anchor="fig-next-csid-list"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="528" viewBox="0 0 528 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,64 L 8,192" fill="none" stroke="black"/>
<path d="M 8,272 L 8,400" fill="none" stroke="black"/>
<path d="M 264,96 L 264,192" fill="none" stroke="black"/>
<path d="M 264,304 L 264,368" fill="none" stroke="black"/>
<path d="M 520,64 L 520,192" fill="none" stroke="black"/>
<path d="M 520,272 L 520,400" fill="none" stroke="black"/>
<path d="M 8,64 L 520,64" fill="none" stroke="black"/>
<path d="M 264,96 L 520,96" fill="none" stroke="black"/>
<path d="M 8,128 L 520,128" fill="none" stroke="black"/>
<path d="M 8,160 L 520,160" fill="none" stroke="black"/>
<path d="M 8,192 L 520,192" fill="none" stroke="black"/>
<path d="M 8,272 L 520,272" fill="none" stroke="black"/>
<path d="M 264,304 L 520,304" fill="none" stroke="black"/>
<path d="M 8,336 L 520,336" fill="none" stroke="black"/>
<path d="M 8,368 L 520,368" fill="none" stroke="black"/>
<path d="M 8,400 L 520,400" fill="none" stroke="black"/>
<g class="text">
<text x="16" y="36">0</text>
<text x="176" y="36">1</text>
<text x="336" y="36">2</text>
<text x="496" y="36">3</text>
<text x="16" y="52">0</text>
<text x="32" y="52">1</text>
<text x="48" y="52">2</text>
<text x="64" y="52">3</text>
<text x="80" y="52">4</text>
<text x="96" y="52">5</text>
<text x="112" y="52">6</text>
<text x="128" y="52">7</text>
<text x="144" y="52">8</text>
<text x="160" y="52">9</text>
<text x="176" y="52">0</text>
<text x="192" y="52">1</text>
<text x="208" y="52">2</text>
<text x="224" y="52">3</text>
<text x="240" y="52">4</text>
<text x="256" y="52">5</text>
<text x="272" y="52">6</text>
<text x="288" y="52">7</text>
<text x="304" y="52">8</text>
<text x="320" y="52">9</text>
<text x="336" y="52">0</text>
<text x="352" y="52">1</text>
<text x="368" y="52">2</text>
<text x="384" y="52">3</text>
<text x="400" y="52">4</text>
<text x="416" y="52">5</text>
<text x="432" y="52">6</text>
<text x="448" y="52">7</text>
<text x="464" y="52">8</text>
<text x="480" y="52">9</text>
<text x="496" y="52">0</text>
<text x="512" y="52">1</text>
<text x="136" y="100">Locator-Block</text>
<text x="368" y="116">1st</text>
<text x="408" y="116">C-SID</text>
<text x="112" y="148">2nd</text>
<text x="152" y="148">C-SID</text>
<text x="368" y="148">3rd</text>
<text x="408" y="148">C-SID</text>
<text x="112" y="180">4th</text>
<text x="152" y="180">C-SID</text>
<text x="368" y="180">5th</text>
<text x="408" y="180">C-SID</text>
<text x="200" y="212">First</text>
<text x="248" y="212">C-SID</text>
<text x="312" y="212">container</text>
<text x="16" y="244">0</text>
<text x="176" y="244">1</text>
<text x="336" y="244">2</text>
<text x="496" y="244">3</text>
<text x="16" y="260">0</text>
<text x="32" y="260">1</text>
<text x="48" y="260">2</text>
<text x="64" y="260">3</text>
<text x="80" y="260">4</text>
<text x="96" y="260">5</text>
<text x="112" y="260">6</text>
<text x="128" y="260">7</text>
<text x="144" y="260">8</text>
<text x="160" y="260">9</text>
<text x="176" y="260">0</text>
<text x="192" y="260">1</text>
<text x="208" y="260">2</text>
<text x="224" y="260">3</text>
<text x="240" y="260">4</text>
<text x="256" y="260">5</text>
<text x="272" y="260">6</text>
<text x="288" y="260">7</text>
<text x="304" y="260">8</text>
<text x="320" y="260">9</text>
<text x="336" y="260">0</text>
<text x="352" y="260">1</text>
<text x="368" y="260">2</text>
<text x="384" y="260">3</text>
<text x="400" y="260">4</text>
<text x="416" y="260">5</text>
<text x="432" y="260">6</text>
<text x="448" y="260">7</text>
<text x="464" y="260">8</text>
<text x="480" y="260">9</text>
<text x="496" y="260">0</text>
<text x="512" y="260">1</text>
<text x="136" y="308">Locator-Block</text>
<text x="368" y="324">6th</text>
<text x="408" y="324">C-SID</text>
<text x="112" y="356">7th</text>
<text x="152" y="356">C-SID</text>
<text x="368" y="356">8th</text>
<text x="408" y="356">C-SID</text>
<text x="264" y="388">0</text>
<text x="196" y="420">Second</text>
<text x="248" y="420">C-SID</text>
<text x="312" y="420">container</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+         Locator-Block         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |           1st C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           2nd C-SID           |           3rd C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           4th C-SID           |           5th C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      First C-SID container

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+         Locator-Block         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |           6th C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           7th C-SID           |           8th C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               0                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     Second C-SID container
]]></artwork></artset></figure>

<t>An implementation MUST 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.</t>

<t>A deployment should use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain. Heterogeneous lengths, while possible, may impact the compression efficiency.</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 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 of this document 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. Otherwise (if the Argument value is 0), the SR segment endpoint node 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 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. }
]]></artwork></figure>

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

  <t><list style="symbols">
    <t><spanx style="verb">DA.Argument</spanx> identifies the value contained in 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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endx-complete"/>.</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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endt-complete"/>.</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.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>A rendering of the complete pseudocode is provided in <xref target="sec-next-endb6-complete"/>.</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.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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endbm-complete"/>.</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"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="560" viewBox="0 0 560 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,80" fill="none" stroke="black"/>
<path d="M 208,40 L 208,72" fill="none" stroke="black"/>
<path d="M 344,40 L 344,72" fill="none" stroke="black"/>
<path d="M 552,32 L 552,80" fill="none" stroke="black"/>
<path d="M 8,32 L 552,32" fill="none" stroke="black"/>
<path d="M 8,80 L 552,80" fill="none" stroke="black"/>
<path d="M 16,96 L 200,96" fill="none" stroke="black"/>
<path d="M 216,96 L 336,96" fill="none" stroke="black"/>
<path d="M 352,96 L 544,96" fill="none" stroke="black"/>
<polygon class="arrowhead" points="552,96 540,90.4 540,101.6" fill="black" transform="rotate(0,544,96)"/>
<polygon class="arrowhead" points="360,96 348,90.4 348,101.6" fill="black" transform="rotate(180,352,96)"/>
<polygon class="arrowhead" points="344,96 332,90.4 332,101.6" fill="black" transform="rotate(0,336,96)"/>
<polygon class="arrowhead" points="224,96 212,90.4 212,101.6" fill="black" transform="rotate(180,216,96)"/>
<polygon class="arrowhead" points="208,96 196,90.4 196,101.6" fill="black" transform="rotate(0,200,96)"/>
<polygon class="arrowhead" points="24,96 12,90.4 12,101.6" fill="black" transform="rotate(180,16,96)"/>
<g class="text">
<text x="104" y="52">Locator-Block</text>
<text x="276" y="52">Locator-Node</text>
<text x="444" y="52">Argument</text>
<text x="240" y="68">+</text>
<text x="284" y="68">Function</text>
<text x="104" y="116">LBL</text>
<text x="276" y="116">LNFL</text>
<text x="444" y="116">AL</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+-------------------------------------------------------------------+
|     Locator-Block      |  Locator-Node  |        Argument         |
|                        |   + Function   |                         |
+-------------------------------------------------------------------+
 <----------------------> <--------------> <----------------------->
           LBL                  LNFL                  AL
]]></artwork></artset></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"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="560" viewBox="0 0 560 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,80" fill="none" stroke="black"/>
<path d="M 144,40 L 144,72" fill="none" stroke="black"/>
<path d="M 280,40 L 280,72" fill="none" stroke="black"/>
<path d="M 416,40 L 416,72" fill="none" stroke="black"/>
<path d="M 552,32 L 552,80" fill="none" stroke="black"/>
<path d="M 8,32 L 552,32" fill="none" stroke="black"/>
<path d="M 8,80 L 552,80" fill="none" stroke="black"/>
<path d="M 16,96 L 136,96" fill="none" stroke="black"/>
<path d="M 152,96 L 272,96" fill="none" stroke="black"/>
<path d="M 288,96 L 408,96" fill="none" stroke="black"/>
<path d="M 424,96 L 544,96" fill="none" stroke="black"/>
<polygon class="arrowhead" points="552,96 540,90.4 540,101.6" fill="black" transform="rotate(0,544,96)"/>
<polygon class="arrowhead" points="432,96 420,90.4 420,101.6" fill="black" transform="rotate(180,424,96)"/>
<polygon class="arrowhead" points="416,96 404,90.4 404,101.6" fill="black" transform="rotate(0,408,96)"/>
<polygon class="arrowhead" points="296,96 284,90.4 284,101.6" fill="black" transform="rotate(180,288,96)"/>
<polygon class="arrowhead" points="280,96 268,90.4 268,101.6" fill="black" transform="rotate(0,272,96)"/>
<polygon class="arrowhead" points="160,96 148,90.4 148,101.6" fill="black" transform="rotate(180,152,96)"/>
<polygon class="arrowhead" points="144,96 132,90.4 132,101.6" fill="black" transform="rotate(0,136,96)"/>
<polygon class="arrowhead" points="24,96 12,90.4 12,101.6" fill="black" transform="rotate(180,16,96)"/>
<g class="text">
<text x="52" y="52">Fourth</text>
<text x="104" y="52">C-SID</text>
<text x="184" y="52">Third</text>
<text x="232" y="52">C-SID</text>
<text x="324" y="52">Second</text>
<text x="376" y="52">C-SID</text>
<text x="456" y="52">First</text>
<text x="504" y="52">C-SID</text>
<text x="64" y="68">(position</text>
<text x="116" y="68">0)</text>
<text x="200" y="68">(position</text>
<text x="252" y="68">1)</text>
<text x="336" y="68">(position</text>
<text x="388" y="68">2)</text>
<text x="472" y="68">(position</text>
<text x="524" y="68">3)</text>
<text x="76" y="116">LNFL</text>
<text x="212" y="116">LNFL</text>
<text x="348" y="116">LNFL</text>
<text x="484" y="116">LNFL</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![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></artset></figure>

<t><xref target="fig-replace-csid-list"/> illustrates a compressed SID list as could be produced by an SR source node steering a packet into an SR policy SID list of seven REPLACE-C-SID flavor SIDs. All SIDs in this example have a 48-bit Locator-Block, 32-bit combined Locator-Node and Function, and 48-bit Argument. The SR source node compresses the SR policy SID list as a compressed SID list of three C-SID containers. The first C-SID container is in fully formed 128-bit SID format. It carries a Locator-Block, the first C-SID, and the argument value zero. The second and third C-SID containers are in packed format. The second C-SID container carries the second, third, fourth, and fifth C-SIDs. The third C-SID container carries the sixth and seventh C-SIDs. Since the SR source node does not use the third C-SID container at full capacity, it sets the 64 least significant bits to zero. With reduced SRH, the SR source node sets the IPv6 DA with the value of the first C-SID container, sets the first element in the SRH Segment List with the value of the third C-SID container, and sets the second element of the SRH Segment List with the value of the second C-SID container (the elements in the SRH Segment List appear in reversed order of their processing, as specified in Section 4.1 of <xref target="RFC8754"/>).</t>

<figure title="Compressed SID list of seven REPLACE-C-SID flavor SIDs with a 48-bit Locator-Block, 32-bit combined Locator-Node and Function, and 48-bit Argument" anchor="fig-replace-csid-list"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="640" width="528" viewBox="0 0 528 640" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,64 L 8,192" fill="none" stroke="black"/>
<path d="M 8,272 L 8,400" fill="none" stroke="black"/>
<path d="M 8,480 L 8,608" fill="none" stroke="black"/>
<path d="M 264,96 L 264,160" fill="none" stroke="black"/>
<path d="M 520,64 L 520,192" fill="none" stroke="black"/>
<path d="M 520,272 L 520,400" fill="none" stroke="black"/>
<path d="M 520,480 L 520,608" fill="none" stroke="black"/>
<path d="M 8,64 L 520,64" fill="none" stroke="black"/>
<path d="M 264,96 L 520,96" fill="none" stroke="black"/>
<path d="M 8,128 L 520,128" fill="none" stroke="black"/>
<path d="M 8,160 L 264,160" fill="none" stroke="black"/>
<path d="M 8,192 L 520,192" fill="none" stroke="black"/>
<path d="M 8,272 L 520,272" fill="none" stroke="black"/>
<path d="M 8,304 L 520,304" fill="none" stroke="black"/>
<path d="M 8,336 L 520,336" fill="none" stroke="black"/>
<path d="M 8,368 L 520,368" fill="none" stroke="black"/>
<path d="M 8,400 L 520,400" fill="none" stroke="black"/>
<path d="M 8,480 L 520,480" fill="none" stroke="black"/>
<path d="M 8,544 L 520,544" fill="none" stroke="black"/>
<path d="M 8,576 L 520,576" fill="none" stroke="black"/>
<path d="M 8,608 L 520,608" fill="none" stroke="black"/>
<g class="text">
<text x="16" y="36">0</text>
<text x="176" y="36">1</text>
<text x="336" y="36">2</text>
<text x="496" y="36">3</text>
<text x="16" y="52">0</text>
<text x="32" y="52">1</text>
<text x="48" y="52">2</text>
<text x="64" y="52">3</text>
<text x="80" y="52">4</text>
<text x="96" y="52">5</text>
<text x="112" y="52">6</text>
<text x="128" y="52">7</text>
<text x="144" y="52">8</text>
<text x="160" y="52">9</text>
<text x="176" y="52">0</text>
<text x="192" y="52">1</text>
<text x="208" y="52">2</text>
<text x="224" y="52">3</text>
<text x="240" y="52">4</text>
<text x="256" y="52">5</text>
<text x="272" y="52">6</text>
<text x="288" y="52">7</text>
<text x="304" y="52">8</text>
<text x="320" y="52">9</text>
<text x="336" y="52">0</text>
<text x="352" y="52">1</text>
<text x="368" y="52">2</text>
<text x="384" y="52">3</text>
<text x="400" y="52">4</text>
<text x="416" y="52">5</text>
<text x="432" y="52">6</text>
<text x="448" y="52">7</text>
<text x="464" y="52">8</text>
<text x="480" y="52">9</text>
<text x="496" y="52">0</text>
<text x="512" y="52">1</text>
<text x="136" y="100">Locator-Block</text>
<text x="368" y="116">1st</text>
<text x="408" y="116">C-SID</text>
<text x="72" y="148">1st</text>
<text x="112" y="148">C-SID</text>
<text x="176" y="148">continued</text>
<text x="392" y="164">0</text>
<text x="200" y="212">First</text>
<text x="248" y="212">C-SID</text>
<text x="312" y="212">container</text>
<text x="16" y="244">0</text>
<text x="176" y="244">1</text>
<text x="336" y="244">2</text>
<text x="496" y="244">3</text>
<text x="16" y="260">0</text>
<text x="32" y="260">1</text>
<text x="48" y="260">2</text>
<text x="64" y="260">3</text>
<text x="80" y="260">4</text>
<text x="96" y="260">5</text>
<text x="112" y="260">6</text>
<text x="128" y="260">7</text>
<text x="144" y="260">8</text>
<text x="160" y="260">9</text>
<text x="176" y="260">0</text>
<text x="192" y="260">1</text>
<text x="208" y="260">2</text>
<text x="224" y="260">3</text>
<text x="240" y="260">4</text>
<text x="256" y="260">5</text>
<text x="272" y="260">6</text>
<text x="288" y="260">7</text>
<text x="304" y="260">8</text>
<text x="320" y="260">9</text>
<text x="336" y="260">0</text>
<text x="352" y="260">1</text>
<text x="368" y="260">2</text>
<text x="384" y="260">3</text>
<text x="400" y="260">4</text>
<text x="416" y="260">5</text>
<text x="432" y="260">6</text>
<text x="448" y="260">7</text>
<text x="464" y="260">8</text>
<text x="480" y="260">9</text>
<text x="496" y="260">0</text>
<text x="512" y="260">1</text>
<text x="240" y="292">5th</text>
<text x="280" y="292">C-SID</text>
<text x="240" y="324">4th</text>
<text x="280" y="324">C-SID</text>
<text x="240" y="356">3rd</text>
<text x="280" y="356">C-SID</text>
<text x="240" y="388">2nd</text>
<text x="280" y="388">C-SID</text>
<text x="196" y="420">Second</text>
<text x="248" y="420">C-SID</text>
<text x="312" y="420">container</text>
<text x="16" y="452">0</text>
<text x="176" y="452">1</text>
<text x="336" y="452">2</text>
<text x="496" y="452">3</text>
<text x="16" y="468">0</text>
<text x="32" y="468">1</text>
<text x="48" y="468">2</text>
<text x="64" y="468">3</text>
<text x="80" y="468">4</text>
<text x="96" y="468">5</text>
<text x="112" y="468">6</text>
<text x="128" y="468">7</text>
<text x="144" y="468">8</text>
<text x="160" y="468">9</text>
<text x="176" y="468">0</text>
<text x="192" y="468">1</text>
<text x="208" y="468">2</text>
<text x="224" y="468">3</text>
<text x="240" y="468">4</text>
<text x="256" y="468">5</text>
<text x="272" y="468">6</text>
<text x="288" y="468">7</text>
<text x="304" y="468">8</text>
<text x="320" y="468">9</text>
<text x="336" y="468">0</text>
<text x="352" y="468">1</text>
<text x="368" y="468">2</text>
<text x="384" y="468">3</text>
<text x="400" y="468">4</text>
<text x="416" y="468">5</text>
<text x="432" y="468">6</text>
<text x="448" y="468">7</text>
<text x="464" y="468">8</text>
<text x="480" y="468">9</text>
<text x="496" y="468">0</text>
<text x="512" y="468">1</text>
<text x="264" y="516">0</text>
<text x="240" y="564">7th</text>
<text x="280" y="564">C-SID</text>
<text x="240" y="596">6th</text>
<text x="280" y="596">C-SID</text>
<text x="200" y="628">Third</text>
<text x="248" y="628">C-SID</text>
<text x="312" y="628">container</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+         Locator-Block         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |           1st C-SID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      1st C-SID continued      |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               0               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      First C-SID container

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           5th C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           4th C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           3rd C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           2nd C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     Second C-SID container

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                               0                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           7th C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           6th C-SID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      Third C-SID container
]]></artwork></artset></figure>

<t>The REPLACE-C-SID flavor SIDs support any Locator-Block length (LBL), depending on the needs of the operator, as long as it does not exceed 128-LNFL-ceiling(log_2(128/LNFL)) (ceiling(x) is the least integer greater than or equal to x <xref target="GKP94"/>), so that enough bits remain available for the C-SID and Argument. A Locator-Block length of 48, 56, 64, 72, or 80 bits is recommended for easier reading in operation.</t>

<t>This document defines the REPLACE-C-SID flavor for 16-bit and 32-bit C-SID lengths (LNFL). An implementation MUST support a 32-bit C-SID length for REPLACE-C-SID flavor SIDs.</t>

<t>A deployment should use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain. Heterogeneous C-SID lengths, while possible, may impact the compression efficiency.</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 ceiling(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 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 value contained in the bits <spanx style="verb">[(128-ceiling(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 value contained in 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 lines 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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endx-complete"/>.</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 lines 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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endt-complete"/>.</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 lines 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>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endb6-complete"/>.</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 lines 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>

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

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

<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, or End.DT2U SID with the REPLACE-C-SID flavor, the corresponding procedure described in Sections 4.4 through 4.11 of <xref target="RFC8986"/> is executed.</t>

<t>These SIDs differ from those defined in <xref target="RFC8986"/> by the presence of an Argument as part of the SID structure. The Argument value is ignored by the SR segment endpoint node.</t>

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

<t>For any End.DT2M SID with the REPLACE-C-SID flavor, the value of <spanx style="verb">Arg.FE2</spanx> is 16-bit long. The SR segment endpoint node obtains the value <spanx style="verb">Arg.FE2</spanx> from the 16 most significant bits of <spanx style="verb">DA.Argument</spanx> if <spanx style="verb">DA.Arg.Index</spanx> is zero, or from the 16 least significant bits of the next position in the current C-SID container (<spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx>) otherwise (<spanx style="verb">DA.Arg.Index</spanx> 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 lines 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 value contained in 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, a deployment may divide it into two non-overlapping sub-spaces: a Global Identifiers Block (GIB) and a Local Identifiers Block (LIB).</t>

<t>The 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 SR segment endpoint nodes using SRv6 locators under a Locator-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 can 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>Section 4.3 of <xref target="RFC8754"/> defines how an SR segment endpoint node identifies a locally instantiated SRv6 SID. To ensure that any valid argument value is accepted, an SR segment endpoint node instantiating a NEXT-C-SID or REPLACE-C-SID flavor SID should install a corresponding FIB entry that matches only the Locator and Function parts of the SID (i.e., with a prefix length of LBL + LNL + FL).</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 longest prefix match (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>

<t>An SR source node may learn from a control plane protocol (see <xref target="sec-control-plane"/>) or local configuration the SIDs that it can use in a segment list, along with their respective SR segment endpoint behavior, flavors, structure, and any other relevant attribute (e.g., the set of L3 adjacencies associated with an End.X SID).</t>

<section anchor="sid-validation-for-compression"><name>SID Validation for Compression</name>

<t>As part of the compression process or as a preliminary step, the SR source node MUST validate the SID structure of each SID of this document in the segment list. The SR source node does so 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-sr-policy-safi"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>).</t>

<t>A SID structure is valid for compression if it meets all the following conditions.</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>When compressing a SID list, the SR source node MUST treat an invalid SID structure as unknown. A SID with an unknown SID structure is incompressible.</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. The SID structure may also be learned through configuration or
other management protocols. The details of such mechanisms are outside the scope of this document.</t>

</section>
<section anchor="sec-source-compression"><name>Segment List Compression</name>

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

<t>It is out of the scope of this document to describe the mechanism through which an uncompressed SID list is derived. As a general guidance for implementation or future specification, such a mechanism should aim to select the combination of SIDs that would result in the shortest compressed SID list. For example, by selecting a C-SID flavor SID over an equivalent non-C-SID flavor SID or by consistently selecting SIDs of the same C-SID flavor within each routing domain.</t>

<t>The SID 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 express the same list of segments as the original SID list. If these rules are not followed, the packet may get dropped or misrouted.</t>

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

<t>This method walks the uncompressed SID 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 SID 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 SID list
       (following the series of compressible NEXT-C-SID flavor SIDs){
S11.   Set S to the next SID in the uncompressed SID 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 SID 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 SID 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 SID list {
S04.   Set S to the current SID in the uncompressed SID 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 SID 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 SID list
]]></artwork></figure>

<aside>
  <t>Note: When the last C-SID is an End.DT2M SID with the REPLACE-C-SID flavor, if there is 0 or at least two C-SID positions left in the current C-SID container, the C-SID is encoded as described above and the value of the Arg.FE2 argument is placed in the 16 least significant bits of the next C-SID position. Otherwise (if there is only one C-SID position left in the current C-SID container), the current C-SID container is pushed onto the SID list (the value of the C-SID position 0 remains zero) and the End.DT2M SID with the REPLACE-C-SID flavor is encoded in full SID format with the value of the Arg.FE2 argument in the 16 most significant bits of the SID Argument.</t>
</aside>

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

<t>Regardless of how a compressed SID list is produced, the SR source node writes it in the IPv6 packet as described in Sections 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
  <xref target="RFC8200"></xref>.</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 be performed at the penultimate segment along the path instead, the SR source node MUST NOT compress the ultimate SID of the SID 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 SID 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 anchor="sec-source-checksum"><name>Upper-Layer Checksums</name>

<t>The Destination Address used in the IPv6 pseudo-header (Section 8.1 of <xref target="RFC8200"/>) is that of the ultimate destination.</t>

<t>At the SR source node, that address will be the Destination Address as it is expected to be received by the ultimate destination. When the last element in the compressed SID list is a C-SID container, this address can be obtained from the last element in the uncompressed SID list or by repeatedly applying the segment behavior as described in <xref target="sec-operations-icmp-error"/>. This applies regardless of whether an SRH is present in the IPv6 packet or omitted.</t>

<t>At the ultimate destination(s), that address will be in the Destination Address field of the IPv6 header.</t>

</section>
</section>
<section anchor="inter-domain-compression"><name>Inter-Domain Compression</name>

<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>A property of a C-SID sequence is that all C-SIDs in the sequence share the same Locator-Block. Therefore, a segment list that spans across multiple routing domains using different Locator-Blocks may need a separate C-SID sequence for each domain.</t>

<t>This section defines an OPTIONAL solution to improve the efficiency of C-SID compression in multi-domain environments by enabling a C-SID sequence to combine C-SIDs having different Locator-Blocks.</t>

<t>The solution leverages two new SR segment endpoint behaviors, &quot;Endpoint with SRv6 Prefix Swap&quot; (&quot;End.PS&quot; for short) and &quot;Endpoint with L3 cross-connect and SRv6 Prefix Swap&quot; (&quot;End.XPS&quot; for short), that enable modifying the Locator-Block for the next C-SID in the C-SID sequence at the routing domain boundary.</t>

<section anchor="endps-prefix-swap"><name>End.PS: Prefix Swap</name>

<t>The End.PS behavior is a variant of the End behavior that modifies the Locator-Block of the active C-SID sequence. This document defines the End.PS behavior with the NEXT-C-SID flavor and the End.PS behavior with the REPLACE-C-SID flavor.</t>

<t>An End.PS SID is used to transition to a new Locator-Block when the routing domain boundary is on the SR segment endpoint node.</t>

<t>Each instance of an End.PS SID is associated with a target Locator-Block B2/m, where B2 is an IPv6 address prefix and m is the associated prefix length. The target Locator-Block is a local property of the End.PS SID on the SR segment endpoint node.</t>

<aside>
  <t>Note: a local SID property is an attribute associated with the SID when it is instantiated on the SR segment endpoint node. When the SR segment endpoint node identifies the destination address of a received packet as a locally instantiated SID, it also retrieves any local property associated with this SID. Other examples of local SID properties include the set of L3 adjacencies of an End.X SID (Section 4.2 of <xref target="RFC8986"/>) and the lookup table of an End.DT6 SID (Section 4.6 of <xref target="RFC8986"/>).</t>
</aside>

<t>The means by which an SR source node learns the target Locator-Block associated with an End.PS SID are outside the scope of this document. As examples, it could be learnt via configuration or signaled by a controller.</t>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.PS SID with the NEXT-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-next-end"/> with the lines N05 to N06 replaced as follows.</t>

<figure><artwork><![CDATA[
N05.1. Initialize an IPv6 address A equal to B2.
N05.2. Copy DA.Argument into the bits [m..(m+AL-1)] of A.
N06.   Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.PS SID with the REPLACE-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-replace-end"/> with the line R20 replaced as follows.</t>

<figure><artwork><![CDATA[
R20.1. Initialize an IPv6 address A equal to B2.
R20.2. Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [m..m+LNFL-1] of the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
</section>
<section anchor="endxps-l3-cross-connect-and-prefix-swap"><name>End.XPS: L3 Cross-Connect and Prefix Swap</name>

<t>The End.XPS behavior is a variant of the End.X behavior that modifies the Locator-Block of the active C-SID sequence. This document defines the End.XPS behavior with the NEXT-C-SID flavor and the End.XPS behavior with the REPLACE-C-SID flavor.</t>

<t>An End.XPS SID is used to transition to a new Locator-Block when the routing domain boundary is on a link adjacent to the SR segment endpoint node.</t>

<t>Each instance of an End.XPS SID is associated with a target Locator-Block B2/m and a set, J, of one or more L3 adjacencies. The target Locator-Block and set of adjacencies are local properties of the End.XPS SID on the SR segment endpoint node.</t>

<t>The means by which an SR source node learns the target Locator-Block associated with an End.XPS SID are outside the scope of this document. As examples, it could be learnt via configuration or signaled by a controller.</t>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XPS SID with the NEXT-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-next-endx"/> with the lines N05 to N06 (of the pseudocode in <xref target="sec-next-end"/>) replaced as follows.</t>

<figure><artwork><![CDATA[
N05.1. Initialize an IPv6 address A equal to B2.
N05.2. Copy DA.Argument into the bits [m..(m+AL-1)] of A.
N06.   Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XPS SID with the REPLACE-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-replace-endx"/> with the line R20 (of the pseudocode in <xref target="sec-replace-end"/>) replaced as follows.</t>

<figure><artwork><![CDATA[
R20.1. Initialize an IPv6 address A equal to B2.
R20.2. Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [m..m+LNFL-1] of the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
</section>
</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="RFC9513"/></t>
  <t>BGP <xref target="RFC9252"/>, <xref target="RFC9514"/>, <xref target="I-D.ietf-idr-sr-policy-safi"/></t>
  <t>BGP-LS <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="RFC9513"/>, or BGP-LS <xref target="RFC9514"/>).</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 SID 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., Section 8 of <xref target="RFC9352"/> and Section 9 of <xref target="RFC9513"/> 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-sr-policy-safi"/> 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 SID list as described in <xref target="sec-source-node"/>.</t>

<t>When a node that does not support this specification receives an advertisement of a SID of this document, it handles it as described in the corresponding control plane specification (e.g., Sections 7.2, 8.1, and 8.2 of <xref target="RFC9352"/>, Sections 8, 9.1, and 9.2 of <xref target="RFC9513"/>, and Section 3.1 of <xref target="RFC9252"/>).</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 intermediate segments. This operation is illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document, with or without intermediate segments, the SR source node MUST construct the IPv6 packet as described in <xref target="sec-source-node"/>, including computing the ICMPv6 checksum as described in <xref target="sec-source-checksum"/>.</t>

<t>In particular, when pinging a SID of this document without intermediate segments, the SR source node places the SID with Argument value 0 in the destination address of the ICMPv6 echo request and computes the ICMPv6 checksum using this SID as the destination address in the IPv6 pseudo-header. 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.</t>

<t>An operator originating ICMP echo requests to a NEXT-C-SID or REPLACE-C-SID flavor SID using the simplified SR source node processing described in the previous paragraph should ensure that the SID Argument is 0.</t>

</section>
<section anchor="sec-operations-icmp-error"><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 SID list in the invoking packet, it can perform this operation for all the SIDs in the packet.</t>

</section>
<section anchor="upper-layer-checksum-considerations"><name>Upper Layer Checksum Considerations</name>

<t>Upper layer checksums are computed by the originator of an IPv6 packet and verified by the ultimate destination(s) as it processes the upper layer protocol.</t>

<t>As specified in <xref target="sec-source-checksum"/>, SR source nodes originating TCP/UDP packets ensure that the upper layer checksum is correctly calculated based on the ultimate destination of the session, which may be different from the address placed in the IPv6 destination address. Such SR source nodes leveraging TCP/UDP offload engines may require enhancements to convey the ultimate destination address. These implementation enhancements are outside the scope of this document.</t>

<t>It was reported that some network node implementations, including middleboxes such as packet sniffers and one software router implementation, may attempt to verify the upper layer checksum of transit IPv6 packets. These nodes, if deployed inside the SR domain, may fail to verify the upper layer checksum of transit SRv6 traffic, possibly resulting in dropped packets or in the inability to carry out their function. Making these implementations SRv6 aware in general or C-SID aware in particular is out of the scope of this document.</t>

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

<t>RFC-Editor: Please clean up the references cited by this section before publication.</t>

<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="ciena"><name>Ciena</name>

<t>Ciena 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 shortest path forwarding (in algorithm 0 and Flex-Algo), remote and TI-LFA repair tunnel, and Traffic Engineering functionalities.</t>

<t>The following platforms support implementation of the above.</t>

<t><list style="symbols">
  <t>Ciena 5162, 5164, 5166, 5168 routers running SAOS 10.10 or above</t>
  <t>Ciena 8110, 8112, 8190 routers running SAOS 10.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 6, 2024.</t>

</section>
<section anchor="centec"><name>Centec</name>

<t>Centec 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. All implementation of the following list is in general availability for customers using Centec SDK 5.6.8 or above.</t>

<t><list style="symbols">
  <t>CTC7132 (TsingMa) Series</t>
  <t>CTC8180 (TsingMa.MX) Series</t>
</list></t>

<t>This report was last updated on February 14, 2024.</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="eantc-2024"><name>EANTC 2024</name>

<t>In April 2024, 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-24"/>.</t>

<t>The participating vendors included Arista, Ciena, Cisco, Ericsson, H3C, Huawei, Juniper, Keysight, Nokia, and ZTE.</t>

</section>
<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><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="64" width="424" viewBox="0 0 424 64" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 32,32 L 48,32" fill="none" stroke="black"/>
<path d="M 88,32 L 104,32" fill="none" stroke="black"/>
<path d="M 144,32 L 160,32" fill="none" stroke="black"/>
<path d="M 200,32 L 216,32" fill="none" stroke="black"/>
<path d="M 256,32 L 272,32" fill="none" stroke="black"/>
<path d="M 312,32 L 328,32" fill="none" stroke="black"/>
<path d="M 368,32 L 384,32" fill="none" stroke="black"/>
<g class="text">
<text x="12" y="36">N0</text>
<text x="68" y="36">N1</text>
<text x="124" y="36">N2</text>
<text x="180" y="36">N3</text>
<text x="236" y="36">N4</text>
<text x="292" y="36">N5</text>
<text x="348" y="36">N6</text>
<text x="404" y="36">N7</text>
<text x="68" y="52">(S1)</text>
<text x="124" y="52">(S2)</text>
<text x="180" y="52">(S3)</text>
<text x="236" y="52">(S4)</text>
<text x="292" y="52">(S5)</text>
<text x="348" y="52">(S6)</text>
<text x="404" y="52">(S7)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
N0 --- N1 --- N2 --- N3 --- N4 --- N5 --- N6 --- N7
      (S1)   (S2)   (S3)   (S4)   (S5)   (S6)   (S7)
]]></artwork></artset></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 SR segment endpoint node 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="sec-future"><name>Applicability to other SR Segment Endpoint Behaviors</name>

<t>Future documents may extend the applicability of the NEXT-C-SID and REPLACE-C-SID flavors to other SR segment endpoint behaviors.</t>

<t>For an SR segment endpoint behavior that can be used before the last position of a segment list, a C-SID flavor is defined by reproducing the same logic as described in <xref target="sec-next"/> and <xref target="sec-replace"/> of this document to determine the next SID in the SID list.</t>

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

<t>Section 8 of <xref target="RFC8402"/> discusses the security considerations for Segment Routing.</t>

<t>Section 5 of <xref target="RFC8754"/> describes the intra-SR-domain deployment model and how to secure it. Section 7 of <xref target="RFC8754"/> describes the threats applicable to SRv6 and how to mitigate them.</t>

<t>Section 9 of <xref target="RFC8986"/> discusses the security considerations applicable to the SRv6 network programming framework, as well as the SR source node and SR segment endpoint node behaviors that it defines.</t>

<t>This document introduces two new flavors for some of the SR segment endpoint behaviors defined in <xref target="RFC8986"/> and a method by which an SR source node may leverage the SIDs of these flavors to produce a compressed segment list encoding.</t>

<t>An SR source node constructs an IPv6 packet with a compressed segment list encoding as defined in Sections 3.1 and 4.1 of <xref target="RFC8754"/> and Section 5 of <xref target="RFC8986"/>. The paths that an SR source node may enforce using a compressed segment list encoding are the same, from a topology and service perspective, as those that an SR source node could enforce using the SIDs of <xref target="RFC8986"/>.</t>

<t>An SR segment endpoint node processes an IPv6 packet matching a locally instantiated SID as defined in <xref target="RFC8986"/>, with the pseudocode modifications in Section 4 of this document. These modifications change how the SR segment endpoint node determines the next SID in the packet, but not the semantic of either the active or the next SID. For example, an adjacency segment instantiated with the End.X behavior remains an adjacency segment regardless of whether it uses the unflavored End.X behavior defined in Section 4.2 of <xref target="RFC8986"/> or a C-SID flavor of that behavior. This document does not introduce any new SID semantic.</t>

<t>Any other transit node processes the packet as described in Section 4.2 of <xref target="RFC8754"/>.</t>

<t>This document defines a new method of encoding the SIDs inside a SID list at the SR source node and decoding them at the SR segment endpoint node, but it does not change how the SID list itself is encoded in the IPv6 packet nor the semantic of any segment that it comprises. Therefore, this document is subject to the same security considerations that are discussed in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>.</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>96</c>
      <c>End.PS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>97</c>
      <c>End.XPS 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>
      <c>140</c>
      <c>End.PS with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>141</c>
      <c>End.XPS with REPLACE-CSID</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, Joel Halpern, and Tal Mizrahi for their insightful feedback and suggestions.</t>

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

</section>


  </middle>

  <back>


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

&RFC8200;
&RFC8402;
&RFC8754;
&RFC8986;
&RFC2119;
&RFC8174;


    </references>

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

&RFC7942;
&RFC9252;
&RFC9259;
&RFC9350;
&RFC9352;
&RFC9513;
&RFC9514;
&I-D.ietf-6man-sids;
&I-D.ietf-idr-bgp-ls-sr-policy;
&I-D.ietf-idr-sr-policy-safi;
&I-D.ietf-pce-segment-routing-ipv6;
<reference anchor="GKP94" >
  <front>
    <title>Concrete Mathematics: A Foundation for Computer Science</title>
    <author initials="R." surname="Graham" fullname="Ronald Graham">
      <organization></organization>
    </author>
    <author initials="D." surname="Knuth" fullname="Donald Knuth">
      <organization></organization>
    </author>
    <author initials="O." surname="Patashnik" fullname="Oren Patashnik">
      <organization></organization>
    </author>
    <date year="1994"/>
  </front>
  <seriesInfo name="ISBN" value="9780201558029"/>
</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/wp-content/uploads/2023/04/EANTC-InteropTest2023-TestReport.pdf">
  <front>
    <title>Multi-Vendor MPLS SDN Interoperability Test Report 2023</title>
    <author >
      <organization>European Advanced Networking Test Center (EANTC)</organization>
    </author>
    <date year="2023" month="April" day="18"/>
  </front>
</reference>
<reference anchor="EANTC-24" target="https://eantc.de/wp-content/uploads/2023/12/EANTC-MPLSSDNInterop2024-TestReport-v1.3.pdf">
  <front>
    <title>Multi-Vendor MPLS SDN Interoperability Test Report 2024</title>
    <author >
      <organization>European Advanced Networking Test Center (EANTC)</organization>
    </author>
    <date year="2024" month="April"/>
  </front>
</reference>


    </references>


<?line 1535?>

<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 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 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. }
]]></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-next-endx-complete"><name>End.X with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X 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 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 IPv6 module for transmission to the
         new destination via a member of J.
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 IPv6 module for transmission
       to the new destination via a member of J.
]]></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.X 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 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 IPv6 module for transmission to the
         new destination via a member of J.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X 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-next-endt-complete"><name>End.T with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T 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 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.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.
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.1. Set the packet's associated FIB table to T.
S15.2. 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.T 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 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.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.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T 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-next-endb6-complete"><name>End.B6.Encaps with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps 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 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.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.
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. Push a new IPv6 header with its own SRH containing B.
S16. Set the outer IPv6 SA to A.
S17. Set the outer IPv6 DA to the first SID of B.
S18. Set the outer Payload Length, Traffic Class, Flow Label,
       Hop Limit, and Next Header fields.
S19. 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.B6.Encaps 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 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.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.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps 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-next-endbm-complete"><name>End.BM with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM 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 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.1. Push the MPLS label stack for B.
N08.2. Submit the packet to the MPLS engine for transmission.
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. Push the MPLS label stack for B.
S16. Submit the packet to the MPLS engine for transmission.
]]></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.BM 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 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.1. Push the MPLS label stack for B.
N08.2. Submit the packet to the MPLS engine for transmission.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM 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 anchor="sec-replace-endx-complete"><name>End.X with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X 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 IPv6 module for transmission to
             the new destination via a member of J.
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 IPv6 module for transmission to the
         new destination via a member of J.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X 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 anchor="sec-replace-endt-complete"><name>End.T with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T 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.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.
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.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.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T 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 anchor="sec-replace-endb6-complete"><name>End.B6.Encaps with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps 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.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.
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.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.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps 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 anchor="sec-replace-endbm-complete"><name>End.BM with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM 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.1.     Push the MPLS label stack for B.
R10.2.     Submit the packet to the MPLS engine for transmission.
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.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM 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>

