<?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-21" category="std" consensus="true" submissionType="IETF" 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 243?>

<t>Segment Routing over IPv6 (SRv6) is the instantiation of Segment Routing (SR) on the IPv6 dataplane. This document specifies new flavors for the 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>



    </abstract>



  </front>

  <middle>


<?line 247?>

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

<t>The Segment Routing (SR) architecture <xref target="RFC8402"/> describes two data plane instantiations of SR: SR over MPLS (SR-MPLS) and SR over IPv6 (SRv6).</t>

<t>SRv6 Network Programming <xref target="RFC8986"/> 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>

</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>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 1546?>

<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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
3gqJNoKtbwT5wQf7EUfxGSXb8ZFcePPIJ3kVI1qZ+YCe9dX7Y9Xz/+MxLapM
/VBk9z42TNjiK7P+9uLrUlFLv6FF/NV+7zecV3gIohfmHDeUZKizbfFYeiBV
WqG7UV1yuJDD+6z0PJF5XGAjSa0B6xMtkJCrnHdq82p4Swu/PeAbwbKX5KpC
RXmtMs/48rycN82KpDdFBzjOe8MYXE7lUnmuRjkfI11OKNyFirkL7Nw5ZTMq
RzmKZEqc71Vw5c624ModCfq5rF+HXbJ6RampVGI7MYm1Up4R5yg4ENpuEfjY
172vY8RtXSNKzPlW2HTL1ze7+7J4zyo9cd3nLev9XbAtYjeX1YVxgDAKvU/z
MOdEWUzD31fgKozd7pLzCfyytnAKpjadCdN3XJ6ZNqBS2Jj7fIYJmkiQ0rf3
YRM0uVKeADlhwtWPkCvhDCzNGX5cMFWH5TW4RZfAqjEYGifM2F9V+jay/YCd
u4qh9DDRQSwCTrFgtCwkDVxw4sdULkROGs/wqYf8iIGRBpgXZwwwS24I2Sb+
jcqhIyt3XCVEINEpMPKnU+GC3KLu2Q70fx0lQyBZB/JWAFlkD8Sl11jbi2ue
oeOgs80htGkXoSL8HBHhfAYdemZKTgLDyrD5c547CybI6kemh2chnuLqIoxk
9qe6wQ/14CRJ6LGTWOYJcDtyCx86ma9plEwVibTWInYLp0dOi5j66IAUAnIF
H0m7P+XFIadZ9gVnqQYxAi6+TnxTUShdlgC+SFKOmghE+DxrzCmW/okB/3O1
6SFihdQFE4oXmMVhTlOKaPMsMI6ehgpTYOe/B4o9wN+8KoXwMr0AB5JkMozE
DEBIA8w1eqmK2uCIWigABEwBT4L2ebsp0Be/RJjDGoCKfczQ3zO9DEFCTdG8
ly2D7pZMAu98BpjMTI/zo+Q3U4SjifLZKIhBLUtEzi2tsRANp/JI2uM+47Rr
AuNxD6gPnes/OQOWCYIC4rZLHTQz8RVmScokvJCLISmXQSQyDMwwhcRSAdVx
3OUil+LEQ2J8f5QmWUYZ1QiOOgQcdHsMlsFAGAksmamCtga6wFl4rQZSmZyE
Rcq0OvVFwgm4NHShJqh94kDG9pGwjgV+0grtrYpTx2Rm6I578Bo5TXAd4hXx
o/Mkhfs28ZaIVm+vrnf++GMZzv6tnIj3hkQtu+Dcb2IW8wDEHCCHj1A6/fTp
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
dxJHp25lp2rAbvfqZqrtKXFfpW+cdzTba8UemPBxbi959Ltv5zaVZ+8oQFhq
q7B+gcbdTtckJZYtqdy2V9nWjYLdzmpNDxc+dTtrVT3q0LDbKdCTORvZqGld
tZXN2j7uVW1V96nfTuFa1W+n26lpXbGdbre2j3NV3V51n9rtdEv3Y6FtFe/H
nObyUF9+2Fio/aZqv7ZQe3mYWIN+kfbbqv1C4/c6uv1CE/S6agO9hdr3dPuf
F+qwqlbUe79QhzXdYaEz620WEUMTzjk9LUGrhL2uHttVPep4T3e1U92tmod0
Vyvp6lz+g36F9aTG1We1uk/9/tbqOtatsobkLrDHgjSz0B43q/vU73GrrmPd
Kmvo8Pw9rskb7a7+Wm4vL3RFuVi7w6cd75t8GLVQW1RmhZZh+g7zKPjuxYmh
yFLZUsyV943XH2HauigYn3PNEtsdkdMgRuFHYbH344/eT/4ENEbvxP/db3of
UEf+EaY+b3r/PfPjvQs/8QazpvfGx1ngwzDD9PqHIXz2Fl2WYu/n8DyZpcHs
uun9mIBS/MaPpkEqipSc+pH3Nvw99S9C+QocUmkZdFI6m0U6gxeZR2fn5+hC
gMUbXCsne7e9/H48ToMrrx9lObrPHYbx2PdezuIhph/uj/Gl23vlpyn6s+4m
KcD5DajffpxcwtfRpZ8moPPmfixcpV5TnlZQjvGFxvs5iMaBsW5cSzI7vxAJ
0sqGzEYD1WLcD9dXZR81szS4rHMRUz0OOYCZLQxgSeZX4SB3ifYMtD0YiSpL
pca1rU9n0CzaX0smV3JZliOjwVvkrZOu3b42pLDjpkNdtstkt6RXnqPYMVvR
3lh+R4bZedFqx/V1sndkMWksBXzmLZmFof/tO6+z7H2CL3tY/hm/JnPam2QK
aDMJc+8/v/O63GK1TS5AA3yvFcnOvVMMRNi/HnFlukLKXXbilkV3dUlfj9e6
h6bCjreEc0U0VyAHwpNh0+ly0+xHxsN0NlVp1TUsGVXR9uanY8PCiqWt13Dl
f1B1bFnjuqY69uHuYbu9BP81KmTDt3odjorCqoD2QBT/5KHEKEaVYvzOVZE4
T/T4vwdpggNutmmyEZda8goHM7zxuthqi6adDfEzw7AsthRQWkrui+gUJcnH
2RSvr56PQD0J+SFL9CNDv+G6hDNttwGIA8QUxBOrIrT3nUCkAaPJIId1lhG9
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
BwIA

-->

</rfc>

