Network Working Group X. Geng
Internet-Draft M. Mach
Intended status: Experimental Huawei
Expires: September 12, 2019 March 11, 2019

DetNet SRv6 Data Plane Encapsulation
draft-geng-detnet-dp-sol-srv6-00

Abstract

This document specifies Deterministic Networking data plane operation for SRv6 encapsulated user data.

Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

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 September 12, 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

Deterministic Networking(DetNet) provides a capability to carry specified data flows with extremely low data loss rates and bounded latency within a network domain. DetNet is enabled by a group of technologies, such as resource allocation, service protection and explicit routes.([I-D.ietf-detnet-architecture])

Segment Routing(SR) leverages the source routing paradigm. A ingress node steers a packet through an ordered list of instructions, called "segments". SR can be applied over IPv6 data plane using Routing Extension Header(SRH). Besides routing, the segment of SRv6 can indicate functions which are executed locally in the node where they are defined. SRv6 network programming makes it convenient to add sophisticated operations in the network. ([RFC8402])

This document describes how to implement DetNet with SRv6. It can provide : 1. Source routing, which can steer the DetNet flows go through the network according to an explicit route with allocated resource; 2. Network programming, which can give packet instructions in some special nodes(even all the nodes) along the path to guarantee service protection and congestion protection. DetNet SRv6 encapsulation and new SRv6 functions for DetNet are defined in this document.

Control plane and OAM are not in the scope of this document.

2. Terminology and Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

2.1. Terminology

Terminologies for DetNet go along with the definition in [I-D.ietf-detnet-architecture]. Other terminologies are defined as follows:

2.2. Conventions

Conventions in the document are defined as follows:

3. SRv6 DetNet Data Plane Overview

3.1. SRv6 DetNet Data Plane Layers

[I-D.ietf-detnet-architecture]decomposes the DetNet data plane into two sub-layers: service sub-layer and transport sub-layer. Different from DetNet MPLS data plane solution, which uses DetNet Control Word(d-CW) and S-Label to support service sub-layer and uses T-Label to support transport sub-layer, no explicit sub-layer division can be found in SRv6 data plane. A classical SRv6 DetNet data plane solution is showed in the picture below:

                        
                               +-------------------+
                               | Outer Ipv6 Header |
                               +-------------------+
                               |        SRH        |
   +-------------------+       +-------------------+
   |     Ipv6 Header   | ----> |     Ipv6 Header   |
   +-------------------+       +-------------------+

The outer IPv6 Header with SRH is used for carrying DetNet flows. Traffic Engineering is programmed in the segment list of SRH, and other functions and arguments for service protection (packet replication, elimination and ordering) and congestion control (packet queuing and forwarding) are also defined in SRH.

3.2. SRv6 DetNet Data Plane Scenarios

             |                                         |
 ----IPv6--->|<---------------SRv6 DetNet------------->|<----IPv6---
             |                                         |
             |             +------+T2+----+            |
   +---+    +---+        +-+-+          +-+-+        +---+    +---+
   | E1+----| In|--+T1+--+R1 |          |R2 |--+T4+--| Eg+----+ E2|
   +---+    +---+        +-+-+          +-+-+        +---+    +---+
                           +-----+T3+-----+

The figure above shows that an IPv6 flow is sent our from the end station: E1. The packet of the flow is encapsulated as a DetNet SRv6 packet in the Ingress(In) and transported through an SRv6 DetNet domain. In the Egress(Eg), the upper IPv6 header with SRH of the packet is popped, and the packet is transmitted to the destination(E2).

The DetNet packet processing is as follows:

Ingress:

Relay Node 1(Replication Node):

Relay Node 2(Elimination Node):

Egress:

The DetNet packet encapsulation is as follows:

4. SRv6 DetNet Data Plane Solution Considerations

To carry DetNet over SRv6, the following elements are required:

1. A method of identifying the SRv6 payload type;

2. A suitable explicit route to deliver the DetNet flow ;

3. A method of indicating packet processing, such as PREOF;

4. A method of identifying the DetNet flow;

5. A method of carrying DetNet sequence number;

6. A method of carrying queuing and forwarding indication to do congestion protection;

In this design, DetNet flows are encapsulated with SRH in the Ingress Node. The SR policy in the SRH steers the DetNet flow along a selected path. The explicit route allocated to a DetNet flow, which protect it from temporary interruptions caused by the convergence of routing, is encoded within the SID list of a SR policy. The network device inside the DetNet domain forwards the packet according to IPv6 Destination Address(DA), and the IPv6 DA is updated with the SID list.

With SRv6 network programming, the SID list can also give instruments representing a function to be called at the node in the DetNet domain. Therefore DetNet specific functions defined in [I-D.ietf-detnet-architecture], corresponding to local packet processing in the network, can also be implemented by SRv6. New functions associated with SIDs for DetNet are defined in this document.

This document describes how DetNet flows are encapsulated/identified, and how functions of Packet Replication/Elimination/Ordering are implemented in an SRv6 domain. Congestion protection is also in the scope of this document.

Editor: This version only covers the functions of service protection and the congestion protection considerations will be added in the following versions.

5. SRv6 DetNet Data Plane Solution for Service Sub-layer

This section defines options of SRv6 data plane solution to support DetNet Service Sub-layer.

5.1. TLV Based SRv6 Data Plane Solution

5.1.1. Encapsulation

An SRv6 Segment is a 128-bit value. SID is used as a shorter reference for "SRv6 Segment". SRv6 SID can also be represented as LOC:FUNCT, where LOC, abbreviated for "LOCATION", directs the explicit route, FUNCT, abbreviated for "FUNCTION", directs the packet processing in the local node ([I-D.filsfils-spring-srv6-network-programming]).

The SRH for DetNet in the outer IPv6 header is showed as follows:

  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 |  Segment Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Last Entry  |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                     Location & Function                       |
 |           (Segment List[0] for relay node or edge node)       |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                       Segment List[n]                         |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          Optional TLVs                        |
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Two new TLVs are defined to support DetNet service protection. DetNet Flow Identification TLV is used to uniquely identify a DetNet flow in an SRv6 DetNet node. DetNet sequence number is used to dis crime packets in the same DetNet flow. They are defined as follows:

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Type      |    Length     |           RESERVED            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        RESERVED       |           Flow Identification         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Type      |    Length     |           RESERVED            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |RESERVE|                    Sequence Number                    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:

5.1.2. Functions

New SID functions are defined as follows:

5.1.2.1. End. B.Replicatioreserve the value of argument field(Inherited argument)of segment[0] of SRH n: Packet Replication Function

  1. IF NH=SRH & SL>0 THEN
  2. do not decrement SL nor update the IPv6 DA with SRH[SL]
  3. reserve the value of DetNet TLVs of SRH
  4. add the DetNet TLVs into SRH'1 and SRH'2
  5. pop the SRH
  6. replicate the packet into two packets: packet'1, packet'2
  7. insert SRH'1 to packet'1
  8. insert SRH'2 to packet'2
  9. set the IPv6 DA of packet'1 to the first segment of the SRv6 Policy of SRH'1
  10. set the IPv6 DA of packet'2 to the first segment of the SRv6 Policy of SRH'2
  11. ELSE
  12. drop the packet

5.1.2.2. End. B. Elimination: Packet Elimination Function

  1. IF NH=SRH & SL>0 & "the packet is not a redundant packet" THEN
  2. do not decrement SL nor update the IPv6 DA with SRH[SL]
  3. reserve the value of DetNet TLVs of SRH
  4. add the DetNet TLVs into SRH'
  5. pop the SRH
  6. insert SRH'
  7. set the IPv6 DA to the first segment of the SRv6 Policy
  8. ELSE
  9. drop the packet

5.2. SID Based SRv6 Data Plane Solution

5.2.1. Encapsulation

SRv6 SID can be represented as LOC:FUNCT:ARG::, where LOC, abbreviated for "LOCATION", directs the explicit route, FUNCT, abbreviated for "FUNCTION", directs the packet processing in the local node, and ARG, abbreviated for "ARGUMENTS", provides the additional arguments for the functions. New SID functions for DetNet is defined in section 5.2.2.

The SRH for DetNet in the outer IPv6 header is showed as follows:

  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 |  Segment Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Last Entry  |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Location & Function                       |
 |         (Segment List[0] for relay node or edge node)         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Location & Function       |        Flow Identification    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Flow ID|                 Sequence Number                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                      Segment List[n]                          |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          Optional TLVS                        |
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:

5.2.2. Functions

New SID functions are defined as follows:

