<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.1.2) -->


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

<!ENTITY RFC8200 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC8402 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8754 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
<!ENTITY RFC8986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7942 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC9252 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9252.xml">
<!ENTITY RFC9259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9259.xml">
<!ENTITY RFC9350 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml">
<!ENTITY RFC9352 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9352.xml">
<!ENTITY RFC9513 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9513.xml">
<!ENTITY RFC9514 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9514.xml">
<!ENTITY I-D.ietf-6man-sids SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6man-sids.xml">
<!ENTITY I-D.ietf-idr-bgp-ls-sr-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-ls-sr-policy.xml">
<!ENTITY I-D.ietf-idr-sr-policy-safi SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-sr-policy-safi.xml">
<!ENTITY I-D.ietf-pce-segment-routing-ipv6 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-segment-routing-ipv6.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-spring-srv6-srh-compression-15" 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="April" day="09"/>

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

    <abstract>


<?line 237?>

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



    </abstract>



  </front>

  <middle>


<?line 241?>

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

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

<t>SRv6 Network Programming <xref target="RFC8986"/> defines a framework to build a network program with topological and service segments (also referred to by their Segment Identifier (SID)) carried in a Segment Routing Header (SRH) <xref target="RFC8754"/>.</t>

<t>Some SRv6 applications such as strict path traffic engineering may require long segment lists. Compressing the encoding of these long segment lists in the packet header can significantly reduce the header size. This document specifies new flavors to the SR segment endpoint behaviors defined in <xref target="RFC8986"/> that enable a compressed encoding of the SRv6 segment list.</t>

<t>The flavors defined in this document leverage the SRv6 data plane defined in <xref target="RFC8754"/> and <xref target="RFC8986"/>, and are compatible with the SRv6 control plane extensions for IS-IS <xref target="RFC9352"/>, OSPF <xref target="RFC9513"/>, and BGP <xref target="RFC9252"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>This document leverages the terms defined in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>. The reader is assumed to be familiar with this terminology.</t>

<t>This document introduces the following new terms:</t>

<t><list style="symbols">
  <t>Locator-Block: The most significant bits of a SID locator that represent the SRv6 SID block. The Locator-Block is referred to as &quot;B&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Locator-Node: The least significant bits of a SID locator that identify the SR segment endpoint node instantiating the SID. The Locator-Node is referred to as &quot;N&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Compressed-SID (C-SID): A compressed encoding of a SID. The C-SID includes the Locator-Node and Function bits of the SID being compressed.</t>
  <t>C-SID container: A 128-bit container holding a list of one or more C-SIDs.</t>
  <t>C-SID sequence: A group of one or more consecutive segment list entries carrying the common Locator-Block and at least one C-SID container.</t>
  <t>Uncompressed SID sequence: A group of one or more consecutive uncompressed SIDs in a segment list.</t>
  <t>Compressed segment list encoding: A segment list encoding that reduces the packet header length thanks to one or more C-SID sequences. A compressed segment list encoding also contains zero, one, or more uncompressed SID sequences.</t>
  <t>Global Identifiers Block (GIB): The pool of C-SID values available for global allocation.</t>
  <t>Local Identifiers Block (LIB): The pool of C-SID values available for local allocation.</t>
</list></t>

<t>In this document, the length of each constituent part of a SID is referred to as follows.</t>

<t><list style="symbols">
  <t>LBL is the Locator-Block length of the SID.</t>
  <t>LNL is the Locator-Node length of the SID.</t>
  <t>FL is the Function length of the SID.</t>
  <t>AL is the Argument length of the SID.</t>
</list></t>

<t>In addition, LNFL is the sum of the Locator-Node length and the Function length of the SID. It is also referred to as the C-SID length.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="basic-concepts"><name>Basic Concepts</name>

<t>In an SR domain, all SRv6 SIDs instantiated from the same Locator-Block share the same most significant bits. In addition, when the combined length of the SRv6 SID Locator, Function, and Argument is smaller than 128 bits, the least significant bits of the SID are padded with zeros.
The compressed segment list encoding seeks to decrease the packet header length by avoiding the repetition of the same Locator-Block and reducing the use of padding bits.</t>

<t>The compressed segment list encoding is fully compatible with and builds upon the mechanisms specified in <xref target="RFC8754"/> and <xref target="RFC8986"/>. The compressed encoding is achieved by combining a compressed segment list encoding logic on the SR source node (<xref target="sec-source-node"/>) with new flavors of the base SRv6 segment endpoint behaviors that decode this compressed encoding (<xref target="sec-endpoint"/>).</t>

<t>A segment list can be encoded in the packet header using any combination of compressed and uncompressed sequences. The C-SID sequences leverage the flavors defined in this document, while the uncompressed sequences use behaviors and flavors defined in other documents, such as <xref target="RFC8986"/>. An SR source node constructs and compresses the SID-list depending on the SIDs instantiated on each SR segment endpoint node that the packet should traverse, as well as its own compression capabilities.</t>

<t>The compressed segment list encoding works with any Locator-Block allocation. For example, each routing domain within the SR domain can be allocated a /48 Locator-Block from a global IPv6 block available to the operator, or from a prefix allocated to SRv6 SIDs as discussed in Section 5 of <xref target="I-D.ietf-6man-sids"/>.</t>

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

<t>This section defines two SR segment endpoint flavors, NEXT-C-SID and REPLACE-C-SID, for the End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, and End.BM behaviors of <xref target="RFC8986"/>.
This section also defines a REPLACE-C-SID flavor for the End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M behaviors of <xref target="RFC8986"/>.
A counterpart NEXT-C-SID flavor is not defined for these SIDs because they can be included within a C-SID sequence that uses the NEXT-C-SID flavor without any modification of the procedure defined in <xref target="RFC8986"/>.
Future documents may extend the applicability of the NEXT-C-SID and REPLACE-C-SID flavors to other SR segment endpoint behaviors (see <xref target="sec-future"/>).</t>

<t>The use of these flavors, either individually or in combination, enables the compressed segment list encoding.</t>

<t>The NEXT-C-SID flavor and the REPLACE-C-SID flavor both leverage the SID Argument to determine the next segment to be processed, but employ different segment list compression schemes.
With the NEXT-C-SID flavor, each C-SID container is a fully formed SRv6 SID with the common Locator-Block for all the C-SIDs in the C-SID container, a Locator-Node and Function that are those of the first C-SID, and an Argument carrying the subsequent C-SIDs.
With the REPLACE-C-SID flavor, only the first element in a C-SID sequence is a fully formed SRv6 SID. It has the common Locator-Block for all the C-SIDs in the C-SID sequence, and a Locator-Node and Function that are those of the first C-SID. The remaining elements in the C-SID sequence are C-SID containers carrying the subsequent C-SIDs without the Locator-Block.</t>

<t>SRv6 is intended for use in a variety of networks that require different prefix lengths and SID numbering spaces. Each of the two flavors introduced in this document comes with its own recommendations for Locator-Block and C-SID length, as specified in <xref target="sec-next"/> and <xref target="sec-replace"/>. These flavors are best suited for different environments, depending on the requirements of the network. For instance, larger C-SID lengths may be more suitable for networks requiring ample SID numbering space, while smaller C-SID lengths are better for compression efficiency. The two compression flavors allow the compressed segment list encoding to adapt to a range of requirements, with support for multiple compression levels. Network operators can choose the flavor that best suits their use case, deployment design, and network scale.</t>

<t>The SIDs of both flavors can co-exist in the same SR domain, on the same SR segment endpoint node, and even in the same segment list. However, it is RECOMMENDED, for ease of operation, that a single compressed encoding flavor be used in a given routing domain. In a multi-domain deployment, different flavors may be used in different routing domains of the SR domain.</t>

<t>In the remainder of this document, the term &quot;a SID of this document&quot; refers to any End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, or End.BM SID with the NEXT-C-SID or the REPLACE-C-SID flavor, and with any combination of Penultimate Segment Pop (PSP), Ultimate Segment Pop (USP), and Ultimate Segment Decapsulation (USD) flavor, or any End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, or End.DT2M with the REPLACE-C-SID flavor. All the SIDs introduced in this document are listed in <xref target="tbl-iana-endpoint-behaviors"/>.</t>

<t>In the remainder of this document, the terms &quot;NEXT-C-SID flavor SID&quot; and &quot;REPLACE-C-SID flavor SID&quot; refer to any SID of this document with the NEXT-C-SID flavor and with the REPLACE-C-SID flavor, respectively.</t>

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

<t>A C-SID sequence using the NEXT-C-SID flavor comprises one or more C-SID containers. Each C-SID container is a fully formed 128-bit SID structured as shown in <xref target="fig-next-struct"/>. It carries a Locator-Block followed by a series of C-SIDs. The Locator-Node and Function of the C-SID container are those of the first C-SID, and its Argument is the contiguous series of subsequent C-SIDs. The second C-SID is encoded in the most significant bits of the C-SID container Argument, the third C-SID is encoded in the bits of the Argument that immediately follow the second C-SID, and so on. When all C-SIDs have the same length, a C-SID container can carry up to K C-SIDs, where K is computed as floor((128-LBL)/LNFL) (floor(x) is the greatest integer less than or equal to x <xref target="GKP94"/>). Each C-SID container for NEXT-C-SID is independent, such that contiguous C-SID containers in a C-SID sequence can be considered as separate C-SID sequences.</t>

<t>When a C-SID sequence comprises at least two C-SIDs, the last C-SID in the sequence is not required to have the NEXT-C-SID flavor. It can be bound to any behavior and flavor(s), including the REPLACE-C-SID flavor, as long as the updated destination address resulting from the processing of the previous C-SID in the sequence is a valid form for that last SID. Line S12 of the first pseudocode in <xref target="sec-source-compression"/> provides sufficient conditions to ensure this property.</t>

<figure title="Structure of a NEXT-C-SID flavor SID (scaled for a 48-bit Locator-Block, 16-bit combined Locator-Node and Function, and 64-bit Argument)" anchor="fig-next-struct"><artwork><![CDATA[
+------------------------------------------------------------------+
|     Locator-Block      |Loc-Node|            Argument            |
|                        |Function|                                |
+------------------------------------------------------------------+
 <-------- LBL ---------> < LNFL > <------------- AL ------------->
]]></artwork></figure>

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

<t>A deployment should use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain. Heterogeneous lengths, while possible, may impact the compression efficiency.</t>

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the NEXT-C-SID flavor, the SR segment endpoint node applies the procedure specified in the following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-next-flavors"/>.</t>

<t>An SR segment endpoint node instantiating a SID of this document with the NEXT-C-SID flavor MUST accept any Argument value for that SID.</t>

<t>At high level, for any SID with the NEXT-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. If the Argument value of the active SID is non-zero, the SR segment endpoint node constructs the next SID from the active SID by copying the entire SID Argument value to the bits that immediately follow the Locator-Block, thus overwriting the active SID Locator-Node and Function with those of the next C-SID, and filling the least significant LNFL bits of the Argument with zeros. Otherwise (if the Argument value is 0), the SR segment endpoint node copies the next 128-bit Segment List entry from the SRH to the Destination Address field of the IPv6 header.</t>

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

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

<t>The below pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

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

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

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

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

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

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

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.2 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

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

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

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

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Set the packet's associated FIB table to T.
N08.2.   Submit the packet to the egress IPv6 FIB lookup for
           transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.3 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

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

</section>
<section anchor="sec-next-endb6"><name>End.B6.Encaps with NEXT-C-SID</name>

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

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push a new IPv6 header with its own SRH containing B.
N08.2.   Set the outer IPv6 SA to A.
N08.3.   Set the outer IPv6 DA to the first SID of B.
N08.4.   Set the outer Payload Length, Traffic Class, Flow Label,
           Hop Limit, and Next Header fields.
N08.5.   Submit the packet to the egress IPv6 FIB lookup for
           transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.13 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

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

<t>Similar to the base End.B6.Encaps SID defined in Section 4.13 of <xref target="RFC8986"/>, the NEXT-C-SID flavor variant updates the Destination Address field of the inner IPv6 header to the next SID in the original segment list before encapsulating the packet with the segment list of SR Policy B. At the endpoint of SR Policy B, the encapsulation is removed and the inner packet is forwarded towards the exposed destination address, which already contains the next SID in the original segment list.</t>

</section>
<section anchor="sec-next-endb6red"><name>End.B6.Encaps.Red with NEXT-C-SID</name>

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

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

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

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push the MPLS label stack for B.
N08.2.   Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.15 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

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

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

<t>PSP: The PSP flavor defined in Section 4.16.1 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

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

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

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

<t>A C-SID sequence using the REPLACE-C-SID flavor starts with a C-SID container in fully formed 128-bit SID format. The Locator-Block of this SID is the common Locator-Block for all the C-SIDs in the C-SID sequence, its Locator-Node and Function are those of the first C-SID, and its Argument carries the index of the current C-SID in the current C-SID container. The Argument value is initially 0. When more segments are present in the segment list, the C-SID sequence continues with one or more C-SID containers in packed format carrying the subsequent C-SIDs in the sequence. Each container in packed format is a 128-bit Segment List entry split into K &quot;positions&quot; of LNFL bits, where K is computed as floor(128/LNFL). If LNFL does not divide into 128 perfectly, a zero pad is added in the least significant bits of the C-SID container to fill the bits left over. The second C-SID in the C-SID sequence is encoded in the least significant bit position of the first C-SID container in packed format (position K-1), the third C-SID is encoded in position K-2, and so on.</t>

<t>The last C-SID in the C-SID sequence is not required to have the REPLACE-C-SID flavor. It can be bound to any behavior and flavor(s), including the NEXT-C-SID flavor, as long as it meets the conditions defined in <xref target="sec-source-node"/>.</t>

<t>The structure of a SID with the REPLACE-C-SID flavor is shown in <xref target="fig-replace-struct"/>. The same structure is also that of the C-SID container for REPLACE-C-SID in fully formed 128-bit SID format.</t>

<figure title="Structure of a REPLACE-C-SID flavor SID (scaled for a 48-bit Locator-Block, 32-bit combined Locator-Node and Function, and 48-bit Argument)" anchor="fig-replace-struct"><artwork><![CDATA[
+-------------------------------------------------------------------+
|     Locator-Block      |  Locator-Node  |        Argument         |
|                        |   + Function   |                         |
+-------------------------------------------------------------------+
 <-------- LBL ---------> <---- LNFL ----> <--------- AL ---------->
]]></artwork></figure>

<t>The structure of a C-SID container for REPLACE-C-SID in packed format is shown in <xref target="fig-replace-container"/>.</t>

<figure title="Structure of a C-SID container for REPLACE-C-SID using a 32-bit C-SID length (K = 4)" anchor="fig-replace-container"><artwork><![CDATA[
+-------------------------------------------------------------------+
|  Fourth C-SID  |  Third C-SID   |  Second C-SID  |  First C-SID   |
|  (position 0)  |  (position 1)  |  (position 2)  |  (position 3)  |
+-------------------------------------------------------------------+
 <---- LNFL ----> <---- LNFL ----> <---- LNFL ----> <---- LNFL ---->
]]></artwork></figure>

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

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

<t>A deployment should use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain. Heterogeneous C-SID lengths, while possible, may impact the compression efficiency.</t>

<t>The Argument length (AL) for REPLACE-C-SID flavor SIDs is equal to 128-LBL-LNFL. The index value is encoded in the least significant X bits of the Argument, where X is computed as ceiling(log_2(128/LNFL)).</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the REPLACE-C-SID flavor, the SR segment endpoint node applies the procedure specified in the following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-replace-flavors"/>.</t>

<t>At high level, at the start of a C-SID sequence using the REPLACE-C-SID flavor, the first C-SID container in fully formed 128-bit SID format is copied to the Destination Address of the IPv6 header. Then, for any SID with the REPLACE-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. When an SRH is present, the SR segment endpoint node decrements the index value in the Argument of the active SID if the index value is not 0 or, if it is 0, decrements the Segments Left value in the SRH and sets the index value in the Argument of the active SID to K-1. The updated index value indicates the position of the next C-SID within the C-SID container in packed format at the &quot;Segment List&quot; index &quot;Segments Left&quot; in the SRH. The SR segment endpoint node then constructs the next SID by copying this next C-SID to the bits that immediately follow the Locator-Block in the Destination Address field of the IPv6 header, thus overwriting the active SID Locator-Node and Function with those of the next C-SID. If no SRH is present, the SR segment endpoint node ignores the index value in the SID Argument (except End.DT2M, see <xref target="sec-replace-enddx"/>) and processes the upper-layer header as per <xref target="RFC8986"/>. The C-SID sequence ends with a last C-SID in the last C-SID container that does not have the REPLACE-C-SID flavor, or with the special C-SID value 0, or when reaching the end of the segment list, whichever comes first.</t>

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

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

<t>Line S02 of SRH processing in Section 4.1 of <xref target="RFC8986"/> is replaced as follows.</t>

<figure><artwork><![CDATA[
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<t>Lines S09 to S15 are replaced by the following pseudo code.</t>

<figure><artwork><![CDATA[
R01. If (DA.Arg.Index != 0) {
R02.   If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R04.   }
R05.   Decrement DA.Arg.Index by 1.
R06.   If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.     Decrement Segments Left by 1.
R08.     Decrement IPv6 Hop Limit by 1.
R09.     Update IPv6 DA with Segment List[Segments Left]
R10.     Submit the packet to the egress IPv6 FIB lookup for
          transmission to the new destination.
R11.   }
R12. } Else {
R13.   If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R15.   }
R16.   Decrement Segments Left by 1.
R17.   Set DA.Arg.Index to (floor(128/LNFL) - 1).
R18. }
R19. Decrement IPv6 Hop Limit by 1.
R20. Write Segment List[Segments Left][DA.Arg.Index] into the bits
       [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
       header.
R21. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

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

  <t><list style="symbols">
    <t><spanx style="verb">DA.Arg.Index</spanx> identifies the value contained in the bits <spanx style="verb">[(128-ceiling(log_2(128/LNFL)))..127]</spanx> in the Destination Address of the IPv6 header.</t>
    <t><spanx style="verb">Segment List[Segments Left][DA.Arg.Index]</spanx> identifies the value contained in the bits <spanx style="verb">[DA.Arg.Index*LNFL..(DA.Arg.Index+1)*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
  </list></t>
</aside>

<t>The upper-layer header processing described in Section 4.1.1 of <xref target="RFC8986"/> is unchanged.</t>

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

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

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

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.2 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

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

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

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

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Set the packet's associated FIB table to T.
R10.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Set the packet's associated FIB table to T.
R21.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.3 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

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

</section>
<section anchor="sec-replace-endb6"><name>End.B6.Encaps with REPLACE-C-SID</name>

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

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push a new IPv6 header with its own SRH containing B.
R10.2. Set the outer IPv6 SA to A.
R10.3. Set the outer IPv6 DA to the first SID of B.
R10.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R10.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push a new IPv6 header with its own SRH containing B.
R21.2. Set the outer IPv6 SA to A.
R21.3. Set the outer IPv6 DA to the first SID of B.
R21.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R21.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.13 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

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

</section>
<section anchor="sec-replace-endb6red"><name>End.B6.Encaps.Red with REPLACE-C-SID</name>

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

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

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

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push the MPLS label stack for B.
R10.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.15 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

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

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

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, or End.DT2U SID with the REPLACE-C-SID flavor, the corresponding procedure described in Sections 4.4 through 4.11 of <xref target="RFC8986"/> is executed.</t>

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

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

<t>For any End.DT2M SID with the REPLACE-C-SID flavor, the value of <spanx style="verb">Arg.FE2</spanx> is 16-bit long. The SR segment endpoint node obtains the value <spanx style="verb">Arg.FE2</spanx> from the 16 most significant bits of <spanx style="verb">DA.Argument</spanx> if <spanx style="verb">DA.Arg.Index</spanx> is zero, or from the 16 least significant bits of the next position in the current C-SID container (<spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx>) otherwise (<spanx style="verb">DA.Arg.Index</spanx> is non-zero).</t>

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

<t>PSP:
When combined with the REPLACE-C-SID flavor, the additional PSP flavor instructions defined in Section 4.16.1.2 of <xref target="RFC8986"/> are inserted after lines R09 and R20 of the pseudocode in <xref target="sec-replace-end"/>, and the first line of the inserted instructions after R20 is modified as follows.</t>

<figure><artwork><![CDATA[
R20.1.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
             Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<aside>
  <t>Note: <spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx> identifies the value contained in the bits <spanx style="verb">[(DA.Arg.Index-1)*LNFL..DA.Arg.Index*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
</aside>

<t>USP:
When combined with the REPLACE-C-SID flavor, the line S03 of the pseudocode in <xref target="sec-replace-end"/> are substituted by the USP flavor instructions S03.1 to S03.4 defined in Section 4.16.2 of <xref target="RFC8986"/>. Note that S03 is shown in the complete pseudocode in <xref target="sec-replace-end-complete"/>.</t>

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

</section>
</section>
</section>
<section anchor="c-sid-allocation"><name>C-SID Allocation</name>

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

<t>In order to efficiently manage the C-SID numbering space, a deployment may divide it into two non-overlapping sub-spaces: a Global Identifiers Block (GIB) and a Local Identifiers Block (LIB).</t>

<t>The C-SID values that are allocated from the GIB have a global semantic within the Locator-Block, while those that are allocated from the LIB have a local semantic on an SR segment endpoint node and within the scope of the Locator-Block.</t>

<t>The concept of LIB is applicable to SRv6 and specifically to its NEXT-C-SID and REPLACE-C-SID flavors. The shorter the C-SID, the more benefit the LIB brings.</t>

<t>The opportunity to use these sub-spaces, their size, and their C-SID allocation policy depends on the C-SID length relative to the size of the network (e.g., number of nodes, links, service routes). Some guidelines for a typical deployment scenario are provided in the below subsections.</t>

<section anchor="global-c-sid"><name>Global C-SID</name>

<t>A global C-SID is a C-SID allocated from the GIB.</t>

<t>A global C-SID identifies a segment defined at the Locator-Block level. The tuple (Locator-Block, C-SID) identifies the same segment across all nodes of the SR domain. A typical example is a prefix segment bound to the End behavior.</t>

<t>A node can have multiple global C-SIDs under the same Locator-Block (e.g., one per IGP flexible algorithm (<xref target="RFC9350"/>)). Multiple nodes may share the same global C-SID (e.g., anycast).</t>

</section>
<section anchor="local-c-sid"><name>Local C-SID</name>

<t>A local C-SID is a C-SID allocated from the LIB.</t>

<t>A local C-SID identifies a segment defined at the node level and within the scope of a particular Locator-Block. The tuple (Locator-Block, C-SID) identifies a different segment on each node of the SR domain. A typical example is a non-routed Adjacency segment bound to the End.X behavior.</t>

<t>Let N1 and N2 be two different physical nodes of the SR domain and I a local C-SID value, N1 may allocate value I to SID S1 and N2 may allocate the same value I to SID S2.</t>

</section>
<section anchor="sec-c-sid-lib-recommendation"><name>GIB/LIB Usage</name>

<t>GIB and LIB usage is a local implementation and/or configuration decision, however, some guidelines for determining usage for specific SID behaviors and recommendations are provided.</t>

<t>The GIB number space is shared among all SR segment endpoint nodes using SRv6 locators under a Locator-Block space.  The more SIDs assigned from this space, per node, the faster it is exhausted.  Therefore its use is prioritized for global segments, such as SIDs that identify a node.</t>

<t>The LIB number space is unique per node. Each node is able to fully utilize the entire LIB number space without consideration of assignments at other nodes.  Therefore its use is prioritized for local segments, such as SIDs that identify services (of which there may be many) at nodes, cross-connects, or adjacencies.</t>

<t>While a longer C-SID length permits more flexibility in which SID behaviors may be assigned from the GIB, it also reduces the compression efficiency.</t>

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

<t><list style="symbols">
  <t>NEXT-C-SID:
  <list style="symbols">
      <t>GIB: End</t>
      <t>LIB: End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V (including large-scale pseudowire), End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
    </list></t>
  <t>REPLACE-C-SID:
  <list style="symbols">
      <t>GIB: End, End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V, End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
      <t>LIB: End.DX2/2V for large-scale pseudowire</t>
    </list></t>
</list></t>

<t>Any other allocation is possible but may lead to a suboptimal use of the C-SID numbering space.</t>

</section>
<section anchor="sec-c-sid-installation"><name>Recommended Installation of C-SIDs in FIB</name>

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

<t>In addition, an SR segment endpoint node instantiating NEXT-C-SID flavor SIDs from both GIB and LIB may install combined &quot;Global + Local&quot; FIB entries to match a sequence of global and local C-SIDs in a single longest prefix match (LPM) lookup.</t>

<t>For example, let us consider an SR segment endpoint node 10 instantiating the following two NEXT-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b1:10::</spanx> bound to the End behavior with the NEXT-C-SID flavor is instantiated from GIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 16 (Locator-Node value <spanx style="verb">0x0010</spanx>),</t>
      <t>Function length (FL) = 0, and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
  <t><spanx style="verb">2001:db8:b1:f123::</spanx> bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor is instantiated from LIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 0,</t>
      <t>Function length (FL) = 16 (Function value <spanx style="verb">0xf123</spanx>), and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b1:10::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:10::/64</spanx> bound the End SID with the NEXT-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b1:f123::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:f123::/64</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>In addition, Node 10 may also install the combined FIB entry <spanx style="verb">2001:db8:b1:10:f123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>As another example, let us consider an SR segment endpoint node 20 instantiating the following two REPLACE-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b2:20:1::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End behavior with the REPLACE-C-SID flavor.</t>
  <t><spanx style="verb">2001:db8:b2:20:123::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b2:20:1::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:1::/80</spanx> bound the End SID with the REPLACE-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b2:20:123::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>

</section>
</section>
<section anchor="sec-source-node"><name>SR Source Node</name>

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

<section anchor="segment-validation-for-compression"><name>Segment 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, if known, of each SID of this document in the segment list. The SR source node does so regardless of whether the segment list is explicitly configured, locally computed, or advertised by a controller (e.g., via BGP <xref target="I-D.ietf-idr-sr-policy-safi"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>).</t>

<t>A SID structure is valid for compression if it meets all the following conditions.</t>

<t><list style="symbols">
  <t>The Locator-Block length is not 0.</t>
  <t>The sum of the Locator-Node length and Function length is not 0.</t>
  <t>The Argument length is equal to 128-LBL-LNL-FL.</t>
</list></t>

<t>When compressing a segment list, the SR source node MUST treat an invalid SID structure as unknown, and treats the SID as 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.</t>

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

<t>An SR source node MAY compress a segment list when it includes NEXT-C-SID and/or REPLACE-C-SID flavor SIDs in order 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 segment 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 segment list. For example, by selecting a C-SID flavor SID over an equivalent non-C-SID flavor SID or by consistently selecting SIDs of the same C-SID flavor within each routing domain.</t>

<t>The segment 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 result in the same set of possible forwarding paths as the original segment list.</t>

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

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

<t><list style="symbols">
  <t>When the compression method encounters a series of one or more consecutive compressible NEXT-C-SID flavor SIDs, it compresses the series as follows. A SID with the NEXT-C-SID flavor is compressible if its structure is known to the SR source node and its Argument value is 0.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize a C-SID container equal to the first SID in the
       series, and initialize the remaining capacity of the C-SID
       container to the AL of that SID
S02. For each subsequent SID in the series {
S03.   If the current SID Locator-Block matches that of the C-SID
         container and the current SID LNFL is lower than or equal to
         the remaining capacity of the C-SID container {
S04.     Copy the current SID Locator-Node and Function to the most
           significant remaining Argument bits of the C-SID container
           and decrement the remaining capacity by LNFL
S05.   } Else {
S06.     Push the C-SID container onto the compressed segment list
S07.     Initialize a new C-SID container equal to the current SID in
           the series, and initialize the remaining capacity of the
           C-SID container to the AL of that SID
S08.   } // End If
S09. } // End For
S10. If at least one SID remains in the uncompressed segment list
       (following the series of compressible NEXT-C-SID flavor SIDs){
S11.   Set S to the next SID in the uncompressed segment list
S12.   If S is advertised with a SID structure, and the Locator-Block
         of S matches that of the C-SID container, and the sum of the
         Locator-Node, Function, and Argument length of S is lower
         than or equal to the remaining capacity of the C-SID
         container {
S13.     Copy the Locator-Node, Function, and Argument of S to the
           most significant remaining Argument bits of the C-SID
           container
S14.   } // End If
S15. } // End If
S16. Push the C-SID container onto the compressed segment list
]]></artwork></figure>

<t><list style="symbols">
  <t>When the compression method encounters a series of REPLACE-C-SID flavor SIDs of the same C-SID length in the uncompressed segment list, it compresses the series as per the following high-level pseudo code. A compression checking function ComCheck(F, S) is defined to check if two SIDs F and S share the same SID structure and Locator-Block value, and if S has either no Argument or an Argument with value 0. If the check passes, then ComCheck(F,S) returns true.</t>
</list></t>

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

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

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

<t>Regardless of how a compressed segment list is produced, the SR source node writes it in the IPv6 packet as described in Sections 4.1 and 4.1.1 of <xref target="RFC8754"/>. The text is reproduced below for reference.</t>

<blockquote>
  <t>A source node steers a packet into an SR Policy. If the SR Policy
results in a Segment List containing a single segment, and there is
no need to add information to the SRH flag or add TLV; the DA is set
to the single Segment List entry, and the SRH MAY be omitted.</t>

  <t>When needed, the SRH is created as follows:</t>

  <t>The Next Header and Hdr Ext Len fields are set as specified in
  <xref target="RFC8200"></xref>.</t>

  <t>The Routing Type field is set to 4.</t>

  <t>The DA of the packet is set with the value of the first segment.</t>

  <t>The first element of the SRH Segment List is the ultimate segment.
  The second element is the penultimate segment, and so on.</t>

  <t>The Segments Left field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>The Last Entry field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>TLVs (including HMAC) may be set according to their specification.</t>

  <t>The packet is forwarded toward the packet&#39;s Destination Address
  (the first segment).</t>

  <t>When a source does not require the entire SID list to be preserved
in the SRH, a reduced SRH may be used.</t>

  <t>A reduced SRH does not contain the first segment of the related SR
Policy (the first segment is the one already in the DA of the IPv6
header), and the Last Entry field is set to n-2, where n is the
number of elements in the SR Policy.</t>
</blockquote>

</section>
<section anchor="sec-source-next"><name>Rules for segment lists containing NEXT-C-SID flavor SIDs</name>

<t><list style="numbers">
  <t>If a Destination Option header would follow an SRH with a segment list of more than one segment compressed as a single NEXT-C-SID container, the SR source node MUST NOT omit the SRH.</t>
  <t>When the last Segment List entry (index 0) in the SRH is a C-SID container representing more than one segment, the PSP operation is performed at the segment preceding the first segment of this C-SID container in the segment list. If the PSP behavior should instead be performed at the penultimate segment along the path, the SR source node MUST NOT compress the ultimate segment of the segment list into a C-SID container.</t>
  <t>If a Destination Option header would follow an SRH with a last Segment List entry being a NEXT-C-SID container representing more than one segment, the SR source node MUST ensure that the PSP operation is not performed before the penultimate SR segment endpoint node along the path.</t>
</list></t>

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

<t><list style="numbers">
  <t>All SIDs compressed in a REPLACE-C-SID sequence MUST share the same Locator-Block and the same compression scheme.</t>
  <t>All SIDs except the last one in a C-SID sequence for REPLACE-C-SID MUST have the REPLACE-C-SID flavor. If the last C-SID container is fully filled (i.e., the last C-SID is at position 0 in the C-SID container) and the last SID in the C-SID sequence is not the last segment in the segment list, the last SID in the C-SID sequence MUST NOT have the REPLACE-C-SID flavor.</t>
  <t>When a REPLACE-C-SID flavor C-SID is present as the last SID in a container that is not the last Segment List entry (index 0) in the SRH, the next element in the segment list MUST be a REPLACE-C-SID container in packed format carrying at least one C-SID.</t>
</list></t>

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

<t>When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNL=16, FL=0, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 16-bit compression. All other SIDs allocated from this locator with LNL=16, FL=16, AL=128-LBL-NL-FL, and the value of the Argument is all 0 are also marked as using 16-bit compression. When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNFL=32, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 32-bit compression.</t>

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

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

<t>At the originating 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 segment list is a C-SID container, this address can be obtained from the last element in the uncompressed segment 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 recipient(s), that address will be in the Destination Address field of the IPv6 header.</t>

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

<t>Some SRv6 traffic may need to cross multiple routing domains, such as different Autonomous Systems (ASes) or different routing areas within an SR domain. Different routing domains may use different addressing schema and Locator-Blocks.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>This document does not require any new extensions to routing protocols.</t>

<t>Section 8 of <xref target="RFC8986"/> provides an overview of the control plane protocols used for signaling of the SRv6 SIDs introduced by that document.
The SRv6 SIDs introduced by this document are advertised using the same SRv6 extensions for various routing protocols, such as</t>

<t><list style="symbols">
  <t>IS-IS <xref target="RFC9352"/></t>
  <t>OSPFv3 <xref target="RFC9513"/></t>
  <t>BGP <xref target="RFC9252"/>, <xref target="RFC9514"/>, <xref target="I-D.ietf-idr-sr-policy-safi"/></t>
  <t>BGP-LS <xref target="I-D.ietf-idr-bgp-ls-sr-policy"/></t>
  <t>PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/></t>
</list></t>

<t>The SR segment endpoint node MUST set the SID Argument bits to 0 when advertising a locally instantiated SID of this document in the routing protocol (e.g., IS-IS <xref target="RFC9352"/>, OSPF <xref target="RFC9513"/>, or BGP-LS <xref target="RFC9514"/>).</t>

<t>Signaling the SRv6 SID Structure is REQUIRED for all the SIDs introduced in this document. It is used by an SR source node to compress a segment list as described in <xref target="sec-source-node"/>.
The node initiating the SID advertisement MUST set the length values in the SRv6 SID Structure to match the format of the SID on the SR segment endpoint node. For example, for a SID of this document instantiated from a /48 SRv6 SID block and a /64 Locator, and having a 16-bit Function, the SRv6 SID Structure advertisement carries the following values.</t>

<t><list style="symbols">
  <t>Locator-Block length: 48</t>
  <t>Locator-Node length: 16</t>
  <t>Function length: 16</t>
  <t>Argument length: 48 (= 128-48-16-16)</t>
</list></t>

<t>A local C-SID may be advertised in the control plane individually and/or in combination with a global C-SID instantiated on the same SR segment endpoint node, with the End behavior, and the same Locator-Block and flavor as the local C-SID. A combined global and local C-SID is advertised as follows.</t>

<t><list style="symbols">
  <t>The SID Locator-Block is that shared by the global and local C-SIDs</t>
  <t>The SID Locator-Node is that of global C-SID</t>
  <t>The SID Function is that of the local C-SID</t>
  <t>The SID Argument length is equal to 128-LBL-LNL-FL and the SID Argument value is 0</t>
  <t>All other attributes of the SID (e.g., endpoint behavior or algorithm) are those of the local C-SID</t>
</list></t>

<t>The local C-SID combined advertisement is needed in particular for control plane protocols mandating that the SID is a subnet of a locator advertised in the same protocol (e.g., Section 8 of <xref target="RFC9352"/> and Section 9 of <xref target="RFC9513"/> for advertising Adjacency SIDs in IS-IS and OSPFv3, respectively).</t>

<t>For a segment list computed by a controller and signaled to an SR source node (e.g., via BGP <xref target="I-D.ietf-idr-sr-policy-safi"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>), the controller provides the ordered segment list comprising the uncompressed SIDs, with their respective behavior and structure, to the SR source node. The SR source node may then compress the segment list as described in <xref target="sec-source-node"/>.</t>

<t>When a node that does not support this specification receives an advertisement of a SID of this document, it handles it as described in the corresponding control plane specification (e.g., Sections 7.2, 8.1, and 8.2 of <xref target="RFC9352"/>, Sections 8, 9.1, and 9.2 of <xref target="RFC9513"/>, and Section 3.1 of <xref target="RFC9252"/>).</t>

</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<section anchor="pinging-a-sid"><name>Pinging a SID</name>

<t>An SR source node may ping an SRv6 SID by sending an ICMPv6 echo request packet destined to the SRv6 SID, with or without a segment list. This operation is illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document without a segment list, the SR source node places the SID in the destination address of the ICMPv6 echo request and MUST set the Argument of the SID to 0. 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. If the SR source node sets a non-zero Argument value, the SR segment endpoint node would instead attempt to determine the next destination of the packet.</t>

<t>When pinging a SID of this document via a segment list, the SR source node MUST construct the IPv6 packet as described in <xref target="sec-source-node"/> and compute the ICMPv6 checksum as described in <xref target="sec-source-checksum"/>.</t>

</section>
<section anchor="sec-operations-icmp-error"><name>ICMP Error Processing</name>

<t>When an IPv6 node encounters an error while processing a packet, it may report that error by sending an IPv6 error message to the packet source with an enclosed copy of the invoking packet. For the source of an invoking packet to process the ICMP error message, the ultimate destination address of the IPv6 header may be required.</t>

<t>Section 5.4 of <xref target="RFC8754"/> defines the logic that an SR source node follows to determine the ultimate destination of an invoking packet containing an SRH.</t>

<t>For an SR source node that supports the compressed segment list encoding defined in this document, the logic to determine the ultimate destination is generalized as follows.</t>

<t><list style="symbols">
  <t>If the destination address of the invoking IPv6 packet matches a known SRv6 SID, modify the invoking IPv6 packet by applying the SID behavior associated with the matched SRv6 SID;</t>
  <t>Repeat until the application of the SID behavior would result in the processing of the upper-layer header.</t>
</list></t>

<t>The destination address of the resulting IPv6 packet may be used as the ultimate destination of the invoking IPv6 packet.</t>

<t>Since the SR source node that needs to determine the ultimate destination is the same node that originally built the segment list in the invoking packet, it is able to perform this operation for all the SIDs in the packet.</t>

</section>
<section anchor="upper-layer-checksum-verification-on-transit-nodes"><name>Upper Layer Checksum Verification on Transit Nodes</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>Middleboxes such as packet sniffers, if deployed inside the SR domain, may fail to verify the upper layer checksum of transit SRv6 traffic. Making these middleboxes SRv6 aware in general or C-SID aware in particular is out of the scope of this document.</t>

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

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

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

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

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

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

<t>Cisco Systems reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and the SR source node efficient SID-list encoding (<xref target="sec-source-node"/>) for NEXT-C-SID flavor SIDs. These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Cisco NCS 540 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS540"/></t>
  <t>Cisco NCS 560 Series routers running IOS XR 7.6.x or above <xref target="IMPL-CISCO-NCS560"/></t>
  <t>Cisco NCS 5500 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS5500"/></t>
  <t>Cisco NCS 5700 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-NCS5700"/></t>
  <t>Cisco 8000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-8000"/></t>
  <t>Cisco ASR 9000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-ASR9000"/></t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="huawei-technologies"><name>Huawei Technologies</name>

<t>Huawei Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).
These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Huawei ATN8XX,ATN910C,ATN980B routers running VRPV800R021C00 or above.</t>
  <t>Huawei CX600-M2 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE40E,ME60-X1X2,ME60-X3X8X16 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE5000E,NE9000 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NCE-IP Controller running V1R21C00 or above.</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the REPLACE-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="nokia"><name>Nokia</name>

<t>Nokia reported the following implementations (<xref target="IMPL-NOKIA-20.10"/>) of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).  These are used as part of its shortest path forwarding (in algorithm 0 and Flex-Algo), remote and TI-LFA repair tunnel, and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Nokia 7950 XRS 20/20e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-12e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7/12 routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7s/14s routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-1/1s/2s routers running SROS Release 22.10 or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on February 3, 2023.</t>

</section>
<section anchor="arrcus"><name>Arrcus</name>

<t>Arrcus reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo),  TI-LFA, micro-loop avoidance and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Arrcus running on Ufi Space routers S9510-28DC, S9710-76D, S9600-30DX and S9700-23D with ArcOS v5.2.1 or above</t>
  <t>Arrcus running n Ufi Space routers S9600-72XC and S9700-53DX with ArcOS v5.1.1D or above</t>
  <t>Arrcus running on Quanta router IXA and IXAE with ArcOS v5.1.1D or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on March 11, 2023.</t>

</section>
<section anchor="juniper-networks"><name>Juniper Networks</name>

<t>Juniper Networks reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo), TI-LFA, micro-loop avoidance, and Traffic Engineering functionalities.</t>

