rfc9566xml2.original.xml | rfc9566.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 symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc iprnotified="no"?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="info" | ||||
docName="draft-ietf-detnet-mpls-over-ip-preof-11" | ||||
ipr="trust200902" | ||||
submissionType="IETF"> | ||||
<front> | ||||
<title abbrev=" PREOF DetNet IP"> | ||||
Deterministic Networking (DetNet): DetNet PREOF via MPLS over UDP/IP</title> | ||||
<author fullname="Balazs Varga" initials="B." surname="Varga"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-i | |||
<organization>Ericsson</organization> | etf-detnet-mpls-over-ip-preof-11" number="9566" ipr="trust200902" submissionType | |||
<address> | ="IETF" obsoletes="" updates="" xml:lang="en" tocInclude="true" consensus="true" | |||
<postal> | symRefs="true" sortRefs="true" version="3"> | |||
<front> | ||||
<title abbrev="DetNet PREOF via MPLS over UDP/IP"> | ||||
Deterministic Networking (DetNet) Packet Replication, Elimination, and Order | ||||
ing Functions (PREOF) via MPLS over UDP/IP</title> | ||||
<seriesInfo name="RFC" value="9566"/> | ||||
<author fullname="Balazs Varga" initials="B." surname="Varga"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<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 40 ¶ | |||
<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="Andrew G. Malis" initials="A." surname="Malis"> | <author fullname="Andrew G. Malis" initials="A." surname="Malis"> | |||
<organization>Malis Consulting</organization> | <organization>Malis Consulting</organization> | |||
<address> | <address> | |||
<email>agmalis@gmail.com</email> | <email>agmalis@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<!-- | <date month="April" 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> | <keyword>DetNet</keyword> | |||
<t> | <keyword>IP Data Plane</keyword> | |||
This document describes how DetNet IP data plane can support the Packet | <keyword>Service sub-layer</keyword> | |||
<keyword>Replication</keyword> | ||||
<keyword>Elimination</keyword> | ||||
<keyword>Ordering</keyword> | ||||
<abstract> | ||||
<t> | ||||
This document describes how the DetNet IP data plane can support the Packet | ||||
Replication, Elimination, and Ordering Functions (PREOF) built on | Replication, Elimination, and Ordering Functions (PREOF) built on | |||
the existing MPLS PREOF solution defined for DetNet MPLS | the existing MPLS PREOF solution defined for the DetNet MPLS | |||
Data Plane and the mechanisms defined by MPLS-over-UDP technology. | data plane and the mechanisms defined by MPLS-over-UDP technology. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | ||||
<middle> | <section anchor="sec_intro" numbered="true" toc="default"> | |||
<section title="Introduction" anchor="sec_intro"> | <name>Introduction</name> | |||
<t> | <t> | |||
The DetNet Working Group has defined Packet Replication (PRF), Packet | The DetNet Working Group has defined Packet Replication (PRF), Packet | |||
Elimination (PEF) and Packet Ordering (POF) functions | Elimination (PEF), and Packet Ordering (POF) Functions | |||
(represented as PREOF) to provide | (represented as PREOF) to provide | |||
service protection by the DetNet service sub-layer | service protection by the DetNet service sub-layer | |||
<xref target="RFC8655"/>. The PREOF service protection method relies on | <xref target="RFC8655" format="default"/>. The PREOF service protection method relies on | |||
copies of the same packet sent over multiple maximally disjoint paths | copies of the same packet sent over multiple maximally disjoint paths | |||
and uses sequencing information to eliminate duplicates. A possible | and uses sequencing information to eliminate duplicates. A possible | |||
implementation of the PRF and PEF functions is described in | implementation of PRF and PEF is described in | |||
<xref target="IEEE8021CB"/> and the related YANG data model is defined | <xref target="IEEE8021CB" format="default"/>, and the related YANG data | |||
in <xref target="IEEEP8021CBcv"/>. A possible implementation of the POF | model is defined | |||
function is described in <xref target="I-D.ietf-detnet-pof"/>. | in <xref target="IEEE8021CBcv" format="default"/>. A possible implementa | |||
<xref target="PREOF-scene"/> shows a DetNet flow on which PREOF functions | tion of POF | |||
is described in <xref target="RFC9550" format="default"/>. | ||||
<xref target="PREOF-scene" format="default"/> shows a DetNet flow on which | ||||
PREOF | ||||
are applied during forwarding from the source to the destination. | are applied during forwarding from the source to the destination. | |||
</t> | </t> | |||
<figure anchor="PREOF-scene"> | ||||
<figure title="PREOF scenario in a DetNet network" anchor="PREOF-scene"> | <name>PREOF Scenario in a DetNet Network</name> | |||
<artwork align="center"><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
+------------+ | +------------+ | |||
+---------------E1---+ | | | +---------------E1---+ | | | |||
+---+ | | +---R3---+ | +---+ | +---+ | | +---R3---+ | +---+ | |||
|src|------R1 +---+ | E3----O----+dst| | |src|------R1 +---+ | E3----O----+dst| | |||
+---+ | | E2-------+ +---+ | +---+ | | E2-------+ +---+ | |||
+----------R2 | | +----------R2 | | |||
+-----------------+ | +-----------------+ | |||
R: replication function (PRF) | R: Replication Function (PRF) | |||
E: elimination function (PEF) | E: Elimination Function (PEF) | |||
O: ordering function (POF) | O: Ordering Function (POF) | |||
]]> | ]]></artwork> | |||
</artwork></figure> | </figure> | |||
<t> | ||||
<t> | In general, the use of PREOF require sequencing information to | |||
In general, the use of PREOF functions require sequencing information to | ||||
be included in the packets of a DetNet compound flow. This can be done | be included in the packets of a DetNet compound flow. This can be done | |||
by adding a sequence number or time stamp as part of DetNet encapsulatio n. | by adding a sequence number or timestamp as part of DetNet encapsulation . | |||
Sequencing information is typically added once, at or close to the sourc e. | Sequencing information is typically added once, at or close to the sourc e. | |||
</t> | </t> | |||
<t> | <t> | |||
The DetNet MPLS data plane <xref target="RFC8964"/> specifies how | The DetNet MPLS data plane <xref target="RFC8964" format="default"/> specif | |||
ies how | ||||
sequencing information is encoded in the MPLS header. However, the DetNe t | sequencing information is encoded in the MPLS header. However, the DetNe t | |||
IP data plane described in <xref target="RFC8939"/> does not specify how | IP data plane described in <xref target="RFC8939" format="default"/> doe s not specify how | |||
sequencing information can be encoded in the IP packet. This document | sequencing information can be encoded in the IP packet. This document | |||
provides sequencing information to DetNet IP nodes, so it results | provides sequencing information to DetNet IP nodes, so it results | |||
in an improved version of the DetNet IP data plane. As suggested by | in an improved version of the DetNet IP data plane. As suggested by | |||
<xref target="RFC8938"/>, the solution uses existing standardized header | <xref target="RFC8938" format="default"/>, the solution uses existing st | |||
s | andardized headers | |||
and encapsulations. The improvement is achieved by re-using the DetNet | and encapsulations. The improvement is achieved by reusing the DetNet | |||
MPLS over UDP/IP data plane <xref target="RFC9025"/> with the restrictio | MPLS-over-UDP/IP data plane <xref target="RFC9025" format="default"/> wi | |||
n | th the restriction | |||
of using zero F-labels. | of using zero F-Labels. | |||
</t> | </t> | |||
</section> | ||||
</section> <!-- end of introduction --> | ||||
<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"/>, and it is assumed that the reader | |||
to be familiar with that document and its terminology. | is | |||
</t> | familiar with that document and its terminology. | |||
</section> | </t> | |||
</section> | ||||
<section title="Abbreviations"> | <section numbered="true" toc="default"> | |||
<t> | <name>Abbreviations</name> | |||
<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="14"> | |||
<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> | ||||
<!-- <section title="Requirements Language"> | <dd>Packet Replication Function</dd> | |||
<t> | </dl> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | </section> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | </section> | |||
"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" title="Requirements for adding PREOF to DetNet IP"> | <section anchor="req-on-pof" numbered="true" toc="default"> | |||
<t> | <name>Requirements for Adding PREOF to DetNet IP</name> | |||
<t> | ||||
The requirements for adding PREOF to DetNet IP are: | The requirements for adding PREOF to DetNet IP are: | |||
<list style="symbols"> | </t> | |||
<t>to reuse existing DetNet data plane solutions (e.g., | <ul spacing="normal"> | |||
<xref target="RFC8964"/>, <xref target="RFC9025"/>). </t> | <li> | |||
<t>to allow the DetNet service sub-layer for IP packet switched | <t>to reuse existing DetNet data plane solutions (e.g., | |||
<xref target="RFC8964" format="default"/>, <xref target="RFC9025 | ||||
" format="default"/>), and</t> | ||||
</li> | ||||
<li> | ||||
<t>to allow the DetNet service sub-layer for IP packet-switched | ||||
networks with minimal implementation effort. </t> | networks with minimal implementation effort. </t> | |||
</list> | </li> | |||
</t> | </ul> | |||
<t> | <t> | |||
The described solution practically gains from MPLS header fields without | The described solution leverages MPLS header fields without | |||
requiring the support of the MPLS forwarding plane. | requiring the support of the MPLS forwarding plane. | |||
</t> | </t> | |||
</section> <!-- end of requirements --> | </section> | |||
<section anchor="pof-alg" title="Adding PREOF to DetNet IP"> | <section anchor="pof-alg" numbered="true" toc="default"> | |||
<section anchor="preof-relations" title="Solution Basics"> | <name>Adding PREOF to DetNet IP</name> | |||
<t> | <section anchor="preof-relations" numbered="true" toc="default"> | |||
The DetNet IP encapsulation supporting DetNet Service sub-layer is base | <name>Solution Basics</name> | |||
d | <t> | |||
The DetNet IP encapsulation supporting the DetNet service sub-layer is | ||||
based | ||||
on the "UDP tunneling" concept. The solution creates a set of underlay | on the "UDP tunneling" concept. The solution creates a set of underlay | |||
UDP/IP tunnels between an overlay set of DetNet relay nodes. | UDP/IP tunnels between an overlay set of DetNet relay nodes. | |||
</t> | </t> | |||
<t> | <t> | |||
At the edge of a PREOF capable DetNet IP | At the edge of a PREOF-capable DetNet IP | |||
domain the DetNet flow is encapsulated in an UDP packet containing the | domain, the DetNet flow is encapsulated in a UDP packet containing the | |||
sequence number used by PREOF functions within the domain. This solutio | sequence number used by PREOF within the domain. This solution | |||
n | ||||
maintains the 6-tuple-based DetNet flow identification in DetNet transi t | maintains the 6-tuple-based DetNet flow identification in DetNet transi t | |||
nodes, which operate at the DetNet forwarding sub-layer between the Det Net | nodes, which operate at the DetNet forwarding sub-layer between the Det Net | |||
service sub-layer nodes; therefore, it is compatible with | service sub-layer nodes; therefore, it is compatible with | |||
<xref target="RFC8939"/>. <xref target="PREOF-IP-basics"/> shows how th | <xref target="RFC8939" format="default"/>. <xref target="PREOF-IP-basic | |||
e | s" format="default"/> shows how the | |||
PREOF capable DetNet IP data plane fits into the DetNet sub-layers. | PREOF-capable DetNet IP data plane fits into the DetNet sub-layers. | |||
</t> | </t> | |||
<figure anchor="PREOF-IP-basics"> | ||||
<figure title="PREOF capable DetNet IP data plane" anchor="PREOF-IP-basics"> | <name>PREOF-Capable DetNet IP Data Plane</name> | |||
<artwork align="center"><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
DetNet IP | DetNet IP | |||
. | . | |||
. | . | |||
+------------+ | +------------+ | |||
| Service | d-CW, Service-ID (S-label) | | Service | d-CW, Service-ID (S-Label) | |||
+------------+ | +------------+ | |||
| Forwarding | UDP/IP Header | | Forwarding | UDP/IP Header | |||
+------------+ | +------------+ | |||
*d-CW: DetNet Control Word | *d-CW: DetNet Control Word | |||
]]> | ]]></artwork> | |||
</artwork></figure> | </figure> | |||
</section> | ||||
</section> <!-- end of Solution basics --> | ||||
<section anchor="pof-blocks" title="Encapsulation"> | <section anchor="pof-blocks" numbered="true" toc="default"> | |||
<t> | <name>Encapsulation</name> | |||
The PREOF capable DetNet IP encapsulation builds on encapsulating | <t> | |||
DetNet PseudoWire (PW) directly over UDP. That is, it combines DetNet MP | The PREOF-capable DetNet IP encapsulation builds on encapsulating | |||
LS | DetNet pseudowire (PW) directly over UDP. That is, it combines DetNet MP | |||
<xref target="RFC8964"/> with DetNet MPLS-in-UDP <xref target="RFC9025"/ | LS | |||
>, | <xref target="RFC8964" format="default"/> with DetNet MPLS-in-UDP <xref | |||
without using any F-Labels as shown in <xref target="PREOF-IP-encap"/>. | target="RFC9025" format="default"/>, | |||
without using any F-Labels, as shown in <xref target="PREOF-IP-encap" fo | ||||
rmat="default"/>. | ||||
DetNet flows are identified at the receiving DetNet service sub-layer | DetNet flows are identified at the receiving DetNet service sub-layer | |||
processing node via the S-Label and/or the UDP/IP header information. | processing node via the S-Label and/or the UDP/IP header information. | |||
Sequencing information for PREOF is provided by the DetNet Control Word | Sequencing information for PREOF is provided by the DetNet Control Word | |||
(d-CW) as per <xref target="RFC8964"/>. The S-label is used to identify | (d-CW) per <xref target="RFC8964" format="default"/>. The S-Label is use d to identify | |||
both the DetNet flow and the DetNet App-flow type. The UDP tunnel is use d | both the DetNet flow and the DetNet App-flow type. The UDP tunnel is use d | |||
to direct the packet across the DetNet domain to the next DetNet service | to direct the packet across the DetNet domain to the next DetNet service | |||
sub-layer processing node. | sub-layer processing node. | |||
</t> | </t> | |||
<figure anchor="PREOF-IP-encap"> | ||||
<figure title="PREOF capable DetNet IP encapsulation" anchor="PREOF-IP-encap"> | <name>PREOF-Capable DetNet IP Encapsulation</name> | |||
<artwork align="center"><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
+---------------------------------+ | +---------------------------------+ | |||
| | | | | | |||
| DetNet App-Flow | | | DetNet App-Flow | | |||
| (original IP) Packet | | | (Original IP) Packet | | |||
| | | | | | |||
+---------------------------------+ <--\ | +---------------------------------+ <--\ | |||
| DetNet Control Word | | | | DetNet Control Word | | | |||
+---------------------------------+ +--> PREOF capable | +---------------------------------+ +--> PREOF-capable | |||
| Service-ID (S-Label) | | DetNet IP data | | Service-ID (S-Label) | | DetNet IP data | |||
+---------------------------------+ | plane encapsulation | +---------------------------------+ | plane encapsulation | |||
| UDP Header | | | | UDP Header | | | |||
+---------------------------------+ | | +---------------------------------+ | | |||
| IP Header | | | | IP Header | | | |||
+---------------------------------+ <--/ | +---------------------------------+ <--/ | |||
| Data-Link | | | Data-Link | | |||
+---------------------------------+ | +---------------------------------+ | |||
| Physical | | | Physical | | |||
+---------------------------------+ | +---------------------------------+ | |||
]]> | ]]></artwork> | |||
</artwork></figure> | </figure> | |||
</section> | ||||
</section> <!-- end of Encapsulation --> | ||||
<section anchor="PREOF-IP-proc" title="Packet Processing"> | <section anchor="PREOF-IP-proc" numbered="true" toc="default"> | |||
<t> | <name>Packet Processing</name> | |||
IP ingress and egress nodes of the PREOF capable DetNet IP domain | <t> | |||
IP ingress and egress nodes of the PREOF-capable DetNet IP domain | ||||
add and remove a DetNet service-specific d-CW and Service-ID (i.e., | add and remove a DetNet service-specific d-CW and Service-ID (i.e., | |||
S-Label). Relay nodes can change Service-ID values when processing a | S-Label). Relay nodes can change Service-ID values when processing a | |||
DetNet flow, i.e., incoming and outgoing Service-IDs of a DetNet flow | DetNet flow, i.e., incoming and outgoing Service-IDs of a DetNet flow | |||
can be different. Service-ID values are provisioned per DetNet | can be different. Service-ID values are provisioned per DetNet | |||
service via configuration, e.g., via the Controller Plane described in | service via configuration, e.g., via the Controller Plane described in | |||
<xref target="RFC8938"/>. In some PREOF topologies, the node performing | <xref target="RFC8938" format="default"/>. In some PREOF topologies, the | |||
replication sends the packets to multiple nodes performing e.g., PEF or | node performing | |||
POF and | replication sends the packets to multiple nodes performing, e.g., PEF or | |||
POF, and | ||||
the replication node can use different Service-ID values for the | the replication node can use different Service-ID values for the | |||
different member flows for the same DetNet service. | different member flows for the same DetNet service. | |||
</t> | </t> | |||
<t> | <t> | |||
Note, that Service-IDs is a local ID on the receiver side providing identif | Note that the Service-ID is a local ID on the receiver side that identifies | |||
ication | the DetNet flow at the downstream DetNet service sub-layer receiver. | |||
of the DetNet flow at the downstream DetNet service sub-layer receiver. | </t> | |||
</t> | </section> | |||
</section> <!-- end of Packet processing --> | ||||
<section anchor="aggr" title="Flow Aggregation"> | <section anchor="aggr" numbered="true" toc="default"> | |||
<t> | <name>Flow Aggregation</name> | |||
<t> | ||||
Two methods can be used for flow aggregation: | Two methods can be used for flow aggregation: | |||
<list style="symbols"> | </t> | |||
<t>aggregation using same UDP tunnel, </t> | <ul spacing="normal"> | |||
<t>aggregating DetNet flows as a new DetNet flow. </t> | <li> | |||
</list> | <t>aggregation using same UDP tunnel, and </t> | |||
</t> | </li> | |||
<t> | <li> | |||
In the first case, the different DetNet PseudoWires use the same UDP tunnel | <t>aggregation of DetNet flows as a new DetNet flow. </t> | |||
, so they | </li> | |||
</ul> | ||||
<t> | ||||
In the first method, the different DetNet pseudowires use the same UDP tunn | ||||
el, so they | ||||
are treated as a single (aggregated) flow at the forwarding sub-layer. A t the | are treated as a single (aggregated) flow at the forwarding sub-layer. A t the | |||
service sub-layer, each flow uses a different Service ID | service sub-layer, each flow uses a different Service-ID | |||
(see <xref target="PREOF-IP-encap"/> ). | (see <xref target="PREOF-IP-encap" format="default"/>). | |||
</t> | </t> | |||
<t> | <t> | |||
For the second option, an additional hierarchy is created thanks to an | For the second method, an additional hierarchy is created by | |||
additional Service-ID and d-CW tuple added to the encapsulation. | adding an additional Service-ID and d-CW tuple to the encapsulation. | |||
The Aggregate-ID is a special case of a Service-ID, | The Aggregate-ID is a special case of a Service-ID, | |||
whose properties are known only at the aggregation and de-aggregation | whose properties are known only at the aggregation and deaggregation | |||
end points. It is a property of the Aggregate-ID that it is followed by a | end points. It is a property of the Aggregate-ID that it is followed by a | |||
d-CW followed by a Service-ID/d-CW tuple. | d-CW followed by a Service-ID/d-CW tuple. | |||
<xref target="PREOF-IP-aggr"/> shows the encapsulation in case of | <xref target="PREOF-IP-aggr" format="default"/> shows the encapsulation in the case of | |||
aggregation. | aggregation. | |||
</t> | </t> | |||
<figure anchor="PREOF-IP-aggr"> | ||||
<figure title="Aggregating DetNet flows as a new DetNet flow" anchor="PREOF-IP- | <name>Aggregating DetNet Flows as a New DetNet Flow</name> | |||
aggr"> | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
<artwork align="center"><![CDATA[ | ||||
+---------------------------------+ | +---------------------------------+ | |||
| | | | | | |||
| DetNet App-Flow | | | DetNet App-Flow | | |||
| Payload Packet | | | Payload Packet | | |||
| | | | | | |||
+---------------------------------+ <--\ | +---------------------------------+ <--\ | |||
| DetNet Control Word | | | | DetNet Control Word | | | |||
+---------------------------------+ +--> PREOF capable | +---------------------------------+ +--> PREOF-capable | |||
| Service-ID (S-Label) | | DetNet IP data | | Service-ID (S-Label) | | DetNet IP data | |||
+---------------------------------+ | plane encapsulation | +---------------------------------+ | plane encapsulation | |||
| DetNet Control Word | | | | DetNet Control Word | | | |||
+---------------------------------+ | | +---------------------------------+ | | |||
| Aggregate-ID (A-Label) | | | | Aggregate-ID (A-Label) | | | |||
+---------------------------------+ | | +---------------------------------+ | | |||
| UDP Header | | | | UDP Header | | | |||
+---------------------------------+ | | +---------------------------------+ | | |||
| IP Header | | | | IP Header | | | |||
+---------------------------------+ <--/ | +---------------------------------+ <--/ | |||
| Data-Link | | | Data-Link | | |||
+---------------------------------+ | +---------------------------------+ | |||
| Physical | | | Physical | | |||
+---------------------------------+ | +---------------------------------+ | |||
]]> | ]]></artwork> | |||
</artwork></figure> | </figure> | |||
<t> | <t> | |||
The option used for aggregation is known by configuration of the | The aggregation method is configured in the | |||
aggregation/de-aggregation nodes. | aggregation/deaggregation nodes. | |||
</t> | </t> | |||
<t> | <t> | |||
If several Detnet flows are aggregated in a single UDP tunnel, they all need | If several DetNet flows are aggregated in a single UDP tunnel, they all need | |||
to follow the same path in the network. | to follow the same path in the network. | |||
</t> | </t> | |||
</section> <!-- end of Flow Aggregation --> | </section> | |||
<section anchor="PREOF-proc" title="PREOF Processing"> | <section anchor="PREOF-proc" numbered="true" toc="default"> | |||
<t> | <name>PREOF Processing</name> | |||
<t> | ||||
A node operating on a received DetNet flow at the DetNet service sub-layer | A node operating on a received DetNet flow at the DetNet service sub-layer | |||
uses the local context associated with a received Service-ID to determin e | uses the local context associated with a received Service-ID to determin e | |||
which local DetNet operation(s) are applied to received packet. A Servi | which local DetNet operation(s) are applied to the received packet. A u | |||
ce-ID | nique Service-ID | |||
can be allocated to be unique and enabling DetNet flow identification | can be allocated and can be used to identify a DetNet flow | |||
regardless of which input interface or UDP tunnel the packet is received | regardless of which input interface or UDP tunnel receives the packet. | |||
. | ||||
It is important to note that Service-ID values are driven by the receive r, | It is important to note that Service-ID values are driven by the receive r, | |||
not the sender. | not the sender. | |||
</t> | </t> | |||
<t> | <t> | |||
The DetNet forwarding sub-layer is supported by the UDP tunnel and is | The DetNet forwarding sub-layer is supported by the UDP tunnel and is | |||
responsible for providing resource allocation and explicit routes. | responsible for providing resource allocation and explicit routes. | |||
</t> | </t> | |||
<t> | <t> | |||
The outgoing PREOF encapsulation and processing can be implemented | The outgoing PREOF encapsulation and processing can be implemented | |||
via the provisioning of UDP and IP header information. | via the provisioning of UDP and IP header information. | |||
Note, when PRF is performed at the DetNet service sub-layer, | Note, when PRF is performed at the DetNet service sub-layer, | |||
there are multiple member flows, and each member flow requires | there are multiple member flows, and each member flow requires | |||
their own Service-ID, UDP and IP header information. The headers for | its own Service-ID, UDP header information, and IP header information. T he headers for | |||
each outgoing packet are formatted according to the configuration | each outgoing packet are formatted according to the configuration | |||
information, and the UDP Source Port value is set to uniquely identify | information, and the UDP Source Port value is set to uniquely identify | |||
the DetNet flow. The packet is then handled as a PREOF capable DetNet | the DetNet flow. The packet is then handled as a PREOF-capable DetNet | |||
IP packet. | IP packet. | |||
</t> | </t> | |||
<t> | <t> | |||
The incoming PREOF processing can be implemented via the provisioning | The incoming PREOF processing can be implemented by assigning | |||
of received Service-ID, UDP and IP header information. The | a Service-ID to the received DetNet flow and processing the information | |||
provisioned information is used to identify incoming app-flows based | in the UDP and IP headers. The | |||
provisioned information is used to identify incoming App-flows based | ||||
on the combination of Service-ID and/or incoming encapsulation header | on the combination of Service-ID and/or incoming encapsulation header | |||
information. | information. | |||
</t> | </t> | |||
</section> <!-- end of PREOF procedures --> | </section> | |||
<section anchor="PREOF-IP-domain" title="PREOF capable DetNet IP domain"> | ||||
<t> | ||||
<xref target="PREOF-domain"/> shows using PREOF in a PREOF capable DetNe | ||||
t | ||||
IP network, where service protection is provided end to end, an not only | ||||
within sub-networks like depicted in Figure 4 of <xref target="RFC8939"/ | ||||
>. | ||||
</t> | ||||
<figure title="PREOF capable DetNet IP domain" anchor="PREOF-domain"> | ||||
<artwork align="center"><![CDATA[ | ||||
<---------- PREOF capable DetNet IP ---------------> | <section anchor="PREOF-IP-domain" numbered="true" toc="default"> | |||
<name>PREOF-Capable DetNet IP Domain</name> | ||||
<t> | ||||
<xref target="PREOF-domain" format="default"/> shows using PREOF in a PR | ||||
EOF-capable DetNet | ||||
IP network, where service protection is provided end to end, and not onl | ||||
y | ||||
within sub-networks, as is depicted in <eref target="https://www.rfc-edi | ||||
tor.org/rfc/rfc8939#figure-4" brackets="angle">Figure 4</eref> of <xref target=" | ||||
RFC8939" format="default"/>. | ||||
</t> | ||||
<figure anchor="PREOF-domain"> | ||||
<name>PREOF-Capable DetNet IP Domain</name> | ||||
<artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
<---------- PREOF-capable DetNet IP ---------------> | ||||
______ | ______ | |||
____ / \__ | ____ / \__ | |||
____ / \__/ \____________ | ____ / \__/ \____________ | |||
+----+ __/ \____/ \ +----+ | +----+ __/ \____/ \ +----+ | |||
|src |_____/ \___| dst| | |src |_____/ \___| dst| | |||
+----+ \_______ DetNet network __________/ +----+ | +----+ \_______ DetNet network __________/ +----+ | |||
\_______ _/ | \_______ _/ | |||
\ __ __/ | \ __ __/ | |||
\_______/ \___/ | \_______/ \___/ | |||
+------------+ | +------------+ | |||
+---------------E1---+ | | | +---------------E1---+ | | | |||
+----+ | | +---R3---+ | +----+ | +----+ | | +---R3---+ | +----+ | |||
|src |------R1 +---+ | E3----O----+ dst| | |src |------R1 +---+ | E3----O----+ dst| | |||
+----+ | | E2-------+ +----+ | +----+ | | E2-------+ +----+ | |||
+----------R2 | | +----------R2 | | |||
+-----------------+ | +-----------------+ | |||
]]> | ]]></artwork> | |||
</artwork></figure> | </figure> | |||
</section> | ||||
</section> <!-- end of PREOF capable DetNet IP domain --> | </section> | |||
</section> <!-- end of Adding PREOF to DetNet IP --> | ||||
<section anchor="ctrl-mngmnt-PREOF-IP" title="Control and Management Plane Param | <section anchor="ctrl-mngmnt-PREOF-IP" numbered="true" toc="default"> | |||
eters"> | <name>Control and Management Plane Parameters</name> | |||
<t> | <t> | |||
The information needed to identify individual and aggregated DetNet flows | The information needed to identify individual and aggregated DetNet flows | |||
is summarized as follows: | is summarized as follows: | |||
<list style="symbols"> | </t> | |||
<t>Service-ID information to be mapped to UDP/IP flows. Note that, for | <ul spacing="normal"> | |||
<li> | ||||
<t>Service-ID information to be mapped to UDP/IP flows. Note that, for | ||||
example, a single Service-ID can map to multiple sets of UDP/IP | example, a single Service-ID can map to multiple sets of UDP/IP | |||
information when PREOF is used.</t> | information when PREOF is used.</t> | |||
<t>IPv4 or IPv6 source address field.</t> | </li> | |||
<t>IPv4 or IPv6 source address prefix length, where a zero | <li> | |||
<t>IPv4 or IPv6 Source Address field.</t> | ||||
</li> | ||||
<li> | ||||
<t>IPv4 or IPv6 source address prefix length, where a zero | ||||
(0) value effectively means that the address field is | (0) value effectively means that the address field is | |||
ignored.</t> | ignored.</t> | |||
<t>IPv4 or IPv6 destination address field.</t> | </li> | |||
<t>IPv4 or IPv6 destination address prefix length, where a | <li> | |||
<t>IPv4 or IPv6 Destination Address field.</t> | ||||
</li> | ||||
<li> | ||||
<t>IPv4 or IPv6 destination address prefix length, where a | ||||
zero (0) effectively means that the address field is | zero (0) effectively means that the address field is | |||
ignored.</t> | ignored.</t> | |||
<t>IPv6 flow label field.</t> | </li> | |||
<t>IPv4 protocol field being equal to "UDP". </t> | <li> | |||
<t>IPv6 (last) next header field being equal to "UDP".</t> | <t>IPv6 Flow Label field.</t> | |||
<t>For the IPv4 Type of Service and IPv6 Traffic Class | </li> | |||
Fields: | <li> | |||
<list style="symbols"> | <t>IPv4 Protocol field being equal to "UDP". </t> | |||
<t>Whether or not the DSCP field is used in flow identification | </li> | |||
<li> | ||||
<t>IPv6 (last) Next Header field being equal to "UDP".</t> | ||||
</li> | ||||
<li> | ||||
<t>For the IPv4 Type of Service and IPv6 Traffic Class | ||||
fields: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>Whether or not the Differentiated Services Code Point (DSCP) fi | ||||
eld is used in flow identification, | ||||
as the use of the DSCP field for flow identificat ion is optional.</t> | as the use of the DSCP field for flow identificat ion is optional.</t> | |||
<t>If the DSCP field is used to identify a flow, then the flow | </li> | |||
<li> | ||||
<t>If the DSCP field is used to identify a flow, then the flow | ||||
identification information (for that flow) includ es a list of | identification information (for that flow) includ es a list of | |||
DSCPs used by the given DetNet flow.</t> | DSCPs used by the given DetNet flow.</t> | |||
</list></t> | </li> | |||
<t>UDP Source Port. Support for both exact and wildcard matching is | </ul> | |||
</li> | ||||
<li> | ||||
<t>UDP Source Port. Support for both exact and wildcard matching is | ||||
required. Port ranges can optionally be used.</t> | required. Port ranges can optionally be used.</t> | |||
<t>UDP Destination Port. Support for both exact and wildcard matching is | </li> | |||
<li> | ||||
<t>UDP Destination Port. Support for both exact and wildcard matching | ||||
is | ||||
required. Port ranges can optionally be used.</t> | required. Port ranges can optionally be used.</t> | |||
<t>For end systems, an optional maximum IP packet size | </li> | |||
<li> | ||||
<t>For end systems, an optional maximum IP packet size | ||||
that should be used for that outgoing DetNet IP flow.</t> | that should be used for that outgoing DetNet IP flow.</t> | |||
</list> | </li> | |||
</ul> | ||||
<t> | ||||
This information is provisioned per DetNet flow via | This information is provisioned per DetNet flow via | |||
configuration, e.g., via the controller plane. | configuration, e.g., via the Controller Plane. | |||
</t> | </t> | |||
<t> | <t> | |||
Ordering of the set of information used to identify an individual | Ordering of the set of information used to identify an individual | |||
DetNet flow can, for example, be used to | DetNet flow can, for example, be used to | |||
provide a DetNet service for a specific UDP flow, with unique Source and | provide a DetNet service for a specific UDP flow, with unique Source and | |||
Destination Port field values, while providing a different service for t he | Destination Port field values, while providing a different service for t he | |||
aggregate of all other flows with that same UDP Destination Port value. | aggregate of all other flows with that same UDP Destination Port value. | |||
</t> | </t> | |||
<t> | <t> | |||
The minimum set of information for the configuration of the DetNet service | The minimum set of information for the configuration of the DetNet service | |||
sub-layer is summarized as follows: | sub-layer is summarized as follows: | |||
<list style="symbols"> | </t> | |||
<t>App-flow identification information. </t> | <ul spacing="normal"> | |||
<t>Sequence number length.</t> | <li> | |||
<t>PREOF + related Service-ID(s).</t> | <t>App-flow identification information </t> | |||
<t>Associated forwarding sub-layer information.</t> | </li> | |||
<t>Service aggregation information.</t> | <li> | |||
</list> | <t>Sequence number length</t> | |||
</t> | </li> | |||
<t> | <li> | |||
<t>Type of PREOF to be executed on the DetNet flow</t> | ||||
</li> | ||||
<li> | ||||
<t>Service-ID(s) used by the member flows</t> | ||||
</li> | ||||
<li> | ||||
<t>Associated forwarding sub-layer information</t> | ||||
</li> | ||||
<li> | ||||
<t>Service aggregation information</t> | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
The minimum set of information for the configuration of the DetNet forwardi ng | The minimum set of information for the configuration of the DetNet forwardi ng | |||
sub-layer is summarized as follows: | sub-layer is summarized as follows: | |||
<list style="symbols"> | </t> | |||
<t>UDP tunnel specific information. </t> | <ul spacing="normal"> | |||
<t>Traffic parameters.</t> | <li> | |||
</list> | <t>UDP tunnel-specific information </t> | |||
</t> | </li> | |||
<t> | <li> | |||
These parameters are defined in the DetNet Flow and Service information | <t>Traffic parameters</t> | |||
model | </li> | |||
<xref target="RFC9016"/> and the DetNet YANG model. | </ul> | |||
</t> | <t> | |||
<t> | These parameters are defined in the DetNet flow and service information | |||
Note: this document focuses on the use of MPLS over UDP/IP encapsulation th | model | |||
roughout an | <xref target="RFC9016" format="default"/> and the DetNet YANG model. | |||
entire DetNet IP network, making MPLS-based DetNet OAM techniques applic | </t> | |||
able | <t> | |||
<xref target="I-D.ietf-detnet-mpls-oam"/>. | Note: this document focuses on the use of MPLS-over-UDP/IP encapsulation th | |||
roughout an | ||||
entire DetNet IP network, making MPLS-based DetNet Operations, Administr | ||||
ation, and Maintenance (OAM) techniques applicable | ||||
<xref target="RFC9546" format="default"/>. | ||||
Using the described encapsulation only for a portion of a DetNet IP netw ork | Using the described encapsulation only for a portion of a DetNet IP netw ork | |||
that handles the PREOF functionality would complicate OAM. | that handles PREOF would complicate OAM. | |||
</t> | </t> | |||
</section> | ||||
</section> <!-- end of PREOF-IP management --> | ||||
<!-- ===================================================================== --> | ||||
<section title="Security Considerations"> | ||||
<t> | ||||
There are no new DetNet related security considerations introduced by | ||||
this solution. Security considerations of DetNet MPLS <xref target="RFC8 | ||||
964"/> and | ||||
DetNet MPLS over UDP/IP <xref target="RFC9025"/> apply. | ||||
</t> | ||||
</section> | ||||
<section anchor="iana" title="IANA Considerations"> | <section numbered="true" toc="default"> | |||
<t> | <name>Security Considerations</name> | |||
This document makes no IANA requests. | <t> | |||
</t> | There are no new DetNet-related security considerations introduced by | |||
</section> | this solution. Security considerations of DetNet MPLS <xref target="RFC8 | |||
964" format="default"/> and | ||||
DetNet MPLS over UDP/IP <xref target="RFC9025" format="default"/> apply. | ||||
<section anchor="acks" title="Acknowledgements"> | </t> | |||
<t> | </section> | |||
Authors extend their appreciation to Stewart Bryant, Pascal Thubert, David Bl | <section anchor="iana" numbered="true" toc="default"> | |||
ack, | <name>IANA Considerations</name> | |||
Shirley Yangfan and Greg Mirsky for their insightful comments and productive | <t> | |||
discussion that helped to improve the document. | This document has no IANA actions. | |||
</t> | </t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.86 | ||||
55.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
938.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
939.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
964.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
016.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
025.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
546.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
</middle> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 550.xml"/> | |||
<back> | <reference anchor="IEEE8021CB"> | |||
<references title="Normative References"> | <front> | |||
<!-- <?rfc include="reference.RFC.2119"?> | <title>IEEE Standard for Local and metropolitan area | |||
<?rfc include="reference.RFC.8174"?> --> | ||||
<?rfc include="reference.RFC.8655"?> | ||||
<?rfc include="reference.RFC.8938"?> | ||||
<?rfc include="reference.RFC.8939"?> | ||||
<?rfc include="reference.RFC.8964"?> | ||||
<?rfc include="reference.RFC.9016"?> | ||||
<?rfc include="reference.RFC.9025"?> | ||||
<?rfc include="reference.I-D.ietf-detnet-mpls-oam"?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include="reference.I-D.ietf-detnet-pof"?> | ||||
<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 | <reference anchor="IEEE8021CBcv"> | |||
CBcv-d1-2.pdf"> | <front> | |||
<front> | <title>IEEE Standard for Local and metropolitan area networks -- Fra | |||
<title>FRER YANG Data Model and Management Information Base Module</ti | me Replication and Elimination for Reliability - Amendment 1: Information Model, | |||
tle> | YANG Data Model, and Management Information Base Module</title> | |||
<author initials="S." surname="Kehrer" fullname="Stephan Kehrer"> | <author> | |||
<organization>IEEE 802.1</organization> | <organization>IEEE</organization> | |||
</author> | </author> | |||
<date month="March" year="2021"/> | <date month="February" year="2022"/> | |||
</front> | </front> | |||
<seriesInfo name="IEEE P802.1CBcv /D1.2" value="P802.1CBcv"/> | <refcontent>Amendment to IEEE Std 802.1CB-2017</refcontent> | |||
<format type="PDF" target="https://www.ieee802.org/1/files/private/cv-dr | <seriesInfo name="IEEE Std" value="802.1CBcv-2021"/> | |||
afts/d1/802-1CBcv-d1-2.pdf"/> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2022.9715061"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
</back> | </references> | |||
<section anchor="acks" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t> | ||||
Authors extend their appreciation to <contact fullname="Stewart Bryant"/>, <c | ||||
ontact fullname="Pascal Thubert"/>, <contact fullname="David Black"/>, | ||||
<contact fullname="Shirley Yangfan"/>, and <contact fullname="Greg Mirsky"/> | ||||
for their insightful comments and productive | ||||
discussion that helped to improve the document. | ||||
</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 80 change blocks. | ||||
381 lines changed or deleted | 444 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |