DetNet SRv6 Data Plane
EncapsulationHuaweigengxuesong@huawei.comHuaweimach.chen@huawei.comChina Telecomzhuyq@gsta.comThis document specifies Deterministic Networking data plane operation
for SRv6 encapsulated user data.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.Deterministic Networking (DetNet), as described in 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.Segment Routing(SR) leverages the source routing paradigm. An ingress
node steers a packet through an ordered list of instructions, called
"segments". SR can be applied over IPv6 data plane using the Segment
Routing Extension Header (SRH,). A segment in
segment routing terminology is not limited to a routing/forwarding
function. A segment can be associated to an arbitrary processing of the
packet in the node identified by the segment. In other words, an SRv6
Segment can indicate functions that are executed locally in the node
where they are defined. SRv6 network Programming describe the
different segments and functions associated to them.This document describes how to implement DetNet in an SRv6 enabled
domain, including :• Source routing, which steers the DetNet flows through the
network according to an explicit path with allocated resources;• Network programming, which applies instructions (functions) to
packets in some special nodes (or even all the nodes) along the path in
order to guarantee, e.g., 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.Control plane and OAM are not in the scope of this document.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].Terminologies for DetNet go along with the definition in and .
Other terminologies are defined as follows:NH: The IPv6 next-header field.SID: A Segment Identifier ().SRH: The Segment Routing Header ().Conventions in the document are defined as follows:NH=SRH means that NH is 43 with routing type 4 which is (as
defined in ,
the values representing the SRH.A SID list is represented as <S1, S2, S3> where S1 is the
first SID to visit, S2 is the second SID to visit and S3 is the
last SID to visit along the SR path.SRH[SL] represents the SID pointed by the SL field in the first
SRH. In our example, SRH[2] represents S1, SRH[1] represents S2
and SRH[0] represents S3. It has to be noted that defines the
segment list encoding in the reverse order of the path. A path
represented by <S1,S2,S3>, will be encoded in the SRH as
follows: SegmentList[0]=S3SegmentList[1]=S2SegmentList[2]=S1The reverse encoding has been defined in order to
optimise the processing time of the segment list. See
[draft-ietf-6man-segment-routing-header] for more details.(SA,DA) (S3, S2, S1; SL) represents an IPv6 packet with:IPv6 header with source and destination addresses SA and DA
respectively, and next-header set to SRH (i.e.: 43 with type
4) , with a list of segments(SIDs) <S1, S2, S3> with
SegmentsLeft = SLThe payload of the packet is not represented(S3, S2, S1; SL) represents the same SID list as <S1,
S2, S3>, but encoded in the SRH format where the rightmost
SID in the SRH is the first SID and the leftmost SID in the
SRH is the last SIDdecomposes 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 exists in SRv6 data plane. A classical SRv6 DetNet data plane
solution is showed in the picture below:The outer IPv6 Header with the SRH is used for carrying DetNet
flows. Traffic Engineering is instantiated 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 the SRH.The figure above shows that an IPv6 flow is sent out from the end
station E1. The packet of the flow is encapsulated in an outer
IPv6+SRH header as a DetNet SRv6 packet in the Ingress(In) and
transported through an SRv6 DetNet domain. In the Egress(Eg), the
outer IPv6 header+SRH of the packet is popped, and the packet is sent
to the destination E2.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:Inserts the SRv6 Policy that will steer the packet from Ingress
to the destinationThe methods and mechanisms used for defining, instantiating and
applying the policy are outside of this document. An example of
policies are described in Flow Identification and Sequence Number are carried in the
SRH.Relay Node 1(Replication Node):Replicates the payload and IPv6 Header with the SRH. This is a
new function in the context of SRv6 Network Programming which will
associate a given SID to a replication instruction in the node
originating and advertising the SID. The replication instruction
includes:The removal of the existing IPv6+SRH headerThe encapsulation into a new outer IPv6+SRH header. Each
packet (the original and the duplicated) are encapsulated into
respectively new outer IPv6+SRH headers.Binding two different SRv6 Policies respectively to the
original packet and the replicated packet, which can steer the
packets from Relay Node 1 to Relay Node 2 through two tunnels.Relay Node 2(Elimination Node):Eliminates the redundant packets.Binds a new SRv6 Policy to the survival packet, which steers
the packet from Relay Node 2 to Egress.Egress:Decapsulates the outer Ipv6 header.Sends the inter packet to the End Station 2.The DetNet packet encapsulation is illustrated here below. It has
to be noted that, in the example below, the R2 address is a SRH SID
associated to a TBD function related to the packet replication the
node R1 has to perform. The same (or reverse) apply to node R2 which
is in charge of the discard of the duplicated packet. Here also a new
function will have a new SID allocated to it and representing the
delete of the duplication in R2.End Station1 output packet: (E1,E2)Ingress output packet: (In, T1)(R1,T1, SL=2)(E1,E2)Transit Node1 output packet: (In, R1)(R1,T1,SL=1)(E1,E2)Relay Node1 output packets : (R1,T2)(R2,T2,SL=2)(E1,E2),
(R1,T3)(R2,T3,SL=2)(E1,E2)Transit Node2 output packet: (R1, R2)(R2,T2,SL=1)(E1,E2)Transit Node3 output packet: (R1, R2)(R2,T3,SL=1)(E1,E2)Relay Node2 output packet: (R2, T4)(Eg,T4,SL=2)(E1,E2)Transit Node4 output packet: (R2, Eg)(Eg,T4,SL=1)(E1,E2)Egress out : (E1,E2)To carry DetNet over SRv6, the following elements are required:1. A method of identifying the SRv6 payload type;2. A suitable explicit path to deliver the DetNet flow ;3. A method of indicating packet processing, such as PREOF(Packet
Replication, Elimination and Ordering as defined in );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 in an outer IPv6+SRH
header at the Ingress Node. The SR policy identified in the SRH steers
the DetNet flow along a selected path. The explicit path followed by a
DetNet flow, which protect it from temporary interruptions caused by the
convergence of routing, is encoded within the SID list of the 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 according to SRv6 forwarding procedures defined in
and 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 , 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.This section defines options of SRv6 data plane solution to support
DetNet Service Sub-layer.An SRv6 Segment is a 128-bit value. SID is used as a shorter
reference for "SRv6 Segment Identifier" or “SRV6
Segment”. SRv6 SID can also be represented as LOC:FUNCT,
where:LOC, means "LOCATION" and defines the node associated with
the SID (i.e.: represented by the SID).FUNCT, means "FUNCTION", and identifies the processing that
the node specified in LOC applies to the packet. See for
details on SRV6 Network Programming.The SRH for DetNet in the outer IPv6 header is showed as follows,
according to
and :The SRH specification allows the use of 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 discriminate
packets in the same DetNet flow. They are defined as follows:where:Type: 8bits, to be assigned by IANA.Length: 8 octets.RESERVED: 28 bits, MUST be 0 on transmission and ignored on
receipt.Flow Identification: 20 bits, which is used for identifying
DetNet flow.where:Type: 8 bits, to be assigned by IANA.Length: 8.RESERVED: 20 bits. MUST be 0 on transmission and ignored on
receipt.Sequence Number: 28 bits, which is used for indicating
sequence number of a DetNet flow.New SRv6 Network Programming functions are defined as
follows:IF NH=SRH & SL>0 THENextract the DetNet TLV values from the SRHcreate two new outer IPv6+SRH headers: IPv6-SRH-1 and
IPv6-SRH-2 Insert the policy-instructed segment lists in each
newly created SRH (SRH-1 and SRH-2). Also, add the extracted
DetNet TLVs into SRH-1 and SRH-2.remove the incoming outer IPv6+SRH header.create a duplication of the incoming packet.encapsulate the original packet into the first outer
IPv6+SRH header: (IPv6-SRH-1) (original packet)encapsulate the duplicate packet into the second outer
IPv6+SRH header: (IPv6-SRH-2) (duplicate packet)set the IPv6 SA as the local address of this node.set the IPv6 DA of IPv6-SRH-1 to the first segment of the
SRv6 Policy in of SRH-1 segment list.set the IPv6 DA of IPv6-SRH-2 to the first segment of the
SRv6 Policy in of SRH-2 segment list.ELSEdrop the packetIF NH=SRH & SL>0 & "the packet is not a
redundant packet" THENdo not decrement SL nor update the IPv6 DA with SRH[SL]extract the value of DetNet TLVs from the SRHcreate a new outer IPv6+SRH headerinsert the policy-instructed segment lists in the newly
created SRH and add the retrieved DetNet TLVs in the newly
created SRHremove the incoming outer IPv6+SRH header.set the IPv6 DA to the first segment of the SRv6 Policy in
the newly created SRHELSEdrop the packetSRv6 SID can be represented as LOC:FUNCT:ARG::, where:LOC, means "LOCATION" and defines the node associated with the
SID (i.e.: represented by the SID).FUNCT, means "FUNCTION", and identifies the processing that the
node specified in LOC applies to the packet.ARG, means "ARGUMENTS" and provides the additional arguments for
the function. New SID functions for DetNet is defined in section
5.2.2. See for details
on SRV6 Network Programming. The SRH for DetNet in the outer IPv6
header is illustrated as followswhere:LOCATION&FUNCTION: the 80 most significant bits that are
used for routing the packet towards the LOCATION (as defined in
);FLOW IDENTIFICATION: 20 bits, in the DetNet TLVs in the SRH,
used for DetNet flow identification in the DetNet relay
node;SEQUENCE NUMBER : 28 bits, in the DetNet TLVs, used for dis
crime packets in the same DetNet flow;New SID functions are defined as follows:The function is similar as that has been defined in section
5.1.2.1. The only difference is that instead of retrieving the TLV
values, this function retrieves the argument.The function is similar as that has been defined in section
5.1.2.2. The only difference is that instead of retrieving the TLV
values, this function retrieves the argument.A non-forwarding DetNet SID is defined to carry Flow
Identification and Sequence Number.TBDTBDTBDTBDThank you for valuable comments from James Guichard and Andrew
Mails.