<t>Juniper release 23.3 onwards supports this functionality.</t>

<t>At the time of this report, all the implementations listed above are in development and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on May 30, 2023.</t>

</section>
<section anchor="marvell"><name>Marvell</name>

<t>Marvell reported support in the Marvell Prestera Packet Processor for the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t>This report was last updated on February 15, 2023.</t>

</section>
<section anchor="broadcom"><name>Broadcom</name>

<t>Broadcom reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).  These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities. All implementation of the following list is in general availability for customers using BCM SDK 6.5.26 or above.</t>

<t><list style="symbols">
  <t>88850 (Jericho2c+) series</t>
  <t>88690 (Jericho2) series</t>
  <t>88800 (Jericho2c) series</t>
  <t>88480 (Qunran2a) series</t>
  <t>88280 (Qunran2u) series</t>
  <t>88295 (Qunran2n) series</t>
  <t>88830 (Jericho2x) series</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID and REPLACE-C-SID flavors.</t>

<t>For 78900 (Tomahawk) series-related support, please contact the Broadcom team.</t>

<t>This report was last updated on February 21, 2023.</t>

</section>
<section anchor="zte-corporation"><name>ZTE Corporation</name>

<t>ZTE Corporation reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>ZTE M6000-18S(BRAS), M6000-8S Plus(BRAS) routers running V5.00.10.09 or above.</t>
  <t>ZTE M6000-18S(SR), M6000-8S Plus(SR) routers running V5.00.10.80 or above.</t>
  <t>ZTE T8000-18 routers running V5.00.10.07 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="new-h3c-technologies"><name>New H3C Technologies</name>

