| rfc9550xml2.original.xml | rfc9550.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!DOCTYPE rfc [ | ||||
| <!ENTITY nbsp " "> | ||||
| <!ENTITY zwsp "​"> | ||||
| <!ENTITY nbhy "‑"> | ||||
| <!ENTITY wj "⁠"> | ||||
| ]> | ]> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
| <?rfc symrefs="yes"?> | category="info" | |||
| <?rfc sortrefs="yes"?> | docName="draft-ietf-detnet-pof-11" | |||
| <?rfc iprnotified="no"?> | number="9550" | |||
| <?rfc strict="yes"?> | ipr="trust200902" | |||
| <?rfc compact="yes"?> | submissionType="IETF" | |||
| <?rfc subcompact="no"?> | consensus="true" | |||
| <rfc category="info" | obsoletes="" | |||
| docName="draft-ietf-detnet-pof-11" | updates="" | |||
| ipr="trust200902" | xml:lang="en" | |||
| submissionType="IETF"> | tocInclude="true" | |||
| symRefs="true" | ||||
| sortRefs="true" | ||||
| version="3"> | ||||
| <!-- [rfced] This is a question for Stephan and Tobias. Would you like to use | ||||
| a shortened form of your affiliation in the first-page header and then | ||||
| the full name in the Authors' Addresses section? Please review the | ||||
| first-page header in each of the output formats (txt, html, and pdf), and | ||||
| let us know your thoughts. | ||||
| --> | ||||
| <front> | <front> | |||
| <title abbrev="DetNet POF"> | <title abbrev="DetNet POF"> | |||
| Deterministic Networking (DetNet): Packet Ordering Function</title> | Deterministic Networking (DetNet): Packet Ordering Function</title> | |||
| <seriesInfo name="RFC" value="9550"/> | ||||
| <author role="editor" fullname="Balazs Varga" initials="B." surname="Varga"> | <author role="editor" fullname="Balazs Varga" initials="B." surname="Varga"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Magyar Tudosok krt. 11.</street> | <street>Magyar Tudosok krt. 11.</street> | |||
| <city>Budapest</city> | <city>Budapest</city> | |||
| <country>Hungary</country> | <country>Hungary</country> | |||
| <code>1117</code> | <code>1117</code> | |||
| </postal> | </postal> | |||
| <email>balazs.a.varga@ericsson.com</email> | <email>balazs.a.varga@ericsson.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Janos Farkas" initials="J." surname="Farkas"> | <author fullname="Janos Farkas" initials="J." surname="Farkas"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Magyar Tudosok krt. 11.</street> | <street>Magyar Tudosok krt. 11.</street> | |||
| <city>Budapest</city> | <city>Budapest</city> | |||
| <country>Hungary</country> | <country>Hungary</country> | |||
| <code>1117</code> | <code>1117</code> | |||
| </postal> | </postal> | |||
| <email>janos.farkas@ericsson.com</email> | <email>janos.farkas@ericsson.com</email> | |||
| skipping to change at line 45 ¶ | skipping to change at line 60 ¶ | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Magyar Tudosok krt. 11.</street> | <street>Magyar Tudosok krt. 11.</street> | |||
| <city>Budapest</city> | <city>Budapest</city> | |||
| <country>Hungary</country> | <country>Hungary</country> | |||
| <code>1117</code> | <code>1117</code> | |||
| </postal> | </postal> | |||
| <email>janos.farkas@ericsson.com</email> | <email>janos.farkas@ericsson.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Stephan Kehrer" initials="S." surname="Kehrer"> | <author fullname="Stephan Kehrer" initials="S." surname="Kehrer"> | |||
| <organization>Hirschmann Automation and Control GmbH</organization> | <organization>Hirschmann Automation and Control GmbH</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Stuttgarter Strasse 45-51.</street> | <street>Stuttgarter Strasse 45-51.</street> | |||
| <city>Neckartenzlingen</city> | <city>Neckartenzlingen</city> | |||
| <country>Germany</country> | <country>Germany</country> | |||
| <code>72654</code> | <code>72654</code> | |||
| </postal> | </postal> | |||
| <email>Stephan.Kehrer@belden.com</email> | <email>Stephan.Kehrer@belden.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Tobias Heer" initials="T." surname="Heer"> | <author fullname="Tobias Heer" initials="T." surname="Heer"> | |||
| <organization>Hirschmann Automation and Control GmbH</organization> | <organization>Hirschmann Automation and Control GmbH</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Stuttgarter Strasse 45-51.</street> | <street>Stuttgarter Strasse 45-51.</street> | |||
| <city>Neckartenzlingen</city> | <city>Neckartenzlingen</city> | |||
| <country>Germany</country> | <country>Germany</country> | |||
| <code>72654</code> | <code>72654</code> | |||
| </postal> | </postal> | |||
| <email>Tobias.Heer@belden.com</email> | <email>Tobias.Heer@belden.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <!-- | <date month="March" year="2024"/> | |||
| <author fullname="James Bond" initials="J." surname="Bond"> | ||||
| <organization>MI6</organization> | ||||
| <address> | ||||
| <email>james@bond.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date /> | <area>RTG</area> | |||
| <workgroup>DetNet</workgroup> | <workgroup>DetNet</workgroup> | |||
| <abstract> | <abstract> | |||
| <t> | ||||
| Replication and Elimination functions of DetNet Architecture | ||||
| can result in out-of-order packets, which is not acceptable for some | ||||
| time-sensitive applications. The Packet Ordering Function (POF) algorith | ||||
| m | ||||
| described herein enables to restore the correct packet order when | ||||
| replication and elimination functions are used in DetNet networks. | ||||
| POF only provides ordering within the latency bound of a DetNet flow, | ||||
| and does not provide any additional reliability. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <middle> | <t> | |||
| <section title="Introduction" anchor="sec_intro"> | The replication and elimination functions of the Deterministic Networking | |||
| <t> | (DetNet) architecture can result in out-of-order packets, which is not | |||
| The DetNet Working Group has defined packet replication (PRF) and packet | acceptable for some time-sensitive applications. The Packet Ordering | |||
| elimination (PEF) functions for achieving extremely low packet loss. PRF | Function (POF) algorithms described in this document enable restoration | |||
| and | of the correct packet order when the replication and elimination | |||
| PEF are described in <xref target="RFC8655"/> and provide service | functions are used in DetNet networks. The POF only provides ordering with | |||
| protection for DetNet flows. This service protection method relies on | in | |||
| copies of the same packet sent over multiple maximally disjoint paths | the latency bound of a DetNet flow; it does not provide any additional | |||
| and uses sequencing information to eliminate duplicates. A possible | reliability. | |||
| implementation of PRF and PEF functions is described in | </t> | |||
| <xref target="IEEE8021CB"/> and the related YANG model is defined | </abstract> | |||
| in <xref target="IEEEP8021CBcv"/>. | </front> | |||
| </t> | <middle> | |||
| <t> | <section anchor="sec_intro" numbered="true" toc="default"> | |||
| In general, use of per packet replication and elimination functions can | <name>Introduction</name> | |||
| result in out-of-order delivery of packets, which is not acceptable | ||||
| for some deterministic applications. Correcting packet order is not a | ||||
| trivial task, therefore details of a Packet Ordering Function (POF) are | ||||
| specified herein. The IETF DetNet WG has defined in <xref target="RFC865 | ||||
| 5"/> | ||||
| the external observable result of a POF function, i.e., that packets are | ||||
| reordered, but without any implementation details. | ||||
| </t> | ||||
| <t> | ||||
| So far in packet networks, out-of-order delivery situations were handled | ||||
| at higher OSI layers at the end-points/hosts (e.g., in the TCP stack whe | ||||
| n | ||||
| packets are sent to application layer) and not within a network in nodes | ||||
| acting at the Layer-2 or Layer-3 OSI layers. | ||||
| </t> | ||||
| <t> | ||||
| <xref target="PREOF-scene"/> shows a DetNet flow on which packet | ||||
| replication, elimination and ordering (PREOF) functions | ||||
| are applied during forwarding from source to destination. | ||||
| </t> | ||||
| <figure title="PREOF scenario in a DetNet network" anchor="PREOF-scene"> | <t> | |||
| <artwork align="center"><![CDATA[ | <xref target="RFC8655" format="default"/> defines the Packet Replication | |||
| Function (PRF) and Packet Elimination Function (PEF) in DetNet for | ||||
| achieving extremely low packet loss. The PRF and PEF provide service | ||||
| protection for DetNet flows. This service protection method relies on | ||||
| copies of the same packet sent over multiple maximally disjoint paths and | ||||
| uses sequencing information to eliminate duplicates. A possible | ||||
| implementation of the PRF and PEF is described in <xref | ||||
| target="IEEE8021CB" format="default"/>, and the related YANG model is | ||||
| defined in <xref target="IEEEP8021CBcv" format="default"/>. | ||||
| </t> | ||||
| <t> | ||||
| In general, use of per-packet replication and elimination functions can | ||||
| result in out-of-order delivery of packets, which is not acceptable for | ||||
| some deterministic applications. Correcting packet order is not a trivial | ||||
| task; therefore, details of a Packet Ordering Function (POF) are | ||||
| specified in this document. <xref target="RFC8655" format="default"/> | ||||
| defines the external observable result of a POF (i.e., that | ||||
| packets are reordered) but does not specify any implementation details. | ||||
| </t> | ||||
| <t> | ||||
| So far in packet networks, out-of-order delivery situations have been handl | ||||
| ed | ||||
| at higher OSI layers at the endpoints/hosts (e.g., in the TCP stack when | ||||
| packets are sent to the application layer) and not within a network in n | ||||
| odes | ||||
| acting at the Layer 2 or Layer 3 OSI layers. | ||||
| </t> | ||||
| <t> | ||||
| <xref target="PREOF-scene" format="default"/> shows a DetNet flow on which | ||||
| Packet | ||||
| Replication, Elimination, and Ordering Functions (PREOF) | ||||
| are applied during forwarding from source to destination. | ||||
| </t> | ||||
| <figure anchor="PREOF-scene"> | ||||
| <name>PREOF Scenario in a DetNet Network</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +------------+ | +------------+ | |||
| +-----------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) | |||
| ]]> | ]]></artwork> | |||
| </artwork></figure> | </figure> | |||
| <t> | <t> | |||
| In general, the use of PREOF functions require sequencing information | In general, the use of PREOF requires sequencing information | |||
| to be included in the packets of a DetNet compound flow. This can be | to be included in the packets of a DetNet compound flow. This can be | |||
| done by adding a sequence number as part of DetNet encapsulation | done by adding a sequence number as part of DetNet encapsulation | |||
| <xref target="RFC8655"/>. Sequencing information is typically added once, | <xref target="RFC8655" format="default"/>. Sequencing information is typical ly added once, | |||
| at or close to the source. | at or close to the source. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Important to note that different applications can react differently to out- | It is important to note that different applications can react differently t | |||
| of-order | o out-of-order | |||
| delivery. A single out-of-order packet (E.g., packet order: #1, #3, #2, | delivery. A single out-of-order packet (e.g., packet order #1, #3, #2, | |||
| #4, #5) is interpreted by some application as a single error, but | #4, #5) is interpreted by some application as a single error, but | |||
| some other applications treat it as 3 errors in-a-row situation. | other applications treat it as three errors in a row. | |||
| For example, in industrial scenarios | For example, in industrial scenarios, | |||
| 3 errors in-a-row is a usual error threshold and can cause the | three errors in a row is a typical error threshold and can cause the | |||
| application to stop (e.g., to go to a fail-safe state). | application to stop (e.g., go to a fail-safe state). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| POF ensures in-order delivery for packets being within | The POF ensures in-order delivery for packets within | |||
| the latency bound of the (DetNet) flow. POF does not correct | the latency bound of the DetNet flow. The POF does not correct | |||
| errors in the packet flow e.g., duplicate packets, too late packets. | errors in the packet flow (e.g., duplicate packets or packets that are t | |||
| </t> | oo late). | |||
| </t> | ||||
| </section> <!-- end of introduction --> | </section> | |||
| <section title="Terminology"> | <section numbered="true" toc="default"> | |||
| <section title="Terms Used in This Document"> | <name>Terminology</name> | |||
| <t> | <section numbered="true" toc="default"> | |||
| <name>Terms Used in This Document</name> | ||||
| <t> | ||||
| This document uses the terminology established in the DetNet architecture | This document uses the terminology established in the DetNet architecture | |||
| <xref target="RFC8655"/>, and the reader is assumed | <xref target="RFC8655" format="default"/>; the reader is assumed | |||
| to be familiar with that document and its terminology. | to be familiar with that document and its terminology. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Abbreviations"> | <name>Abbreviations</name> | |||
| <t> | <t> | |||
| The following abbreviations are used in this document: | The following abbreviations are used in this document: | |||
| <list style="hanging" hangIndent="14"> | </t> | |||
| <t hangText="DetNet">Deterministic Networking.</t> | <dl newline="false" spacing="normal" indent="9"> | |||
| <t hangText="PEF">Packet Elimination Function.</t> | <dt>DetNet</dt> | |||
| <t hangText="POF">Packet Ordering Function.</t> | <dd>Deterministic Networking</dd> | |||
| <t hangText="PREOF">Packet Replication, Elimination and Ordering Function | <dt>PEF</dt> | |||
| s.</t> | <dd>Packet Elimination Function</dd> | |||
| <t hangText="PRF">Packet Replication Function.</t> | <dt>POF</dt> | |||
| </list> | <dd>Packet Ordering Function</dd> | |||
| </t> | <dt>PREOF</dt> | |||
| </section> | <dd>Packet Replication, Elimination, and Ordering Functions</dd> | |||
| <dt>PRF</dt> | ||||
| <dd>Packet Replication Function</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <!-- | </section> | |||
| <section title="Requirements Language"> | ||||
| <t> | ||||
| 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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | ||||
| only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| </section> <!-- end of terminology --> | <section anchor="req-on-pof" numbered="true" toc="default"> | |||
| <!-- ===================================================================== --> | <name>Requirements for POF Implementations</name> | |||
| <t> | ||||
| The requirements for POF implementations are: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>To solve the out-of-order delivery problem of the replication | ||||
| and elimination functions of DetNet networks. </t> | ||||
| </li> | ||||
| <li> | ||||
| <t>To consider the delay bound requirement of a DetNet flow. </t> | ||||
| </li> | ||||
| <li> | ||||
| <section anchor="req-on-pof" title="Requirements on POF Implementations"> | <t>To be simple and to require only a minimum set of states, | |||
| <t> | configuration parameters, and resources per DetNet flow in network | |||
| The requirements on a POF function are: | nodes. | |||
| <list style="symbols"> | </t> | |||
| <t>to solve the out-of-order delivery problem of the Replication | </li> | |||
| and Elimination functions of DetNet networks. </t> | <li> | |||
| <t>to consider the delay bound requirement of a DetNet Flow. </t> | <t>To add minimal or no delay to the forwarding process | |||
| <t>to be simple and to require in network nodes only a minimum | ||||
| set of states/configuration parameters and resources per DetNet | ||||
| Flow. </t> | ||||
| <t>to add only minimal or no delay to the forwarding process | ||||
| of packets. </t> | of packets. </t> | |||
| <t>not to require synchronization between PREOF nodes. </t> | </li> | |||
| </list> | <li> | |||
| </t> | <t>To not require synchronization between PREOF nodes. </t> | |||
| <t> | </li> | |||
| Some aspects are explicitly out-of-scope for a POF function: | </ul> | |||
| <list style="symbols"> | <t> | |||
| <t>to eliminate the delay variation caused by the packet ordering. | Some aspects are explicitly out of scope for a POF: | |||
| Dealing with delay variation is a DetNet forwarding sub-layer ta | </t> | |||
| rget | <ul spacing="normal"> | |||
| and it can be achieved for example by placing a de-jitter buffer | <li> | |||
| or flow regulator (e.g., shaping) function after the POF | <t>To eliminate the delay variation caused by the packet ordering. | |||
| functionality.</t> | Dealing with delay variation is a DetNet forwarding sub-layer | |||
| </list> | target, and it can be achieved, for example, by placing a de-jitter | |||
| </t> | buffer or flow regulator (e.g., shaping) function after the POF.</t> | |||
| </section> <!-- end of requirements --> | </li> | |||
| </ul> | ||||
| </section> | ||||
| <section anchor="pof-alg" title="POF Algorithms"> | <section anchor="pof-alg" numbered="true" toc="default"> | |||
| <section anchor="preof-relations" title="Prerequisites and Assumptions"> | <name>POF Algorithms</name> | |||
| <t> | <section anchor="preof-relations" numbered="true" toc="default"> | |||
| The POF Algorithm discussed in this document makes some assumptions and | <name>Prerequisites and Assumptions</name> | |||
| tradeoffs regarding the characteristics of the sequence of received | <t> | |||
| packets. In particular, the algorithm assumes that a Packet | The POF algorithms discussed in this document make some assumptions and | |||
| Elimination Function (PEF) is performed on the incoming packets | trade-offs regarding the characteristics of the sequence of received | |||
| before they are handed to the POF function. Hence, the sequence | packets. In particular, the algorithms assume that a | |||
| of incoming packets can be out of order or incomplete but cannot | PEF is performed on the incoming packets | |||
| contain duplicate packets. However, the PREOF functions run | before they are handed to the POF. Hence, the sequence | |||
| of incoming packets can be out-of-order or incomplete but cannot | ||||
| contain duplicate packets. However, the PREOF run | ||||
| independently without any state exchange required between the | independently without any state exchange required between the | |||
| PEF and the POF or the PRF and the POF. Error cases in which | PEF and the POF or the PRF and the POF. Error cases in which | |||
| duplicate packets are presented to the POF can lead to out of | duplicate packets are presented to the POF can lead to out-of-ord | |||
| order delivery of duplicate packets as well as to increased delay | er delivery of duplicate packets and to increased delays. | |||
| s. | </t> | |||
| </t> | <t> | |||
| <t> | The algorithms further require that the delay difference between two | |||
| The algorithm further requires that the delay difference between two | ||||
| replicated packets that arrive at the PEF before the POF is bounded and | replicated packets that arrive at the PEF before the POF is bounded and | |||
| known. Error cases that violate this condition (e.g., a packet that | known. Error cases that violate this condition (e.g., a packet that | |||
| arrives later than this bound) will result in out-of order packets. | arrives later than this bound) will result in out-of-order packets. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The algorithm also makes some tradeoffs. For simplicity, it is designed | The algorithms also make some trade-offs. For simplicity, it is designed | |||
| in a way that allows for some out of order packets directly after | to allow for some out-of-order packets directly after | |||
| initialization. If this is not acceptable, | initialization. If this is not acceptable, | |||
| <xref target="enh-pof"/> provides an alternative initialization s cheme | <xref target="enh-pof" format="default"/> provides an alternative initialization scheme | |||
| that prevents out-of-order packets in the initialization phase. | that prevents out-of-order packets in the initialization phase. | |||
| </t> | </t> | |||
| </section> <!-- end of POF assumptions --> | </section> | |||
| <section anchor="pof-blocks" title="POF building blocks"> | <section anchor="pof-blocks" numbered="true" toc="default"> | |||
| <t> | <name>POF Building Blocks</name> | |||
| The method described herein provides POF for DetNet networks. The | <t> | |||
| configuration parameters of POF can be derived during engineering the | The method described in this document provides a POF for DetNet networks. T | |||
| he | ||||
| configuration parameters of the POF can be derived when engineering the | ||||
| DetNet flow through the network. | DetNet flow through the network. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The POF method is provided via: | The POF method is provided via the following: | |||
| <list style="numbers"> | </t> | |||
| <t>Delay calculator: calculates buffering time for out-of-order | ||||
| packets. | <dl newline="false" spacing="normal"> | |||
| <dt>Delay calculator:</dt><dd>Calculates buffering time for out-of-o | ||||
| rder packets. | ||||
| Buffering time considers (i) the delay | Buffering time considers (i) the delay | |||
| difference of paths used for forwarding the replicated packets | difference of paths used for forwarding the replicated packets | |||
| and (ii) the bounded delay requirement of the given DetNet flow. | and (ii) the bounded delay requirement of the given DetNet flow. | |||
| </t> | </dd> | |||
| <t>Conditional buffer: for buffering the out-of-order packets of a | <dt>Conditional delay buffer:</dt><dd>Used for buffering the out-of- | |||
| DetNet flow for a given time. </t> | order packets of a | |||
| </list> | DetNet flow for a given time. </dd> | |||
| </t> | </dl> | |||
| <t> | <t> | |||
| Note: the conditional buffer of POF increases the burstiness of the | Note: The conditional delay buffer of the POF increases the burstiness of t | |||
| traffic as it adds delay only for some of the packets. | he | |||
| </t> | traffic as it only adds delay for some of the packets. | |||
| <t> | </t> | |||
| <xref target="POF-blocks"/> shows the building blocks of a | <t> | |||
| <xref target="POF-blocks" format="default"/> shows the building blocks of a | ||||
| possible POF implementation. | possible POF implementation. | |||
| </t> | </t> | |||
| <figure anchor="POF-blocks"> | ||||
| <figure title="POF Building Blocks" anchor="POF-blocks"> | <name>POF Building Blocks</name> | |||
| <artwork align="center"><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| +------------+ +--------------+ | +------------+ +--------------+ | |||
| | 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 | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| ]]> | <section anchor="basic-pof" numbered="true" toc="default"> | |||
| </artwork></figure> | <name>The Basic POF Algorithm</name> | |||
| <t> | ||||
| </section> <!-- end of POF blocks --> | ||||
| <section anchor="basic-pof" title="The Basic POF Algorithm"> | ||||
| <t> | ||||
| 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: | |||
| <list style="symbols"> | </t> | |||
| <t>The sequence number of the last forwarded packet (POFLastSent) is | <ul spacing="normal"> | |||
| stored for each DetNet Flow. </t> | <li> | |||
| <t>The sequence number (seq_num) of a received packet is compare | <t>The sequence number of the last forwarded packet ("POFLastSent") | |||
| d to | is | |||
| that of the last forwarded one (POFLastSent). </t> | stored for each DetNet flow. </t> | |||
| <t>If (seq_num <= POFLastSent + 1) | </li> | |||
| <list style="symbols"> | <li> | |||
| <t> Then the packet is forwarded without buffering and "POFLa | <t>The sequence number (seq_num) of a received packet is compared to | |||
| stSent" | that of the last forwarded one ("POFLastSent"). </t> | |||
| </li> | ||||
| <li> | ||||
| <t>If (seq_num <= POFLastSent + 1) | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t> Then the packet is forwarded without buffering, and "POFLast | ||||
| Sent" | ||||
| is updated (POFLastSent = seq_num). </t> | is updated (POFLastSent = seq_num). </t> | |||
| <t> Else the received packet is buffered. </t> | </li> | |||
| </list> | <li> | |||
| </t> | <t> Else, the received packet is buffered. </t> | |||
| <t>A buffered packet is forwarded from the buffer when its seq_n | </li> | |||
| um | </ul> | |||
| becomes equal to "POFLastSent +1," OR a predefined time ("POFMax | </li> | |||
| Delay") | <li> | |||
| <t>A buffered packet is forwarded from the buffer when its seq_num | ||||
| becomes equal to "POFLastSent + 1" OR a predefined time ("POFMax | ||||
| Delay") | ||||
| elapses.</t> | elapses.</t> | |||
| <t>When a packet is forwarded from the buffer "POFLastSent" is | </li> | |||
| <li> | ||||
| <t>When a packet is forwarded from the buffer, "POFLastSent" is | ||||
| updated with its seq_num (POFLastSent = seq_num). </t> | updated with its seq_num (POFLastSent = seq_num). </t> | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | ||||
| Note: the difference of sequence number in consecutive packets is bounded | <t>Notes:</t> | |||
| due to the history window of the Elimination function before the POF. | <ul spacing="normal"> | |||
| Therefore "<=" can be evaluated despite of the circular | <li>The difference between sequence numbers in consecutive packets is bounded | |||
| sequence number space. A possible implementation of the PEF function and | due to the history window of the elimination function before the POF. | |||
| the impact of the history window is described in <xref target="IEEE8021C | Therefore, "<=" can be evaluated despite the circular | |||
| B"/>. | sequence number space. A possible implementation of the PEF and | |||
| </t> | the impact of the history window are described in <xref target="IEEE8021 | |||
| <t> | CB" format="default"/>. | |||
| Note2: The algorithm can be extended to cope with multiple failure scena | </li> | |||
| rios | <li>The basic POF algorithm can be extended to cope with multiple failur | |||
| (i.e., simultaneous packet loss and out-of-order packets), when the expi | e scenarios | |||
| ration | (i.e., simultaneous packet loss and out-of-order packets) when the expir | |||
| of the timer for a packet with sequence number N trigger the release of | ation | |||
| some | of the timer for a packet with sequence number N triggers the release of | |||
| number of packets with sequence number smaller than N. | some | |||
| </t> | packets with a sequence number smaller than N. | |||
| <t> | </li> | |||
| </ul> | ||||
| <t> | ||||
| 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: | |||
| <list style="symbols"> | </t> | |||
| <t>The next received packet is forwarded and the POFLastSent | <ul spacing="normal"> | |||
| updated when the POF function was reset OR no packet was receive | <li> | |||
| d | <t>The next received packet is forwarded and the "POFLastSent" | |||
| updated when the POF is reset OR no packet is received | ||||
| for a predefined time ("POFTakeAnyTime"). </t> | for a predefined time ("POFTakeAnyTime"). </t> | |||
| <t>The reset of POF erases all packets from the time-based | </li> | |||
| buffer used by POF. </t> | <li> | |||
| </list> | <t>The reset of the POF erases all packets from the time-based | |||
| </t> | buffer used by the POF. </t> | |||
| <t> | </li> | |||
| </ul> | ||||
| <t> | ||||
| The basic POF algorithm has two parameters to engineer: | The basic POF algorithm has two parameters to engineer: | |||
| <list style="symbols"> | </t> | |||
| <t>"POFMaxDelay", which cannot be smaller than the delay | <ul spacing="normal"> | |||
| <li> | ||||
| <t>"POFMaxDelay", which cannot be smaller than the delay | ||||
| difference of the paths used by the flow. </t> | difference of the paths used by the flow. </t> | |||
| <t>"POFTakeAnyTime", which is calculated based on several factor | </li> | |||
| s, | <li> | |||
| for example the RECOVERY_TIMEOUT related settings of the | <t>"POFTakeAnyTime", which is calculated based on several factors, | |||
| Elimination function(s) before the POF, the flow characteristics | for example, the settings of the elimination function(s) relating | |||
| (e.g., inter packet time), and the delay difference of the | to RECOVERY_TIMEOUT before the POF, the flow characteristics | |||
| paths used by the flow. </t> | (e.g., inter-packet time), and the delay difference of the paths | |||
| </list> | used by the flow. </t> | |||
| </t> | </li> | |||
| <t> | </ul> | |||
| Design of these parameters is out-of-scope in this document. | <t> | |||
| </t> | Design of these parameters is out of scope for this document. | |||
| <t> | </t> | |||
| Note: multiple network failures can impact the POF function | <t> | |||
| Note: Multiple network failures can impact the POF | ||||
| (e.g., complete outage of all redundant paths). | (e.g., complete outage of all redundant paths). | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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 basic | "POFMaxDelay" time. In-order packets are not delayed. This basic | |||
| POF method can be applied in all network scenarios where the remaining | POF method can be applied in all network scenarios where the remaining | |||
| delay budget of a flow at the POF point is larger than "POFMaxDelay" | delay budget of a flow at the POF point is larger than "POFMaxDelay" | |||
| time. | time. | |||
| </t> | </t> | |||
| <t> | ||||
| <xref target="delay-budget"/> shows the delay budget relations at | ||||
| the POF point. | ||||
| </t> | ||||
| <figure title="Delay Budget Relations at the POF Point" anchor="delay-budget"> | ||||
| <artwork align="center"><![CDATA[ | ||||
| <t> | ||||
| <xref target="delay-budget" format="default"/> shows the delay budget | ||||
| situation at the POF point. | ||||
| </t> | ||||
| <figure anchor="delay-budget"> | ||||
| <name>Delay Budget Situation at the POF Point</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| 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 -------------------/ | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| ]]> | <section anchor="adv-pof" numbered="true" toc="default"> | |||
| </artwork></figure> | <name>The Advanced POF Algorithm</name> | |||
| <t> | ||||
| </section> <!-- end of basic POF --> | In network scenarios where the remaining delay budget of a flow at the | |||
| POF point is smaller than "POFMaxDelay" time, the basic method needs | ||||
| <section anchor="adv-pof" title="The Advanced POF Algorithm"> | ||||
| <t> | ||||
| In network scenario where the remaining delay budget of a flow at the | ||||
| POF point is smaller than "POFMaxDelay" time the basic method needs | ||||
| extensions. | extensions. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The issue is that packets on the longest path cannot be buffered in order | 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 packet | to keep the delay budget of the flow. It must be noted that such a packe t | |||
| (i.e., forwarded over the longest path) needs no buffering as it is the | (i.e., forwarded over the longest path) needs no buffering as it is the | |||
| "last chance" to deliver a packet with a given sequence number. This is | last chance to deliver a packet with a given sequence number. This is | |||
| because all replicas are already arrived via shorter path(s). | because all replicas already arrived via a shorter path(s). | |||
| </t> | </t> | |||
| <t> | ||||
| The advanced POF algorithm needs two extensions of the basic POF | <t> | |||
| algorithm: | The advanced POF algorithm requires extensions of the basic POF algorithm: | |||
| <list style="symbols"> | </t> | |||
| <t>to identify the received packet's path at the POF location and </t> | <ul spacing="normal"> | |||
| <t>to make the value of "POFMaxDelay" for buffered packets path | <li> | |||
| <t>to identify the received packet's path at the POF location and </ | ||||
| t> | ||||
| </li> | ||||
| <li> | ||||
| <t>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). </t> | has used). </t> | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | <t> | |||
| By identifying the path of a given packet, the POF algorithm can use this | The advanced POF algorithm identifies the path of a given packet and uses this | |||
| information to select what predefined time "POFMaxDelay_i" to apply for | information to select the predefined time ("POFMaxDelay_i") to apply for the | |||
| the buffered packet. So, in the advanced POF algorithm "POFMaxDelay" | buffered packet. So, in the advanced POF algorithm, "POFMaxDelay" is an | |||
| is an array, that contains the predefined and path specific buffering | array that contains the predefined and path-specific buffering time for each | |||
| time for each redundant path of a flow. Values in the "POFMaxDelay" | redundant path of a flow. Values in the "POFMaxDelay" array are engineered | |||
| array are engineered to fulfill the delay budget requirement. | to fulfill the delay budget requirement. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Design of these parameters is out-of-scope in this document. | Design of these parameters is out of scope for this document. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Note: for the "Advanced POF Algorithm" the path dependent delays | Note: For the advanced POF algorithm, the path-dependent delays | |||
| might result in multiple packets triggering the "maximum delay | might result in multiple packets triggering the "maximum delay | |||
| reached" at exactly the same time. The transmission order of | reached" at exactly the same time. The transmission order of | |||
| these packets then should be done in their seq_num order. | these packets should be done in their seq_num order. | |||
| </t> | </t> | |||
| <t> | ||||
| The method for identification of the packet's path at the POF location | <t> | |||
| depends on the network scenario. It can be implemented via various | The method for identifying the packet's path at the POF location | |||
| techniques, for example using ingress interface information, encoding | depends on the network scenario. | |||
| the path in the packet itself (e.g., replication functions can set | It can be implemented via | |||
| different FlowID per egress what can be used as a PathID), or in other | various techniques, for example, using ingress interface information, | |||
| means. Method for identification of the packet's path is out of scope | encoding the path in the packet itself (e.g., replication functions | |||
| in this document. | set a different FlowID per member flow at their egress and such | |||
| </t> | a FlowID is used to identify the path of a packet at the POF), or | |||
| <t> | other means. | |||
| Note: in case of using the advanced POF algorithm it might be | Methods for identifying the packet's path are out of scope | |||
| for this document. | ||||
| </t> | ||||
| <t> | ||||
| Note: When using the advanced POF algorithm, it might be | ||||
| advantageous to combine PEF and POF locations in the DetNet network, as | advantageous to combine PEF and POF locations in the DetNet network, as | |||
| it can simplify the method used for identification of the packet's path | this can simplify the method used for identifying the packet's path | |||
| at the POF location. | at the POF location. | |||
| </t> | </t> | |||
| </section> <!-- end of advanced POF --> | </section> | |||
| <section anchor="enh-pof" title="Further enhancements of POF algorithms"> | <section anchor="enh-pof" numbered="true" toc="default"> | |||
| <t> | <name>Further Enhancements of the POF Algorithms</name> | |||
| <t> | ||||
| 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 example | more sophisticated implementation. Such enhancements could, for example, | |||
| react better after some failure scenarios (e.g., complete outage of all | react better after some failure scenarios (e.g., complete outage of all | |||
| paths of a DetNet flow) and can be dependent on the PEF implementation. | paths of a DetNet flow) and can be dependent on the PEF implementation. | |||
| </t> | </t> | |||
| <t> | ||||
| The challenge for POF initialization is that for example after a reset it | <t> | |||
| is not known whether the first received packet is in-order or | The challenge for POF initialization is that it is not known whether the | |||
| out-of-order. The original initialization (see before) considers the | first received packet is in-order or out-of-order (for example, after a | |||
| reset). | ||||
| The original initialization (see <xref target="basic-pof"/>) considers the | ||||
| first packet as in-order, so out-of-order packet(s) during | first packet as in-order, so out-of-order packet(s) during | |||
| "POFMaxTime"/"POFMaxTime_path_i" time - after the first packet was | "POFMaxTime"/"POFMaxTime_path_i" time -- after the first packet is | |||
| received - cannot be corrected. Motivation behind such an initialization | received -- cannot be corrected. | |||
| is POF implementation simplicity. | ||||
| </t> | The motivation behind such an initialization | |||
| <t> | is simplicity of POF implementation. | |||
| </t> | ||||
| <t> | ||||
| A possible enhancement of POF initialization works as follows: | A possible enhancement of POF initialization works as follows: | |||
| <list style="symbols"> | </t> | |||
| <t>After a reset all received packets are buffered with their | <ul spacing="normal"> | |||
| <li> | ||||
| <t>After a reset, all received packets are buffered with their | ||||
| predefined timer ("POFMaxTime"/"POFMaxTime_path_i"). </t> | predefined timer ("POFMaxTime"/"POFMaxTime_path_i"). </t> | |||
| <t>No basic/advanced POF rules are applied until the first timer | </li> | |||
| <li> | ||||
| <t>No basic or advanced POF rules are applied until the first timer | ||||
| expires. </t> | expires. </t> | |||
| <t>When the first timer expires the packet with lowest seq_num i | </li> | |||
| n | <li> | |||
| buffer is selected, forwarded, and "POFLastSent" is set with its | <t>When the first timer expires, the packet with lowest seq_num in t | |||
| he | ||||
| buffer is selected and forwarded, and "POFLastSent" is set with | ||||
| its | ||||
| seq_num.</t> | seq_num.</t> | |||
| <t>The basic/advanced POF rules are applied for the packet(s) in | </li> | |||
| the | <li> | |||
| <t>The basic or advanced POF rules are applied for the packet(s) in | ||||
| the | ||||
| buffer and the subsequently received packets.</t> | buffer and the subsequently received packets.</t> | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| </section> <!-- end of POF enhancement --> | </section> | |||
| <section anchor="select-pof" title="Selecting and using the POF algorithm"> | <section anchor="select-pof" numbered="true" toc="default"> | |||
| <t> | <name>Selecting and Using the POF Algorithms</name> | |||
| <t> | ||||
| The selection of the POF algorithm depends on the network scenario and | The selection of the POF algorithm depends on the network scenario and | |||
| the remaining delay budget of a flow. Using POF and calculating its | the remaining delay budget of a flow. Using the POF algorithms and calcu lating their | |||
| parameters require proper design. Knowing the path delay difference is | parameters require proper design. Knowing the path delay difference is | |||
| essential for the POF algorithms described here. Failure scenarios | essential for the POF algorithms described here. Failure scenarios | |||
| breaking the design assumptions can impact the result of POF (e.g., | breaking the design assumptions can impact the result of the POF (e.g., | |||
| packet received out of the expected worst-case delay window | packet received out of the expected worst-case delay window | |||
| - calculated based on the path delay difference - can result in unwanted | -- calculated based on the path delay difference -- can result in unwant ed | |||
| out-of-order delivery). | out-of-order delivery). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In DetNet scenarios there is always an Elimination function before the POF | In DetNet scenarios, there is always an elimination function before the | |||
| (therefore duplicates are not considered by the POF). Implementing them | POF (therefore, duplicates are not considered by the POF). Implementing | |||
| together in the same node allows POF to consider PEF events/states durin | them together in the same node allows the POF to consider PEF events/states | |||
| g | during the reordering. For example, under normal circumstances, the | |||
| the re-ordering. For example, under normal circumstances the difference | difference between sequence numbers in consecutive packets is bounded due | |||
| of | to the history window of the PEF. However, in some scenarios (e.g., reset | |||
| sequence number in consecutive packets is bounded due to the history | of | |||
| window of PEF. However, in some scenarios (e.g., reset of sequence | sequence number), the difference can be much larger than the size of the | |||
| number) the difference can be much larger than the history window size. | history window. | |||
| </t> | </t> | |||
| </section> <!-- end of POF selection --> | </section> | |||
| </section> <!-- end of POF algorithms --> | ||||
| <section anchor="ctrl-mngmnt-pof" title="Control and Management Plane Parameters | ||||
| for POF"> | ||||
| <t> | ||||
| POF algorithms needs setting of the following parameters: | ||||
| <list style="symbols"> | ||||
| <t>Basic POF | ||||
| <list style="symbols"> | ||||
| <t>"POFMaxDelay" </t> | ||||
| <t>"POFTakeAnyTime" </t> | ||||
| </list> | ||||
| </t> | ||||
| <t>Advanced POF | ||||
| <list style="symbols"> | ||||
| <t>"POFMaxDelay_i" for each possible path i </t> | ||||
| <t>"POFTakeAnyTime" </t> | ||||
| <t>Network path identification related configuration(s) < | ||||
| /t> | ||||
| </list> | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| Note, that in a proper design "POFTakeAnyTime" is always larger | ||||
| than "POFMaxDelay". | ||||
| </t> | ||||
| </section> <!-- end of POF management --> | ||||
| <!-- ===================================================================== --> | ||||
| <section title="Security Considerations"> | ||||
| <t> | ||||
| PREOF related security considerations (including POF) are described in | ||||
| section 3.3 of <xref target="RFC9055"/>. There are no additional POF | ||||
| related security considerations originating from this document. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="iana" title="IANA Considerations"> | <section anchor="ctrl-mngmnt-pof" numbered="true" toc="default"> | |||
| <t> | <name>Control and Management Plane Parameters for POF</name> | |||
| This document makes no IANA requests. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="acks" title="Acknowledgements"> | <t>POF algorithms require the following parameters to be set: | |||
| <t> | </t> | |||
| Authors extend their appreciation to Gyorgy Miklos, Mohammadpour Ehsan, Ludov | <ul spacing="normal"> | |||
| ic Thomas, | <li> | |||
| Greg Mirsky, Jeong-dong Ryoo, Shirley Yangfan, Toerless Eckert, Norman Finn a | <t>Basic POF | |||
| nd Ethan | </t> | |||
| Grossman for their insightful comments and productive discussion that helped | <ul spacing="normal"> | |||
| to improve | <li> | |||
| the document. | <t>"POFMaxDelay" </t> | |||
| </t> | </li> | |||
| </section> | <li> | |||
| <t>"POFTakeAnyTime" </t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li> | ||||
| <t>Advanced POF | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>"POFMaxDelay_i" for each possible path i </t> | ||||
| </li> | ||||
| <li> | ||||
| <t>"POFTakeAnyTime" </t> | ||||
| </li> | ||||
| <li> | ||||
| <t>Configuration(s) related to network path identification</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <t> | ||||
| Note: In a proper design, "POFTakeAnyTime" is always larger than "POFMaxDel | ||||
| ay". | ||||
| </t> | ||||
| </section> | ||||
| </middle> | <section numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | ||||
| <t> | ||||
| PREOF-related security considerations (including POF) are described in | ||||
| <xref target="RFC9055" sectionFormat="of" section="3.3"/>. There are no | ||||
| additional POF-related security considerations originating from this | ||||
| document. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="iana" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <t>This document has no IANA actions. | ||||
| </t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references> | ||||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 655.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 055.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <back> | <reference anchor="IEEE8021CB" target="https://standards.ieee.org/standa | |||
| <references title="Normative References"> | rd/802_1CB-2017.html"> | |||
| <!-- <?rfc include="reference.RFC.2119"?> | <front> | |||
| <?rfc include="reference.RFC.8174"?> --> | <title>IEEE Standard for Local and metropolitan area | |||
| <?rfc include="reference.RFC.8655"?> | ||||
| <?rfc include="reference.RFC.9055"?> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <reference anchor="IEEE8021CB" | ||||
| target="https://standards.ieee.org/standard/802_1CB-2017. | ||||
| html"> | ||||
| <front> | ||||
| <title>IEEE Standard for Local and metropolitan area | ||||
| networks -- Frame Replication and Elimination for Reliability | networks -- Frame Replication and Elimination for Reliability | |||
| </title> | </title> | |||
| <author> | <author> | |||
| <organization>IEEE</organization> | <organization>IEEE</organization> | |||
| </author> | </author> | |||
| <date month="October" year="2017"/> | <date month="October" year="2017"/> | |||
| </front> | </front> | |||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2017.8091139" /> | <seriesInfo name='IEEE Std' value='802.1CB-2017' /> | |||
| </reference> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2017.8091139"/> | |||
| <reference anchor="IEEEP8021CBcv" | </reference> | |||
| target="https://www.ieee802.org/1/files/private/cv-drafts/d1/802-1 | ||||
| CBcv-d1-2.pdf"> | <reference anchor="IEEEP8021CBcv" target="https://standards.ieee.org/ieee/802.1C | |||
| <front> | Bcv/7285/"> | |||
| <title>FRER YANG Data Model and Management Information Base Module</ti | <front> | |||
| tle> | <title>IEEE Standard for Local and metropolitan area networks -- | |||
| <author initials="S." surname="Kehrer" fullname="Stephan Kehrer"> | Frame Replication and Elimination for Reliability - Amendment 1: | |||
| <organization>IEEE 802.1</organization> | Information Model, YANG Data Model, and Management Information | |||
| </author> | Base Module | |||
| <date month="March" year="2021"/> | </title> | |||
| </front> | <author> | |||
| <seriesInfo name="IEEE P802.1CBcv /D1.2" value="P802.1CBcv"/> | <organization>IEEE</organization> | |||
| <format type="PDF" target="https://www.ieee802.org/1/files/private/cv-dr | </author> | |||
| afts/d1/802-1CBcv-d1-2.pdf"/> | <date month="February" year="2022"/> | |||
| </reference> | </front> | |||
| </references> | <seriesInfo name="IEEE Std" value="802.1CBcv-2001"/> | |||
| </back> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2022.9715061"/> | |||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="acks" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| Authors extend their appreciation to <contact fullname="Gyorgy Miklos"/>, | ||||
| <contact fullname="Ehsan Mohammadpour"/>, <contact fullname="Ludovic | ||||
| Thomas"/>, <contact fullname="Greg Mirsky"/>, <contact fullname="Jeong-dong | ||||
| Ryoo"/>, <contact fullname="Fan Yang"/>, <contact fullname="Toerless | ||||
| Eckert"/>, <contact fullname="Norman Finn"/>, and <contact fullname="Ethan | ||||
| Grossman"/> for their insightful comments and productive discussion that | ||||
| helped to improve the document. | ||||
| </t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 81 change blocks. | ||||
| 487 lines changed or deleted | 574 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||