6man                                                           R. Bonica
Internet-Draft                                          Juniper Networks
Intended status: Standards Track                               Y. Kamite
Expires: January 6, 2020                  NTT Communications Corporation
                                                                 T. Niwa
                                                                    KDDI
                                                               A. Alston
                                                            D. Henriques
                                                          Liquid Telecom
                                                                   N. So
                                                                   F. Xu
                                                            Reliance Jio
                                                                 G. Chen
                                                                   Baidu
                                                                  Y. Zhu
                                                                 G. Yang
                                                           China Telecom
                                                                 Y. Zhou
                                                               ByteDance
                                                            July 5, 2019


                The IPv6 Compressed Routing Header (CRH)
                   draft-bonica-6man-comp-rtg-hdr-05

Abstract

   This document defines a new IPv6 Routing header type, called the
   Compressed Routing Header (CRH).  SRv6+ nodes use the CRH to steer
   packets from segment to segment along SRv6+ paths.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on January 6, 2020.




Bonica, et al.           Expires January 6, 2020                [Page 1]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Requirements Language . . . . . . . . . . . . . . . . . . . .   3
   3.  The Compressed Routing Header (CRH) . . . . . . . . . . . . .   3
   4.  Segment Forwarding Information Base (SFIB)  . . . . . . . . .   5
   5.  Processing Rules  . . . . . . . . . . . . . . . . . . . . . .   5
     5.1.  General . . . . . . . . . . . . . . . . . . . . . . . . .   5
     5.2.  CRH Specific  . . . . . . . . . . . . . . . . . . . . . .   6
       5.2.1.  Computing Minimum CRH Length  . . . . . . . . . . . .   7
       5.2.2.  Strictly-Routed Topological Instructions  . . . . . .   8
       5.2.3.  Loosely-Routed Topological Instructions . . . . . . .   9
   6.  Mutability  . . . . . . . . . . . . . . . . . . . . . . . . .   9
   7.  Compliance  . . . . . . . . . . . . . . . . . . . . . . . . .   9
   8.  Management Considerations . . . . . . . . . . . . . . . . . .   9
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
   11. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  10
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     12.1.  Normative References . . . . . . . . . . . . . . . . . .  10
     12.2.  Informative References . . . . . . . . . . . . . . . . .  11
   Appendix A.  CRH Processing Examples  . . . . . . . . . . . . . .  11
     A.1.  Loose Source Routing  . . . . . . . . . . . . . . . . . .  13
     A.2.  Loose Source Routing Preserving The First SID . . . . . .  13
     A.3.  Strict Source Routing . . . . . . . . . . . . . . . . . .  14
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  15

1.  Introduction

   This document defines a new IPv6 [RFC8200] Routing header type,
   called the Compressed Routing Header (CRH).  SRv6+
   [I-D.bonica-spring-srv6-plus] nodes use the CRH to steer packets from
   segment to segment along SRv6+ paths.



Bonica, et al.           Expires January 6, 2020                [Page 2]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   For details regarding SRv6+ paths, segments, Segment Identifiers
   (SIDs) and instructions, see [I-D.bonica-spring-srv6-plus].

2.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  The Compressed Routing Header (CRH)

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Next Header  |  Hdr Ext Len  | Routing Type  | Segments Left |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   Last Entry  |Com|              Reserved                     |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                           SID List   ........
       +-+-+-+-+-+-+-+-+-+-+-


                 Figure 1: Compressed Routing Header (CRH)

   Figure 1 depicts the CRH.  The CRH contains the following fields:

   o  Next Header - Defined in [RFC8200].

   o  Hdr Ext Len - Defined in [RFC8200].

   o  Routing Type - Defined in [RFC8200].  Value TBD by IANA.
      (Suggested value: 5)

   o  Segments Left - Defined in [RFC8200].

   o  Last Entry - 8 bits.  Represents the zero-based index of the last
      element of the Segment List.

   o  Com (Compression) - 2 bits.  Represents the length of each entry
      in the SID List.  Values are reserved (0), sixteen bits (1),
      thirty-two bits (2), and reserved (3).  In order to maximize
      header compression, this value should reflect the smallest
      feasible Maximum SID Value (MSV).  See Section 5.1 of
      [I-D.bonica-spring-srv6-plus] for MSV details.





Bonica, et al.           Expires January 6, 2020                [Page 3]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   o  Reserved - SHOULD be set to zero by the sender.  MUST be ignored
      by the receiver.

   o  SID List - Represents the SRv6+ path as an ordered list of SIDs.
      SIDs are listed in reverse order, with SID[0] representing the
      final segment, SID[1] representing the penultimate segment, and so
      forth.  SIDs are listed in reverse order so that Segments Left can
      be used as an index to the SID List.  The SID indexed by Segments
      Left is called the current SID.

   Figure 2 and Figure 3 illustrate CRH encodings with Com equal to 1
   and 2.  In all cases, the CRH MUST end on a 64-bit boundary.
   Therefore, the CRH MAY be padded with zeros.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Next Header  |  Hdr Ext Len  | Routing Type  | Segments Left |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   Last Entry  |Com|              Reserved                     |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |             SID[0]            |          SID[1]               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
       |                          .........
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-



               Figure 2: Sixteen-bit Encoding (Com equals 1)

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Next Header  |  Hdr Ext Len  | Routing Type  | Segments Left |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   Last Entry  |Com|              Reserved                     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +                             SID[0]                            +
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +                             SID[1]                            +
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      //                                                              //
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +                             SID[n]                            +
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


             Figure 3: Thirty-two bit Encoding (Com equals 2)



Bonica, et al.           Expires January 6, 2020                [Page 4]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


4.  Segment Forwarding Information Base (SFIB)

   A segment ingress node MUST maintain one Segment Forwarding
   Information Base (SFIB) entry for each segment that it originates.
   Each SFIB entry contains the following information:

   o  A SID

   o  A segment type

   o  Topological instruction parameters

   The following are valid segment types:

   o  Strictly-routed

   o  Loosely-routed

   The following parameters are associated with topological instructions
   that control strictly-routed segments:

   o  An IPv6 address that identifies an interface on the segment egress
      node.

   o  A primary interface identifier.

   o  Zero or more secondary interface identifiers.

   Loosely-routed segments are associated with a single topological
   instruction parameter.  This parameter is an IPv6 address that
   identifies an interface on the segment egress node.

5.  Processing Rules

5.1.  General

   [RFC8200] defines rules that apply to IPv6 extension headers, in
   general, and IPv6 Routing headers, in particular.  All of these rules
   apply to the CRH.

   For example:

   o  Extension headers (except for the Hop-by-Hop Options header) are
      not processed, inserted, or deleted by any node along a packet's
      delivery path, until the packet reaches the node (or each of the
      set of nodes, in the case of multicast) identified in the
      Destination Address field of the IPv6 header.




Bonica, et al.           Expires January 6, 2020                [Page 5]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   o  If, while processing a received packet, a node encounters a
      Routing header with an unrecognized Routing Type value, the
      required behavior of the node depends on the value of the Segments
      Left field.  If Segments Left is zero, the node must ignore the
      Routing header and proceed to process the next header in the
      packet, whose type is identified by the Next Header field in the
      Routing header.  If Segments Left is non-zero, the node must
      discard the packet and send an ICMPv6 [RFC4443] Parameter Problem,
      Code 0, message to the packet's Source Address, pointing to the
      unrecognized Routing Type.

   o  If, after processing a Routing header of a received packet, an
      intermediate node determines that the packet is to be forwarded
      onto a link whose link MTU is less than the size of the packet,
      the node must discard the packet and send an ICMPv6 Packet Too Big
      message to the packet's Source Address.

5.2.  CRH Specific

   When a node recognizes and processes a CRH, it executes the following
   procedure:

   o  If the IPv6 Source Address is a link-local address, discard the
      packet.

   o  If the IPv6 Source Address is a multicast address, discard the
      packet.

   o  If Segments Left equal 0, skip over the CRH and process the next
      header in the packet.

   o  If Segments Left is greater than Last Entry plus one, discard the
      packet and send an ICMPv6 Parameter Problem, Code 0, message to
      the Source Address, pointing to the Segments Left field.

   o  If Com is equal to (0) or (3) Reserved, discard the packet and
      send an ICMPv6 Parameter Problem, Code 0, message to the Source
      Address, pointing to the Com field.

   o  Compute L, the minimum CRH length (See Section 5.2.1)

   o  If L is equal to zero or L is greater than Hdr Ext Len, discard
      the packet and send an ICMPv6 Parameter Problem, Code 0, message
      to the Source Address, pointing to the Last Entry field.

   o  Decrement the packet's Hop Count.





Bonica, et al.           Expires January 6, 2020                [Page 6]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   o  If the Hop Count has expired, discard the packet and send an
      ICMPv6 Time Expired message to the packet's source node.

   o  Decrement Segments Left

   o  Search for the current SID in the SFIB.

   o  If the above-mentioned search does not return an SFIB entry,
      discard the packet and send an ICMPv6 Parameter Problem, Code 0,
      message to the Source Address, pointing to the current SID.

   o  If the above-mentioned search returns an SFIB entry and the
      segment type is strictly-routed, execute the strictly-routed
      topological instruction described in Section 5.2.2.

   o  If the above-mentioned search returns an SFIB entry and the
      segment type is loosely-routed, execute the loosely-routed
      topological instruction described in Section 5.2.3.

   The above stated rules are demonstrated in Appendix A.

5.2.1.  Computing Minimum CRH Length

   The algorithm described in this section accepts the following CRH
   fields as its input parameters:

   o  Compression (Com).

   o  Last Entry.

   It yields L, the minimum CRH length.  The minimum CRH length is
   measured in 8-octet units, not including the first 8 octets.



















Bonica, et al.           Expires January 6, 2020                [Page 7]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


           <CODE BEGINS>

           if (Com == 1 ) {    /* Sixteen bit encoding */
               L = ( ( Last Entry + 1 ) / 4 );
               if ( ( Last Entry + 1 ) % 4 )
                   L++;
               }
           elsif (Com == 2 ) {    /* Thirty-two bit encoding */
               L = ( ( Last Entry + 1 ) / 2 );
               if ( ( Last Entry + 1 ) % 2 )
                   L++;
               }
           else {                  /* Invalid Com */
               L = 0xFF

               }

           return(0)

           <CODE ENDS>


5.2.2.  Strictly-Routed Topological Instructions

   A strictly-routed topological instruction accepts the following
   parameters::

   o  An IPv6 address that identifies an interface on the segment egress
      node.

   o  A primary interface identifier.

   o  Zero or more secondary interface identifiers.

   A strictly-routed topological instruction behaves as follows:

   o  If none of the interfaces identified by the above-mentioned
      parameters are operational, discard the packet and send an ICMPv6
      Destination Unreachable message (Code: 5, Source Route Failed) to
      the packet's source node.

   o  Overwrite the packet's Destination Address with the IPv6 address
      that was received as a parameter.

   o  If the primary interface is active, forward the packet through the
      primary interface.





Bonica, et al.           Expires January 6, 2020                [Page 8]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   o  If the primary interface is not active and any of the secondary
      interfaces are active, forward the packet through one of the
      secondary interfaces.  Execute procedures so that all packets
      belonging to a flow are forwarded through the same secondary
      interface.

5.2.3.  Loosely-Routed Topological Instructions

   A loosely-routed topological instruction accepts a single parameter.
   This parameter is an IPv6 address that identifies an interface on the
   segment egress node.

   A loosely-routed topological instruction behaves as follows:

   o  If the segment ingress node does not have a viable route to the
      IPv6 address included as a parameter, discard the packet and send
      an ICMPv6 Destination Unreachable message (Code:1 Net Unreachable)
      to the packet's source node.

   o  Overwrite the packet's Destination Address with the destination
      address that was included as a parameter.

   o  Forward the packet to the next hop along the least cost path to
      the segment egress node.  If there are multiple least cost paths
      to the segment egress node (i.e., Equal Cost Multipath), execute
      procedures so that all packets belonging to a flow are forwarded
      through the same next hop.

6.  Mutability

   In the CRH, the Segments Left field is mutable.  All remaining fields
   are immutable.

7.  Compliance

   In order to be compliant with this specification, an implementation
   MUST support 32-bit SID encoding.  It MAY also support 16-bit SID
   encoding.

8.  Management Considerations

   PING and TRACEROUTE [RFC2151] both operate correctly in the presence
   of the CRH.








Bonica, et al.           Expires January 6, 2020                [Page 9]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


9.  Security Considerations

   The CRH can be used within trusted domains only.  In order to enforce
   this requirement, domain edge routers MUST do one of the following:

   o  Discard all inbound packets that are destined for infrastructure
      interfaces and contain a CRH

   o  Authenticate [RFC4302] [RFC4303] all inbound packets that are
      destined for infrastructure interfaces and contain a CRH

10.  IANA Considerations

   This document makes the following registration in the Internet
   Protocol Version 6 (IPv6) Parameters "Routing Type" registry
   maintained by IANA:

        Suggested
        Value            Description                 Reference
      ------------------------------------------------------------
          5      Compressed Routing Header (CRH)     This document

11.  Acknowledgements

   Thanks to Joel Halpern, Tony Li, Gerald Schmidt, Nancy Shaw and
   Chandra Venkatraman for their comments.

12.  References

12.1.  Normative References

   [I-D.bonica-spring-srv6-plus]
              Bonica, R., Hegde, S., Kamite, Y., Alston, A., Henriques,
              D., Halpern, J., and J. Linkova, "IPv6 Support for Segment
              Routing: SRv6+", draft-bonica-spring-srv6-plus-01 (work in
              progress), July 2019.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC4302]  Kent, S., "IP Authentication Header", RFC 4302,
              DOI 10.17487/RFC4302, December 2005,
              <https://www.rfc-editor.org/info/rfc4302>.






Bonica, et al.           Expires January 6, 2020               [Page 10]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, DOI 10.17487/RFC4303, December 2005,
              <https://www.rfc-editor.org/info/rfc4303>.

   [RFC4443]  Conta, A., Deering, S., and M. Gupta, Ed., "Internet
              Control Message Protocol (ICMPv6) for the Internet
              Protocol Version 6 (IPv6) Specification", STD 89,
              RFC 4443, DOI 10.17487/RFC4443, March 2006,
              <https://www.rfc-editor.org/info/rfc4443>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8200]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", STD 86, RFC 8200,
              DOI 10.17487/RFC8200, July 2017,
              <https://www.rfc-editor.org/info/rfc8200>.

12.2.  Informative References

   [RFC2151]  Kessler, G. and S. Shepard, "A Primer On Internet and TCP/
              IP Tools and Utilities", FYI 30, RFC 2151,
              DOI 10.17487/RFC2151, June 1997,
              <https://www.rfc-editor.org/info/rfc2151>.

Appendix A.  CRH Processing Examples

   This appendix provides examples of CRH processing in the following
   applications:

   o  Loose source routing (Appendix A.1)

   o  Loose source routing preserving the first SID (Appendix A.2)

   o  Strict source routing (Appendix A.3)















Bonica, et al.           Expires January 6, 2020               [Page 11]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


                                -----------
            2001:db8:0:2/64    |Node: I2   |   2001:db8:0:4/64
         ----------------------|Loopback:  |--------------------
        |                  ::2 |2001:db8::2| ::1                |
        |                       -----------                     |
        | ::1                                               :: 2|
    -----------                 -----------                 -----------
   |Node: S    |2001:db8:0:1/64|Node: I1   |2001:db8:0:3/64|Node: I3   |
   |Loopback   |---------------|Loopback:  |---------------|Loopback:  |
   |2001:db8::a| ::1       ::2 |2001:db8::1| ::1       ::2 |2001:db8::3|
    -----------                 -----------                 -----------
                                                                 | ::1
                                -----------                      |
                               |Node: D    |   2001:db8:0:b/64   |
                               |Loopback:  |---------------------
                               |2001:db8::b| ::2
                                -----------

                       Figure 4: Reference Topology

   Figure 4 provides a reference topology that is used in all examples.

       +--------------------+-----+----------------+--------------+
       | Instantiating Node | SID | Segment Type   | IPv6 Address |
       +--------------------+-----+----------------+--------------+
       |        All         | 1   | Loosely-routed | 2001:db8::1  |
       |        All         | 2   | Loosely-routed | 2001:db8::2  |
       |        All         | 3   | Loosely-routed | 2001:db8::3  |
       |        All         | 10  | Loosely-routed | 2001:db8::a  |
       |        All         | 11  | Loosely-routed | 2001:db8::b  |
       +--------------------+-----+----------------+--------------+

                       Table 1: Loosely Routed SIDs

   Table 1 describes SFIB entries that are instantiated on all nodes.
   All of these SFIB entries represent loosely-routed segments.















Bonica, et al.           Expires January 6, 2020               [Page 12]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   +---------------+-----+-----------------+------------+--------------+
   | Instantiating | SID |   IPv6 Address  |  Primary   | Secondary    |
   |      Node     |     |                 | Interface  | Interfaces   |
   +---------------+-----+-----------------+------------+--------------+
   |       S       | 129 | 2001:db8:0:1::2 |  S -> I1   | none         |
   |       S       | 130 | 2001:db8:0:2::2 |  S -> I2   | none         |
   |       I1      | 129 | 2001:db8:0:3::2 |  I1 -> I3  | none         |
   |       I2      | 129 | 2001:db8:0:4::2 |  I2 -> I3  | none         |
   |       I3      | 129 | 2001:db8:0:b::2 |  I3 -> D   | none         |
   +---------------+-----+-----------------+------------+--------------+

                       Table 2: Strictly Routed SIDs

   Table 2 describes SFIB entries that are instantiated on specific
   nodes.  All of these SFIB entries represent strictly-routed segments.

A.1.  Loose Source Routing

   In this example, Node S sends a packet to Node D, specifying loose
   source route through Node I3.  In this example, the first node in the
   path, I3, does not appear in the CRH segment list.  Therefore, the
   destination node may not be able to send return traffic through the
   same path.

        +-------------------------------------+-------------------+
        | As the packet travels from S to I3: |                   |
        +-------------------------------------+-------------------+
        | Source Address = 2001:db8::a        | Last Entry = 0    |
        | Destination Address = 2001:db8::3   | Segments Left = 1 |
        |                                     | SID[0] = 11       |
        +-------------------------------------+-------------------+

        +-------------------------------------+-------------------+
        | As the packet travels from I3 to D: |                   |
        +-------------------------------------+-------------------+
        | Source Address = 2001:db8::a        | Last Entry = 0    |
        | Destination Address = 2001:db8::b   | Segments Left = 0 |
        |                                     | SID[0] = 11       |
        +-------------------------------------+-------------------+

A.2.  Loose Source Routing Preserving The First SID

   In this example, Node S sends a packet to Node D, specifying loose
   source route through Node I3.  In this example, the first node in the
   path, I3, appears in the CRH segment list.  Therefore, the
   destination node can send return traffic through the same path.





Bonica, et al.           Expires January 6, 2020               [Page 13]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


        +-------------------------------------+-------------------+
        | As the packet travels from S to I3: |                   |
        +-------------------------------------+-------------------+
        | Source Address = 2001:db8::a        | Last Entry = 1    |
        | Destination Address = 2001:db8::3   | Segments Left = 1 |
        |                                     | SID[0] = 11       |
        |                                     | SID[1] = 3        |
        +-------------------------------------+-------------------+

        +-------------------------------------+-------------------+
        | As the packet travels from I3 to D: |                   |
        +-------------------------------------+-------------------+
        | Source Address = 2001:db8::a        | Last Entry = 1    |
        | Destination Address = 2001:db8::b   | Segments Left = 0 |
        |                                     | SID[0] = 11       |
        |                                     | SID[1] = 3        |
        +-------------------------------------+-------------------+