<t>New H3C Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>H3C CR16000-F, SR8800-X routers running Version 7.1.075 or above.</t>
  <t>H3C CR18000, CR19000 routers running Version 7.1.071 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="ruijie-network"><name>Ruijie Network</name>

<t>Ruijie Network reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>RUIJIE RG-N8018-R, RG-N8010-R routers running N8000-R_RGOS 12.8(3)B0801 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="ciena"><name>Ciena</name>

<t>Ciena reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its shortest path forwarding (in algorithm 0 and Flex-Algo), remote and TI-LFA repair tunnel, and Traffic Engineering functionalities.</t>

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

<t><list style="symbols">
  <t>Ciena 5162, 5164, 5166, 5168 routers running SAOS 10.10 or above</t>
  <t>Ciena 8110, 8112, 8190 routers running SAOS 10.10 or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on February 6, 2024.</t>

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

<t>Centec reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities. All implementation of the following list is in general availability for customers using Centec SDK 5.6.8 or above.</t>

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

<t>This report was last updated on February 14, 2024.</t>

</section>
<section anchor="open-source"><name>Open Source</name>

<t>The authors found the following open source implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).</t>

<t><list style="symbols">
  <t>The Linux kernel, version 6.1 <xref target="IMPL-OSS-LINUX"/></t>
  <t>The Software for Open Networking in the Cloud (SONiC), version 202212 <xref target="IMPL-OSS-SONIC"/>, and Switch Abstraction Interface (SAI), version  1.9.0 <xref target="IMPL-OSS-SAI"/></t>
  <t>The Vector Packet Processor (VPP), version 20.05 <xref target="IMPL-OSS-VPP"/></t>
  <t>A generic P4 implementation <xref target="IMPL-OSS-P4"/></t>
