<?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-16" 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="24"/>

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



    </abstract>



  </front>

  <middle>


<?line 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 SID 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 SID list.</t>
  <t>Compressed SID list: A segment list encoding that reduces the packet header length thanks to one or more C-SID sequences. A compressed SID list 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 leverages a SID list compression logic on the SR source node (<xref target="sec-source-node"/>) in combination with new flavors of the base SRv6 segment endpoint behaviors that process the compressed SID list (<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 SID to be processed, but employ different SID 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="sid-validation-for-compression"><name>SID Validation for Compression</name>

<t>As part of the compression process or as a preliminary step, the SR source node MUST validate the SID structure of each SID of this document in the segment list. The SR source node does so regardless of whether the segment list is explicitly configured, locally computed, or advertised by a controller (e.g., via BGP <xref target="I-D.ietf-idr-sr-policy-safi"/> or PCEP <xref target="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 SID list, the SR source node MUST treat an invalid SID structure as unknown. A SID with an unknown SID structure is incompressible.</t>

<t><xref target="sec-control-plane"/> discusses how the SIDs of this document and their structure can be advertised to the SR source node through various control plane protocols. The SID structure may also be learned through configuration or
other management protocols. The details of such mechanisms are outside the scope of this document.</t>

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

<t>An SR source node MAY compress a SID list when it includes NEXT-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 SID list is derived. As a general guidance for implementation or future specification, such a mechanism should aim to select the combination of SIDs that would result in the shortest compressed SID list. For example, by selecting a 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 SID list that the SR source node pushes onto the packet MUST comply with the rules in <xref target="sec-source-next"/> and <xref target="sec-source-replace"/> and express the same list of segments as the original SID list. If these rules are not followed, the packet may get dropped or misrouted.</t>

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

<t>This method walks the uncompressed SID 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 SID 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 SID list
       (following the series of compressible NEXT-C-SID flavor SIDs){
S11.   Set S to the next SID in the uncompressed SID list
S12.   If S is advertised with a SID structure, and the Locator-Block
         of S matches that of the 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 SID 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 SID list, it compresses the series as per the following high-level pseudo code. A compression checking function ComCheck(F, S) is defined to check if two SIDs F and S share the same SID structure and Locator-Block value, and if S has either no Argument or an Argument with value 0. If the check passes, then ComCheck(F,S) returns true.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize 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 SID list {
S04.   Set S to the current SID in the uncompressed SID 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 SID 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 SID 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 SID 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 SID list that is not handled by any of the previous subroutines), it pushes this SID as is onto the compressed SID list.</t>
</list></t>

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

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

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

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

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

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

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

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

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

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

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

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

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

</section>
<section anchor="sec-source-next"><name>Rules for segment lists containing NEXT-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 SID of the SID 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 SID 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 SR source node, that address will be the Destination Address as it is expected to be received by the ultimate destination. When the last element in the compressed SID list is a C-SID container, this address can be obtained from the last element in the uncompressed SID list or by repeatedly applying the segment behavior as described in <xref target="sec-operations-icmp-error"/>. This applies regardless of whether an SRH is present in the IPv6 packet or omitted.</t>

<t>At the ultimate destination(s), that address will be in the Destination Address field of the IPv6 header.</t>

</section>
</section>
<section anchor="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 SID list as described in <xref target="sec-source-node"/>.
The node initiating the SID advertisement MUST set the length values in the SRv6 SID Structure to match the format of the SID on the SR segment endpoint node. For example, for a SID of this document instantiated from a /48 SRv6 SID block and a /64 Locator, and having a 16-bit Function, the SRv6 SID Structure advertisement carries the following values.</t>

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

<t>A local 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 SID list as described in <xref target="sec-source-node"/>.</t>

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

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

<section anchor="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 intermediate segments. This operation is illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document, with or without intermediate segments, the SR source node MUST construct the IPv6 packet as described in <xref target="sec-source-node"/>, including computing the ICMPv6 checksum as described in <xref target="sec-source-checksum"/>.</t>

<t>In particular, when pinging a SID of this document without intermediate segments, the SR source node places the SID with Argument value 0 in the destination address of the ICMPv6 echo request and computes the ICMPv6 checksum using this SID as the destination address in the IPv6 pseudo-header. The Argument value 0 allows the SID SR segment endpoint node (<xref target="sec-endpoint"/>) to identify itself as the ultimate destination of the packet and process the ICMPv6 payload.</t>

<t>An operator originating ICMP echo requests to a NEXT-C-SID or REPLACE-C-SID flavor SID using the simplified SR source node processing described in the previous paragraph should ensure that the SID Argument is 0.</t>

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

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

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

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

<t><list style="symbols">
  <t>If the destination address of the invoking IPv6 packet matches a known SRv6 SID, modify the invoking IPv6 packet by applying the 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 SID 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-considerations"><name>Upper Layer Checksum Considerations</name>

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

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

<t>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 SID in the SID list.</t>

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

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

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

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

<t>This document introduces two new flavors for some of the 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 encoding.</t>

<t>An SR source node constructs an IPv6 packet with a compressed segment list encoding as defined in Sections 3.1 and 4.1 of <xref target="RFC8754"/> and Section 5 of <xref target="RFC8986"/>. The paths that an SR source node may enforce using a compressed segment list encoding are the same, from a topology and service perspective, as those that an SR source node could enforce using the SIDs of <xref target="RFC8986"/>.</t>

<t>An SR segment endpoint node processes an IPv6 packet matching a locally instantiated SID as defined in <xref target="RFC8986"/>, with the pseudocode modifications in Section 4 of this document. These modifications change how the SR segment endpoint node determines the next SID in the packet, but not the semantic of either the active or the next SID. For example, an adjacency segment instantiated with the End.X behavior remains an adjacency segment regardless of whether it uses the 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 SID list at the SR source node and decoding them at the SR segment endpoint node, but it does not change how the SID list itself is encoded in the IPv6 packet nor the semantic of any segment that it comprises. Therefore, this document is subject to the same security considerations that are discussed in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>.</t>

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

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

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

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

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

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

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

<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:
H4sIAAAAAAAAA+29aXfb1rUw/J2/AtdZz3OlhqRIatbT5A0ly7ESWdYV5dT3
dnU1IAlJqEmABUDJSur72989nQkTqcFTqqzWkgCcaZ999nT20Gq1GlmYTYI9
7yCezpIgTYOxNzi73vIGweU0iDLvOEwz7zAaxeMwumz4w2ESXO81xvEo8qfQ
bJz4F1krDLKLVjpL4JNWmlxvwT9XrZH0GMZRq7vVGPtZsNcYwb+XcXK756XZ
uJHOh9OQvji/nUFvR4fnLxqNcJbseVkyT7Nep7Pb6TX8JPD3vB+DKEj8SeMm
Tt5dJvF8tucNTs+OTn5svAtu4eEY2kdZkERB1nqO02o0eNZ73jxt+ekoDBuz
cM/7axaPml4aJ1kSXKTw2+0Uf/lbo+HPs6s42Wt4rYbnhVG65/2l7R1cBbBw
z+P1/iUI/xn60aV+HCeXfhT+5mewCIDiVRj53qt4GE4CeJnECNpgHGZxAn8G
Uz+c7HkjbHojHf0wwiZTatEGkMFno3geZQgi6s2azUHbexFO0gv4v57QwQSg
E40C+01uTmE6ir3BbZoFU1juUTRqW3O5+GGE7/ND7weTy3A+tQb/nzbggh72
f2ANwzDiR+54L+c+LM47D0ZXUTyJL8MgNeNNwt+45Q9X9NmiJe+3vefBKPFh
7/XY+8k8iu3H7vivEwBrYIYc4uftsXz+Q0yv8+O+gKejwBr4RRtBO9aD0gdx
mKqny8C4fPsvRtBDG4/MD5f4pGIqgLzwdzicZy5KHre9fgjA0zM7Duf6iTur
/zk/hHOdzGDJ+MDehXnbxyY//JYRKNqjqG4XngMwfLP5z4MoQkj4xc3vT8Kh
P/TNUOP2yA9/8PlxKwTA5Jb7ZtB3R3o+fxcY/H7uJ4Df+uEdUHs8xjbl6H3g
R/7YXuFPbe/HeTi68hOz5T/Bv6l3Yr9wh38xz+ZJkEd27zgbW9P4B/bSjtqX
0ssPF6pVPSQOnPNG5ObOp23Unix5zs7a3pmf/jZ/p0c8i4dBkpmn7rAn5+fe
SZAhLQawR/E1PbeGTqj5Dwk1bwNNrl7pz23v3J/480n4zk/0+D8HmR+5L+6w
+e+wdVZzyo6icZhD8V/i2yCxEC8Kg4l+6I4N5HGikUgjHLVoX2OLH4bwBaB+
LdIN2t7/+OPYwHxw5d/qR7kRk9gf8xpkuBQ+bv+GH/8wlJeFRaZA8yaNRhQn
U+jnGhiw5529ONgBxqp+3ej01K/bmxvq192drT3gxNFFruX27ob6fLe3af26
q35d3+yYX/UHm9118yuNctR6TtvT2pr6USsNx6nzNBwnreHlrDVJQZhozeJJ
OLotfKDftFL/InRez0ZBK2UZpgXCQoaiSTi73sKPfvz5dJfm4Hki/XxPf3hA
LaNREmSB98rPrgJc+Qj2qe+9AIiOaSc8gAgJS3MQNbzBKAyIb8B/Wnqg/1ry
Ux+vHxP/yp+qp+qMRf5k7L5yGwJa/hxBx26759zOfuM2e932Tv3MT6+i8J3b
9DVSU/cdSWZed3d3g/5MgwSICG69WsvRYP9kz9vd3un0Ot3NTfixC29Y+Gr9
5cfW6evjo4Ojw4EDUn7t/QUoBMAe1ggSm3eKu8UkKg8wQPeKRgdXfpik1lR7
nV6v1e20ujzhzE8ug2zPu8qyWbq3tnYTvgsJCdrQ51oQrZG0uMby6dpffvy7
NYujV6fHrYOjwcHr1snBYHOj465BhOAzRiBEj4vwcs7sFPnCOGB8IFIEHXjQ
A7RCAFKjIKlcqkO+CovrtkDuLV3czU1bs7S1ES5vnq5l4zUQydO1ME7fJ2vR
KN18/34th/5r2+vv14aFQzG6bMGLFrbZ6KyNZIUByfHtq2w6KUJp68FQ2noc
KFWjwJJQ2uoUobRVBaUthhK0mbZcOLXmQL9aDPYKmG12Hgw06OKxcGvrQVCD
iSyPXNIAkSyHXa1pOEpiJP0VMNt+OMy2v2iYbS6C2eadYLbTeRDAsPljAev+
x5Le41SWB5du4gCMjBG5j+PrICExIAfMtASa/cHZ7sMACj14u48I1PtgYMJj
rvlpsktAjS+yGz8J6MG7VrLd2iwAemSvau0SV1UOeOl0eTw9ef3zUb/V67S7
9XD1o7F3enDovQFhhMFaBbST+B3K8TlglfNOAMgch6F1tSNsSTBLkzXiJmvD
OH6Xrslk/k+vI9OB32BC8C9MCf7FScEPmpYDu9ZNmF0xesFk/NZs4kcljPT1
YNA6Pjp589YBQX889k4O3563DlqDo+deOp+B3p4RNpFB7hBAMgyu/OuQjAl5
YLB0d+qDDuj1h0EU5mHS2QW4l4LlMsza79BuNiGBaTYfrqWj6dokjObv1/gF
frMGStw4uMYfrSh4n7XxGYBvCj/+v3D83SgY7Y43d4Od3fWt3k5n96K7fdEb
72xuXPgXm73dra1ed2vsd9dtMAxenxwduJjw+iQ88OYAgjKhWutJIah36dUc
Naar3MuzIL2a+t5gPvYT0JGiAiB2Wr1uFSCu5kNGiTgKR7DMbI0mtDacxMO1
qQ9HM0E0WsNNXcN9+TtOtT0dO6vqH+W3Nhh7UXCjNzD1slhvMfaAYnuWzEdi
pynf3T6sOIvTK69/mfg3/sRdGRIIWNyilcUz0FhYf5kl8T+CESyxfwS7Ppms
dXvrXdnSdK3TCzZ3xrub/hj2buTvBhej3kYw3A06o86F3+0Me91x0PM37JX/
cnrq7iaAyRtNQi8JLoKkQlWic/wC9La4dO7pegspWftiDF+sXc9ma731dqe3
Bt22dLf4V4r/jKbjv6fJ6O/XsHd/Lz16p67qR4eLtmCFaJYHv6564XQ2CTSt
8OB/pxt1CJkFF34Ebf1JCj9zb/vRZQDH8nw+AfIzmcSFfYP/rS/aN1gP6zGz
DSNz2ut6ffI6p4FlQMHnU+/g1cGB92OLFnrKW161C68BOZRdB+mw0XsLc15v
9WrUL8SySPdDdGUcpkAQb9cOXr9ak6l9i1P7lqf2rZmaWdLp4Qm8/GXLWRdN
srAaexowC5wAbT8M3R5FyBUJar01+Pqwf3J+0OqtO92+mk+ysPVLEI2B5MIM
Bt7g+QlfKUBniT8MJ2F2650HKfCpAE9uFRQP59jCj+DgX6Mtd2yDlNofBNit
t0ITWXVhuw7SU6tbfo6h02zUBrZzEU4CfzwNI34ENOkmmsT+OF0LrqHvdA07
WuN1yhJwYOoef+EFtGfji0a73W40Wq2W5w+BBPkAzkaeHaPY5B2dAsRXEO5w
PICAXQVEtGD4UA7JRYGPw+ereHjwY2qPfJHYYts7v4JeFEv20lkwCi9QSkI6
eTHxr5FKIvfDtiBICaP1YH9mcQi/GFo6Di7CCKAcRmhg8tB41fRursLRFXzt
DycB9WHdR+FUfcEhPPlAO7I2cAxoYH+VhpcRzGkES5zcAgkbz0cBLzwNfwuw
E54b9AI0yJ+l8wlDIgoCpPhI47MAQDfzR++CLGU4TmIAjFoNjpwK/KfheDwJ
Go1vEOmSeCzcoHGOg5QB1k9GwAjhAIDU5f3+u1jzPnwAgKSjJBziZG9igrlH
QHc3LKUdO0MSyDMjpIeeW/jLKglh6pW1+TBbWrIy/8IhBHYEPAOmxZMA+NMk
cFdSz/cu4HVA3wJEhvNwMoaHQh28GTf3UHaC9zMyYo/8CQ0PktZ1OAoUuFJv
BQhszNwkYQgPb3EXwkSD6GgM/yIqwflCWr7qjfwE5G/CD78AyZdwjujTs5er
Mv/tzY0PH3CZ8VS215/NgLUI1FLEEx9+Zkk4ymBzceKJfwGYAnhwCYsOUPnw
pj4izT/nIexOyabrK1f8FhEpkFtWQay0rBWuAb9ljPKuePKAoaXISp/KN4iy
yx06AOqdzpy96dmVn6lD5+vDBN/lFsdgtZfWZkRXk7D6z5w5T4DAJf5lYHqx
8LswK9pKQiVrlk16AEoQTRB2FWfL+Kf6pMu3eCLdgrQL3IQ2HynS0aB1NOAO
0caNHb4enL6QJ5vddTXE/o+n8rCHn7XxbJ8HCRwVxPJbXHHZ0pjGANGelsCZ
TnjTXl4zvz7c5gBQgPYdBvDTFAbg0wIQ9qfAyfxErRhpuZlTOz+pUGiRzOoi
BgHmBjcSUYbmuAfkyzuO4XjESWt/Eo/e7dEEpjFwOgstvWGYEc3xmehyC0aZ
JEBEwfH0FuA3Q+yNl+MMgKuyiQCcxmf7zxBIg4Coprfe7uJQNlSsWZ7E44An
CWx0+VmGTFpuK89HBP3aRFZONqoIziJO6LviGk6WWIPx1CBFcYX0xVW8pag4
br4Zn3XLMBpN5mPZUGdKiEgv5hEPrwAhKwDcwQ7NIDQZ6hBPiw9omuAsur2d
FjQ1D72reEJz8emgY5cxHCoA6jROZE6p6SwFkokiPfZFEm++AXScBqM53kpp
7g0LzsjGgrT+VsEdVRlYiIs6dPYz2XjsN7cGnMmbyILlnSc1z7VOhfMoScPZ
RP0Yu7YJotlDOSHmELrUfwJMh06yH70j6l2Arp4+cB0HTTT4iK0KCFLvN5AX
m9hNU/eTX5PVJSznR1CPgWUb1pt6DOyVH4/2V/mkzWKgpwA1ntG1P5mjcHDt
hxPiFkhYL7kbf0KnDo00cmZLuz6+S9cT6sXuuXGUYy1Ngq1AE3oLfJIH4TSH
2Rx3ZeYnmaEMxePLtJHEOe94/1hJyS76mf4VZcCvTwpf03ks/fiF/lYf1dLv
+vq7fnKpOEzhOwSDPx6H2E8TJmJ6B6ahviybFJ6jBZPwjjLiP3mZzecBeLu4
GfLGb0CvInGJZb1jP7qcAztkweBdcOuhlxdQyVdvBufPmvzTO3lNv58d/teb
o7PD5/j74GX/+Fj/or4YvHz95vi5+c20BI301eHJc24MT73co1f9/37GTPbZ
69Pzo9cn/eNnRcEE5QnmsCEqXDO8Rx7jUpU0Tkx8/+DU624ATf8PIOq9bncX
xBP+Y6e7jbLKzVUQ8WBxBIIc/wnQukUhNAC2jbRkMgFCNwszgGyTRNEr0P+A
HiQByRj7fgqyKF5mB7Ms5S1GdQcmO4UD3qQOFJNNLYYFc7xI4ilvPwjtOdxN
r2iR6mUpg4dNtxEK569o8ZAkmRyaKFYvIzU1PjEQNOoCqNMpzDsgXhwhm6Hx
1KmtYuOKe+HMZz5Z4kjwQRoHR/Xc0gyDcQUBToOAKSt6kcFIQTUVBnUEBNhw
rFgQCDZBFir9uAKuuFCi76rVPCX1EueLjwiujeXmCnC6mE8Ac/KyLQ5Cylfq
zWeik0+DEcAyTEHQVLrAIuGZBYkyUcOIr4bXOfo0aXbKHIDiUzxPQEkhoWnl
99+Bf7b4UQsfffiwilNhvGG9mtZhqyoC0iFuiaNRlGgsxEVB2wSWlToGAZsP
yjRUc5gDwD3Hl1HbGoq6pjSUPDbMU77GuHXmD9O1BkXAOmzV4tJGWNMPXc1n
kZ5EBhCxfJQPQkhmwIOzKek0hg4S3Su6y4r266BEP8rvJ/FNNGhzz3oCqT6Q
BMsxHI+IBdVIvckRJHhBnLhS3qaNtbYAiOF8MkaVHOCVBkQgb9BhC34SUbiJ
HLQESsrGvTBY+pSh6SJV5+o2f5yNlOG9ANkjeO+jObnJ65D7M6HF1Eeoj4Q8
FBSTjhBXvLWNndwwRKl9JTSRhWbI42vJR1R5sl8ScYXZSDNY30X43hoCvjUs
AdlWmI7mBAJLJdlkhaTovCXaLSxBGVgO1Sa9EKz6/RvnaImimUrPylyEFquy
rRbcbNqXZIhZZ4enx/2DQ37S1BZDGL2J/7Tf8o9z/rG/1T4kU13uz/ZZMGaG
Q49fWQcjr4E5sybRxli6nMnIlO0ptZ+/3WrKLxvyy7l6cq6fbOiPevqXX9TL
3hszUfirbqp9dgUEYQQlVwtwMjNYSBRn+rjLRFM5hcNg5M+Z190qjBTVcazQ
1s9RKT6Mc3XOi0NiOzgAdGqmcJYuxKymSDkR6DEaNMstTO0Ge90akkR2NrLQ
sDwqtjox10u3dUhjG76Y3NWbvlZAHPCYT7AvL3OJc8O3GYgaY4OQeg2B0F2H
47mP3DlOcsytKWazAm8qJUAyXhG+SiovxcQhLC9nQIOXWsQiAYdtQfwWr3np
E5ZrhXniSRnCFgZA1OJboBMXdAmXlTP9dHQVoAd04y/KwFaYtBDGnB5OmoPI
MuiGqiNT4CNtrCvV8BGPUcLVOoY2m+aGgINUY/8gVGaBN9b76l2ECV7gMLUh
W0JkIOhYH9L5kI9Fpm0cGgZl29Nkid8MEvAVpFd2zqqBQ1rXlZ/eHz5qEFnf
Q0CkTJHI1RAusqSKAamr3B6lC4CqKUpB1VYXFWFKGlk0FhKHh5RAeu0nwMSI
RshtRKpsLWy1N6gt3JKFfBZpcJbRfDpkY38KwgcKboeIyQIHZGWKtmgzaolJ
GzYpEGFCySdJgDsXyOUrm52LOoOtQLMe6ArxSKLwDGspHh+ARjKBuYokb+gU
AX+It5PpPMwEVgYCQXQdJnEkUmBBbktszV3WL0BlIYhlOkSqCV5qJs7kmYgP
A7Y14fjacKN3hkcgsRqlqTL4K6FXKYruELy+DC9esWObSAV4eYOu3LeMsLhz
9nsNIjTwLEWgycwx9mdEVX2Pgo4QLjacmrzntqvPFC+hcXWO3gQUewK4pW7c
lDiXElceXcVxaisFjMN6J1O5H0O0H/koD8PmAeGmOY8D1Jn5oKsbuXTkTwJh
MHTCYNrEORQUaNS4FbzHBctBJq3WsjDE7uNSyZ2HxQtrpxfnVsh7Gd8gw2rC
0cCTbJlmWNgjdRyNsQQUYqRMlTxUwSblqqrih8Sx5WLwMsSJuNI5GzN4V1oi
mxvoNa3joWAjeKy6NR+4HRvThAKZMkgqaolaJH1TsFAih/aesY6d/+IZ29lI
lkER615iMEBGpGCH11p8WyTaci6Gm6o1o5z6expECMspaBxaUTiNZ97K6eB0
tem9KX33ht5ht4X3zwP73h2+fL5quGmiQPBYYrcAhqTumzpWDhqx8FfhrtXE
H6kSYrqi2dlw0gr9yNeKUktLnqRj3QFJ8EKpICDCr8/YllkqItJrwiGFQmVo
VooUlgRaC5wm9I+MCu9KJrds+LW6YXVRtEXiXmiByQkKc31rXpwAHfgQVZDi
RYgRK4RVLxY61X0WjU8mjXnChl22utKuXYSXNNcWf4HM9SgTx4PUEqGUAIZ8
BDpBa6EE3Oj7i7TkqtARuoRy5Ge+WFJFXmDbU5mPRVl4OY/nqTWPouRKU4IN
ibXUAe1zFrDK+96y2ap5CLZehUl1x3Y/RlmhC1mQkcZoJqLt0szZnigvPcVb
sbb3F7RGo+grsiMcLMuerQWpwmyJ46EY6s1neC5+lg7Ivg1w/xlnLV6VhBoX
kzhOVlYQd473j1fX8F5l1Vvhx++1A9VlEsDkiYtmwSVZkck4CcMha/sn6Io4
3HvAMApaQ02zHG+RFVpHgWReFtIIyGS1I5BZG16QtMsUDVH80Z4XArkRzA9m
foJ0OH+92GgwiAu96DOpr15RxlJQJBO+r7BVSwOWsoN2CpGdyFSld65w/uXk
0ayH6L+oCJmio5apcyUFxsI2DUVPKnhays44olbNZ2OymYH4lCnu5o/HKGYg
cUMWh1KGukoRxdlyfwGJBKai96BkwaieTEKSwqdimUHQIZBIrzpGJX3Q7bmn
fZYGcyDS7IbgOTZ1S6IEfQCmdB2iD0A6F9mXUIOvbUh8CKJ0TiQFJjMjF8gM
ifX//u//Nr5tPfi/bxv/IodJlzDSf/+CZ0T2+Av5Tx98679/NZxPnFeKXFZ+
YTp5lOV4f1a/092vfvO992e+Vf3efMGf9a2v6EuC7e973jc5bsIeqt89Gyju
w5fQpbzdWyHxnbU339tg3uVAuel1t8RDQ67kKnkNE8+tDfpc7cDqM+TIUd5H
mm5jlS7je+u94sjqkmwFaaIYF2QutqoG74lc5miaWWTK80JZWw8IB5yNd/Vq
Ml3nWAqQXBagcuQzkQNRLKqYd74zbUlRapIr0Xsv0ZoWXwZRgEdd9FClpM5i
OItDvBbAdQAw/VHmqJY5xZQVsvxV/kq/FlDETRUbEW7UQugqSm2RJiCZdIkg
1yhEb0DYHl2RBPPiaJ+cbG7ZlQIYrnNL46tbv2rJsKnv/UqvcchuqxxctBXY
sWgQndMOaCSlWHaoUZygYAlEzPgwktsSk33gC9ZtMNrtlZEMdA9QPfAfgBqo
EM58zVQAlGyxLrnWN7aWlmiCJKzLvdgSbmLl6lydnE3nzR/hFT9hv8YM8n8x
LIO9PPqZdxVesvV3wpqzEu7vvWPaWJy61mLr1p2di4xrjNqD3GSlhT/STl3E
8qMWeyLVzsK6aXRmobmv1esQFdKZNiaiS1GSM4LzhAR/hmw+qZY0c4Q1u5qz
l/dNEmrvP2v8aqFeNsES32khlgh7EU4mqsuiuwOxmFJB2fJ28F4jhbwBOcxb
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
MJdVYS0c5yKZm6oiW7AooycJROP55RWzfA50y2VzM3TczhGFye2qkq1t7DS9
za2mt7XR9LZ7pALudHgEsplJuLVQCZg85o9Fe5fouTq8tJAgUycuqdoy7FC8
3HG2JTufisc7JdJZyq2+4IVeiSyf0eHdWeJHcnuvPiSVnu8kKLDCodWFhTLi
21LnWiU/v83Lz1VH5eO73ZfHL8k+/WE97xWBdpzvXZd3SRJFirZNrZfU0Jv1
asECgZHxYxay1F51A1HizofIGlX4699jq+/jss8RfZFyFBSteeFAI5UNIssf
t8g5Q2XO/xfFRsySOh4uEd5zNoBOMz+Q6+jo+kDC/Dmp+L0mhYp0q8vUQ8X/
uT2M0SqtzlFOnzTe/HbGr4X6pSDtM1vBfybDPnPW+sxaJk+yJmEambvKwyac
EAmEupn4vYIi6txXq9z+P1YgBREiLNNxF0wGJhAnQSXGOMEjKygyzTKdJaDp
mVxRikRB7+P3mNwQp61SKqmw0rz5GQ8iPCsmYMzRrgBJrxgPi3YE64klweIO
almv1pBA5NncXiFj8Cd2tl08iPgJIlaCyZxMhI3eX9e8VmVVd8I93Lk4JtZP
GPRRR2ad65CPFPzBkb58CXMnvzESbAlaYzc9Mao2AxPk4NLM774DKou4KbER
7SNCenrsepHYROmvnb/91f6+1f0bNVnFcAm6zTqWS6VdyjTY3SQTrJ7f8DYH
Bb5C8VAskxmfuTEbMi8VtHFm1rNy7FPRetzo72H73//9+HAV8TO30u898+Eq
91EW1nHqY/0K8utJYpBcp3cI6ThMkpiF4SvLk4fETUrMF4zduI7TmCI7kEfp
UYqu+w8OBTlToSBnHApigisc2HJoxRlHdFiYwjvuTMzdfdl7Auk2g9QM4S5I
jbGT/6w0zOMMgy/wvzfEgbV/Fh2jmtk1zrod2doHeU4t5XJ61u0KdLuAkx+8
wwkwIwBFd53heC8E/ba7uop9bPybYGh3U8Fwy8XQUvTpbisvPAeBYYIruasM
r+V1V7HFTpt6B3xahHM9vEICOSSow7Ac/juxVAoYHFKlAnyQRNZEQllikWqv
QnzOet32QxD53o7T+QAnXu1dI5xQPapSkB8S9fTr0ttzxxnbbf9ENoS2w4Tg
bP5JdvRXW9souZZDqZlQ05meSh9alP+WEC/qr/Ef6KlgiVu18VgLRLVPF5VV
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
Auapr4pfH84zXfswDaa4tBHOJAiJgREf5DRSceJ0lEsuSPmZVMYuUwvSApYt
NNj5z7nEfVreQ3ntL6Aicx2LHvGJDMb5jksl+XzNDTKZu0yS9sE3FKWQZF2H
eiqKpVOycm52hiIh3a0IAiqQOYdvZieqSta7U+Y69YUMsaq8FM1BKBzuoTqB
+lhIULad5bKswB0dynFgWk/t78qTEiIihRZw8niqEylwah1MvIfTy8XQCzAi
lWPFwkiEsRpb8RJJiSaJ11UlsFxuS7wmHJLlV5W1RzmnikMytUG5UBiqda5J
8mjae9EUYcgmNd94R/2Tflm6LuK1RcFU9hPTxllZgBAk2A/GcJINWrQiCRwv
3iDBWQkptRZLPipjwbOKUZ+pBrdwhsZy1oEst5D5TaCZKzaZz1sc67lylWWz
dG9t7ebmpg1aq9+Ok8s1DrIleXotl/pubdVSEV4cWLW/3Q2LqTIcbRyFv6dX
wVhftkXpBeUIIORSidtkXynCutH4l/cLZYP6F+Zm1vHl//LONOj+Bd+08D9P
frYKf9E3G+vwCHUcS79HRP6XZzaMvtso/+7/UjnlwtebVV+/Kft6q/TrJnVd
0WS7eoCSye8sGKCkyW5FkzeVTTY71aPUtutxu/bbRZuwuV71Zfk2bG5Uf18G
1c3Niu/rtmJzq26QkkVsLxykpNFOZaMawO7WjVTXckcB4nzRluxsVX1ZviU7
29Xfl0F3Z6fi+7ot2dmtG6S4iN3OwkFKGnUrG1UDdrdXN1JtS4X7+1vtw2jk
z9JFW7O7kW/RPgsWErpdtfX7rxZ+qvbeLdlR+qlG+sXfdjtdm5Bo+0v5t73K
b8sRsNtZr2lRhk3dzkZVizok7HZy1GTBQrZqvq5aynZtm/JZ7VS3qV9O7lDV
L6fbqfm6Yjndbm2b0ll1e9VtapfTLZyOpZaVPx0LPleb+vzt1lLfb+vvN5b6
Xm0mlg1c5vtd/f1S/fc65vulBuh19QJ6S33fM9//slSDdT2j3pulGmyYBkvt
WW87jxiGbC5o6YhZBewta7Fb1aKO83TXO9XNqjlId72Sri7kPuhkVk9qytqs
V7epX99GXcO6WdaQ3CXWmJNlllrjdnWb+jXu1DWsm2UNHV68xg11ogvlkkpR
ekOd52J5peL3v+9532TDSQs1RZ13t2WZh8NsEnz37MxSYqnMD2ZT+8brjzCx
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
Z5Rp/3+XHhXHN+QBAA==

-->

</rfc>