A.3.  Strict Source Routing

   In this example, Node S sends a packet to Node D, specifying the
   strict source route through I1 and I3.

       +---------------------------------------+-------------------+
       | As the packet travels from S to I1:   |                   |
       +---------------------------------------+-------------------+
       | Source Address = 2001:db8::a          | Last Entry = 1    |
       | Destination Address = 2001:db8:0:1::2 | Segments Left = 2 |
       |                                       | SID[0] = 129      |
       |                                       | SID[1] = 129      |
       +---------------------------------------+-------------------+

       +---------------------------------------+-------------------+
       | As the packet travels from I1 to I3:  |                   |
       +---------------------------------------+-------------------+
       | Source Address = 2001:db8::a          | Last Entry = 1    |
       | Destination Address = 2001:db8:0:3::2 | Segments Left = 1 |
       |                                       | SID[0] = 129      |
       |                                       | SID[1] = 129      |
       +---------------------------------------+-------------------+











Bonica, et al.           Expires January 6, 2020               [Page 14]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


       +---------------------------------------+-------------------+
       | As the packet travels from I3 to D:   |                   |
       +---------------------------------------+-------------------+
       | Source Address = 2001:db8::a          | Last Entry = 1    |
       | Destination Address = 2001:db8:0:b::2 | Segments Left = 0 |
       |                                       | SID[0] = 129      |
       |                                       | SID[1] = 129      |
       +---------------------------------------+-------------------+

Authors' Addresses

   Ron Bonica
   Juniper Networks
   2251 Corporate Park Drive
   Herndon, Virginia  20171
   USA

   Email: rbonica@juniper.net


   Yuji Kamite
   NTT Communications Corporation
   3-4-1 Shibaura, Minato-ku
   Tokyo  108-8118
   Japan

   Email: : y.kamite@ntt.com


   Tomonobu Niwa
   KDDI
   3-22-7, Yoyogi, Shibuya-ku
   Tokyo  151-0053
   Japan

   Email: to-niwa@kddi.com


   Andrew Alston
   Liquid Telecom
   Nairobi
   Kenya

   Email: Andrew.Alston@liquidtelecom.com







Bonica, et al.           Expires January 6, 2020               [Page 15]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   Daniam Henriques
   Liquid Telecom
   Johannesburg
   South Africa

   Email: daniam.henriques@liquidtelecom.com


   Ning So
   Reliance Jio
   3010 Gaylord PKWY, Suite 150
   Frisco, Texas  75034
   USA

   Email: Ning.So@ril.com


   Fengman Xu
   Reliance Jio
   3010 Gaylord PKWY, Suite 150
   Frisco, Texas  75034
   USA

   Email: Fengman.Xu@ril.com


   Gang Chen
   Baidu
   No.10 Xibeiwang East Road Haidian District
   Beijing  100193
   P.R. China

   Email: phdgang@gmail.com


   Yongqing Zhu
   China Telecom
   109 West Zhongshan Ave, Tianhe District
   Guangzhou
   P.R. China

   Email: zhuyq.gd@chinatelecom.cn









Bonica, et al.           Expires January 6, 2020               [Page 16]


Internet-Draft       IPv6 Compressed Routing Header            July 2019


   Guangming Yang
   China Telecom
   109 West Zhongshan Ave, Tianhe District
   Guangzhou
   P.R. China

   Email: yanggm.gd@chinatelecom.cn


   Yifeng Zhou
   ByteDance
   Building 1, AVIC Plaza, 43 N 3rd Ring W Rd Haidian District
   Beijing  100000
   P.R. China

   Email: yifeng.zhou@bytedance.com



































Bonica, et al.           Expires January 6, 2020               [Page 17]