rfc9550.original | rfc9550.txt | |||
---|---|---|---|---|
DetNet B. Varga, Ed. | Internet Engineering Task Force (IETF) B. Varga, Ed. | |||
Internet-Draft J. Farkas | Request for Comments: 9550 J. Farkas | |||
Intended status: Informational Ericsson | Category: Informational Ericsson | |||
Expires: 18 July 2024 S. Kehrer | ISSN: 2070-1721 S. Kehrer | |||
T. Heer | T. Heer | |||
Hirschmann Automation and Control GmbH | Hirschmann Automation and Control GmbH | |||
15 January 2024 | March 2024 | |||
Deterministic Networking (DetNet): Packet Ordering Function | Deterministic Networking (DetNet): Packet Ordering Function | |||
draft-ietf-detnet-pof-11 | ||||
Abstract | Abstract | |||
Replication and Elimination functions of DetNet Architecture can | The replication and elimination functions of the Deterministic | |||
result in out-of-order packets, which is not acceptable for some | Networking (DetNet) architecture can result in out-of-order packets, | |||
time-sensitive applications. The Packet Ordering Function (POF) | which is not acceptable for some time-sensitive applications. The | |||
algorithm described herein enables to restore the correct packet | Packet Ordering Function (POF) algorithms described in this document | |||
order when replication and elimination functions are used in DetNet | enable restoration of the correct packet order when the replication | |||
networks. POF only provides ordering within the latency bound of a | and elimination functions are used in DetNet networks. The POF only | |||
DetNet flow, and does not provide any additional reliability. | provides ordering within the latency bound of a DetNet flow; it does | |||
not provide any additional reliability. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 18 July 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9550. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology | |||
2.1. Terms Used in This Document . . . . . . . . . . . . . . . 4 | 2.1. Terms Used in This Document | |||
2.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Abbreviations | |||
3. Requirements on POF Implementations . . . . . . . . . . . . . 4 | 3. Requirements for POF Implementations | |||
4. POF Algorithms . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. POF Algorithms | |||
4.1. Prerequisites and Assumptions . . . . . . . . . . . . . . 5 | 4.1. Prerequisites and Assumptions | |||
4.2. POF building blocks . . . . . . . . . . . . . . . . . . . 5 | 4.2. POF Building Blocks | |||
4.3. The Basic POF Algorithm . . . . . . . . . . . . . . . . . 6 | 4.3. The Basic POF Algorithm | |||
4.4. The Advanced POF Algorithm . . . . . . . . . . . . . . . 8 | 4.4. The Advanced POF Algorithm | |||
4.5. Further enhancements of POF algorithms . . . . . . . . . 9 | 4.5. Further Enhancements of the POF Algorithms | |||
4.6. Selecting and using the POF algorithm . . . . . . . . . . 10 | 4.6. Selecting and Using the POF Algorithms | |||
5. Control and Management Plane Parameters for POF . . . . . . . 10 | 5. Control and Management Plane Parameters for POF | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6. Security Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. IANA Considerations | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 8. References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 8.1. Normative References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8.2. Informative References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 11 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The DetNet Working Group has defined packet replication (PRF) and | [RFC8655] defines the Packet Replication Function (PRF) and Packet | |||
packet elimination (PEF) functions for achieving extremely low packet | Elimination Function (PEF) in DetNet for achieving extremely low | |||
loss. PRF and PEF are described in [RFC8655] and provide service | packet loss. The PRF and PEF provide service protection for DetNet | |||
protection for DetNet flows. This service protection method relies | flows. This service protection method relies on copies of the same | |||
on copies of the same packet sent over multiple maximally disjoint | packet sent over multiple maximally disjoint paths and uses | |||
paths and uses sequencing information to eliminate duplicates. A | sequencing information to eliminate duplicates. A possible | |||
possible implementation of PRF and PEF functions is described in | implementation of the PRF and PEF is described in [IEEE8021CB], and | |||
[IEEE8021CB] and the related YANG model is defined in | the related YANG model is defined in [IEEEP8021CBcv]. | |||
[IEEEP8021CBcv]. | ||||
In general, use of per packet replication and elimination functions | In general, use of per-packet replication and elimination functions | |||
can result in out-of-order delivery of packets, which is not | can result in out-of-order delivery of packets, which is not | |||
acceptable for some deterministic applications. Correcting packet | acceptable for some deterministic applications. Correcting packet | |||
order is not a trivial task, therefore details of a Packet Ordering | order is not a trivial task; therefore, details of a Packet Ordering | |||
Function (POF) are specified herein. The IETF DetNet WG has defined | Function (POF) are specified in this document. [RFC8655] defines the | |||
in [RFC8655] the external observable result of a POF function, i.e., | external observable result of a POF (i.e., that packets are | |||
that packets are reordered, but without any implementation details. | reordered) but does not specify any implementation details. | |||
So far in packet networks, out-of-order delivery situations were | So far in packet networks, out-of-order delivery situations have been | |||
handled at higher OSI layers at the end-points/hosts (e.g., in the | handled at higher OSI layers at the endpoints/hosts (e.g., in the TCP | |||
TCP stack when packets are sent to application layer) and not within | stack when packets are sent to the application layer) and not within | |||
a network in nodes acting at the Layer-2 or Layer-3 OSI layers. | a network in nodes acting at the Layer 2 or Layer 3 OSI layers. | |||
Figure 1 shows a DetNet flow on which packet replication, elimination | Figure 1 shows a DetNet flow on which Packet Replication, | |||
and ordering (PREOF) functions are applied during forwarding from | Elimination, and Ordering Functions (PREOF) are applied during | |||
source to destination. | forwarding from source to destination. | |||
+------------+ | +------------+ | |||
+-----------E1----+ | | | +-----------E1----+ | | | |||
+----+ | | +---R3---+ | +----+ | +----+ | | +---R3---+ | +----+ | |||
|src |------R1 +---+ | E3----O1---+ dst| | |src |------R1 +---+ | E3----O1---+ dst| | |||
+----+ | | E2-------+ +----+ | +----+ | | E2-------+ +----+ | |||
+-------R2 | | +-------R2 | | |||
+-----------------+ | +-----------------+ | |||
R: replication point (PRF) | R: replication point (PRF) | |||
E: elimination point (PEF) | E: elimination point (PEF) | |||
O: ordering function (POF) | O: ordering function (POF) | |||
Figure 1: PREOF scenario in a DetNet network | Figure 1: PREOF Scenario in a DetNet Network | |||
In general, the use of PREOF functions require sequencing information | In general, the use of PREOF requires sequencing information to be | |||
to be included in the packets of a DetNet compound flow. This can be | included in the packets of a DetNet compound flow. This can be done | |||
done by adding a sequence number as part of DetNet encapsulation | by adding a sequence number as part of DetNet encapsulation | |||
[RFC8655]. Sequencing information is typically added once, at or | [RFC8655]. Sequencing information is typically added once, at or | |||
close to the source. | close to the source. | |||
Important to note that different applications can react differently | It is important to note that different applications can react | |||
to out-of-order delivery. A single out-of-order packet (E.g., packet | differently to out-of-order delivery. A single out-of-order packet | |||
order: #1, #3, #2, #4, #5) is interpreted by some application as a | (e.g., packet order #1, #3, #2, #4, #5) is interpreted by some | |||
single error, but some other applications treat it as 3 errors in- | application as a single error, but other applications treat it as | |||
a-row situation. For example, in industrial scenarios 3 errors in- | three errors in a row. For example, in industrial scenarios, three | |||
a-row is a usual error threshold and can cause the application to | errors in a row is a typical error threshold and can cause the | |||
stop (e.g., to go to a fail-safe state). | application to stop (e.g., go to a fail-safe state). | |||
POF ensures in-order delivery for packets being within the latency | The POF ensures in-order delivery for packets within the latency | |||
bound of the (DetNet) flow. POF does not correct errors in the | bound of the DetNet flow. The POF does not correct errors in the | |||
packet flow e.g., duplicate packets, too late packets. | packet flow (e.g., duplicate packets or packets that are too late). | |||
2. Terminology | 2. Terminology | |||
2.1. Terms Used in This Document | 2.1. Terms Used in This Document | |||
This document uses the terminology established in the DetNet | This document uses the terminology established in the DetNet | |||
architecture [RFC8655], and the reader is assumed to be familiar with | architecture [RFC8655]; the reader is assumed to be familiar with | |||
that document and its terminology. | that document and its terminology. | |||
2.2. Abbreviations | 2.2. Abbreviations | |||
The following abbreviations are used in this document: | The following abbreviations are used in this document: | |||
DetNet Deterministic Networking. | DetNet Deterministic Networking | |||
PEF Packet Elimination Function. | PEF Packet Elimination Function | |||
POF Packet Ordering Function. | POF Packet Ordering Function | |||
PREOF Packet Replication, Elimination and Ordering Functions. | PREOF Packet Replication, Elimination, and Ordering Functions | |||
PRF Packet Replication Function. | PRF Packet Replication Function | |||
3. Requirements on POF Implementations | 3. Requirements for POF Implementations | |||
The requirements on a POF function are: | The requirements for POF implementations are: | |||
* to solve the out-of-order delivery problem of the Replication and | * To solve the out-of-order delivery problem of the replication and | |||
Elimination functions of DetNet networks. | elimination functions of DetNet networks. | |||
* to consider the delay bound requirement of a DetNet Flow. | * To consider the delay bound requirement of a DetNet flow. | |||
* to be simple and to require in network nodes only a minimum set of | * To be simple and to require only a minimum set of states, | |||
states/configuration parameters and resources per DetNet Flow. | configuration parameters, and resources per DetNet flow in network | |||
nodes. | ||||
* to add only minimal or no delay to the forwarding process of | * To add minimal or no delay to the forwarding process of packets. | |||
packets. | ||||
* not to require synchronization between PREOF nodes. | * To not require synchronization between PREOF nodes. | |||
Some aspects are explicitly out-of-scope for a POF function: | Some aspects are explicitly out of scope for a POF: | |||
* to eliminate the delay variation caused by the packet ordering. | * To eliminate the delay variation caused by the packet ordering. | |||
Dealing with delay variation is a DetNet forwarding sub-layer | Dealing with delay variation is a DetNet forwarding sub-layer | |||
target and it can be achieved for example by placing a de-jitter | target, and it can be achieved, for example, by placing a de- | |||
buffer or flow regulator (e.g., shaping) function after the POF | jitter buffer or flow regulator (e.g., shaping) function after the | |||
functionality. | POF. | |||
4. POF Algorithms | 4. POF Algorithms | |||
4.1. Prerequisites and Assumptions | 4.1. Prerequisites and Assumptions | |||
The POF Algorithm discussed in this document makes some assumptions | The POF algorithms discussed in this document make some assumptions | |||
and tradeoffs regarding the characteristics of the sequence of | and trade-offs regarding the characteristics of the sequence of | |||
received packets. In particular, the algorithm assumes that a Packet | received packets. In particular, the algorithms assume that a PEF is | |||
Elimination Function (PEF) is performed on the incoming packets | performed on the incoming packets before they are handed to the POF. | |||
before they are handed to the POF function. Hence, the sequence of | Hence, the sequence of incoming packets can be out-of-order or | |||
incoming packets can be out of order or incomplete but cannot contain | incomplete but cannot contain duplicate packets. However, the PREOF | |||
duplicate packets. However, the PREOF functions run independently | run independently without any state exchange required between the PEF | |||
without any state exchange required between the PEF and the POF or | and the POF or the PRF and the POF. Error cases in which duplicate | |||
the PRF and the POF. Error cases in which duplicate packets are | packets are presented to the POF can lead to out-of-order delivery of | |||
presented to the POF can lead to out of order delivery of duplicate | duplicate packets and to increased delays. | |||
packets as well as to increased delays. | ||||
The algorithm further requires that the delay difference between two | The algorithms further require that the delay difference between two | |||
replicated packets that arrive at the PEF before the POF is bounded | replicated packets that arrive at the PEF before the POF is bounded | |||
and known. Error cases that violate this condition (e.g., a packet | and known. Error cases that violate this condition (e.g., a packet | |||
that arrives later than this bound) will result in out-of order | that arrives later than this bound) will result in out-of-order | |||
packets. | packets. | |||
The algorithm also makes some tradeoffs. For simplicity, it is | The algorithms also make some trade-offs. For simplicity, it is | |||
designed in a way that allows for some out of order packets directly | designed to allow for some out-of-order packets directly after | |||
after initialization. If this is not acceptable, Section 4.5 | initialization. If this is not acceptable, Section 4.5 provides an | |||
provides an alternative initialization scheme that prevents out-of- | alternative initialization scheme that prevents out-of-order packets | |||
order packets in the initialization phase. | in the initialization phase. | |||
4.2. POF building blocks | 4.2. POF Building Blocks | |||
The method described herein provides POF for DetNet networks. The | The method described in this document provides a POF for DetNet | |||
configuration parameters of POF can be derived during engineering the | networks. The configuration parameters of the POF can be derived | |||
DetNet flow through the network. | when engineering the DetNet flow through the network. | |||
The POF method is provided via: | The POF method is provided via the following: | |||
1. Delay calculator: calculates buffering time for out-of-order | Delay calculator: Calculates buffering time for out-of-order | |||
packets. Buffering time considers (i) the delay difference of | packets. Buffering time considers (i) the delay difference of | |||
paths used for forwarding the replicated packets and (ii) the | paths used for forwarding the replicated packets and (ii) the | |||
bounded delay requirement of the given DetNet flow. | bounded delay requirement of the given DetNet flow. | |||
2. Conditional buffer: for buffering the out-of-order packets of a | Conditional delay buffer: Used for buffering the out-of-order | |||
DetNet flow for a given time. | packets of a DetNet flow for a given time. | |||
Note: the conditional buffer of POF increases the burstiness of the | Note: The conditional delay buffer of the POF increases the | |||
traffic as it adds delay only for some of the packets. | burstiness of the traffic as it only adds delay for some of the | |||
packets. | ||||
Figure 2 shows the building blocks of a possible POF implementation. | Figure 2 shows the building blocks of a possible POF implementation. | |||
+------------+ +--------------+ | +------------+ +--------------+ | |||
| Delay calc | | Conditional | | | Delay calc | | Conditional | | |||
+--| for packet >--->>---| Delay Buffer >--+ | +--| for packet >--->>---| Delay Buffer >--+ | |||
| +------------+ +--------------+ | | | +------------+ +--------------+ | | |||
| | | | | | |||
+------^--------+ | | +------^--------+ | | |||
->>--| POF selector >---------------------------------+-->>---- | ->>--| POF selector >---------------------------------+-->>---- | |||
| (Flow ident.) | | | (Flow ident.) | | |||
+---------------+ | +---------------+ | |||
->>- packet flow | ->>- packet flow | |||
Figure 2: POF Building Blocks | Figure 2: POF Building Blocks | |||
4.3. The Basic POF Algorithm | 4.3. The Basic POF Algorithm | |||
The basic POF algorithm delays all out-of-order packets until all | The basic POF algorithm delays all out-of-order packets until all | |||
previous packet arrives or a given time (POFMaxDelay) elapses. The | previous packets arrive or a given time ("POFMaxDelay") elapses. The | |||
basic POF algorithm works as follows: | basic POF algorithm works as follows: | |||
* The sequence number of the last forwarded packet (POFLastSent) is | * The sequence number of the last forwarded packet ("POFLastSent") | |||
stored for each DetNet Flow. | is stored for each DetNet flow. | |||
* The sequence number (seq_num) of a received packet is compared to | * The sequence number (seq_num) of a received packet is compared to | |||
that of the last forwarded one (POFLastSent). | that of the last forwarded one ("POFLastSent"). | |||
* If (seq_num <= POFLastSent + 1) | * If (seq_num <= POFLastSent + 1) | |||
- Then the packet is forwarded without buffering and | - Then the packet is forwarded without buffering, and | |||
"POFLastSent" is updated (POFLastSent = seq_num). | "POFLastSent" is updated (POFLastSent = seq_num). | |||
- Else the received packet is buffered. | - Else, the received packet is buffered. | |||
* A buffered packet is forwarded from the buffer when its seq_num | * A buffered packet is forwarded from the buffer when its seq_num | |||
becomes equal to "POFLastSent +1," OR a predefined time | becomes equal to "POFLastSent + 1" OR a predefined time | |||
("POFMaxDelay") elapses. | ("POFMaxDelay") elapses. | |||
* When a packet is forwarded from the buffer "POFLastSent" is | * When a packet is forwarded from the buffer, "POFLastSent" is | |||
updated with its seq_num (POFLastSent = seq_num). | updated with its seq_num (POFLastSent = seq_num). | |||
Note: the difference of sequence number in consecutive packets is | Notes: | |||
bounded due to the history window of the Elimination function before | ||||
the POF. Therefore "<=" can be evaluated despite of the circular | ||||
sequence number space. A possible implementation of the PEF function | ||||
and the impact of the history window is described in [IEEE8021CB]. | ||||
Note2: The algorithm can be extended to cope with multiple failure | * The difference between sequence numbers in consecutive packets is | |||
scenarios (i.e., simultaneous packet loss and out-of-order packets), | bounded due to the history window of the elimination function | |||
when the expiration of the timer for a packet with sequence number N | before the POF. Therefore, "<=" can be evaluated despite the | |||
trigger the release of some number of packets with sequence number | circular sequence number space. A possible implementation of the | |||
smaller than N. | PEF and the impact of the history window are described in | |||
[IEEE8021CB]. | ||||
* The basic POF algorithm can be extended to cope with multiple | ||||
failure scenarios (i.e., simultaneous packet loss and out-of-order | ||||
packets) when the expiration of the timer for a packet with | ||||
sequence number N triggers the release of some packets with a | ||||
sequence number smaller than N. | ||||
The state used by the basic POF algorithm (i.e., "POFLastSent") needs | The state used by the basic POF algorithm (i.e., "POFLastSent") needs | |||
initialization and maintenance. This works as follows: | initialization and maintenance. This works as follows: | |||
* The next received packet is forwarded and the POFLastSent updated | * The next received packet is forwarded and the "POFLastSent" | |||
when the POF function was reset OR no packet was received for a | updated when the POF is reset OR no packet is received for a | |||
predefined time ("POFTakeAnyTime"). | predefined time ("POFTakeAnyTime"). | |||
* The reset of POF erases all packets from the time-based buffer | * The reset of the POF erases all packets from the time-based buffer | |||
used by POF. | used by the POF. | |||
The basic POF algorithm has two parameters to engineer: | The basic POF algorithm has two parameters to engineer: | |||
* "POFMaxDelay", which cannot be smaller than the delay difference | * "POFMaxDelay", which cannot be smaller than the delay difference | |||
of the paths used by the flow. | of the paths used by the flow. | |||
* "POFTakeAnyTime", which is calculated based on several factors, | * "POFTakeAnyTime", which is calculated based on several factors, | |||
for example the RECOVERY_TIMEOUT related settings of the | for example, the settings of the elimination function(s) relating | |||
Elimination function(s) before the POF, the flow characteristics | to RECOVERY_TIMEOUT before the POF, the flow characteristics | |||
(e.g., inter packet time), and the delay difference of the paths | (e.g., inter-packet time), and the delay difference of the paths | |||
used by the flow. | used by the flow. | |||
Design of these parameters is out-of-scope in this document. | Design of these parameters is out of scope for this document. | |||
Note: multiple network failures can impact the POF function (e.g., | Note: Multiple network failures can impact the POF (e.g., complete | |||
complete outage of all redundant paths). | outage of all redundant paths). | |||
The basic POF algorithm increases the delay of packets with maximum | The basic POF algorithm increases the delay of packets with maximum | |||
"POFMaxDelay" time. Packets being in order are not delayed. This | "POFMaxDelay" time. In-order packets are not delayed. This basic | |||
basic POF method can be applied in all network scenarios where the | POF method can be applied in all network scenarios where the | |||
remaining delay budget of a flow at the POF point is larger than | remaining delay budget of a flow at the POF point is larger than | |||
"POFMaxDelay" time. | "POFMaxDelay" time. | |||
Figure 3 shows the delay budget relations at the POF point. | Figure 3 shows the delay budget situation at the POF point. | |||
Path delay | Path delay | |||
difference | difference | |||
/-------------/ | /-------------/ | |||
<- path with min delay -> /-- remaining delay budget --/ | <- path with min delay -> /-- remaining delay budget --/ | |||
|-----------------------|-------------|----------------------------| | |-----------------------|-------------|----------------------------| | |||
0 t1 t2 T | 0 t1 t2 T | |||
<-------- path with max delay --------> | <-------- path with max delay --------> | |||
/-------------------- delay budget at POF point -------------------/ | /-------------------- delay budget at POF point -------------------/ | |||
Figure 3: Delay Budget Relations at the POF Point | Figure 3: Delay Budget Situation at the POF Point | |||
4.4. The Advanced POF Algorithm | 4.4. The Advanced POF Algorithm | |||
In network scenario where the remaining delay budget of a flow at the | In network scenarios where the remaining delay budget of a flow at | |||
POF point is smaller than "POFMaxDelay" time the basic method needs | the POF point is smaller than "POFMaxDelay" time, the basic method | |||
extensions. | needs extensions. | |||
The issue is that packets on the longest path cannot be buffered in | The issue is that packets on the longest path cannot be buffered in | |||
order to keep delay budget of the flow. It must be noted that such a | order to keep the delay budget of the flow. It must be noted that | |||
packet (i.e., forwarded over the longest path) needs no buffering as | such a packet (i.e., forwarded over the longest path) needs no | |||
it is the "last chance" to deliver a packet with a given sequence | buffering as it is the last chance to deliver a packet with a given | |||
number. This is because all replicas are already arrived via shorter | sequence number. This is because all replicas already arrived via a | |||
path(s). | shorter path(s). | |||
The advanced POF algorithm needs two extensions of the basic POF | The advanced POF algorithm requires extensions of the basic POF | |||
algorithm: | algorithm: | |||
* to identify the received packet's path at the POF location and | * to identify the received packet's path at the POF location and | |||
* to make the value of "POFMaxDelay" for buffered packets path | * to make the value of "POFMaxDelay" for buffered packets path | |||
dependent ("POFMaxDelay_i", where "i" notes the path the packet | dependent ("POFMaxDelay_i", where "i" notes the path the packet | |||
has used). | has used). | |||
By identifying the path of a given packet, the POF algorithm can use | The advanced POF algorithm identifies the path of a given packet and | |||
this information to select what predefined time "POFMaxDelay_i" to | uses this information to select the predefined time ("POFMaxDelay_i") | |||
apply for the buffered packet. So, in the advanced POF algorithm | to apply for the buffered packet. So, in the advanced POF algorithm, | |||
"POFMaxDelay" is an array, that contains the predefined and path | "POFMaxDelay" is an array that contains the predefined and path- | |||
specific buffering time for each redundant path of a flow. Values in | specific buffering time for each redundant path of a flow. Values in | |||
the "POFMaxDelay" array are engineered to fulfill the delay budget | the "POFMaxDelay" array are engineered to fulfill the delay budget | |||
requirement. | requirement. | |||
Design of these parameters is out-of-scope in this document. | Design of these parameters is out of scope for this document. | |||
Note: for the "Advanced POF Algorithm" the path dependent delays | Note: For the advanced POF algorithm, the path-dependent delays might | |||
might result in multiple packets triggering the "maximum delay | result in multiple packets triggering the "maximum delay reached" at | |||
reached" at exactly the same time. The transmission order of these | exactly the same time. The transmission order of these packets | |||
packets then should be done in their seq_num order. | should be done in their seq_num order. | |||
The method for identification of the packet's path at the POF | The method for identifying the packet's path at the POF location | |||
location depends on the network scenario. It can be implemented via | depends on the network scenario. It can be implemented via various | |||
various techniques, for example using ingress interface information, | techniques, for example, using ingress interface information, | |||
encoding the path in the packet itself (e.g., replication functions | encoding the path in the packet itself (e.g., replication functions | |||
can set different FlowID per egress what can be used as a PathID), or | set a different FlowID per member flow at their egress and such a | |||
in other means. Method for identification of the packet's path is | FlowID is used to identify the path of a packet at the POF), or other | |||
out of scope in this document. | means. Methods for identifying the packet's path are out of scope | |||
for this document. | ||||
Note: in case of using the advanced POF algorithm it might be | Note: When using the advanced POF algorithm, it might be advantageous | |||
advantageous to combine PEF and POF locations in the DetNet network, | to combine PEF and POF locations in the DetNet network, as this can | |||
as it can simplify the method used for identification of the packet's | simplify the method used for identifying the packet's path at the POF | |||
path at the POF location. | location. | |||
4.5. Further enhancements of POF algorithms | 4.5. Further Enhancements of the POF Algorithms | |||
POF algorithms can be further enhanced by distinguishing the case of | POF algorithms can be further enhanced by distinguishing the case of | |||
initialization from normal operation at the price of more states and | initialization from normal operation at the price of more states and | |||
more sophisticated implementation. Such enhancements could for | more sophisticated implementation. Such enhancements could, for | |||
example react better after some failure scenarios (e.g., complete | example, react better after some failure scenarios (e.g., complete | |||
outage of all paths of a DetNet flow) and can be dependent on the PEF | outage of all paths of a DetNet flow) and can be dependent on the PEF | |||
implementation. | implementation. | |||
The challenge for POF initialization is that for example after a | The challenge for POF initialization is that it is not known whether | |||
reset it is not known whether the first received packet is in-order | the first received packet is in-order or out-of-order (for example, | |||
or out-of-order. The original initialization (see before) considers | after a reset). The original initialization (see Section 4.3) | |||
the first packet as in-order, so out-of-order packet(s) during | considers the first packet as in-order, so out-of-order packet(s) | |||
"POFMaxTime"/"POFMaxTime_path_i" time - after the first packet was | during "POFMaxTime"/"POFMaxTime_path_i" time -- after the first | |||
received - cannot be corrected. Motivation behind such an | packet is received -- cannot be corrected. The motivation behind | |||
initialization is POF implementation simplicity. | such an initialization is simplicity of POF implementation. | |||
A possible enhancement of POF initialization works as follows: | A possible enhancement of POF initialization works as follows: | |||
* After a reset all received packets are buffered with their | * After a reset, all received packets are buffered with their | |||
predefined timer ("POFMaxTime"/"POFMaxTime_path_i"). | predefined timer ("POFMaxTime"/"POFMaxTime_path_i"). | |||
* No basic/advanced POF rules are applied until the first timer | * No basic or advanced POF rules are applied until the first timer | |||
expires. | expires. | |||
* When the first timer expires the packet with lowest seq_num in | * When the first timer expires, the packet with lowest seq_num in | |||
buffer is selected, forwarded, and "POFLastSent" is set with its | the buffer is selected and forwarded, and "POFLastSent" is set | |||
seq_num. | with its seq_num. | |||
* The basic/advanced POF rules are applied for the packet(s) in the | * The basic or advanced POF rules are applied for the packet(s) in | |||
buffer and the subsequently received packets. | the buffer and the subsequently received packets. | |||
4.6. Selecting and using the POF algorithm | 4.6. Selecting and Using the POF Algorithms | |||
The selection of the POF algorithm depends on the network scenario | The selection of the POF algorithm depends on the network scenario | |||
and the remaining delay budget of a flow. Using POF and calculating | and the remaining delay budget of a flow. Using the POF algorithms | |||
its parameters require proper design. Knowing the path delay | and calculating their parameters require proper design. Knowing the | |||
difference is essential for the POF algorithms described here. | path delay difference is essential for the POF algorithms described | |||
Failure scenarios breaking the design assumptions can impact the | here. Failure scenarios breaking the design assumptions can impact | |||
result of POF (e.g., packet received out of the expected worst-case | the result of the POF (e.g., packet received out of the expected | |||
delay window - calculated based on the path delay difference - can | worst-case delay window -- calculated based on the path delay | |||
result in unwanted out-of-order delivery). | difference -- can result in unwanted out-of-order delivery). | |||
In DetNet scenarios there is always an Elimination function before | In DetNet scenarios, there is always an elimination function before | |||
the POF (therefore duplicates are not considered by the POF). | the POF (therefore, duplicates are not considered by the POF). | |||
Implementing them together in the same node allows POF to consider | Implementing them together in the same node allows the POF to | |||
PEF events/states during the re-ordering. For example, under normal | consider PEF events/states during the reordering. For example, under | |||
circumstances the difference of sequence number in consecutive | normal circumstances, the difference between sequence numbers in | |||
packets is bounded due to the history window of PEF. However, in | consecutive packets is bounded due to the history window of the PEF. | |||
some scenarios (e.g., reset of sequence number) the difference can be | However, in some scenarios (e.g., reset of sequence number), the | |||
much larger than the history window size. | difference can be much larger than the size of the history window. | |||
5. Control and Management Plane Parameters for POF | 5. Control and Management Plane Parameters for POF | |||
POF algorithms needs setting of the following parameters: | POF algorithms require the following parameters to be set: | |||
* Basic POF | * Basic POF | |||
- "POFMaxDelay" | - "POFMaxDelay" | |||
- "POFTakeAnyTime" | - "POFTakeAnyTime" | |||
* Advanced POF | * Advanced POF | |||
- "POFMaxDelay_i" for each possible path i | - "POFMaxDelay_i" for each possible path i | |||
- "POFTakeAnyTime" | - "POFTakeAnyTime" | |||
- Network path identification related configuration(s) | - Configuration(s) related to network path identification | |||
Note, that in a proper design "POFTakeAnyTime" is always larger than | Note: In a proper design, "POFTakeAnyTime" is always larger than | |||
"POFMaxDelay". | "POFMaxDelay". | |||
6. Security Considerations | 6. Security Considerations | |||
PREOF related security considerations (including POF) are described | PREOF-related security considerations (including POF) are described | |||
in section 3.3 of [RFC9055]. There are no additional POF related | in Section 3.3 of [RFC9055]. There are no additional POF-related | |||
security considerations originating from this document. | security considerations originating from this document. | |||
7. IANA Considerations | 7. IANA Considerations | |||
This document makes no IANA requests. | This document has no IANA actions. | |||
8. Acknowledgements | ||||
Authors extend their appreciation to Gyorgy Miklos, Mohammadpour | ||||
Ehsan, Ludovic Thomas, Greg Mirsky, Jeong-dong Ryoo, Shirley Yangfan, | ||||
Toerless Eckert, Norman Finn and Ethan Grossman for their insightful | ||||
comments and productive discussion that helped to improve the | ||||
document. | ||||
9. References | 8. References | |||
9.1. Normative References | 8.1. Normative References | |||
[RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | |||
"Deterministic Networking Architecture", RFC 8655, | "Deterministic Networking Architecture", RFC 8655, | |||
DOI 10.17487/RFC8655, October 2019, | DOI 10.17487/RFC8655, October 2019, | |||
<https://www.rfc-editor.org/info/rfc8655>. | <https://www.rfc-editor.org/info/rfc8655>. | |||
[RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker, | [RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker, | |||
"Deterministic Networking (DetNet) Security | "Deterministic Networking (DetNet) Security | |||
Considerations", RFC 9055, DOI 10.17487/RFC9055, June | Considerations", RFC 9055, DOI 10.17487/RFC9055, June | |||
2021, <https://www.rfc-editor.org/info/rfc9055>. | 2021, <https://www.rfc-editor.org/info/rfc9055>. | |||
9.2. Informative References | 8.2. Informative References | |||
[IEEE8021CB] | [IEEE8021CB] | |||
IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and metropolitan area | |||
networks -- Frame Replication and Elimination for | networks -- Frame Replication and Elimination for | |||
Reliability", DOI 10.1109/IEEESTD.2017.8091139, October | Reliability", IEEE Std 802.1CB-2017, | |||
2017, | DOI 10.1109/IEEESTD.2017.8091139, October 2017, | |||
<https://standards.ieee.org/standard/802_1CB-2017.html>. | <https://standards.ieee.org/standard/802_1CB-2017.html>. | |||
[IEEEP8021CBcv] | [IEEEP8021CBcv] | |||
Kehrer, S., "FRER YANG Data Model and Management | IEEE, "IEEE Standard for Local and metropolitan area | |||
Information Base Module", IEEE P802.1CBcv | networks -- Frame Replication and Elimination for | |||
/D1.2 P802.1CBcv, March 2021, | Reliability - Amendment 1: Information Model, YANG Data | |||
<https://www.ieee802.org/1/files/private/cv-drafts/d1/802- | Model, and Management Information Base Module", IEEE Std | |||
1CBcv-d1-2.pdf>. | 802.1CBcv-2001, DOI 10.1109/IEEESTD.2022.9715061, February | |||
2022, <https://standards.ieee.org/ieee/802.1CBcv/7285/>. | ||||
Acknowledgements | ||||
Authors extend their appreciation to Gyorgy Miklos, Ehsan | ||||
Mohammadpour, Ludovic Thomas, Greg Mirsky, Jeong-dong Ryoo, Fan Yang, | ||||
Toerless Eckert, Norman Finn, and Ethan Grossman for their insightful | ||||
comments and productive discussion that helped to improve the | ||||
document. | ||||
Authors' Addresses | Authors' Addresses | |||
Balazs Varga (editor) | Balazs Varga (editor) | |||
Ericsson | Ericsson | |||
Budapest | Budapest | |||
Magyar Tudosok krt. 11. | Magyar Tudosok krt. 11. | |||
1117 | 1117 | |||
Hungary | Hungary | |||
Email: balazs.a.varga@ericsson.com | Email: balazs.a.varga@ericsson.com | |||
End of changes. 91 change blocks. | ||||
256 lines changed or deleted | 261 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |