<?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.18 (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">
]>


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

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

    <date year="2024" month="November" day="03"/>

    <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 SID list. Such compression significantly reduces the size of the SRv6 encapsulation needed to steer packets over long segment lists.</t>



    </abstract>



  </front>

  <middle>


<?line 247?>

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

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

<t>SRv6 Network Programming <xref target="RFC8986"/> 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 efficiency of CSID compression 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, 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 the Locator-Node length of a SID is zero, then the Locator-Node length of its CSID encoding is also zero. Similarly, if the Function length of a SID is zero, then the Function length of its CSID encoding is zero.</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, 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>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 other 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 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 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 Option header, or before processing the upper-layer header, whichever comes first.</t>

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

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

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

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

</section>
<section anchor="sec-next-endx"><name>End.X with NEXT-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 Option header, or before processing the upper-layer header, whichever comes first.</t>

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

</section>
<section anchor="sec-next-endt"><name>End.T with NEXT-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 Option header, or before processing the upper-layer header, whichever comes first.</t>

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

</section>
<section anchor="sec-next-endb6"><name>End.B6.Encaps with NEXT-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 Option header, or before processing the upper-layer header, whichever comes first.</t>

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

<t>Similar to the base End.B6.Encaps SID defined in Section 4.13 of <xref target="RFC8986"/>, the NEXT-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 Option header, or before processing the upper-layer header, whichever comes first.</t>

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

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

<t>PSP: The PSP flavor defined in Section 4.16.1 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-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 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).</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><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><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 Option 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 Option 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-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 16-bit compression. All other SIDs allocated from this locator with LNL=16, FL=16, AL=128-LBL-NL-FL, and the value of the Argument is all 0 are also marked as using 16-bit compression. When receiving a SID advertisement for a REPLACE-CSID flavor SID with LNFL=32, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 32-bit compression.</t>

</section>
<section anchor="sec-source-checksum"><name>Upper-Layer Checksums</name>

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

<t>At the SR source node, that address will be the Destination Address as it is expected to be received by the ultimate destination. When the last element in the compressed SID list is a 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 across 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 Prefix Swap&quot; (&quot;End.PS&quot; for short) and &quot;Endpoint with L3 cross-connect and SRv6 Prefix Swap&quot; (&quot;End.XPS&quot; for short), that enable modifying the Locator-Block for the next CSID in the CSID sequence at the routing domain boundary.</t>

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

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

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

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

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

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

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

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.PS 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 the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

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

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

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

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

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

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

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XPS 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 the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

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

<t>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.PS, and End.XPS</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.PS, and End.XPS</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 anchor="upper-layer-checksum-considerations"><name>Upper Layer Checksum Considerations</name>

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

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

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

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

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

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

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

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

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

<t>Cisco Systems reported the following implementations of the SR segment endpoint node NEXT-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.PS and End.XPS, 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.PS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>97</c>
      <c>End.XPS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>101</c>
      <c>End with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>102</c>
      <c>End with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>103</c>
      <c>End with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>104</c>
      <c>End with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>105</c>
      <c>End.X with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>106</c>
      <c>End.X with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>107</c>
      <c>End.X with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>108</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>109</c>
      <c>End.T with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>110</c>
      <c>End.T with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>111</c>
      <c>End.T with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>112</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>114</c>
      <c>End.B6.Encaps with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>115</c>
      <c>End.BM with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>116</c>
      <c>End.DX6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>117</c>
      <c>End.DX4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>118</c>
      <c>End.DT6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>119</c>
      <c>End.DT4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>120</c>
      <c>End.DT46 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>121</c>
      <c>End.DX2 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>122</c>
      <c>End.DX2V with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>123</c>
      <c>End.DT2U with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>124</c>
      <c>End.DT2M with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>127</c>
      <c>End.B6.Encaps.Red with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>128</c>
      <c>End with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>129</c>
      <c>End with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>130</c>
      <c>End with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>131</c>
      <c>End with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>132</c>
      <c>End.X with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>133</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>134</c>
      <c>End.X with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>135</c>
      <c>End.X with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>136</c>
      <c>End.T with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>137</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>138</c>
      <c>End.T with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>139</c>
      <c>End.T with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>140</c>
      <c>End.PS with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>141</c>
      <c>End.XPS with REPLACE-CSID</c>
      <c>This I-D.</c>
</texttable>

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

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

<t>The authors would also like to thank Andrew Alston, Linda Dunbar, Adrian Farrel, Boris Hassanov, 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>


    </references>

</references>


<?line 1544?>

<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 Option 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 Option 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 Option 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 Option 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 Option 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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
RgHZGIs6UD3eCW6dsdUwpmBEEiD4BT9aTryzo5//g754OaAAnSCHYZT7Pk1W
DmDSeikOJ+yoyTTMyWaMiQ6J0OJS9PFRyugxlX4ww8c4MaJHwLfyUMAMbyap
dwAfHcFgnJmDQ5f4iM3E+jTEX/Es+93u3zrGmKfCyn92MwtEis5QMfZ1syVA
QOK8ODluV1cdTxyEOYxdF095PRcCwURhDHRwn+Krtx5IDFOofyfaz4K42MWq
9qyX4cgtamw8bvdkyYVYjq1CMmiMcp08ib7GJEY61seY4ehnJHmqePSbt4P9
Jj1YjAQSFHyu8GHVfPEyl6rPFO7ENdAguibXdvrUf89ceTNpjJXSoTcNVPcl
CVA5wUUxbRocPb5T820p4aqlIlIMBtHxghjIZdQHlNvlV4rvidqYX6v5BJko
46ZEQQrOoV4wCAPasSl5VMjd/QhrntyojKLqflBq1e/Fq2jTMHnVoUO/iA5I
r1QUUA0ykO8+PWQhDTa9NDKTOLqfWmznIHx5azQ4G7ZvHfW7Gf2QCY7olVNk
5BdlG4S1z/ISgYXb6rL81mBp5AcjSKnTxufgbvSaePzujIiqxIwOLtyWYB2x
pSscWdptmjGoFOnhsmwhm6Mk/hzU7tgKrw/DmFXVG2LOQSrqdMh6IGIpMB7g
pnKeLGNimDlX4vTjEYwSZ1cOd+LNehSU1+CgjsLhiq84mdCAP/tumUJB3XrU
VCMq9yPjJjNzd22ocz80qzreUVCM3Lj9Ybq2bcaZOA8caYwG+Cg4TwRxM4Fe
HVNpnYKNyaY12L2xUBXKJdGmUBDXVn3rlBxfV9XiXQs+gir+0nSm0mprkRr5
mE/URlWMNsgCCXrWWCpihOs82QZT2zyqngXwK1MJyMaXQEc71qSipoYiGogP
NLs9a6kGFC2jrrSFup80bLUSJ8r6hBFqF0KFKSvhuam8CWpQoT2q/fMt0UqO
vSOBNqqhYnFlUtNaYjhFHmpholDbbUmR2xU3VTpxmDP7xTojxX0sSfVbWq0v
VmlWLhDiEtTZt22LMda8ptI21lse9lL5jWy3S7tYUhlXax9CrCwTv3CJlHEQ
XmmPQPUcR/vj4OCqQDZ2Iz8++o68wY++67a8AfwhfA/J9bBVaV5RZhXUy7tO
Qjr1048Zh5FJKEvPhUgGwWWiPpZI8mLAg28s+77w5otxqaEep7gVcmK/415E
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
RJTOqMEIAgA=

-->

</rfc>