5.2.2.1. End. B.Replication: Packet Replication Function

  1. IF NH=SRH & SL>0 THEN
  2. do not decrement SL nor update the IPv6 DA with SRH[SL]
  3. reserve the value of argument field(Inherited argument)of segment[0] of SRH
  4. write the inherited arguments into the argument field of segment[0] of SRH'1 and SRH'2
  5. pop the SRH
  6. replicate the packet into two packets: packet'1, packet'2
  7. insert SRH'1 to packet'1
  8. insert SRH'2 to packet'2
  9. set the IPv6 DA of packet'1 to the first segment of the SRv6 Policy of SRH'1
  10. set the IPv6 DA of packet'2 to the first segment of the SRv6 Policy of SRH'2
  11. ELSE
  12. drop the packet

5.2.2.2. End. B. Elimination: Packet Elimination Function

  1. IF NH=SRH & SL>0 & "the packet is not a redundant packet" THEN
  2. do not decrement SL nor update the IPv6 DA with SRH[SL]
  3. write the inherited arguments into the argument field of segment[0] of SRH'
  4. pop the SRH
  5. insert SRH'
  6. set the IPv6 DA to the first segment of the SRv6 Policy
  7. ELSE
  8. drop the packet

5.3. DetNet SID Based SRv6 Data Plane Solution

5.3.1. Encapulation

A non-forwarding DetNet SID is defined to carry Flow Identification and Sequence Number.

  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 |  Segment Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Last Entry  |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                     Location & Function                       |
 |           (Segment List[0] for relay node or edge node)       |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                       Segment List[n]                         |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                         DetNet SID                            |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Optional TLVs                          |
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.3.2. Functions

TBD

5.4. DetNet SRH Based SRv6 Data Plane Solution

5.4.1. Encapsulation

A New SRH is defined to carry Flow Identification and Sequence Number.

  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 |  Segment Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Last Entry  |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                     Location & Function                       |
 |           (Segment List[0] for relay node or edge node)       |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                       Segment List[n]                         |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Optional TLVs                          |
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Next Header  |   Hdr Ext Len |  Routing Type |  Segment Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Last Entry  |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                           DetNet SID                          |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Optional TLVs                          |
 |                              ...                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.4.2. Functions

TBD

5.5. MPLS Based SRv6 Data Plane Solution

SRH can be part of IPv6 Header in the picture below, and no protocol extensions are needed in SRH. The structure keeps the same as the definition in [I-D.ietf-detnet-dp-sol-mpls] :

      +---------------------------------+
      |                                 |
      |           DetNet Flow           |
      |         Payload  Packet         |
      |                                 |
      +---------------------------------+ <--\
      |       DetNet Control Word       |    |
      +---------------------------------+    +--> DetNet data plane
      |             S-Label             |    |    MPLS encapsulation
      +---------------------------------+ <--/
      |           UDP Header            |
      +---------------------------------+
      |          IPv6 Header            |-------> SRH included
      +---------------------------------+
      |           Data-Link             |
      +---------------------------------+
      |           Physical              |
      +---------------------------------+

6. SRv6 DetNet Data Plane Solution for Transport Sub-layer

TBD

7. IANA Considerations

This document makes no request of IANA.

Note to RFC Editor: this section may be removed on publication as an RFC.

8. Security Considerations

TBD

9. Acknowledgements

Thank you for valuable comments from James Guichard and Andrew Mails.

10. Normative References

[I-D.filsfils-spring-srv6-network-programming] Filsfils, C., Camarillo, P., Leddy, J., daniel.voyer@bell.ca, d., Matsushima, S. and Z. Li, "SRv6 Network Programming", Internet-Draft draft-filsfils-spring-srv6-network-programming-07, February 2019.
[I-D.ietf-6man-segment-routing-header] Filsfils, C., Previdi, S., Leddy, J., Matsushima, S. and d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header (SRH)", Internet-Draft draft-ietf-6man-segment-routing-header-16, February 2019.
[I-D.ietf-detnet-architecture] Finn, N., Thubert, P., Varga, B. and J. Farkas, "Deterministic Networking Architecture", Internet-Draft draft-ietf-detnet-architecture-12, March 2019.
[I-D.ietf-detnet-dp-sol-mpls] Korhonen, J. and B. Varga, "DetNet MPLS Data Plane Encapsulation", Internet-Draft draft-ietf-detnet-dp-sol-mpls-02, March 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[RFC8402] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S. and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018.

Authors' Addresses

Xuesong Geng Huawei EMail: gengxuesong@huawei.com
Mach(Guoyi) Chen Huawei EMail: mach.chen@huawei.com