</list></t>

<t>The authors found the following open source implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t><list style="symbols">
  <t>ONOS and P4 Programmable Switch based <xref target="IMPL-OSS-ONOS"/></t>
  <t>Open SRv6 Project <xref target="IMPL-OSS-OPEN-SRV6"/></t>
</list></t>

<t>This section was last updated on January 11, 2023.</t>

</section>
<section anchor="interoperability-reports"><name>Interoperability Reports</name>

<section anchor="bell-canada-ciena-2023"><name>Bell Canada / Ciena 2023</name>

<t>Bell Canada is currently evaluating interoperability between Ciena and Cisco implementations of the NEXT-C-SID flavor defined in this document. Further information will be added to this section when the evaluation is complete.</t>

</section>
<section anchor="eantc-2023"><name>EANTC 2023</name>

<t>In April 2023, the European Advanced Networking Test Center (EANTC) successfully validated multiple implementations of SRv6 NEXT-C-SID flavor (a.k.a., SRv6 uSID) <xref target="EANTC-23"/>.</t>

<t>The participating vendors included Arista, Arrcus, Cisco, Huawei, Juniper, Keysight, Nokia, and Spirent.</t>

</section>
<section anchor="china-mobile-2020"><name>China Mobile 2020</name>

<t>In November 2020, China Mobile successfully validated multiple interoperable implementations of the NEXT-C-SID and REPLACE-C-SID flavors defined in this document.</t>

<t>This testing covered two different implementations of the SRv6 endpoint flavors defined in this document:</t>

<t><list style="symbols">
  <t>Hardware implementation in Cisco ASR 9000 running IOS XR</t>
  <t>Software implementation in Cisco IOS XRv9000 virtual appliance</t>
  <t>Hardware implementation in Huawei NE40E and NE5000E running VRP</t>
</list></t>

<t>The interoperability testing consisted of a packet flow sent by an SR source node N0 via an SR traffic engineering policy with a segment list <spanx style="verb">&lt;S1, S2, S3, S4, S5, S6, S7&gt;</spanx>, where S1..S7 are SIDs instantiated on SR segment endpoint nodes N1..N7, respectively.</t>

<figure><artwork><![CDATA[
N0 --- N1 --- N2 --- N3 --- N4 --- N5 --- N6 --- N7
      (S1)   (S2)   (S3)   (S4)   (S5)   (S6)   (S7)
]]></artwork></figure>

<t><list style="symbols">
  <t>N0 is a generic packet generator.</t>
  <t>N1, N2, and N3 are Huawei routers.</t>
  <t>N4, N5, and N6 are Cisco routers.</t>
  <t>N7 is a generic traffic generator acting as a packet receiver.</t>
</list></t>

<t>The SR source node N0 steers the packets onto the SR policy by setting the IPv6 destination address and creating an SRH (as described in Section 4.1 of <xref target="RFC8754"/>) using a compressed segment list encoding. The length of the compressed segment list encoding varies for each scenario.</t>

<t>All SR segment endpoint nodes execute a variant of the End behavior: regular End behavior (as defined in Section 4.1 of <xref target="RFC8986"/>), End behavior with NEXT-C-SID flavor, and End behavior with REPLACE-C-SID flavor. The variant being used at each SR segment endpoint node varies for each scenario.</t>

<t>The interoperability was validated for the following scenarios:</t>

<t><strong>Scenario 1:</strong></t>

<t><list style="symbols">
  <t>S1 and S2 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>S3 is associated with the regular End behavior (no flavor)</t>
  <t>S4, S5, and S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

<t><strong>Scenario 2:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 2 SIDs.</t>
</list></t>

<t><strong>Scenario 3:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

</section>
</section>
</section>
<section anchor="sec-future"><name>Applicability to other SR Segment Endpoint Behaviors</name>

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

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

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

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

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

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

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

<t>An SR source node constructs an IPv6 packet with a compressed segment list 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 are the same, from a topology and service perspective, as those that an SR source node could enforce using the SIDs of <xref target="RFC8986"/>.</t>

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

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

<t>This document defines a new method of encoding the SIDs inside a segment list at the SR source node and decoding them at the SR segment endpoint node, but it does not change how the segment list itself is encoded in the IPv6 packet nor the semantic of any segment that it comprises. Therefore, this document is subject to the same security considerations that are discussed in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="srv6-endpoint-behaviors"><name>SRv6 Endpoint Behaviors</name>

