<?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.23 (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 RFC9602 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9602.xml">
<!ENTITY RFC9603 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9603.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 RFC4786 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4786.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-spring-srv6-srh-compression-22" category="std" consensus="true" submissionType="IETF" updates="8754" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Compressed SRv6 Segment List Encoding">Compressed SRv6 Segment List Encoding (CSID)</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="2025" month="February" day="06"/>

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

    <abstract>


<?line 244?>

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

<t>This document updates RFC 8754 by allowing a Segment List entry in the Segment Routing Header (SRH) to be either an IPv6 address, as specified in RFC 8754, or a REPLACE-CSID container in packed format, as specified in this document.</t>



    </abstract>



  </front>

  <middle>


<?line 250?>

<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"/> builds upon the IPv6 Segment Routing Header (SRH) <xref target="RFC8754"/> to define a framework for constructing a network program with topological and service segments.</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 SRv6 endpoint behaviors defined in <xref target="RFC8986"/> that enable a compressed encoding of the SRv6 segment list.
This document also specifies new SRv6 endpoint behaviors to preserve the compression efficiency in multi-domain environments.</t>

<t>The SRv6 endpoint behaviors 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>

<t>This document updates <xref target="RFC8754"/> by allowing a Segment List entry in the SRH to be either an IPv6 address, as specified in <xref target="RFC8754"/>, or a REPLACE-CSID container in packed format, as specified in <xref target="sec-replace"/>.</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"/>, in particular segment, segment list, Segment Identifier (SID), SID list, SR policy, prefix segment, adjacency segment, SRH, SR domain, SR source node, SR segment endpoint node, transit node, SRv6 endpoint behavior, flavor, SID block, locator, function, and argument. 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 (CSID): A compressed encoding of a SID. The CSID includes the Locator-Node and Function bits of the SID being compressed. If either constituent of the SID is empty (zero length), then the same applies to its CSID encoding.</t>
  <t>CSID container: A 128-bit IPv6 address that functions as a container holding a list of one or more CSIDs, and the Argument (if any) of the last CSID.</t>
  <t>CSID sequence: A group of one or more consecutive SID list entries encoding the common Locator-Block and at least one CSID container.</t>
  <t>Compressed SID list: A segment list encoding that reduces the packet header length thanks to one or more CSID sequences. A compressed SID list also contains zero, one, or more uncompressed SIDs.</t>
  <t>Global Identifiers Block (GIB): The pool of CSID values available for global allocation.</t>
  <t>Local Identifiers Block (LIB): The pool of CSID 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, the Locator-Node and Function length (LNFL) is the sum of the Locator-Node length and the Function length of the SID. It is also referred to as the CSID 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>Building upon and fully compatible with the mechanisms specified in <xref target="RFC8754"/> and <xref target="RFC8986"/>, the compressed segment list encoding leverages a SID list compression logic at the SR source node (see <xref target="sec-source-node"/>) in combination with new flavors of the SRv6 endpoint behaviors that process the compressed SID list (see <xref target="sec-endpoint"/>).</t>

<t>An SR source node constructs and compresses the SID list depending on the SIDs instantiated on each SR segment endpoint node that the packet is intended to traverse, as well as its own compression capabilities. The resulting compressed SID list is a combination of CSID sequences, for the SIDs that the SR source node was able to compress, and uncompressed SIDs, which could not be compressed. In case the SR source node is able to compress all the SIDs in the SID list, the compressed SID list comprises only CSID sequences (one or more), and no uncompressed SIDs. Conversely, the compressed SID list comprises only uncompressed SIDs when the SR source is unable to compress any of the constituent SIDs.</t>

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

<t>This section defines two SR segment endpoint flavors, NEXT-CSID and REPLACE-CSID, for the End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, and End.BM behaviors of <xref target="RFC8986"/>.</t>

<t>This section also defines a REPLACE-CSID 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-CSID flavor is not defined for these behaviors: since any SID can be the last element of a CSID sequence compressed using the NEXT-CSID flavor (see <xref target="sec-next"/>) and the aforementioned SRv6 endpoint behaviors are always in the last position in a SID list, there is no need for any modification of the behaviors defined in <xref target="RFC8986"/>.</t>

<t>Future documents may extend the applicability of the NEXT-CSID and REPLACE-CSID flavors to other SRv6 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-CSID flavor and the REPLACE-CSID flavor both leverage the SID Argument to determine the next SID to be processed, but employ different SID list compression schemes.
With the NEXT-CSID flavor, each CSID container is a fully formed SRv6 SID with the common Locator-Block for all the CSIDs in the CSID container, a Locator-Node and Function that are those of the first CSID, and an Argument carrying the subsequent CSIDs.
With the REPLACE-CSID flavor, only the first element in a CSID sequence is a fully formed SRv6 SID. It has the common Locator-Block for all the CSIDs in the CSID sequence, and a Locator-Node and Function that are those of the first CSID. The remaining elements in the CSID sequence are CSID containers carrying the subsequent CSIDs without the Locator-Block.</t>

<t>Regardless of which flavor is used, the IPv6 address carried in the Destination Address field of the IPv6 header is a valid SRv6 SID conforming to <xref target="RFC9602"/>.</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-CSID or the REPLACE-CSID 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-CSID flavor. All the SRv6 endpoint behaviors 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-CSID flavor SID&quot; and &quot;REPLACE-CSID flavor SID&quot; refer to any SID of this document with the NEXT-CSID flavor and with the REPLACE-CSID flavor, respectively.</t>

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

<t>A CSID sequence compressed using the mechanism of the NEXT-CSID flavor comprises one or more CSID containers. Each CSID 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 CSIDs. The Locator-Node and Function of the CSID container are those of the first CSID, and its Argument is the contiguous series of subsequent CSIDs. The second CSID is encoded in the most significant bits of the CSID container Argument, the third CSID is encoded in the bits of the Argument that immediately follow the second CSID, and so on. When all CSIDs have the same length, a CSID container can carry up to K CSIDs, 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 CSID container for NEXT-CSID is independent, such that contiguous CSID containers in a CSID sequence can be considered as separate CSID sequences.</t>

<t>When a CSID sequence compressed using the NEXT-CSID flavor comprises at least two CSIDs, the last CSID in the sequence is not required to have the NEXT-CSID flavor. It can be bound to any SRv6 endpoint behavior, including <xref target="RFC8986"/> behaviors and REPLACE-CSID flavor, as long as the updated destination address resulting from the processing of the previous CSID 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-CSID 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 with a SID list of eight NEXT-CSID 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 CSID containers. The first CSID container carries a Locator-Block and the first five CSIDs. The second CSID container carries a Locator-Block and the sixth, seventh, and eighth CSIDs. Since the SR source node does not use the second CSID container at full capacity, it sets the 32 least significant bits to zero. The SR source node sets the IPv6 Destination Address (DA) with the value of the first CSID container and the first element of the SRH Segment List with the value of the second CSID container. Without reduced SRH, the SR source node also writes the first CSID container as the second element of the SRH Segment List (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 eight NEXT-CSID 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="404" y="116">CSID</text>
<text x="112" y="148">2nd</text>
<text x="148" y="148">CSID</text>
<text x="368" y="148">3rd</text>
<text x="404" y="148">CSID</text>
<text x="112" y="180">4th</text>
<text x="148" y="180">CSID</text>
<text x="368" y="180">5th</text>
<text x="404" y="180">CSID</text>
<text x="200" y="212">First</text>
<text x="244" y="212">CSID</text>
<text x="304" 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="404" y="324">CSID</text>
<text x="112" y="356">7th</text>
<text x="148" y="356">CSID</text>
<text x="368" y="356">8th</text>
<text x="404" y="356">CSID</text>
<text x="264" y="388">0</text>
<text x="204" y="420">Second</text>
<text x="252" y="420">CSID</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 CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           2nd CSID            |           3rd CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           4th CSID            |           5th CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      First CSID 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 CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           7th CSID            |           8th CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               0                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      Second CSID container
]]></artwork></artset></figure>

