<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cl-spring-srv6-next-and-replace-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="NEXT&amp;REPLACE-CSID">Combined NEXT-CSID and REPLACE-CSID flavor in SRv6</title>
    <seriesInfo name="Internet-Draft" value="draft-cl-spring-srv6-next-and-replace-00"/>
    <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="Li" fullname="Cheng Li" role="editor">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>c.l@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="27"/>
    <area>General</area>
    <workgroup>SPRING</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 45?>

<t>In order to reduce the size of SRv6 SID, NEXT-CSID and REPLACE-CSID flavors for SRv6 endpoint behaviors are proposed. Similar to PSP and USD, NEXT-CSID and REPLACE-CSID can be combined just like PSP &amp; USD. This document defines the combined NEXT&amp;REPLACE-CSID flavor, which can provide more efficient compression for SRv6 Segment-List encoding in the Segment Routing Header (SRH).</t>
    </abstract>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SRv6 Network Programming <xref target="RFC8986"/> defines a framework to build a network program with topological and service segments carried in a Segment Routing header (SRH) <xref target="RFC8754"/>.</t>
      <t><xref target="RFC9800"/> specifies NEXT-CSID and REPLACE-CSID flavors to the SR endpoint behaviors defined in Section 4 of <xref target="RFC8986"/>. These flavors enable a compressed encoding of the SRv6 Segment-List in the SRH and therefore address the requirements described in <xref target="I-D.ietf-spring-compression-requirement"/>.</t>
      <t>NEXT-CSID flavor can enable an efficient segment list encoding when using a short locator block. However, when the locator block is long, the compression efficency is reduced, because fewer CSIDs can be encoded in a CSID container. This will affect all the containers because NEXT-CSID flavor requires to encode the locator block in each CSID container. REPLACE-CSID flavor can enable an efficient segment list encoding no matter the length of locator block. However, when the CSID sequence is short, the compression efficiency is not ideal, because the first container of the CSID sequence will only contain a single CSID without compression, and the compression begins from the second container and the block is not encoded in a container.</t>
      <t>Similar to PSP, USP, USD defined in <xref target="RFC8986"/>, NEXT-CSID and REPLACE-CSID flavor can be combined in use. By combining NEXT-CSID and REPLACE-CSID falvor, the compression efficiency can be enhanced comparing to both NEXT-CSID and REPLACE-CSID flavor. Originally, the Combined NEXT&amp;REPLACE-CSID flavor was defined in <xref target="RFC9800"/>, and moved out of the document in order to accelerate the standardizatin progress of <xref target="RFC9800"/>. This document defines the combined NEXT&amp;REPLACE-CSID falvor, which leverages the SRv6 data plane defined in <xref target="RFC8754"/> and <xref target="RFC8986"/>, and are compatible with the SRv6 control plane extensions.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document leverages the terminologies defined in <xref target="RFC8402"/>, <xref target="RFC8754"/>, <xref target="RFC8986"/> and <xref target="RFC9800"/>. Readers are assumed to be familiar with terminologies.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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="nextreplace-csid-flavor-sec-nextreplace-flavor">
      <name>NEXT&amp;REPLACE-CSID Flavor {#sec-next&amp;replace-flavor}</name>
      <t>This section defines a new flavor NEXT&amp;REPLACE-CSID, which is the combination of NEXT-CSID and REPALCE-CSID <xref target="RFC9800"/>. The NEXT&amp;REPLACE-CSID can be applied for END, END.X, END.T, End.B6.Encaps, End.B6.Encaps.Red, End.BM, End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M behaviors defined in <xref target="RFC8986"/>.</t>
      <t>Similar to NEXT-CSID flavor and the REPLACE-CSID flavor, the combined NEXT&amp;REPLACE flavor leverages the SID Argument to determine the next SID to be processed. A SID instantiated with the NEXT&amp;REPLACE-CSID flavor can take an argument to</t>
      <ul spacing="normal">
        <li>
          <t>carry the remaining CSIDs in the current CSID container, same as NEXT-CSID flavor <xref target="RFC9800"/>.</t>
        </li>
        <li>
          <t>indicate the index of the next CSID in the appropriate CSID container, same as REPLACE-CSID flavor <xref target="RFC9800"/>.</t>
        </li>
      </ul>
      <t>The length of the argument equals to 128-LBL-LNFL.</t>
      <figure>
        <name>Example of a NEXT&amp;REPLACE-CSID flavored SID structure using a 48-bit Locator-Block, 16-bit combined locator and function, and 64-bit argument</name>
        <artwork><![CDATA[
+------------------------------------------------------------------+
|     Locator-Block      |Loc-Node|            Argument            |
|                        |Function|                                |
+------------------------------------------------------------------+
 <-------- LBL ---------> < LNFL > <------------- AL ------------->
]]></artwork>
      </figure>
      <t>The encoding rules of the NEXT&amp;REPLACE-CSID flavor is a combination of NEXT-CSID and REPLACE-CSID.</t>
      <ul spacing="normal">
        <li>
          <t>First container: follows the rules of encoding the fist container of NEXT-CSID flavor <xref target="RFC9800"/>.</t>
        </li>
        <li>
          <t>Other containers: follows the rules of encoding the other containers of REPLACE-CSID flavor <xref target="RFC9800"/>.</t>
        </li>
      </ul>
      <t>The following figure shows an example of encoding a segment list using NEXT&amp;REPLACE-CSID flavor SIDs.</t>
      <figure>
        <name>NEXT&amp;REPLACE-CSID SIDs Encoding</name>
        <artwork><![CDATA[
+------------------------------------------------------+
|CSID | CSID | CSID | CSID | CSID | CSID | CSID | CSID | SL=0
+------------------------------------------------------+
|CSID | CSID | CSID | CSID | CSID | CSID | CSID | CSID | SL=1
+------------------------------------------------------+
|     Locator-Block        | CSID | CSID | CSID | CSID | SL=2
+------------------------------------------------------+

]]></artwork>
      </figure>
      <t>The NEXT&amp;REPLACE-CSID flavor supports both 16- and 32-bit CSID lengths. A CSID length of 16-bit is RECOMMENDED. The length of a CSID is determined by its behavior and LNFL by reusing the rules of REPLACE-CSID flavor defined in section 4.2 of <xref target="RFC9800"/>.</t>
      <section anchor="end-with-nextreplace-csid-sec-nextreplace-end">
        <name>End with NEXT&amp;REPLACE-CSID {#sec-next&amp;replace-end}</name>
        <t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the NEXT&amp;REPLACE-CSID flavor, the procedure described in Section 4.1 of <xref target="RFC8986"/> is executed with the following modifications.</t>
        <t>The S01 of NEXT-CSID flavor pseudo code <xref target="RFC9800"/> is replaced by the below pseudo code, and the updated pseudo code is inserted between lines S01 and S02 of the REPLACE-CSID flavor pseudo code <xref target="RFC9800"/>, and a second time before line S01 of the upper-layer header processing in Section 4.1.1 of <xref target="RFC8986"/>, or prior to processing any extension header other than Hop-by-Hop or Destination Option.</t>
        <artwork><![CDATA[
S01. If (DA.Arg.Next != 0) {
]]></artwork>
        <t>Notes:</t>
        <ul spacing="normal">
          <li>
            <t><tt>DA.Arg.Next</tt> identifies the bits <tt>[(LBL+LNFL)..(LBL+2*LNFL-1)]</tt> in the DA of the IPv6 header, which is the next CSID if it appears.</t>
          </li>
        </ul>
        <t>According to the pseudo code, when the next CSID in the DA is not zero, then the node performs NEXT-CSID processing, otherwise, it performs the REPLACE-CSID processing. Therefore, the best compression can be achieved by combining the advantages of NEXT-CSID flavor and REPLACE-CSID flavor. An high-level pseudo code is provided for better understanding.</t>
        <artwork><![CDATA[
S01. If (DA.Arg.Next != 0) {
S02.      NEXT-CSID flavor processing
S03. } else{
S04.      REPLACE-CSID flavor processing
S05. }
]]></artwork>
        <t>A rendering of the complete pseudocode of END with NEXT&amp;REPLACE-CSID is provided in <xref target="sec-next-replace-end-complete"/>. This modification applies to other behaviors such as END.X, END.T, END.B6.Encaps, and End.B6.Encaps.Red when they combine with NEXT&amp;REPLACE-CSID flavor.</t>
        <t>All the complete pseudocode of END behaviors are defined in <xref target="sec-next-replace-end-complete"/>.</t>
      </section>
    </section>
    <section anchor="sec-source-node">
      <name>SR Source Node</name>
      <t>The NEXT&amp;REPLACE-CSID does not bring new requirements comparing to NEXT-CSID and REPLACE-CSID falvor defined in section 6 of <xref target="RFC9800"/>.</t>
      <section anchor="sid-validation-for-compression">
        <name>SID Validation for Compression</name>
        <t>The rules defined in section 6.1 of <xref target="RFC9800"/> apply to NEXT&amp;REPLACE-CSID.</t>
      </section>
      <section anchor="segment-list-compression">
        <name>Segment List Compression</name>
        <t>An SR source node MAY compress a segment list when it includes NEXT&amp;REPLACE-CSID flavor SIDs. If an SR source node chooses to compress the segment list, a method is defined below.</t>
        <ul spacing="normal">
          <li>
            <t>First container: reuses the rules of NEXT-CSID flavor for the first container.</t>
          </li>
          <li>
            <t>Other containers: reuses the rules of of REPLACE-CSID flavor for the other containers(except the first container).</t>
          </li>
        </ul>
        <t>Please see the figure {NEXT&amp;REPLACE-CSID SIDs Encoding} for an example of encoding a segment list using NEXT&amp;REPLACE-CSID flavor SIDs.</t>
      </section>
      <section anchor="upper-layer-checksums">
        <name>Upper-Layer Checksums</name>
        <t>The rules defined in section 6.5 of <xref target="RFC9800"/> apply to NEXT&amp;REPLACE-CSID.</t>
      </section>
    </section>
    <section anchor="control-plane">
      <name>Control Plane</name>
      <t>The rules defined in section 8 of <xref target="RFC9800"/> apply to NEXT&amp;REPLACE-CSID.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>The rules defined in section 9 of <xref target="RFC9800"/> apply to NEXT&amp;REPLACE-CSID.</t>
      <t>In order to enhace the compression efficiency, this document recommends to use 16-bit NEXT&amp;REPLACE-CSID, which can provide the best compression.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security requirements and mechanisms described in <xref target="RFC8402"/> and <xref target="RFC8754"/> also apply to this document. This document does not introduce any new security considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="srv6-endpoint-behaviors">
        <name>SRv6 Endpoint Behaviors</name>
        <t>This I-D. requests IANA to make the following registrations from the "SRv6 Endpoint Behaviors" sub-registry under the top-level "Segment Routing" registry (https://www.iana.org/assignments/segment-routing/):</t>
        <table>
          <name>Registration List</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">201</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">202</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID &amp; PSP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">203</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">204</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID, PSP &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">205</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">206</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID &amp; PSP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">207</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">208</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID, PSP &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">209</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">210</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID &amp; PSP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">211</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">212</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID, PSP &amp; USP</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">214</td>
              <td align="left">End.B6.Encaps with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">215</td>
              <td align="left">End.BM with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">216</td>
              <td align="left">End.DX6 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">217</td>
              <td align="left">End.DX4 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">218</td>
              <td align="left">End.DT6 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">219</td>
              <td align="left">End.DT4 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">220</td>
              <td align="left">End.DT46 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">221</td>
              <td align="left">End.DX2 with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">222</td>
              <td align="left">End.DX2V with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">223</td>
              <td align="left">End.DX2U with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">224</td>
              <td align="left">End.DT2M with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">227</td>
              <td align="left">End.B6.Encaps.Red with NEXT&amp;REPLACE-CSID</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">228</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">229</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID, PSP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">230</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">231</td>
              <td align="left">End with NEXT&amp;REPLACE-CSID, PSP, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">232</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">233</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID, PSP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">234</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">235</td>
              <td align="left">End.X with NEXT&amp;REPLACE-CSID, PSP, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">236</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">237</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID, PSP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">238</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
            <tr>
              <td align="left">239</td>
              <td align="left">End.T with NEXT&amp;REPLACE-CSID, PSP, USP &amp; USD</td>
              <td align="left">This I-D.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Many thanks to Yang Xia, Ka Zhang, Chenxi Li, Fang Qiu, Weidi Shi, Chao Wang, Yang Huang, Shuying Liu, Yisong Liu, Xinyue Zhang, Weier Li for their professional supports.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
          <front>
            <title>Segment Routing Architecture</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC8754" target="https://www.rfc-editor.org/info/rfc8754" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8754"/>
          <seriesInfo name="DOI" value="10.17487/RFC8754"/>
        </reference>
        <reference anchor="RFC8986" target="https://www.rfc-editor.org/info/rfc8986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
          <front>
            <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
              <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
              <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8986"/>
          <seriesInfo name="DOI" value="10.17487/RFC8986"/>
        </reference>
        <reference anchor="RFC9800" target="https://www.rfc-editor.org/info/rfc9800" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9800.xml">
          <front>
            <title>Compressed SRv6 Segment List Encoding</title>
            <author fullname="W. Cheng" initials="W." role="editor" surname="Cheng"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="F. Clad" initials="F." role="editor" surname="Clad"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>Segment Routing over IPv6 (SRv6) is the instantiation of Segment Routing (SR) on the IPv6 data plane. This document specifies new flavors for the SRv6 endpoint behaviors defined in RFC 8986, which enable the compression of an SRv6 segment list. Such compression significantly reduces the size of the SRv6 encapsulation needed to steer packets over long segment lists.</t>
              <t>This document updates RFC 8754 by allowing a Segment List entry in the Segment Routing Header (SRH) to be either an IPv6 address, as specified in RFC 8754, or a REPLACE-CSID container in packed format, as specified in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9800"/>
          <seriesInfo name="DOI" value="10.17487/RFC9800"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-spring-compression-requirement" target="https://datatracker.ietf.org/doc/html/draft-ietf-spring-compression-requirement-03" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-spring-compression-requirement.xml">
          <front>
            <title>Compressed SRv6 SID List Requirements</title>
            <author fullname="Weiqiang Cheng" initials="W." surname="Cheng">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Chongfeng Xie" initials="C." surname="Xie">
              <organization>China Telecom</organization>
            </author>
            <author fullname="Ron Bonica" initials="R." surname="Bonica">
              <organization>Juniper</organization>
            </author>
            <author fullname="Darren Dukes" initials="D." surname="Dukes">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Shaofu Peng" initials="S." surname="Peng">
              <organization>ZTE</organization>
            </author>
            <author fullname="Wim Henderickx" initials="W." surname="Henderickx">
              <organization>Nokia</organization>
            </author>
            <date day="3" month="April" year="2023"/>
            <abstract>
              <t>This document specifies requirements for solutions to compress SRv6 SID lists.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spring-compression-requirement-03"/>
        </reference>
      </references>
    </references>
    <?line 226?>

<section anchor="complete-pseudocodes">
      <name>Complete Pseudocodes</name>
      <t>The content of this section is 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-replace-end-complete">
        <name>End with NEXT&amp;REPLACE-CSID</name>
        <t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the NEXT&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. When an SRH is processed {
S1.1   If (DA.Arg.Next != 0) {             //NEXT-CSID Processing
S1.2.    If (IPv6 Hop Limit <= 1) {
S1.3.       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.
S1.4.    }
S1.5.    Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)] 
            of the Destination Address.
S1.6.    Set the bits [(LBL+AL)..127] of the Destination Address to
            zero.
S1.7.    Decrement IPv6 Hop Limit by 1.
S1.8.    Submit the packet to the egress IPv6 FIB lookup for
            transmission to the next destination.
S1.9.  }                        //Below is REPLACE-CSID Processing
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
S09.   If (DA.Arg.Index != 0) {
S10.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
S11.       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.
S12.     }
S13.     Decrement DA.Arg.Index by 1.
S14.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
S15.       Decrement Segments Left by 1.
S16.       Decrement IPv6 Hop Limit by 1.
S17.       Update IPv6 DA with Segment List[Segments Left]
S18.       Submit the packet to the egress IPv6 FIB lookup for
            transmission to the new destination.
S19.     }
S20.   } Else {
S21.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
S22.       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.
S23.     }
S24.     Decrement Segments Left by 1.
S25.     Set DA.Arg.Index to (128/NF - 1).
S26.   }
S27.   Decrement IPv6 Hop Limit by 1.
S28.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [B..B+NF-1] of the Destination Address of the IPv6 header.
S29.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S30.   }
]]></artwork>
        <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&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. If (DA.Arg.Next != 0) {
S02.   If (IPv6 Hop Limit <= 1) {
S03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S04.   }
S05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
S06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
S07.   Decrement Hop Limit by 1.
S08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
S09. }
]]></artwork>
        <t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the NEXT&amp;REPLACE-CSID flavor:</t>
        <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>
      </section>
      <section anchor="endx-with-nextreplace-csid">
        <name>End.X with NEXT&amp;REPLACE-CSID</name>
        <t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. When an SRH is processed {
S02.  If (DA.Arg.Next != 0) {             //NEXT-CSID Processing
S03.      NEXT-CSID flavor END.X processing as per {{RFC9800}}
S04.  }                        //Below is REPLACE-CSID Processing
S05.      REPLACE-CSID flavor END.X processing as per {{RFC9800}}.
S06. }
]]></artwork>
        <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&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. If (DA.Arg.Next != 0) {
S02.     NEXT-CSID flavor END.X processing as per {{RFC9800}}
S03. }
]]></artwork>
        <t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT&amp;REPLACE-CSID flavor, it reuses the pseudo code of NEXT-CSID flavor <xref target="RFC9800"/>.</t>
        <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>
      </section>
      <section anchor="other-end-behaviors-with-nextreplace-csid">
        <name>Other End behaviors with NEXT&amp;REPLACE-CSID</name>
        <t>Similar to END and END.X, the other behaviors including END.T, End.B6.Encaps, End.B6.Encaps.Red, End.BM, End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M are following the same logic of combining NEXT-CSID and REPLACE-CSID flavor pseudo code.</t>
        <t>When processing the SRH of a packet matching a FIB entry locally instantiated as one of the END.T, End.B6.Encaps, End.B6.Encaps.Red, End.BM, End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M SID with the NEXT&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (DA.Arg.Next != 0) {             //NEXT-CSID Processing
S03.      NEXT-CSID flavor processing as per {{RFC9800}}
S04.   }                        //Below is REPLACE-CSID Processing
S05.      REPLACE-CSID flavor processing as per {{RFC9800}}.
S06. }
]]></artwork>
        <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 one of the END.T, End.B6.Encaps, End.B6.Encaps.Red, End.BM, End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M SID with the NEXT&amp;REPLACE-CSID flavor:</t>
        <artwork><![CDATA[
S01. If (DA.Arg.Next != 0) {
S02.     NEXT-CSID flavor END.X processing as per {{RFC9800}}
S03. }
]]></artwork>
        <t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as one of the END.T, End.B6.Encaps, End.B6.Encaps.Red, End.BM, End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M SID with the NEXT&amp;REPLACE-CSID flavor, it reuses the pseudo code of NEXT-CSID flavor <xref target="RFC9800"/>.</t>
        <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>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
fpr+ZtXw/4rh268Y/g1ZRdEEi00AAA==

-->

</rfc>
