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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC8402 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8754 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
<!ENTITY RFC8986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY I-D.filsfilscheng-spring-srv6-srh-compression SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.filsfilscheng-spring-srv6-srh-compression.xml">
<!ENTITY RFC5095 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5095.xml">
<!ENTITY RFC4193 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4193.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-clad-spring-srv6-srh-compression-illus-00" category="info">

  <front>
    <title abbrev="Illustrations for Comp SRv6 SL">Illustrations for Compressed SRv6 Segment List Encoding in SRH</title>

    <author initials="F." surname="Clad" fullname="Francois Clad" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street></street>
          <country>France</country>
        </postal>
        <email>fclad@cisco.com</email>
      </address>
    </author>
    <author initials="D." surname="Dukes" fullname="Darren Dukes" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street></street>
          <country>Canada</country>
        </postal>
        <email>ddukes@cisco.com</email>
      </address>
    </author>

    <date year="2021" month="October" day="15"/>

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

    <abstract>


<t>This document provides illustrations for compressed SRv6 Segment List Encoding in the Segment Routing Header (SRH).</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document provides illustrations for <xref target="I-D.filsfilscheng-spring-srv6-srh-compression"/> compressed SRv6 Segment List Encoding in the Segment Routing Header (SRH).</t>

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

<t>This document leverages the terminology introduced in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>. The definition of the most important terms is reproduced in this section for convenience.</t>

<section anchor="from-rfc-8402" title="From RFC 8402">