<t>An implementation MUST support a 32-bit Locator-Block length (LBL) and a 16-bit CSID length (LNFL) for NEXT-CSID flavor SIDs, and MAY support any additional Locator-Block and CSID length.</t>

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

<t>When processing an IPv6 packet that matches a Forwarding Information Base (FIB) entry locally instantiated as a SID with the NEXT-CSID 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-CSID flavor MUST accept any Argument value for that SID.</t>

<t>At a high level, for any SID with the NEXT-CSID 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 CSID, 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the NEXT-CSID 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 Options 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the NEXT-CSID 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 Options 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the NEXT-CSID 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 Options 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-CSID 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 Options 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-CSID 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-CSID</name>

<t>This is an optimization of the End.B6.Encaps with NEXT-CSID behavior.</t>

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

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the NEXT-CSID 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 Options 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-CSID flavor.</t>

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

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

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

<t>A CSID sequence compressed using the mechanism of the REPLACE-CSID flavor starts with a CSID container in fully formed 128-bit SID format. The Locator-Block of this SID is the common Locator-Block for all the CSIDs in the CSID sequence, its Locator-Node and Function are those of the first CSID, and its Argument carries the index of the current CSID in the current CSID container. The Argument value is initially 0. When more segments are present in the segment list, the CSID sequence continues with one or more CSID containers in packed format carrying the series of subsequent CSIDs. 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 CSID container to fill the bits left over. The second CSID in the CSID sequence is encoded in the least significant bit position of the first CSID container in packed format (position K-1), the third CSID is encoded in position K-2, and so on.</t>

