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.

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

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.

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 [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:

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)

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:

The following are valid segment types:

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

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:

5.2. CRH Specific

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

Appendix A.

The above stated rules are demonstrated in

5.2.1. Computing Minimum CRH Length

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

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

<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::

A strictly-routed topological instruction behaves as follows:

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:

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 both operate correctly in the presence of the CRH.

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:

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+", Internet-Draft draft-bonica-spring-srv6-plus-03, 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.
[RFC4302] Kent, S., "IP Authentication Header", RFC 4302, DOI 10.17487/RFC4302, December 2005.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, DOI 10.17487/RFC4303, December 2005.
[RFC4443] Conta, A., Deering, S. and M. Gupta, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", STD 89, RFC 4443, DOI 10.17487/RFC4443, March 2006.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.
[RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, July 2017.

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.

Appendix A. CRH Processing Examples

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

                             -----------
         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.

Loosely Routed SIDs
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 describes SFIB entries that are instantiated on all nodes. All of these SFIB entries represent loosely-routed segments.

Strictly Routed SIDs
Instantiating Node SID IPv6 Address Primary Interface Secondary 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 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.

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
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
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
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