<t>Segment Routing domain (SR domain): the set of nodes participating in the source-based routing model.  These nodes may be connected to the same physical infrastructure (e.g., a Service Provider's network). They may as well be remotely connected to each other (e.g., an enterprise VPN or an overlay).  If multiple protocol instances are deployed, the SR domain most commonly includes all of the protocol instances in a network.  However, some deployments may wish to subdivide the network into multiple SR domains, each of which includes one or more protocol instances.  It is expected that all nodes in an SR domain are managed by the same administrative entity.</t>

</section>
<section anchor="from-rfc-8754" title="From RFC 8754">

<t>SR Source Node (section 3.1): A SR source node is any node that originates an IPv6 packet with a segment (i.e., SRv6 SID) in the destination address of the IPv6 header.</t>

<t>Transit Node (section 3.2): A transit node is any node forwarding an IPv6 packet where the destination address of that packet is not locally configured as a segment or a local interface. A transit node is not required to be capable of processing a segment or SRH.</t>

<t>SR Segment Endpoint Node (section 3.3): An SR segment endpoint node is any node receiving an IPv6 packet where the destination address of that packet is locally configured as a segment or local interface.</t>

</section>
<section anchor="from-rfc-8986" title="From RFC 8986">

<t>SID Format: This document defines an SRv6 SID as consisting of LOC:FUNCT:ARG, where a locator (LOC) is encoded in the L most significant bits of the SID, followed by F bits of function (FUNCT) and A bits of arguments (ARG). L, the locator length, is flexible, and an operator is free to use the locator length of their choice. F and A may be any value as long as L+F+A &lt;= 128. When L+F+A is less than 128, then the remaining bits of the SID MUST be zero. A locator may be represented as B:N where B is the SRv6 SID block (IPv6 prefix allocated for SRv6 SIDs by the operator) and N is the identifier of the parent node instantiating the SID.</t>

</section>
</section>
<section anchor="intra-sr-domain-deployment-model" title="Intra-SR-Domain Deployment Model">
<t>The content of this section is a partial reproduction of section 5 for <xref target="RFC8754"/>. The reader can easily understand that the dual measures provided can prevent SR packets from leaving the SR domain.</t>

<t>The use of the SIDs exclusively within the SR domain and solely for packets of the SR domain is an important deployment model.</t>

<t>This enables the SR domain to act as a single routing system.</t>

<section anchor="securing-the-sr-domain" title="Securing the SR Domain">

<t>Nodes outside the SR domain are not trusted: they cannot directly use the SIDs of the domain. This is enforced by two levels of access control lists:</t>

<t><list style="symbols">
  <t>Any packet entering the SR domain and destined to a SID within the SR domain is dropped. This may be realized with the following logic. Other methods with equivalent outcome are considered compliant:
  <list style="symbols">
      <t>Allocate all the SIDs from a block S/s</t>
      <t>Configure each external interface of each edge node of the domain with an inbound infrastructure access list (IACL) that drops any incoming packet with a destination address in S/s</t>
      <t>Failure to implement this method of ingress filtering exposes the SR domain to source-routing attacks, as described and referenced in <xref target="RFC5095"/></t>
    </list></t>
  <t>The distributed protection in #1 is complemented with per-node protection, dropping packets to SIDs from source addresses outside the SR domain. This may be realized with the following logic. Other methods with equivalent outcome are considered compliant:
  <list style="symbols">
      <t>Assign all interface addresses from prefix A/a</t>
      <t>At node k, all SIDs local to k are assigned from prefix Sk/sk</t>
      <t>Configure each internal interface of each SR node k in the SR domain with an inbound IACL that drops any incoming packet with a destination address in Sk/sk if the source address is not in A/a.</t>
    </list></t>
</list></t>

</section>
</section>
<section anchor="general-addressing" title="General Addressing">

<t>The illustrations in this document use the IPv6 documentation prefix 2001:db8::/32.</t>

<t>Loopback interface addresses are allocated from the prefix 2001:db8:a::/48.</t>

<t>SRv6 SIDs are allocated from the prefix 2001:db8:b::/48.</t>

<t>An operator deploying this solution could instead select any sub-prefix out of the prefix allocated by their Regional Internet Registry (RIR) to this operator or from the Unique Local Unicast (ULA) prefix. ULA provides the uniqueness and privacy characteristics defined in Section 1 of <xref target="RFC4193"/>.</t>

</section>
<section anchor="next-c-sid-flavor" title="NEXT-C-SID Flavor">

<figure title="Reference topology"><artwork><![CDATA[
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        N11           N13           N15           N17              |
|
 N10                                                            N19|
|
               N12           N14           N16           N18       |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                             SR domain
]]></artwork></figure>

<t>N10 to N19 represent the potential SR source and SR segment endpoint nodes in the SR domain.</t>

<t>The SR domain may include any number of transit nodes (not shown) between the nodes that are represented in this figure.</t>

<section anchor="addressing-and-srv6-sid-allocation" title="Addressing and SRv6 SID allocation">

<t>Nodes N10 to N19 have a loopback interface configured with the address 2001:db8:a:NN00::, where NN is the node identifier.</t>

<t>Nodes N10 to N19 instantiate the SID 2001:db8:b:NN00::, where NN is the node identifier, with Locator-Block length (LBL) = 48, Locator-Node length (LNL)= 16, Function length (FL) = 0, Argument length (AL) = 64, and bound to the End behavior with the NEXT-C-SID and USD flavors.</t>

<t>The "Endpoint" (or "End") behavior is the most basic operation that can be performed by an SR segment endpoint node (i.e., a node that identifies the destination address of a received packet as matching a locally instantiated SID). It updates the destination address of the packet with the next SID in the segment list. The pseudocode of the End behavior with the NEXT-C-SID and USD flavors is specified in section 4.1.1 of <xref target="I-D.filsfilscheng-spring-srv6-srh-compression"/>.</t>

</section>
<section anchor="routing" title="Routing">

<t>Nodes N10 to N19 advertise the prefixes 2001:db8:a:NN00::/64 and 2001:db8:b:NN00::/64, where NN is the node identifier, in the IGP.</t>

</section>
<section anchor="case-1-intra-domain-traffic-engineering" title="Case 1: Intra-domain Traffic Engineering">

<t>Let us assume that a centralized controller programs N11 to classify the traffic from 2001:db8:a:1000:: to 2001:db8:a:1900:: into an SR Policy encoded through an IPv6 encapsulation with:</t>

<t><list style="symbols">
  <t>IPv6
  <list style="symbols">
      <t>Source address 2001:db8:a:1100::</t>
      <t>Destination address 2001:db8:b:1200:1300:1400:1500:1600</t>
      <t>Next Header = 43 (Routing header)</t>
    </list></t>
  <t>SRH
  <list style="symbols">
      <t>Segment List &lt; 2001:db8:b:1200:1300:1400:1500:1600, 2001:db8:b:1700:1800:: &gt;</t>
      <t>Segments Left = 1</t>
      <t>Next Header = 41 (IPv6)</t>
    </list></t>
</list></t>

<t>For illustration purposes, we use SID allocation that allows for a straightforward human reading of a compressed segment list. Indeed, &lt; 2001:db8:b:1200:1300:1400:1500:1600, 2001:db8:b:1700:1800:: &gt; means: within the domain 2001:db8:b::, go first through node N12 then N13, N14, N15, and N16, then retrieve the next segment list entry from the SRH and go through node N17 before decapsulating the packet at node N18.</t>

<t>This is compliant with the RFC 8986 because the SID meets the Locator:Function:Argument format definition (section 3.1 of RFC 8986). For example, the packet sent by node N11 has a destination address 2001:db8:b:1200:1300:1400:1500:1600 where 2001:db8:b:1200/64 is the Locator and 0x1300140015001600 is the Argument.</t>

<t>A packet in transit towards a given SID (e.g. 2001:db8:b:1200:1300:1400:1500:1600), is forwarded by transit nodes via a longest-match lookup on the destination address of the packet. This results in a match of the  SID locator (in this case, 2001:db8:b:1200::/64), the transit node then forwards the packet accordingly. The SID function and argument bits are opaque to transit nodes. The function is only identified at the SR segment endpoint node (represented by the SID locator in the destination address) which further processes the argument.</t>

<t>Also note the source N11 performs IPv6 header encapsulation with SRH, and the selected SID list containing function/arguments to be processed at some endpoints, because we are in a source routed domain within a secured SR domain.</t>

<t>The remainder of this section details the packet journey.</t>

<t>The packet Px transmitted by a node Nn is identified as "@Nn Px".</t>

<figure><artwork><![CDATA[
@N10 P1:(IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>N11 (as programmed by the centralized controller) encapsulates the packet P1 and submits the updated packet (P2) to the IPv6 module for transmission. It performs an IP lookup on the destination address, matching an entry for the prefix 2001:db8:b:1200::/64 advertised by N21. N11 forwards the packet on its shortest path towards to node N12.</t>

<figure><artwork><![CDATA[
@N11 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1200:1300:1400:1500:1600)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>The transit nodes between N11 and N12 forward P1 as per their route 2001:db8:b:1200::/64 to N12. Similarly, the transit nodes between each subsequent pair of consecutive SR segment endpoint nodes forwards the packet as per their IPv6 routes for the destination address. Those transit nodes are plain IPv6 routers with the plain IPv6 dataplane, they do not need to have any knowledge of SRv6.</t>

<t>The hop limit of packet P1 is decremented at every transit node and every SR segment endpoint node.</t>

<t>When the packet reaches the first SR segment endpoint node N12 (i.e., the first TE waypoint), this performs a longest-prefix-match lookup on the IPv6 destination address. This lookup returns a FIB entry that represents a locally instantiated SRv6 SID bound to the End behavior with the NEXT-C-SID flavor. N12 processes the packet accordingly, resulting in a new destination address. It then submits the updated packet to the IPv6 module for transmission. This triggers an IP lookup on the destination address, matching an entry for the prefix 2001:db8:b:1300::/64 advertised by N13. The packet is forwarded on the shortest path towards N13.</t>

<figure><artwork><![CDATA[
@N12 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1300:1400:1500:1600:0000)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>The subsequent SR segment endpoint nodes N13 to N17 process the packet similarly.</t>

<figure><artwork><![CDATA[
@N13 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1400:1500:1600:0000:0000)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<figure><artwork><![CDATA[
@N14 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1500:1600:0000:0000:0000)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<figure><artwork><![CDATA[
@N15 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1600:0000:0000:0000:0000)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>When the packet is processed by the SR segment endpoint node N16, the SID argument value is 0. As per the pseudocode of the End behavior with the NEXT-C-SID and USD flavors, N16 retrieves the next SID by decrementing the value of segments left in the SRH and copying the next entry from the SRH segment list into the destination address.</t>

<figure><artwork><![CDATA[
@N16 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1700:1800::)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=0)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<figure><artwork><![CDATA[
@N17 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1800:0000::)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=0)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>When the packet reaches the final SR segment endpoint node N18, both the SID argument value and the segments left value in the SRH are 0. As per the pseudocode of the End behavior with the NEXT-C-SID and USD flavors, N18 decapsulates the packet and sends the inner packet P1 towards its destination 2001:db8:a:1900::.</t>

<figure><artwork><![CDATA[
@N18 P1:(IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

</section>
<section anchor="case-2-icmpv6-error-generation-at-a-transit-node" title="Case 2: ICMPv6 error generation at a transit node">

<t>Let us assume in the previous example that the hop limit expires on a transit node N141, located on the path between the SR segment endpoint nodes N14 and N15.</t>

<t>The packet sent by node N14 is as follows (reproduced from the previous section).</t>

<figure><artwork><![CDATA[
@N14 P2:(IPv6 2001:db8:a:1100::, 2001:db8:b:1500:1600:0000:0000:0000)
        (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
        (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::)
]]></artwork></figure>

<t>Node N141 generates an ICMPv6 time exceeded error message as follows.</t>

<figure><artwork><![CDATA[
@N141 P3: (IPv6 <any address of node N141>, 2001:db8:a:1100::)
          (ICMPv6 time exceeded error
            (IPv6 2001:db8:a:1100::, 2001:db8:b:1500:1600:0000:0000:0000)
            (SRH 2001:db8:b:1700:1800::, 2001:db8:b:1200:1300:1400:1500:1600; SL=1)
            (IPv6 2001:db8:a:1000::, 2001:db8:a:1900::))
]]></artwork></figure>

<t>Node N11 receives the ICMP error packet transmitted by N141. Section 5.4 of RFC8754 indicates that a destination address of the invoking packet is determined by looking at segment list[0].</t>

</section>
<section anchor="case-3-ping-a-sid" title="Case 3: Ping a SID">

<t>The operator wants to ping the End with NEXT-C-SID flavor SID 2001:db8:b:1200:: of N12 from the SR source node N10.</t>

<t>The ICMP echo request is sent by N10 as follows.</t>

<figure><artwork><![CDATA[
@N10 P1:(IPv6 2001:db8:a:1000::, 2001:db8:b:1200::)
        (ICMPv6 echo request)
]]></artwork></figure>

<t>This results in an ICMP echo reply from N12 to N10.</t>

<figure><artwork><![CDATA[
@N12 P2:(IPv6 2001:db8:b:1200::, 2001:db8:a:1000::)
        (ICMPv6 echo reply)
]]></artwork></figure>

</section>
</section>
<section anchor="replace-c-sid-flavor" title="REPLACE-C-SID Flavor">

<t>TBD</t>

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

<t>TBD</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC8402;
&RFC8754;
&RFC8986;
&I-D.filsfilscheng-spring-srv6-srh-compression;


    </references>

    <references title='Informative References'>

&RFC5095;
&RFC4193;


    </references>



  </back>

<!-- ##markdown-source:
H4sIAJnxaWEAA91ba3MbN5b9zl+Bsj+MuCFpUi/L3GQ2smQlqlI4Kkme2aqp
+QB2gyRWzQan0U2J8Si/fc+9APrBhyKPnVrXKgmL7G4AF/eee+4DnW6328p1
nqihuEySwuaZzLVJrZiYTJyZ+SJT1qpY3N4sj8Wtms5VmosrbXPxIY1MrNOp
0Cnu/tyS43Gmlrum8RNctWITpXKO5eJMTvJulMi4axcZJurabHmMj1k38uti
hq6m6br9fiuWuRq2InxOTbYaYtmJabX0IhuKPMOK+/3+u/5+S2ZKDsVPKlWZ
TFoPJrufZqZYDMXt9c3l6KfWvVrhYgw501xlqcq75yRIq+V2MxRYTdpI69ZC
D8XfcxN1hDVZnqmJxbfVnL78o9WSRT4z2bAlui0BWexQXPTEGXaDn26DF5mE
irQNV002lan+lRUzFGfaRkbcrmyu5pj4Mo16eCYzZAkV69xk+KnmUidDMSEt
/RjRiB50gxuRKdKctMCLqJoU5z1xXtwrW4pxLrNMpeXFf1+KOKYptotxJlMZ
y1YrNdkcUy9hKSFuLs5ODvv74evbo8Pw9d3JMX297J73Jjqx9F80UwSB3UgY
wtgweTl/q9vtCjkmqEUw390Mmga4CkboIjNLHSsr9AYao5eCOp+p8uaNKXK6
/LOSscrEHgDf7jkR5jqOE9VqvSZEZSYuIlrrMwT69Omz9PD09FW38FrcqWyu
U5OY6Wpd6kQt4UZTiE0z5dWDmNztFSJgnU+fvK2fnjr+B6xNP2Qa+wuw+dNT
T9xholhNdKpJA8JMeOq5geR6voCjSaxLK0FVVmRqUVsmJ+GsYgV7W6ZLlWoF
F6CtvIY7mDkhTJAwrdb63mMDKKe0d/+1PeTlrcpJktSQhRYyy3WkFzKvadGa
IotUdyxJ6Zmfbo7nk56gPVnlR8/lSowVSZZCUDycGzcBnFEsZiurI5kQeWUS
MABYikyJPdWb9qAsGCtb6kiJaweX7E9WgKKIxdqsuhXPL614UElC62RqbnKV
rJoLKhnNhMGyWTl1KhQRHnAFUf96PQIR0EUDAydyhdnF5UTMiyTXi0QRXMF8
hgS1OTGMFSBWGG6RmJWKOw5ZQYvOfEDl3KQJYSNKCtKFhIzewFsmxDgZdofl
fzYPhDZi23lYiYznVPqg7Yx2ZotxrEk1PKsfTWg0lfClXGA0p4mJeJhpfCkl
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

-->

</rfc>