<t>The last CSID in the CSID sequence is not required to have the REPLACE-CSID flavor. It can be bound to any SRv6 endpoint behavior, including <xref target="RFC8986"/> behaviors and NEXT-CSID 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-CSID flavor is shown in <xref target="fig-replace-struct"/>. The same structure is also that of the CSID container for REPLACE-CSID in fully formed 128-bit SID format.</t>

<figure title="Structure of a REPLACE-CSID 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 CSID container for REPLACE-CSID in packed format is shown in <xref target="fig-replace-container"/>.</t>

<figure title="Structure of a CSID container for REPLACE-CSID using a 32-bit CSID 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="100" y="52">CSID</text>
<text x="192" y="52">Third</text>
<text x="236" y="52">CSID</text>
<text x="324" y="52">Second</text>
<text x="372" y="52">CSID</text>
<text x="464" y="52">First</text>
<text x="508" y="52">CSID</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 CSID   |   Third CSID   |  Second CSID   |   First CSID   |
|  (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-CSID 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 CSID containers. The first CSID container is in fully formed 128-bit SID format. It carries a Locator-Block, the first CSID, and the argument value zero. The second and third CSID containers are in packed format. The second CSID container carries the second, third, fourth, and fifth CSIDs. The third CSID container carries the sixth and seventh CSIDs. Since the SR source node does not use the third CSID container at full capacity, it sets the 64 least significant bits to zero. The SR source node sets the IPv6 DA with the value of the first CSID container, sets the first element in the SRH Segment List with the value of the third CSID container, and sets the second element of the SRH Segment List with the value of the second CSID 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"/>). Without reduced SRH, the SR source node also writes the first CSID container as the third element of the SRH Segment List.</t>

<figure title="Compressed SID list of seven REPLACE-CSID 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="404" y="116">CSID</text>
<text x="72" y="148">1st</text>
<text x="108" y="148">CSID</text>
<text x="168" y="148">continued</text>
<text x="392" y="164">0</text>
<text x="200" y="212">First</text>
<text x="244" y="212">CSID</text>
<text x="304" 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="276" y="292">CSID</text>
<text x="240" y="324">4th</text>
<text x="276" y="324">CSID</text>
<text x="240" y="356">3rd</text>
<text x="276" y="356">CSID</text>
<text x="240" y="388">2nd</text>
<text x="276" y="388">CSID</text>
<text x="204" y="420">Second</text>
<text x="252" y="420">CSID</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="276" y="564">CSID</text>
<text x="240" y="596">6th</text>
<text x="276" y="596">CSID</text>
<text x="200" y="628">Third</text>
<text x="244" y="628">CSID</text>
<text x="304" 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 CSID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      1st CSID continued       |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               0               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      First CSID 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 CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           4th CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           3rd CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           2nd CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      Second CSID 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 CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           6th CSID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      Third CSID container
]]></artwork></artset></figure>

<t>This document updates <xref target="RFC8754"/> by allowing each entry in the SRH Segment List to be either an IPv6 address or a REPLACE-CSID container in packed format. The SRv6 endpoint behaviors specified herein ensure that this entry is never copied as is to the IPv6 header and that the Destination Address field of the IPv6 header is always a valid SRv6 SID conforming to <xref target="RFC9602"/>.</t>