<t>This I-D. requests the IANA to update the reference of the following registrations from the &quot;SRv6 Endpoint Behaviors&quot; registry under the top-level &quot;Segment Routing&quot; registry-group (https://www.iana.org/assignments/segment-routing/) with the RFC number of this document once it is published, and transfer change control to the IETF.</t>

<texttable title="Registration List" anchor="tbl-iana-endpoint-behaviors">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>43</c>
      <c>End with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>44</c>
      <c>End with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>45</c>
      <c>End with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>46</c>
      <c>End with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>47</c>
      <c>End with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>48</c>
      <c>End with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>49</c>
      <c>End with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>50</c>
      <c>End with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>52</c>
      <c>End.X with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>53</c>
      <c>End.X with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>54</c>
      <c>End.X with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>55</c>
      <c>End.X with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>56</c>
      <c>End.X with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>57</c>
      <c>End.X with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>58</c>
      <c>End.X with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>59</c>
      <c>End.X with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>85</c>
      <c>End.T with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>86</c>
      <c>End.T with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>87</c>
      <c>End.T with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>88</c>
      <c>End.T with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>89</c>
      <c>End.T with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>90</c>
      <c>End.T with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>91</c>
      <c>End.T with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>92</c>
      <c>End.T with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>93</c>
      <c>End.B6.Encaps with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>94</c>
      <c>End.B6.Encaps.Red with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>95</c>
      <c>End.BM with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>96</c>
      <c>End.PS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>97</c>
      <c>End.XPS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>101</c>
      <c>End with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>102</c>
      <c>End with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>103</c>
      <c>End with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>104</c>
      <c>End with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>105</c>
      <c>End.X with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>106</c>
      <c>End.X with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>107</c>
      <c>End.X with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>108</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>109</c>
      <c>End.T with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>110</c>
      <c>End.T with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>111</c>
      <c>End.T with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>112</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>114</c>
      <c>End.B6.Encaps with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>115</c>
      <c>End.BM with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>116</c>
      <c>End.DX6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>117</c>
      <c>End.DX4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>118</c>
      <c>End.DT6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>119</c>
      <c>End.DT4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>120</c>
      <c>End.DT46 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>121</c>
      <c>End.DX2 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>122</c>
      <c>End.DX2V with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>123</c>
      <c>End.DT2U with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>124</c>
      <c>End.DT2M with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>127</c>
      <c>End.B6.Encaps.Red with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>128</c>
      <c>End with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>129</c>
      <c>End with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>130</c>
      <c>End with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>131</c>
      <c>End with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>132</c>
      <c>End.X with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>133</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>134</c>
      <c>End.X with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>135</c>
      <c>End.X with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>136</c>
      <c>End.T with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>137</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>138</c>
      <c>End.T with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>139</c>
      <c>End.T with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>140</c>
      <c>End.PS with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>141</c>
      <c>End.XPS with REPLACE-CSID</c>
      <c>This I-D.</c>
</texttable>

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

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

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

</section>


  </middle>

  <back>


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

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


    </references>

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

&RFC7942;
&RFC9252;
&RFC9259;
&RFC9350;
&RFC9352;
&RFC9513;
&RFC9514;
&I-D.ietf-6man-sids;
&I-D.ietf-idr-bgp-ls-sr-policy;
&I-D.ietf-idr-sr-policy-safi;
&I-D.ietf-pce-segment-routing-ipv6;
<reference anchor="GKP94" >
  <front>
    <title>Concrete Mathematics: A Foundation for Computer Science</title>
    <author initials="R." surname="Graham" fullname="Ronald Graham">
      <organization></organization>
    </author>
    <author initials="D." surname="Knuth" fullname="Donald Knuth">
      <organization></organization>
    </author>
    <author initials="O." surname="Patashnik" fullname="Oren Patashnik">
      <organization></organization>
    </author>
    <date year="1994"/>
  </front>
  <seriesInfo name="ISBN" value="9780201558029"/>
</reference>
<reference anchor="SPRING-WG-POLICIES" target="https://wiki.ietf.org/en/group/spring/WG_Policies">
  <front>
    <title>SPRING Working Group Policies</title>
    <author >
      <organization>SPRING Working Group Chairs</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS540" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5xx/segment-routing/73x/b-segment-routing-cg-73x-ncs540/configure-srv6.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 540 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="02"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS560" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs560/segment-routing/76x/b-segment-routing-cg-76x-ncs560/m-configure-srv6-usid-ncs5xx.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 560 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5500" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/73x/b-segment-routing-cg-ncs5500-73x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5500 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5700" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/75x/b-segment-routing-cg-ncs5500-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5700 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-8000" target="https://www.cisco.com/c/en/us/td/docs/iosxr/cisco8000/segment-routing/75x/b-segment-routing-cg-cisco8000-75x/configuring-segment-routing-over-ipv6-srv6-micro-sids.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco 8000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="04"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-ASR9000" target="https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r7-5/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco ASR 9000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-NOKIA-20.10" target="https://documentation.nokia.com/sr/22-10/books/Segment%20Routing%20and%20PCE%20User%20Guide/segment-rout-with-ipv6-data-plane-srv6.html">
  <front>
    <title>Segment Routing and PCE User Guide</title>
    <author >
      <organization>Nokia</organization>
    </author>
    <date year="2022" month="December"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-LINUX" target="https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=cec9d59e89362809f17f2d854faf52966216da13">
  <front>
    <title>Add NEXT-C-SID support for SRv6 End behavior</title>
    <author initials="P." surname="Abeni" fullname="Paolo Abeni">
      <organization></organization>
    </author>
    <date year="2022" month="September" day="20"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SONIC" target="https://github.com/sonic-net/SONiC/blob/master/doc/srv6/SRv6_uSID.md">
  <front>
    <title>SONiC uSID</title>
    <author initials="S." surname="Shah" fullname="Shitanshu Shah">
      <organization></organization>
    </author>
    <author initials="R." surname="Sudarshan" fullname="Reshma Sudarshan">
      <organization></organization>
    </author>
    <date year="2022" month="August" day="21"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SAI" target="https://github.com/opencomputeproject/SAI/pull/1231/commits/02e58d95ad966ca9efc24eb9e0c0fa10b21de2a4">
  <front>
    <title>Added new behaviors to support uSID instruction</title>
    <author initials="A." surname="Agrawal" fullname="Ashutosh Agrawal">
      <organization></organization>
    </author>
    <date year="2021" month="June" day="08"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-VPP" target="https://s3-docs.fd.io/vpp/23.02/cli-reference/clis/clicmd_src_vnet_srv6.html">
  <front>
    <title>Srv6 cli reference</title>
    <author >
      <organization>FD.io</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IMPL-OSS-P4" target="https://github.com/netgroup/p4-srv6-usid">
  <front>
    <title>SRv6 uSID (micro SID) implementation on P4</title>
    <author initials="S." surname="Salsano" fullname="Stefano Salsano">
      <organization></organization>
    </author>
    <author initials="A." surname="Tulumello" fullname="Angelo Tulumello">
      <organization></organization>
    </author>
    <date year="2021" month="January" day="03"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-ONOS" target="https://wiki.opennetworking.org/display/COM/Stratum+CMCC+G-SRv6+Project">
  <front>
    <title>Stratum CMCC G-SRv6 Project</title>
    <author >
      <organization>Open Networking Foundation</organization>
    </author>
    <date year="2021" month="March" day="24"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-OPEN-SRV6" target="http://opensrv6.org.cn/en/srv6-2/">
  <front>
    <title>Open SRv6 Project</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EANTC-23" target="https://eantc.de/fileadmin/eantc/downloads/events/2023/EANTC-InteropTest2023-TestReport.pdf">
  <front>
    <title>Multi-Vendor MPLS SDN Interoperability Test Report</title>
    <author >
      <organization>European Advanced Networking Test Center (EANTC)</organization>
    </author>
    <date year="2023" month="April" day="18"/>
  </front>
</reference>


    </references>


<?line 1439?>

<section anchor="complete-pseudocodes"><name>Complete pseudocodes</name>

<t>The content of this section is purely informative rendering of the pseudocodes of <xref target="RFC8986"/> with the modifications in this document. This rendering may not be used as a reference.</t>

<section anchor="sec-next-end-complete"><name>End with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

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

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endx-complete"><name>End.X with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Submit the packet to the IPv6 module for transmission
       to the new destination via a member of J.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

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

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endt-complete"><name>End.T with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.1. Set the packet's associated FIB table to T.
N08.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15.1. Set the packet's associated FIB table to T.
S15.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

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

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endb6-complete"><name>End.B6.Encaps with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.1. Push a new IPv6 header with its own SRH containing B.
N08.2. Set the outer IPv6 SA to A.
N08.3. Set the outer IPv6 DA to the first SID of B.
N08.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
N08.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Push a new IPv6 header with its own SRH containing B.
S16. Set the outer IPv6 SA to A.
S17. Set the outer IPv6 DA to the first SID of B.
S18. Set the outer Payload Length, Traffic Class, Flow Label,
       Hop Limit, and Next Header fields.
S19. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.1. Push a new IPv6 header with its own SRH containing B.
N08.2. Set the outer IPv6 SA to A.
N08.3. Set the outer IPv6 DA to the first SID of B.
N08.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
N08.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

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

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the
         Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.1. Push the MPLS label stack for B.
N08.2. Submit the packet to the MPLS engine for transmission.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Push the MPLS label stack for B.
S16. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

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

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-end-complete"><name>End with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.       Submit the packet to the egress IPv6 FIB lookup for
            transmission to the new destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endx-complete"><name>End.X with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.       Submit the packet to the IPv6 module for transmission to
             the new destination via a member of J.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endt-complete"><name>End.T with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Set the packet's associated FIB table to T.
R10.2.     Submit the packet to the egress IPv6 FIB lookup for
             transmission to the new destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Set the packet's associated FIB table to T.
R21.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endb6-complete"><name>End.B6.Encaps with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Push a new IPv6 header with its own SRH containing B.
R10.2.     Set the outer IPv6 SA to A.
R10.3.     Set the outer IPv6 DA to the first SID of B.
R10.4.     Set the outer Payload Length, Traffic Class, Flow Label,
             Hop Limit, and Next Header fields.
R10.5.     Submit the packet to the egress IPv6 FIB lookup for
             transmission to the next destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Push a new IPv6 header with its own SRH containing B.
R21.2. Set the outer IPv6 SA to A.
R21.3. Set the outer IPv6 DA to the first SID of B.
R21.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R21.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

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

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Push the MPLS label stack for B.
R10.2.     Submit the packet to the MPLS engine for transmission.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="L." surname="Aihua" fullname="Liu Aihua">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liu.aihua@zte.com.cn</email>
      </address>
    </contact>
    <contact initials="D." surname="Cai" fullname="Dennis Cai">
      <organization>Alibaba</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>d.cai@alibaba-inc.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Dukes" fullname="Darren Dukes">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>ddukes@cisco.com</email>
      </address>
    </contact>
    <contact initials="J." surname="Guichard" fullname="James N Guichard">
      <organization>Futurewei Technologies Ltd.</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>james.n.guichard@futurewei.com</email>
      </address>
    </contact>
    <contact initials="C." surname="Li" fullname="Cheng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>c.l@huawei.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Raszuk" fullname="Robert Raszuk">
      <organization>NTT Network Innovations</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>robert@raszuk.net</email>
      </address>
    </contact>
    <contact initials="K." surname="Talaulikar" fullname="Ketan Talaulikar">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>ketant.ietf@gmail.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Voyer" fullname="Daniel Voyer">
      <organization>Bell Canada</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>daniel.voyer@bell.ca</email>
      </address>
    </contact>
    <contact initials="S." surname="Zadok" fullname="Shay Zadok">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>shay.zadok@broadcom.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
ro5hbyb+tu+IvQAbr1Nnu9Nvo1sRk9wd4y1HCT+66U7b2VUNd82GIhOZV2Ld
cFRi2ZOSFDqvlXsM0gCzAENKZsrTAAvCip9YXXbImeiyOUPHpFW8dVTCDl6h
vuKPr2JSNSh1N2u8/CZn5mPjEQTbxE6IacnsmyfmSculWCdo4lMYzLASU/Ae
9H2zgiDsfTfHlpm5vbLkUj15pesaqaV5XjtBg5o3R9LhKqCCB2aJcmbOCTU0
ytuVZUi75HJ4ky+iVqJf4QukPkTFGp1FVCkMkOr98EIx8yrXsUJkE65bZas0
9jbjMupmgJoV2UYZE3WNysJ2FlgfbizffWCRGNPL6enEZ5X6F6vE2wtfEg2Q
SC+bDhETVBEVzBX1mijCCiKmc3PNJXenAFI5LDaPod0aufIwdXYO0d3NOc1t
TmwZqPaKUzRUDCe0KzMYNHKonVSaMw1ZskkijUgSEl8ILjrIUJ8CTSDcpy+m
MAaV8LPyzQlgla0YVhHGyIvGaCOJVXXO6/gdZ4ej0ySNhJgHd2YDfaEVzlPE
VXsl7Xq0L97h3A6jBHmxpUwMI8lmx6gDbxfBYIHsMhg7UriiiFMiCZcRu+5W
VmzYjPiMOO5HKvSW8196mlnaLt9FcYHCmulpJa8zWWCSxt6WWjx0ljyQVL6n
oAYICWk4DL1t89Ll1lROz5YzGPbXqu85KribEl/LXU3LdlSeKi9L8v+wsAz5
roI0lQVsVJACiCYpsgauykRp3DPlUlwqbS7PNA3gyQul2/DR4YDL0PsqSJGN
JZL0olUIharDshgcGAX88hFUwkfQfUfzILRjxCRsqooitMWzSNWkkogjxtRc
eKiw+thMQrmVO7ZbufOLn+SCHPzvnJ8mKbs2yE/ch49prF3RvcS3FAcWydkL
PE7kDluMA5jCNc3U7M+9kq6KP7hgjBCYubEMpU7Bpl4FE5BgR/F7TOAszr+K
+EbkuJlSegouIklXXD/Pad/eNmHQhReQkkurvC1NqtkXYpGAyPRT7jivvHdy
z0BRnRoL4xKhN1zwWeeJ1RE5+htDKV0mjy17UtsJZofwc562ft/DlAnxtX8U
Ab3+7hlmVnoGnBH+cA8nARzRnnOK0TNwivAjctCdiu6XBPOnzjjQR2v46kqQ
22w+CvNK6ZY3L1YzSCZyA2g1uHAmXHY2XHWrW1o9VnRYz2opGaKAA874kmE1
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
5lrVXSpkEaTS8WTuVfXEUbipY4dMdVAYFO5p3G8SM9rmmbRFAjJJzjfO0eBk
UJUUiRhrWRqVc8UEXSqjj6QYwXEwcJMMz6IKSbR4+dkI7kxAeYxYzFGl057V
zPpMdbiFuzSROw/k2UVOF0I3W0bKm7sc4LlylWWzdG9t7ebmpgOqqteJk8s1
jqwlIXqtkGRsbdXQC14cGEWX7QOLqQ4XHRzFvKdXWLxdXtii9IISAxCCqfRY
cq4UVt1q/cv5hdIa/Qsz4eqg8n85Zxp0/4I2Lv7nyE+39Be12ViHj1CxMZR6
vOr/cvIDo3Yb1e3+L9WvLbXerGv9pqr1VmXrNg1d02W7foKKxe8smKCiy25N
lze1XTa79bM09utzv87bRYewuV7XsvoYNjfq21dBdXOzpn3TUWxuNU1SsYnt
hZNUdNqp7dQA2N2mmZp67ihAnC86kp2tupbVR7KzXd++Cro7OzXtm45kZ7dp
kvImdrsLJ6no1KvtVA/Y3X7TTI09Fe7vb3UOo7E3Sxcdze5GsUfnzF9I6HbV
0e+/WthUnb1dIKGyqUb6xW173Z5JSLTRpbptv7ZtNQL2uusNPaqwqdfdqOvR
hIS9boGaLNjIVkPruq1sN/apXtVOfZ/m7RQuVfN2et2G1jXb6fUa+1Suqtev
79O4nV7pdiy1reLtWNBcHerzt1tLtd/W7TeWaq8OE4u0LdN+V7dfavx+N2+/
1AT9nt5Af6n2/bz9L0t1WNcr6r9ZqsNG3mGpM+tvFxEjJ5sLelpiVgl7q3rs
1vVo4jy99W59t3oO0luvpasLuQ96ljWTmqo+6/V9mve30dSxaZUNJHeJPRZk
maX2uF3fp3mPO00dm1bZQIcX73FD3ehScZpKlN5Q97lczKbc/vc955tsFLqo
KeoEsq5hCw6y0P/u2ZmhxFJRFUyh9o0zGGM2s9CfXJKnRWp7o3HywzB4JyZs
L3rn/OxNQVt0zrzfvLbzFvXjn2Dqy7bz33MvOrjyYmc4bzsvPZwFPgzSGJoc
B/DZK/TxiZxfgst4nvjz923npxgU4pdeOPOTSHyVvdB5FfyWeFeBejcNEjKz
XF5lF/MwT+xEds755SU+u4Ne3qlaOZUFtZc/iCaJf+MMwjTDkgXHQTTxnOfz
aOQlbWcwwbdh54WXJOjOuB8nAOeXoHp7UXzNCxyE114Sg86bAbyNJeK08fzy
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

-->

</rfc>