<t>The REPLACE-CSID 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 CSID 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-CSID flavor for 16-bit and 32-bit CSID lengths (LNFL). An implementation MUST support a 32-bit CSID length for REPLACE-CSID flavor SIDs.</t>

<t>The Argument length (AL) for REPLACE-CSID 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-CSID 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 a high level, at the start of a CSID sequence using the REPLACE-CSID flavor, the first CSID 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-CSID 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 CSID within the CSID 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 CSID 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 CSID. 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 CSID sequence ends with a last CSID in the last CSID container that does not have the REPLACE-CSID flavor, or with the special CSID value 0, or when reaching the end of the segment list, whichever comes first.</t>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the REPLACE-CSID 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the REPLACE-CSID 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the REPLACE-CSID 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-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-CSID 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-CSID</name>

<t>This is an optimization of the End.B6.Encaps with REPLACE-CSID behavior.</t>

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

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the REPLACE-CSID 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-CSID</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-CSID 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-CSID 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-CSID 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 CSID 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-CSID 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-CSID 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-CSID flavor.</t>

</section>
</section>
</section>
<section anchor="csid-allocation"><name>CSID Allocation</name>

<t>The CSID value of 0 is reserved. It is used to indicate the end of a CSID container.</t>

<t>In order to efficiently manage the CSID 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 CSID 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-CSID and REPLACE-CSID flavors. The shorter the CSID, the more benefit the LIB brings.</t>

<t>The opportunity to use these sub-spaces, their size, and their CSID allocation policy depends on the CSID 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-csid"><name>Global CSID</name>

<t>A global CSID is a CSID allocated from the GIB.</t>

<t>A global CSID identifies a segment defined at the Locator-Block level. The tuple (Locator-Block, CSID) 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 CSIDs under the same Locator-Block (e.g., one per IGP flexible algorithm (<xref target="RFC9350"/>)). Multiple nodes may share the same global CSID (e.g., anycast <xref target="RFC4786"/>).</t>

</section>
<section anchor="local-csid"><name>Local CSID</name>

<t>A local CSID is a CSID allocated from the LIB.</t>

<t>A local CSID identifies a segment defined at the node level and within the scope of a particular Locator-Block. The tuple (Locator-Block, CSID) 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 CSID 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-csid-installation"><name>Recommended Installation of CSIDs 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-CSID or REPLACE-CSID 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-CSID flavor SIDs from both GIB and LIB may install combined &quot;Global + Local&quot; FIB entries to match a sequence of global and local CSIDs 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-CSID flavor SIDs according to the CSID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t>The SID <spanx style="verb">2001:db8:b1:10::</spanx> bound to the End behavior with the NEXT-CSID 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>The SID <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-CSID 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-CSID 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-CSID 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-CSID flavor.</t>

<t>As another example, let us consider an SR segment endpoint node 20 instantiating the following two REPLACE-CSID flavor SIDs according to the CSID 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-CSID 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-CSID 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-CSID 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-CSID 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 SRv6 endpoint behavior, 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="RFC9603"/>).</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-CSID and/or REPLACE-CSID 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 CSID flavor SID over an equivalent non-CSID flavor SID or by consistently selecting SIDs of the same CSID 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 MAY be used.</t>

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

<t><list style="symbols">
  <t>When the compression method encounters a series of one or more consecutive compressible NEXT-CSID flavor SIDs, it compresses the series as follows. A SID with the NEXT-CSID 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 NEXT-CSID container equal to the first SID in the
       series, and initialize the remaining capacity of the CSID
       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 CSID
         container and the current SID LNFL is lower than or equal to
         the remaining capacity of the NEXT-CSID container {
S04.     Copy the current SID Locator-Node and Function to the most
           significant remaining Argument bits of the NEXT-CSID
           container and decrement the remaining capacity by LNFL
S05.   } Else {
S06.     Push the NEXT-CSID container onto the compressed SID list
S07.     Initialize a new NEXT-CSID container equal to the current
           SID in the series, and initialize the remaining capacity
           of the NEXT-CSID 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-CSID 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 NEXT-CSID 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 CSID
         container {
S13.     Copy the Locator-Node, Function, and Argument of S to the
           most significant remaining Argument bits of the CSID
           container
S14.   } // End If
S15. } // End If
S16. Push the NEXT-CSID container onto the compressed SID list
]]></artwork></figure>

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

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

<t><list style="numbers" type="1">
  <t>If a Destination Options header would follow an SRH with a segment list of more than one segment compressed as a single NEXT-CSID 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 NEXT-CSID container representing more than one segment, the PSP operation is performed at the segment preceding the first segment of this NEXT-CSID 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 NEXT-CSID container.</t>
  <t>If a Destination Options header would follow an SRH with a last Segment List entry being a NEXT-CSID 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>
  <t>When the Argument of a NEXT-CSID container is not used to full capacity, the remaining least significant bits of that Argument MUST be set to 0.</t>
</list></t>

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

<t><list style="numbers" type="1">
  <t>All SIDs compressed in a REPLACE-CSID sequence MUST share the same Locator-Block and the same compression scheme.</t>
  <t>All SIDs except the last one in a CSID sequence for REPLACE-CSID MUST have the REPLACE-CSID flavor. If the last REPLACE-CSID container is fully filled (i.e., the last CSID is at position 0 in the REPLACE-CSID container) and the last SID in the CSID sequence is not the last segment in the segment list, the last SID in the CSID sequence MUST NOT have the REPLACE-CSID flavor.</t>
  <t>When a REPLACE-CSID flavor CSID 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-CSID container in packed format carrying at least one CSID.</t>
</list></t>

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

<t>When receiving a SID advertisement for a REPLACE-CSID flavor SID with LNL=16, FL=0, AL=128-LBL-LNFL, 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-LNFL, 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-CSID flavor SID with LNFL=32, AL=128-LBL-LNFL, 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 CSID 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="sec-inter-domain"><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 CSID sequence is that all CSIDs in the sequence share the same Locator-Block. Therefore, a segment list that spans multiple routing domains using different Locator-Blocks may need a separate CSID sequence for each domain.</t>

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

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

<section anchor="endlbs-locator-block-swap"><name>End.LBS: Locator-Block Swap</name>

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

<t>An End.LBS 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.LBS 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 original and target Locator-Blocks can have different prefix lengths as long as the new Destination Address formed by combining the target Locator-Block with the Locator-Node, Function, and Argument as described in the pseudocodes of <xref target="sec-next-endlbs"/> and <xref target="sec-replace-endlbs"/> is a valid IPv6 address.
The target Locator-Block is a local property of the End.LBS 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.LBS SID are outside the scope of this document. As examples, it could be learned via configuration or signaled by a controller.</t>

<section anchor="sec-next-endlbs"><name>End.LBS with NEXT-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.LBS SID with the NEXT-CSID 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-endlbs"><name>End.LBS with REPLACE-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.LBS SID with the REPLACE-CSID 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 A.
R20.3. Write DA.Arg.Index into the bits
         [(128-ceiling(log_2(128/LNFL)))..127] of A.
R20.4. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
</section>
<section anchor="endxlbs-l3-cross-connect-and-locator-block-swap"><name>End.XLBS: L3 Cross-Connect and Locator-Block Swap</name>

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

<t>An End.XLBS 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.XLBS SID is associated with a target Locator-Block B2/m and a set, J, of one or more L3 adjacencies.
The original and target Locator-Blocks can have different prefix lengths as long as the new Destination Address formed by combining the target Locator-Block with the Locator-Node, Function, and Argument as described in the pseudocodes of <xref target="sec-next-endxlbs"/> and <xref target="sec-replace-endxlbs"/> is a valid IPv6 address.
The target Locator-Block and set of adjacencies are local properties of the End.XLBS 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.XLBS SID are outside the scope of this document. As examples, it could be learned via configuration or signaled by a controller.</t>

<section anchor="sec-next-endxlbs"><name>End.XLBS with NEXT-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XLBS SID with the NEXT-CSID 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-endxlbs"><name>End.XLBS with REPLACE-CSID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XLBS SID with the REPLACE-CSID 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 A.
R20.3. Write DA.Arg.Index into the bits
         [(128-ceiling(log_2(128/LNFL)))..127] of A.
R20.4. 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>Section 8 of <xref target="RFC8986"/> provides an overview of the control plane protocols used for signaling of the SRv6 endpoint behaviors introduced by that document, including the base SRv6 endpoint behaviors that are extended in the present document.</t>

<t>The CSID-flavored behaviors introduced by this document are advertised in the same manner as their base SRv6 endpoint behaviors using the 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="RFC9603"/></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 CSID may be advertised in the control plane individually and/or in combination with a global CSID instantiated on the same SR segment endpoint node, with the End behavior, and the same Locator-Block and flavor as the local CSID. A combined global and local CSID is advertised as follows.</t>

<t><list style="symbols">
  <t>The SID Locator-Block is that shared by the global and local CSIDs</t>
  <t>The SID Locator-Node is that of global CSID</t>
  <t>The SID Function is that of the local CSID</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., SRv6 endpoint behavior or algorithm) are those of the local CSID</t>
</list></t>

<t>The local CSID 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="RFC9603"/>), 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="flavor-block-and-csid-length"><name>Flavor, Block, and CSID Length</name>

<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 CSID 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 CSID lengths may be more suitable for networks requiring ample SID numbering space, while smaller CSID 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 CSID 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 CSID flavors within the same routing domain or Locator-Block since these SIDs have different length and allocation recommendations (see <xref target="sec-next"/>, <xref target="sec-replace"/>, and <xref target="sec-csid-lib-recommendation"/>). In a multi-domain deployment, different flavors may be used in different routing domains of the SR domain.</t>

<t>A deployment should use consistent Locator-Block lengths and CSID lengths for all SIDs within a routing domain. Heterogeneous lengths, while possible, may impact the compression efficiency.</t>

<t>The compressed segment list encoding works with various Locator-Block allocations. 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="RFC9602"/>.</t>

</section>
<section anchor="sec-csid-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 SRv6 endpoint 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 CSID length permits more flexibility in which SRv6 endpoint behaviors may be assigned from the GIB; it also reduces the compression efficiency.</t>

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

<t><list style="symbols">
  <t>NEXT-CSID:
  <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, End.LBS, and End.XLBS</t>
    </list></t>
  <t>REPLACE-CSID:
  <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, End.LBS, and End.XLBS</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 CSID numbering space.</t>

</section>
<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. The SR source node may ping the target SID with a SID list comprising only that target SID, or with a longer one that comprises two or more SIDs. In that case, the target SID is the last element in the SID list. This operation is illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document 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 with a SID list comprising only the target SID, 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.
Therefore, any existing IPv6 ping implementation can originate ICMP echo requests to a NEXT-CSID or REPLACE-CSID flavor SID with a SID list comprising only the target SID, provided that the user ensures 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 SRv6 endpoint behavior associated with the matched SRv6 SID;</t>
  <t>Repeat until the application of the SRv6 endpoint 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>
<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-CSID flavor (<xref target="sec-next"/>) and the SR source node efficient SID list encoding (<xref target="sec-source-node"/>) for NEXT-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID flavor (<xref target="sec-next"/>) and REPLACE-CSID 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-CSID flavor (<xref target="sec-next"/>) and REPLACE-CSID 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-CSID and REPLACE-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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-CSID and REPLACE-CSID 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-CSID flavor, and End behavior with REPLACE-CSID 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-CSID 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-CSID 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-CSID 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-CSID 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 SRv6 Endpoint Behaviors</name>

<t>Future documents may extend the applicability of the NEXT-CSID and REPLACE-CSID flavors to other SRv6 endpoint behaviors.</t>

<t>For an SRv6 endpoint behavior that can be used before the last position of a segment list, a CSID 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 SRv6 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>This document also introduces two new SRv6 endpoint behaviors, End.LBS and End.XLBS, to preserve the efficiency of CSID compression in multi-domain environments.</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 base End.X behavior defined in Section 4.2 of <xref target="RFC8986"/> or a CSID 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 (<xref target="sec-source-node"/>) and decoding them at the SR segment endpoint node (<xref target="sec-endpoint"/> and <xref target="sec-inter-domain"/>), 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.LBS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>97</c>
      <c>End.XLBS 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.LBS with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>141</c>
      <c>End.XLBS 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, Alvaro Retana, and Gunter Van de Velde for their thorough review of this document.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <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;
&RFC9602;
&RFC9603;
&I-D.ietf-idr-bgp-ls-sr-policy;
&I-D.ietf-idr-sr-policy-safi;
<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-CSID 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>
&RFC4786;


    </references>

</references>


<?line 1553?>

<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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-CSID 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 Options of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-CSID 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 Options of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-CSID 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 Options of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-CSID 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 Options of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-CSID 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 Options of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the REPLACE-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the REPLACE-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-CSID 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-CSID 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-CSID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the REPLACE-CSID 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-CSID 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>

