rfc9633.original.xml | rfc9633.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc> | ||||
<?rfc toc="yes"?> | <!-- pre-edited by ST 03/11/24 --> | |||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | <!-- draft submitted in xml v3 --> | |||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | <!DOCTYPE rfc [ | |||
<?rfc sortrefs="yes"?> | <!ENTITY nbsp " "> | |||
<?rfc comments="yes"?> | <!ENTITY zwsp "​"> | |||
<?rfc inline="yes"?> | <!ENTITY nbhy "‑"> | |||
<?rfc compact="yes"?> | <!ENTITY wj "⁠"> | |||
<?rfc subcompact="no"?> | ]> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | ||||
tf-detnet-yang-20" ipr="trust200902" submissionType="IETF" obsoletes="" updates= | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
"" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" v | tf-detnet-yang-20" number="9633" consensus="true" ipr="trust200902" submissionTy | |||
ersion="3"> | pe="IETF" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth="3" s | |||
<!-- xml2rfc v2v3 conversion 3.7.0 --> | ymRefs="true" sortRefs="true" version="3"> | |||
<front> | <front> | |||
<title abbrev="draft-ietf-detnet-yang-20">Deterministic Networking | <title abbrev="DetNet YANG Data Model">Deterministic Networking | |||
(DetNet) YANG Model</title> | (DetNet) YANG Data Model</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-detnet-yang-20"/> | ||||
<!-- [rfced] Document title: We updated the abbreviated (PDF output) | ||||
and full document title per our standard process (no draftstrings) | ||||
and per guidance from Benoit Claise and the YANG Doctors that "YANG | ||||
module" and "YANG data model" are preferred. Please let us know any | ||||
concerns. | ||||
Original (XML and output files): | ||||
<title abbrev="draft-ietf-detnet-yang-20">Deterministic Networking | ||||
(DetNet) YANG Model</title> | ||||
... | ||||
Deterministic Networking (DetNet) YANG Model | ||||
Currently (PDF (running title) and output files): | ||||
DetNet YANG Data Model | ||||
... | ||||
Deterministic Networking (DetNet) YANG Data Model --> | ||||
<seriesInfo name="RFC" value="9633"/> | ||||
<author fullname="Xuesong Geng" initials="X." surname="Geng"> | <author fullname="Xuesong Geng" initials="X." surname="Geng"> | |||
<organization>Huawei Technologies</organization> | <organization>Huawei Technologies</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<email>gengxuesong@huawei.com</email> | <email>gengxuesong@huawei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yeoncheol Ryoo" initials="Y." surname="Ryoo"> | <author fullname="Yeoncheol Ryoo" initials="Y." surname="Ryoo"> | |||
<organization>ETRI</organization> | <organization>ETRI</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email>dbduscjf@etri.re.kr</email> | <email>dbduscjf@etri.re.kr</email> | |||
<uri/> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Don Fedyk" initials="D." surname="Fedyk"> | <author fullname="Don Fedyk" initials="D." surname="Fedyk"> | |||
<organization>LabN Consulting, L.L.C.</organization> | <organization>LabN Consulting, L.L.C.</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email>dfedyk@labn.net</email> | <email>dfedyk@labn.net</email> | |||
<uri/> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Reshad Rahman" initials="R." surname="Rahman"> | <author fullname="Reshad Rahman" initials="R." surname="Rahman"> | |||
<organization>Equinix</organization> | <organization>Equinix</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email>reshad@yahoo.com</email> | <email>reshad@yahoo.com</email> | |||
<uri/> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Zhenqiang Li" initials="Z." surname="Li"> | <author fullname="Zhenqiang Li" initials="Z." surname="Li"> | |||
<organization>China Mobile</organization> | <organization>China Mobile</organization> | |||
<address> | <address> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<email>lizhenqiang@chinamobile.com</email> | <email>lizhenqiang@chinamobile.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date year="2024" month="August"/> | |||
<area>RTG</area> | ||||
<workgroup>detnet</workgroup> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in the | ||||
title) for use on <https://www.rfc-editor.org/search>. --> | ||||
<!-- [rfced] Abstract and subsequent: We have received guidance from | ||||
Benoit Claise and the YANG Doctors that "YANG module" and "YANG data | ||||
model" are preferred. We have updated the text accordingly to use | ||||
these forms. Please review, and let us know any concerns. --> | ||||
<abstract> | <abstract> | |||
<t>This document contains the specification for the Deterministic Networki ng | <t>This document contains the specification for the Deterministic Networki ng | |||
YANG Model for configuration and operational data of DetNet Flows. | (DetNet) YANG data model for configuration and operational data for DetNet | |||
The model allows for provisioning of | flows. | |||
end-to-end DetNet service on devices along the path without dependency on | The model allows the provisioning of an | |||
any | end-to-end DetNet service on devices along the path without depending on a | |||
ny | ||||
signaling protocol. It also specifies operational status for flows. | signaling protocol. It also specifies operational status for flows. | |||
</t> | </t> | |||
<t>The YANG module defined in this document conforms to the Network | <t>The YANG module defined in this document conforms to the Network | |||
Management Datastore Architecture (NMDA).</t> | Management Datastore Architecture (NMDA).</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>DetNet (Deterministic Networking) provides a capability to carry | <t>DetNet (Deterministic Networking) provides the ability to carry | |||
specified unicast or multicast data flows for real-time applications | specified unicast or multicast data flows for real-time applications | |||
with extremely low packet loss rates and assured maximum end-to-end | with extremely low packet loss rates and assured maximum end-to-end | |||
delivery latency. A description of the general background and concepts | delivery latency. A description of the general background and concepts | |||
of DetNet can be found in <xref target="RFC8655" format="default"/>.</t> | of DetNet can be found in <xref target="RFC8655" format="default"/>.</t> | |||
<t>This document defines a YANG model for DetNet based on YANG data | <t>This document defines a YANG data model for DetNet based on YANG data | |||
types and modeling language defined in <xref target="RFC6991" format="defa ult"/> and | types and modeling language defined in <xref target="RFC6991" format="defa ult"/> and | |||
<xref target="RFC7950" format="default"/>. DetNet service, which is design | <xref target="RFC7950" format="default"/>.</t> | |||
ed for | ||||
describing the characteristics of services being provided for | <t>This document also includes the following:</t> | |||
application flows over a network, and DetNet configuration, which is | ||||
designed for DetNet flow path establishment, flow status reporting, and | <ul spacing="normal"> | |||
DetNet functions configuration in order to achieve end-to-end bounded | <li>The DetNet service, which is designed to | |||
latency and zero congestion loss, are both included in this | describe the characteristics of services being provided for | |||
document.</t> | application flows over a network.</li> | |||
<t> This Yang model is scoped to the description of the | <li>DetNet configuration, which is | |||
designed to provide DetNet flow path establishment, flow status reporting, | ||||
and | ||||
configuration of DetNet functions in order to achieve end-to-end bounded | ||||
latency and zero congestion loss.</li> | ||||
</ul> | ||||
<t> This YANG data model is scoped to the description of the | ||||
aggregation/disaggregation and data plane capabilities of the DetNet data | aggregation/disaggregation and data plane capabilities of the DetNet data | |||
planes defined in the DetNet Architecture | planes defined in "<xref target="RFC8655" format="title"/>" <xref target=" | |||
<xref target="RFC8655" format="default"> </xref> | RFC8655" format="default"/> | |||
and DetNet Framework <xref target="RFC8938" format="default"> </xref>. | and "<xref target="RFC8938" format="title"/>" <xref target="RFC8938" forma | |||
t="default"/>. | ||||
DetNet operates at the IP layer and delivers service over lower-layer | DetNet operates at the IP layer and delivers service over lower-layer | |||
technologies such as MPLS and IEEE 802.1 Time-Sensitive Networking (TSN). | technologies such as MPLS and IEEE 802.1 Time-Sensitive Networking (TSN). | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="include"> | <section anchor="abbreviations" numbered="true" toc="include"> | |||
<name slugifiedName="name-abbreviations">Abbreviations</name> | <name>Abbreviations</name> | |||
<t indent="0"> | <t>The following abbreviations are used in this document: | |||
The following abbreviations are used in this document: | ||||
</t> | </t> | |||
<dl newline="false" spacing="normal" indent="14"> | <dl newline="false" spacing="normal"> | |||
<dt>PEF</dt> | <dt>PEF:</dt> | |||
<dd>Packet Elimination Function</dd> | <dd>Packet Elimination Function</dd> | |||
<dt>PRF</dt> | <dt>POF:</dt><dd>Packet Ordering Function</dd> | |||
<dt>PRF:</dt> | ||||
<dd>Packet Replication Function</dd> | <dd>Packet Replication Function</dd> | |||
<dt>PEOF</dt> | <dt>PEOF:</dt> | |||
<dd>Packet Elimination and Ordering Functions</dd> | <dd>Packet Elimination and Ordering Functions</dd> | |||
<dt>PERF</dt> | <dt>PERF:</dt> | |||
<dd>Packet Elimination and Replication Functions</dd> | <dd>Packet Elimination and Replication Functions</dd> | |||
<dt>PREOF</dt> | <dt>PREOF:</dt> | |||
<dd>Packet Replication, Elimination and Ordering Functions</dd> | <dd>Packet Replication, Elimination, and Ordering Functions</dd> | |||
<dt>MPLS</dt> | <dt>MPLS:</dt> | |||
<dd>Multiprotocol Label Switching</dd> | <dd>Multiprotocol Label Switching</dd> | |||
</dl> | </dl> | |||
<!-- [rfced] Section 2: We do not see "PEOF", "Packet Elimination | ||||
and Ordering", "PERF", or "Packet Elimination and Replication" used | ||||
elsewhere in this document, elsewhere in Cluster 505 | ||||
(https://www.rfc-editor.org/cluster_info.php?cid=C505), or in | ||||
any published RFC to date. | ||||
We only see one instance of "the elimination and replication | ||||
process", used generally, in RFC 8964. We could not find any | ||||
instances of uppercase or lowercase "Packet Elimination and | ||||
Ordering". | ||||
We see "Packet Replication and Elimination Function (PREF)" in | ||||
draft-thubert-bier-replication-elimination ("BIER-TE extensions for | ||||
Packet Replication and Elimination Function (PREF) and OAM") (listed | ||||
as "Expired"; see | ||||
<https://datatracker.ietf.org/doc/draft-thubert-bier-replication-elimination/>). | ||||
May we remove these two entries? | ||||
Original: | ||||
PEOF Packet Elimination and Ordering Functions | ||||
PERF Packet Elimination and Replication Functions --> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Terminology</name> | <name>Terminology</name> | |||
<t>This document uses the terminology defined in <xref target="RFC8655" fo rmat="default"> </xref>. | <t>This document uses the terminology defined in <xref target="RFC8655" fo rmat="default"> </xref>. | |||
The terms A-label, S-label, and F-label are used in this document | The terms "A-Label", "S-Label", and "F-Label" are used in this document | |||
as defined in <xref target="RFC8964"/>. | as defined in <xref target="RFC8964"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>DetNet YANG Module</name> | <name>DetNet YANG Module</name> | |||
<t>The DetNet YANG module includes DetNet App-flow, | <t>The DetNet YANG module (<xref target="detnet-yang-module"/>) includes D | |||
DetNet Service Sub-layer, and DetNet Forwarding Sub-layer | etNet App-flow, | |||
DetNet service sub-layer, and DetNet forwarding sub-layer | ||||
configuration and operational objects. | configuration and operational objects. | |||
The corresponding attributes used in different sub-layers | The corresponding attributes used in different sub-layers | |||
are defined in <xref target="appyangatt"> </xref> , | are defined in Sections <xref target="appyangatt" format="counter"> < | |||
<xref target="serviceyangatt"> </xref> , | /xref>, | |||
<xref target="forwardingyangatt"> </xref> respectively.</t> | <xref target="serviceyangatt" format="counter"></xref>, and | |||
<xref target="forwardingyangatt" format="counter"></xref>, respect | ||||
ively.</t> | ||||
<t> Layers of the objects typically occur | <t> Layers of the objects typically occur | |||
in the different data instances forming the node types defined in | in the different data instances forming the node types defined in | |||
<xref target="RFC8655" format="default"> </xref>. | <xref target="RFC8655" format="default"> </xref>. | |||
<xref target="table_layer_node" format="default"/> | <xref target="table_layer_node" format="default"/> | |||
illustrates the relationship between data instance node types and the included layers. | illustrates the relationship between data instance node types and the included layers. | |||
Node types are logical roles per DetNet service: a device along one | Node types are logical roles per DetNet service: one | |||
DetNet service can be of one node type, while another service may use | DetNet service may use a device of one node type, while another servic | |||
e may use | ||||
the same device with a different node type. | the same device with a different node type. | |||
This model is a controller based model because a controller or operato | This model is a controller-based model, because a controller or operat | |||
r | or | |||
configures all the devices to form a service. | configures all of the devices to form a service. | |||
</t> | </t> | |||
<figure anchor="table_layer_node" align="left" suppress-title="false"> | <table anchor="table_layer_node" align="left"> | |||
<name slugifiedName="detnet-layer-node-types">DetNet Layers and Node Types | <name>DetNet Layers and Node Types</name> | |||
</name> | <thead> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <tr> | |||
+---------------------------------------------------+ | <th colspan="3" align="center">Data Instance</th> | |||
| Instance | | </tr> | |||
+-----+-----------------+-----------------+---------------+ | <tr> | |||
| |Edge Node | Relay Node | Transit Node | | <th>Edge Node</th> | |||
+-----+-----------------+-----------------+---------------+ | <th>Relay Node</th> | |||
| L |Application | | | | <th>Transit Node</th> | |||
| a +-----------------+-----------------+---------------+ | </tr> | |||
| y |Service Sub-Layer|Service Sub-Layer| | | </thead> | |||
| e +-----------------+-----------------+---------------+ | <tbody> | |||
| r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | <tr> | |||
+-----+-----------------+-----------------+---------------+ | <td>App-Flow Data Layer</td> | |||
<td></td> | ||||
<td></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Service Sub-layer</td> | ||||
<td>Service Sub-layer</td> | ||||
<td></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Forwarding Sub-layer</td> | ||||
<td>Forwarding Sub-layer</td> | ||||
<td>Forwarding Sub-layer</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<!-- [rfced] Section 4: We converted this figure to a table and, | ||||
because "layer" is already mentioned for all items except | ||||
"Application", we changed "Application" to "App-Flow Data Layer", | ||||
per "App-flow data layer" in the "three layer types" paragraph in | ||||
Section 6. Please let us know if this is incorrect. | ||||
Original (dashes are broken in order to avoid xml2rfc's "Double | ||||
hyphen within comment" error): | ||||
+- - - - - - - - - - - - - - - - - - - - - - - - - -+ | ||||
| Instance | | ||||
+- - -+- - - - - - - - -+- - - - - - - - -+- - - - - - - -+ | ||||
| |Edge Node | Relay Node | Transit Node | | ||||
+- - -+- - - - - - - - -+- - - - - - - - -+- - - - - - - -+ | ||||
| L |Application | | | | ||||
| a +- - - - - - - - -+- - - - - - - - -+- - - - - - - -+ | ||||
| y |Service Sub-Layer|Service Sub-Layer| | | ||||
| e +- - - - - - - - -+- - - - - - - - -+- - - - - - - -+ | ||||
| r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | ||||
+- - -+- - - - - - - - -+- - - - - - - - -+- - - - - - - -+ | ||||
Figure 1: DetNet Layers and Node Types | ||||
Currently: | ||||
+======================+======================+==============+ | ||||
| Data Instance | | ||||
+======================+======================+==============+ | ||||
| Edge Node | Relay Node | Transit Node | | ||||
+======================+======================+==============+ | ||||
| App-Flow Data Layer | | | | ||||
+- - - - - - - - - - - +- - - - - - - - - - - +- - - - - - - + | ||||
| Service Sub-layer | Service Sub-layer | | | ||||
+- - - - - - - - - - - +- - - - - - - - - - - +- - - - - - - + | ||||
| Forwarding Sub-layer | Forwarding Sub-layer | Forwarding | | ||||
| | | Sub-layer | | ||||
+- - - - - - - - - - - +- - - - - - - - - - - +- - - - - - - + | ||||
Table 1: DetNet Layers and Node Types --> | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | <t> | |||
All of the layers have ingress/incoming and egress/outgoing operat ions, but any instance | All of the layers have ingress/incoming and egress/outgoing operat ions, but any instance | |||
may be configured as only unidirectional. | may be configured as unidirectional only. | |||
Ingress refers to any DetNet layer where a DetNet context is appli | "Ingress" refers to any DetNet layer where a DetNet context is app | |||
ed. Ingress allows functions such as | lied. Ingress allows functions such as | |||
switching, aggregation and encapsulation. | switching, aggregation, and encapsulation. | |||
Likewise, egress refers to any DetNet layer where a DetNet context | "Egress" refers to any DetNet layer where a DetNet context is remo | |||
is removed. Egress allows | ved. Egress allows | |||
functions such as switching, disaggregation and decapsulation. | functions such as switching, disaggregation, and decapsulation. | |||
This means that each unidirectional | This means that each unidirectional | |||
flow identifier configuration is programmed starting at the ingres s and flow status is | flow identifier configuration is programmed starting at the ingres s and flow status is | |||
reported at ingress on each end. | reported at the ingress on each end. | |||
In the MPLS cases once encapsulated, the IP 6-tuple, see <xref ta | In the case of MPLS, once encapsulated, the IP 6-tuple parameters | |||
rget="RFC8938"/>, | (see <xref target="RFC8938"/>) | |||
parameters may not be required to be programmed again. | may not be required to be programmed again. | |||
In the IP case, without encapsulation, various IP flow id paramete | In the case of IP, without encapsulation, various IP flow identifi | |||
rs must be configured along | cation parameters must be configured along | |||
the flow path. | the flow path. | |||
</t> | </t> | |||
<t> | <t> | |||
In the YANG model the terms source and destination are | In the YANG data model defined in this document, the terms "source | |||
used as flow identifiers whereas ingress and egress refer to a | " and "destination" are | |||
used as flow identifiers, whereas "ingress" and "egress" refer to | ||||
a | ||||
DetNet application direction from the application edge. | DetNet application direction from the application edge. | |||
Ingress is to the DetNet application and egress is from the applic | "Ingress" means "to the DetNet application", and "egress" means "f | |||
ation. | rom the application". | |||
The terms incoming and outgoing generally represent | The terms "incoming" and "outgoing" generally represent | |||
the flow direction towards the remote application. Outgoing is vie | the flow direction towards the remote application. "Outgoing" is v | |||
wed as | iewed as | |||
going down the stack from Application to Service sub-layer to Forw | going down the stack from the application to the service sub-layer | |||
arding sub-layer | to the forwarding sub-layer, | |||
and incoming is the reverse. | and "incoming" indicates the reverse. | |||
Although, | However, | |||
in examples where there is aggregation and disaggregation | in examples (<xref target="Examples"/>) where both aggregation and | |||
outgoing relates to the aggregating output and incoming | disaggregation take place, | |||
"outgoing" relates to the aggregating output and "incoming" | ||||
relates to the disaggregating flows. | relates to the disaggregating flows. | |||
</t> | </t> | |||
<t> | <t> | |||
At the egress point, forwarding information is determined by the | At the egress point, forwarding information is determined by the | |||
App-flow type with all DetNet-related headers removed. The forward | App-flow type with all DetNet-related headers removed. In the case | |||
ing | of IP, the forwarding | |||
information can specify an output port, or set a next-hop-address | information can specify an output port or set a next-hop address. | |||
in case | In the case of | |||
of IP, or set an MPLS label in case of MPLS. | MPLS, it can set an MPLS label. | |||
<!-- [rfced] Section 4: This sentence was difficult to follow. | ||||
We updated it as noted below. If this is incorrect, please | ||||
clarify what "in case of IP" and "in case of MPLS" refer to. | ||||
Original: | ||||
The forwarding | ||||
information can specify an output port, or set a next-hop-address in | ||||
case of IP, or set an MPLS label in case of MPLS. | ||||
Currently: | ||||
In the case of | ||||
IP, the forwarding information can specify an output port or set a | ||||
next-hop address. In the case of MPLS, it can set an MPLS label. --> | ||||
</t> | </t> | |||
<section anchor="appyangatt" numbered="true" toc="default"> | <section anchor="appyangatt" numbered="true" toc="default"> | |||
<name>DetNet Application Flow YANG Attributes</name> | <name>DetNet Application Flow YANG Attributes</name> | |||
<t>DetNet application flow is responsible for mapping between | <t>DetNet application flows are responsible for mapping between | |||
application flows and DetNet flows at the edge node (egress/ingress | application flows and DetNet flows at the edge node (egress/ingress | |||
node). The application flows can be either layer 2 or layer 3 | node). The application flows can be either Layer 2 or Layer 3 | |||
flows. To map a flow at the User Network Interface (UNI), the | flows. To map a flow at the User-Network Interface (UNI), the | |||
corresponding attributes are defined in <xref target="RFC9016" format="d | corresponding attributes defined in <xref target="RFC9016" format="defau | |||
efault"/>.</t> | lt"/> are used.</t> | |||
</section> | </section> | |||
<section anchor="serviceyangatt" numbered="true" toc="default"> | <section anchor="serviceyangatt" numbered="true" toc="default"> | |||
<name>DetNet Service Sub-layer YANG Attributes</name> | <name>DetNet Service Sub-layer YANG Attributes</name> | |||
<t>DetNet service functions, e.g., DetNet tunnel | <t>DetNet service functions, e.g., DetNet tunnel | |||
initialization/termination and service protection, are provided in | initialization/termination and service protection, are provided in | |||
the DetNet service sub-layer. To support these functions, the following | the DetNet service sub-layer. To support these functions, the following | |||
service attributes need to be configured:</t> | service attributes need to be configured:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>DetNet flow identification</li> | <li>DetNet flow identification.</li> | |||
<li>Service function indication, indicates which service function | <li>Service function type. Indicates which service function | |||
will be invoked at a DetNet edge, relay node or end station. | will be invoked at a DetNet edge, relay node, or end station. | |||
(DetNet tunnel initialization or termination are default functions | (DetNet tunnel initialization and termination are default functions | |||
in the DetNet service layer, so there is no need for explicit | in the DetNet service layer, so there is no need to indicate them ex | |||
indication). The corresponding arguments for service functions | plicitly.) The corresponding arguments for service functions | |||
also need to be defined.</li> | also need to be defined.</li> | |||
<!-- [rfced] Section 4.2 and Appendix B.2: Should "service layer" | ||||
and "Forwarding Layer" be "service sub-layer" and "Forwarding | ||||
Sub-layer", per the rest of this document and the rest of Cluster 505 | ||||
(https://www.rfc-editor.org/cluster_info.php?cid=C505)? | ||||
Original (subject-verb disagreement and punctuation have been corrected): | ||||
(DetNet tunnel initialization or termination are default | ||||
functions in the DetNet service layer, so there is no | ||||
need for explicit indication). | ||||
... | ||||
Figure 6: Example B-1 DetNet configuration Forwarding Layer Aggregation --> | ||||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="forwardingyangatt" numbered="true" toc="default"> | <section anchor="forwardingyangatt" numbered="true" toc="default"> | |||
<name>DetNet Forwarding Sub-layer YANG Attributes</name> | <name>DetNet Forwarding Sub-layer YANG Attributes</name> | |||
<t>As defined in <xref target="RFC8655" format="default"/>, DetNet forwa rding sub-layer | <t>As defined in <xref target="RFC8655" format="default"/>, the DetNet f orwarding sub-layer | |||
optionally provides congestion protection for DetNet flows over paths | optionally provides congestion protection for DetNet flows over paths | |||
provided by the underlying network. Explicit route is another | provided by the underlying network. Explicit routes provide another | |||
mechanism that is used by DetNet to avoid temporary interruptions | mechanism used by DetNet to avoid temporary interruptions | |||
caused by the convergence of routing or bridging protocols, and it is | caused by the convergence of routing or bridging protocols. Explicit rou | |||
tes are | ||||
also implemented at the DetNet forwarding sub-layer.</t> | also implemented at the DetNet forwarding sub-layer.</t> | |||
<t>To support congestion protection and explicit route, the following | <t>To support congestion protection and explicit routes, the following | |||
transport layer related attributes are necessary:</t> | transport-layer-related attributes are necessary:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Flow Specification and Traffic Requirements, as described | <li>Flow specification and traffic requirements are as described | |||
in the information model in <xref target="RFC9016" format="default"/ | in the information model provided in <xref target="RFC9016" format=" | |||
>. These may be used for | default"/>. These may be used for | |||
resource reservation, flow shaping, filtering and policing by | resource reservation, flow shaping, filtering, and policing by | |||
a control plane or other network management and control mechanisms. | a control plane or other network management and control mechanisms. | |||
</li> | </li> | |||
<li>Since this model programs the data plane existing explicit route | <li>Since this model programs the data plane, existing explicit route | |||
mechanisms can be reused. If a static MPLS tunnel is used as the | mechanisms can be reused. If a static MPLS tunnel is used as the | |||
transport tunnel, the configuration needs to be at every transit | transport tunnel, the configuration needs to be at every transit | |||
node along the path. For an IP-based path, the static configuration | node along the path. For an IP-based path, the static configuration | |||
is similar to the static MPLS case. This document provides | is similar to the static MPLS case. This document provides | |||
data-plane configuration of IP addresses or MPLS labels | data plane configuration of IP addresses or MPLS labels, | |||
but it does not provide control plane mapping or other | but it does not provide control plane mapping or other | |||
aspects. | aspects. | |||
<!-- [rfced] Section 4.3: We had trouble following the use of | ||||
"other aspects" in this sentence. Would "other techniques" or | ||||
"other configurations" be clearer? | ||||
Original: | ||||
This document | ||||
provides data-plane configuration of IP addresses or MPLS labels | ||||
but it does not provide control plane mapping or other aspects. --> | ||||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>DetNet Flow Aggregation</name> | <name>DetNet Flow Aggregation</name> | |||
<t> | <t> | |||
DetNet provides the capability of flow aggregation to improve | DetNet provides the ability to perform flow aggregation to improve the | |||
scalability of DetNet data, management and control planes. Aggregated | scalability of DetNet data, management, and control planes. Aggregated | |||
flows can be viewed by some DetNet nodes as individual DetNet flows. | flows can be viewed by some DetNet nodes as individual DetNet flows. | |||
When aggregating DetNet flows, the flows should be compatible: if | When aggregating DetNet flows, the flows should be compatible: if | |||
bandwidth reservations are used, the reservation should be a reasonable | bandwidth reservations are used, the reservation should be a reasonable | |||
representation of the individual reservations; if maximum delay bounds | representation of the individual reservations; if maximum delay bounds | |||
are used, the system should ensure that the aggregate does not exceed the | are used, the system should ensure that the aggregate does not exceed the | |||
delay bounds of the individual flows. | delay bounds of the individual flows. | |||
<!-- [rfced] Section 5: We had trouble following the use of both | ||||
"reservations" and "reservation" in this sentence. Will the meaning | ||||
be clear to readers? | ||||
Original: | ||||
When aggregating DetNet flows, the flows should be | ||||
compatible: if bandwidth reservations are used, the reservation | ||||
should be a reasonable representation of the individual reservations; | ||||
if maximum delay bounds are used, the system should ensure that the | ||||
aggregate does not exceed the delay bounds of the individual flows. | ||||
Possibly: | ||||
When aggregating DetNet flows, the flows should be | ||||
compatible: if bandwidth reservations are used, the reservations | ||||
should be reasonable representations of each individual reservation; | ||||
if maximum delay bounds are used, the system should ensure that the | ||||
aggregate does not exceed the delay bounds of the individual flows. --> | ||||
</t> | </t> | |||
<t> | <t> | |||
The DetNet YANG model defined in this document supports DetNet flow | The DetNet YANG data model defined in this document supports DetNet flow | |||
aggregation with the following functions: | aggregation with the following functions: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
Aggregated flow encapsulation/decapsulation/identification | Aggregated flow encapsulation/decapsulation/identification. | |||
</li> | </li> | |||
<li> | <li> | |||
Mapping individual DetNet flows to an aggregated flow | Mapping individual DetNet flows to an aggregated flow. | |||
</li> | </li> | |||
<li> | <li> | |||
Changing traffic specification parameters for aggregated flows | Changing traffic specification parameters for aggregated flows. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
The following cases of DetNet aggregation are supported: | The following DetNet aggregation scenarios are supported: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
Ingress node aggregates App flows into a service sub-layer of DetNet flow | The ingress node aggregates App-flows into a service sub-layer of a DetNe t flow. | |||
</li> | </li> | |||
<li> | <li> | |||
In ingress node, the service sub-layers of DetNet flows are aggregated in to a forwarding sub-layer | In the ingress node, the service sub-layers of DetNet flows are aggregate d into a forwarding sub-layer. | |||
</li> | </li> | |||
<li> | <li> | |||
In ingress node, the service sub-layers of DetNet flows are aggregated in to a service sub-layer of an aggregated DetNet flow | In the ingress node, the service sub-layers of DetNet flows are aggregate d into a service sub-layer of an aggregated DetNet flow. | |||
</li> | </li> | |||
<li> | <li> | |||
Relay node aggregates the forwarding sub-layers DetNet flows into a forwa rding sub-layer | The relay node aggregates the forwarding sub-layers of DetNet flows into a forwarding sub-layer. | |||
</li> | </li> | |||
<li> | <li> | |||
Relay node aggregates the service sub-layers of DetNet flows into a forwa rding sub-layer | The relay node aggregates the service sub-layers of DetNet flows into a f orwarding sub-layer. | |||
</li> | </li> | |||
<li> | <li> | |||
Relay node aggregates the service sub-layers of DetNet flows into a servi ce sub-layer of Aggregated DetNet flow | The relay node aggregates the service sub-layers of DetNet flows into a s ervice sub-layer of an aggregated DetNet flow. | |||
</li> | </li> | |||
<li> | <li> | |||
Relay node aggregates the forwarding sub-layers of DetNet flow into a ser vice sub-layer of Aggregated DetNet flow | The relay node aggregates the forwarding sub-layers of DetNet flows into a service sub-layer of an aggregated DetNet flow. | |||
</li> | </li> | |||
<li> | <li> | |||
Transit node aggregates the forwarding sub-layers of DetNet flows into a forwarding sub-layer | The transit node aggregates the forwarding sub-layers of DetNet flows int o a forwarding sub-layer. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
Traffic requirements and traffic specification may be tracked for | Traffic requirements and the traffic specification may be tracked for | |||
individual or aggregate flows but reserving resources and tracking the | individual or aggregate flows, but reserving resources and tracking the | |||
services in the aggregated flow is out of scope. | services in the aggregated flow are out of scope. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default" anchor="yang-structure"> | |||
<name>DetNet YANG Structure Considerations</name> | <name>DetNet YANG Structure Considerations</name> | |||
<t/> | <t>This diagram shows the general structure of the DetNet YANG data | |||
<t>The picture shows the general structure of the DetNet YANG | model:</t> | |||
Model:</t> | ||||
<!-- [IANA FLAG] "ietf-detnet" used throughout. Wouldn't expect it | ||||
to be changed, but flagging it anyway. --> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
+-----------+ | +-----------+ | |||
|ietf-detnet| | |ietf-detnet| | |||
+-----+-----+ | +-----+-----+ | |||
| | | | |||
+--------------+----------------+------------------+ | +--------------+----------------+------------------+ | |||
| | | | | | | | | | |||
+-----+------+ +-----+------+ +-------+------+ | | +-----+------+ +-----+------+ +-------+------+ | | |||
| App Flows | |service s-l | |forwarding s-l| | | | App- | | Service | | Forwarding | | | |||
+-----+------+ +-----+------+ +-------+------+ | | | Flows | | Sub-layer | | Sub-layer | | | |||
| | | | | +-----+------+ +-----+------+ +-------+------+ | | |||
+-----+------+ +-----+------+ +-------+------+ | | | | | | | |||
| Reference | | Reference | | Reference | | | +-----+------+ +-----+------+ +-------+------+ | | |||
| to Traffic | | to Traffic | | to Traffic | +-------+-------+ | | Reference | | Reference | | Reference | | | |||
| Profile | | Profile | | Profile | |Traffic Profile| | | to Traffic | | to Traffic | | to Traffic | +-------+-------+ | |||
+------------+ +------------+ +--------------+ +---------------+ | | Profile | | Profile | | Profile | |Traffic Profile| | |||
+------------+ +------------+ +--------------+ +---------------+ | ||||
]]></artwork> | ]]></artwork> | |||
<t> | <t> | |||
There are three layer types in the DetNet YANG Model: | There are three layer types in the DetNet YANG data model: | |||
App-flow data layer, | the App-flow data layer, the | |||
service sub-layer and forwarding sub-layer. | service sub-layer, and the forwarding sub-layer. | |||
Additionally, the Traffic parameters are captured in a Traffic pro | Additionally, the traffic parameters are captured in a traffic pro | |||
file | file | |||
that can be referenced by any of the layers. | that can be referenced by any of the layers. | |||
</t> | </t> | |||
<t> | <t> | |||
Below is a summary YANG tree showing the major items. | Below is a summary YANG tree showing the major items. | |||
A complete YANG tree is in section <xref target="Tree"/>. | The complete YANG tree is provided in <xref target="Tree"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
A traffic profile can be created for an application, | A traffic profile can be created for an application, | |||
a service sub-layer or a forwarding sub-layer. | a service sub-layer, or a forwarding sub-layer. | |||
A single profile may be shared by multiple applications/sub-layer. | A single profile may be shared by multiple applications/sub-layers. | |||
Each profile indicates the members currently using that profile. | Each profile indicates the members currently using that profile. | |||
</t> | </t> | |||
<t> | <t> | |||
Depending on which DetNet layers and functions are required, | Depending on which DetNet layers and functions are required, | |||
some or all of the components may be configured. | some or all of the components may be configured. | |||
Examples are shown in <xref target="Examples"/>. | Examples are provided in <xref target="Examples"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>DetNet Configuration YANG Structures</name> | <name>DetNet Configuration YANG Structures</name> | |||
<t> The following is a partial tree representation of the YANG as de fined in | <t> The following is a partial tree representation of the DetNet YAN G data model, per the guidelines provided in | |||
<xref target="RFC8340" format="default"/>. This corresponds to the | <xref target="RFC8340" format="default"/>. This corresponds to the | |||
structure layout in the previous section. | layout of the diagram in <xref target="yang-structure"/>. | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="yangtree"><![CDATA[ | |||
module: ietf-detnet | module: ietf-detnet | |||
+--rw detnet | +--rw detnet | |||
+--rw traffic-profile* [name] | +--rw traffic-profile* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw traffic-requirements | | +--rw traffic-requirements | |||
| +--rw traffic-spec | | +--rw traffic-spec | |||
| +--ro member-app-flow* app-flow-ref | | +--ro member-app-flow* app-flow-ref | |||
| +--ro member-svc-sublayer* service-sub-layer-ref | | +--ro member-svc-sublayer* service-sub-layer-ref | |||
| +--ro member-fwd-sublayer* forwarding-sub-layer-ref | | +--ro member-fwd-sublayer* forwarding-sub-layer-ref | |||
+--rw app-flows | +--rw app-flows | |||
skipping to change at line 434 ¶ | skipping to change at line 567 ¶ | |||
| ... | | ... | |||
+--rw forwarding | +--rw forwarding | |||
+--rw sub-layer* [name] | +--rw sub-layer* [name] | |||
+--rw name string | +--rw name string | |||
+--rw traffic-profile? traffic-profile-ref | +--rw traffic-profile? traffic-profile-ref | |||
+--rw operation? mpls-fwd-operation | +--rw operation? mpls-fwd-operation | |||
+--rw incoming | +--rw incoming | |||
| ... | | ... | |||
+--rw outgoing | +--rw outgoing | |||
... | ... | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default" anchor="detnet-yang-module"> | |||
<name>DetNet Configuration YANG Model</name> | <name>DetNet Configuration YANG Data Model</name> | |||
<t> This YANG model imports typedefs from <xref target="RFC6991"/>, | <t> This YANG data model imports typedefs from <xref target="RFC6991 | |||
"/>, | ||||
<xref target="RFC8519"/>, | <xref target="RFC8519"/>, | |||
<xref target="RFC8294"/>, | <xref target="RFC8294"/>, | |||
<xref target="RFC8343"/>, | <xref target="RFC8343"/>, | |||
and <xref target="IEEE8021Q"/>. | and <xref target="IEEE8021Q"/>. | |||
This YANG model also has the following references to RFCs | This YANG data model also includes the following RFC references, | |||
that are not in the document text body | which are not cited elsewhere in the body of this document: | |||
<xref target="RFC0791"/>, | <xref target="RFC0791"/>, | |||
<xref target="RFC4303"/>, | <xref target="RFC4303"/>, | |||
<xref target="RFC8349"/>, | <xref target="RFC8200"/>, | |||
<xref target="RFC8938"/>, | <xref target="RFC8349"/>, and | |||
<xref target="RFC8960"/>, | <xref target="RFC8960"/>. | |||
<xref target="RFC8964"/>, | ||||
and <xref target="RFC8200"/>. | <!-- [rfced] Section 8: We removed [RFC8938] and [RFC8964] from the | |||
entries that were listed as not being cited elsewhere in this | ||||
document, because (1) [RFC8938] is cited in Sections 1 and 4 and | ||||
(2) [RFC8964] is cited in Section 3 and Appendix B. Please let us | ||||
know any concerns. | ||||
Original: | ||||
This YANG model imports typedefs from [RFC6991], [RFC8519], | ||||
[RFC8294], [RFC8343], and [IEEE8021Q]. This YANG model also has the | ||||
following references to RFCs that are not in the document text body | ||||
[RFC0791], [RFC4303], [RFC8349], [RFC8938], [RFC8960], [RFC8964], and | ||||
[RFC8200]. | ||||
Currently: | ||||
This YANG data model imports typedefs from [RFC6991], [RFC8519], | ||||
[RFC8294], [RFC8343], and [IEEE8021Q]. This YANG data model also | ||||
includes the following RFC references, which are not cited elsewhere | ||||
in the body of this document: [RFC0791], [RFC4303], [RFC8200], | ||||
[RFC8349], and [RFC8960]. --> | ||||
<!--[rfced] Section 8. Note that the YANG module has been updated per the | ||||
formatting option of pyang. Please let us know any concerns. | ||||
A diff file of the changes may be viewed at: | ||||
https://www.rfc-editor.org/authors/ietf-detnet-rfcdiff.html | ||||
--> | ||||
</t> | </t> | |||
<sourcecode name="ietf-detnet@2022-02-21.yang" type="yang" markers=" true"><![CDATA[ | <sourcecode name="ietf-detnet@2024-08-15.yang" type="yang" markers=" true"><![CDATA[ | |||
module ietf-detnet { | module ietf-detnet { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-detnet"; | namespace "urn:ietf:params:xml:ns:yang:ietf-detnet"; | |||
prefix dnet; | prefix dnet; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference | reference | |||
"RFC 6991 - Common YANG Data Types."; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"RFC 6991 - Common YANG Data Types."; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-ethertypes { | import ietf-ethertypes { | |||
prefix ethertypes; | prefix ethertypes; | |||
reference | reference | |||
"RFC 8519 - YANG Data Model for Network Access Control | "RFC 8519: YANG Data Model for Network Access Control | |||
Lists (ACLs)."; | Lists (ACLs)"; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix rt-types; | prefix rt-types; | |||
reference | reference | |||
"RFC 8294 - Common YANG Data Types for the Routing Area."; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ietf-packet-fields { | import ietf-packet-fields { | |||
prefix packet-fields; | prefix packet-fields; | |||
reference | reference | |||
"RFC 8519 - YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control | |||
(ACLs)."; | Lists (ACLs)"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
reference | reference | |||
"RFC 8343 - A YANG Data Model for Interface Management."; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ieee802-dot1q-types { | import ieee802-dot1q-types { | |||
prefix dot1q-types; | prefix dot1q-types; | |||
reference | reference | |||
"IEEE 802.1Q-2022 - IEEE Standard for Local and Metropolitan | "IEEE 802.1Q-2022: IEEE Standard for Local and Metropolitan | |||
Area Networks--Bridges and Bridged Networks Clause 48: YANG | Area Networks--Bridges and Bridged Networks, | |||
Data Models."; | Clause 48 ('YANG Data Models')"; | |||
} | } | |||
organization | organization | |||
"IETF DetNet Working Group"; | "IETF DetNet Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/detnet/> | "WG Web: <https://datatracker.ietf.org/wg/detnet/> | |||
WG List: <mailto:detnet@ietf.org> | WG List: <mailto:detnet@ietf.org> | |||
Editor: Xuesong Geng | Editor: Xuesong Geng | |||
<mailto:gengxuesong@huawei.com> | <mailto:gengxuesong@huawei.com> | |||
Editor: Yeoncheol Ryoo | Editor: Yeoncheol Ryoo | |||
<mailto:dbduscjf@etri.re.kr> | <mailto:dbduscjf@etri.re.kr> | |||
Editor: Don Fedyk | Editor: Don Fedyk | |||
<mailto:dfedyk@labn.net>; | <mailto:dfedyk@labn.net> | |||
Editor: Reshad Rahman | Editor: Reshad Rahman | |||
<mailto:reshad@yahoo.com> | <mailto:reshad@yahoo.com> | |||
Editor: Zhenqiang Li | Editor: Zhenqiang Li | |||
<mailto:lizhenqiang@chinamobile.com>"; | <mailto:lizhenqiang@chinamobile.com>"; | |||
description | description | |||
"This YANG module describes the parameters needed | "This YANG module describes the parameters needed | |||
for DetNet flow configuration and flow status | for DetNet flow configuration and flow status | |||
reporting. This YANG module conforms to the Network | reporting. This YANG module conforms to the Network | |||
Management Datastore Architecture (NMDA). | Management Datastore Architecture (NMDA). | |||
Copyright (c) 2024 IETF Trust and the persons identified as | Copyright (c) 2024 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject | |||
the license terms contained in, the Revised BSD License set | to the license terms contained in, the Revised BSD License | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9633; see the | |||
see the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note | ||||
// replace '2024-02-21' with the module publication date | ||||
// the format is (year-month-day) | ||||
revision 2024-02-21 { | revision 2024-08-15 { | |||
description | description | |||
"Initial revision"; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model"; | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Model"; | ||||
} | } | |||
identity app-status { | identity app-status { | |||
description | description | |||
"Base identity from which all application-status | "Base identity from which all application status types | |||
status types are derived."; | are derived."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity none { | identity none { | |||
base app-status; | base app-status; | |||
description | description | |||
"This application has no status. This identity is | "This application has no status. This identity is | |||
expected when the configuration is incomplete."; | expected when the configuration is incomplete."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity ready { | identity ready { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application ingress/egress ready."; | "The application is ingress/egress ready."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity failed { | identity failed { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application ingres/egress failed."; | "The application is ingress/egress failed."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity out-of-service { | identity out-of-service { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application administratively blocked."; | "The application is administratively blocked."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity partial-failed { | identity partial-failed { | |||
base app-status; | base app-status; | |||
description | description | |||
"This is an application with one or more Egress ready, and one | "This is an application with one or more egress-ready | |||
or more Egress failed. The DetNet flow can be used if the | instances and one or more instances where egress failed. | |||
Ingress is Ready."; | The DetNet flow can be used if the ingress's status is | |||
'ready'."; | ||||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
typedef app-flow-ref { | typedef app-flow-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:app-flows" | + "/dnet:app-flows" | |||
+ "/dnet:app-flow" | + "/dnet:app-flow" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is an application Reference."; | "This is a reference to an application."; | |||
} | } | |||
typedef service-sub-layer-ref { | typedef service-sub-layer-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:service" | + "/dnet:service" | |||
+ "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a service sub-layer Reference."; | "This is a reference to the service sub-layer."; | |||
} | } | |||
typedef forwarding-sub-layer-ref { | typedef forwarding-sub-layer-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:forwarding" | + "/dnet:forwarding" | |||
+ "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a forwarding sub-layer Reference."; | "This is a reference to the forwarding sub-layer."; | |||
} | } | |||
typedef traffic-profile-ref { | typedef traffic-profile-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:traffic-profile" | + "/dnet:traffic-profile" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a traffic Profile Reference."; | "This is a reference to a traffic profile."; | |||
} | } | |||
typedef ipsec-spi { | typedef ipsec-spi { | |||
type uint32 { | type uint32 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
description | description | |||
"IPsec Security Parameters Index. A 32 bit value | "IPsec Security Parameters Index. A 32-bit value, | |||
where some values are reserved."; | where some values are reserved."; | |||
reference | reference | |||
"IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
} | } | |||
typedef operation { | typedef operation { | |||
type enumeration { | type enumeration { | |||
enum initiation { | enum initiation { | |||
description | description | |||
"This is an initiating service sub-layer encapsulation."; | "An initiating service sub-layer encapsulation."; | |||
} | } | |||
enum termination { | enum termination { | |||
description | description | |||
"Operation for DetNet service sub-layer decapsulation."; | "Operation for DetNet service sub-layer decapsulation."; | |||
} | } | |||
enum relay { | enum relay { | |||
description | description | |||
"Operation for DetNet service sub-layer swap."; | "Operation for DetNet service sub-layer swap."; | |||
} | } | |||
enum non-detnet { | enum non-detnet { | |||
description | description | |||
"No operation for DetNet service sub-layer."; | "No operation for the DetNet service sub-layer."; | |||
} | } | |||
} | } | |||
description | description | |||
"Operation type identifies the behavior for this service | "The operation type identifies this service sub-layer's | |||
sub-layer. Operations are described as unidirectional | behavior. Operations are described as unidirectional, | |||
but a service sub-layer may combine operation types."; | but a service sub-layer may combine operation types."; | |||
} | } | |||
typedef mpls-fwd-operation { | typedef mpls-fwd-operation { | |||
type enumeration { | type enumeration { | |||
enum impose-and-forward { | enum impose-and-forward { | |||
description | description | |||
"This operation imposes outgoing label(s) and forwards to | "This operation imposes one or more outgoing labels and | |||
next-hop."; | forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum pop-and-forward { | enum pop-and-forward { | |||
description | description | |||
"This operation pops the incoming label and forwards to | "This operation pops the incoming label and forwards to | |||
the next-hop."; | the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum pop-impose-and-forward { | enum pop-impose-and-forward { | |||
description | description | |||
"This operation pops the incoming label, imposes one or | "This operation pops the incoming label, imposes one or | |||
more outgoing label(s) and forwards to the next-hop."; | more outgoing labels, and forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum swap-and-forward { | enum swap-and-forward { | |||
description | description | |||
"This operation swaps an incoming label, with an outgoing | "This operation swaps an incoming label with an outgoing | |||
label and forwards to the next-hop."; | label and forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum forward { | enum forward { | |||
description | description | |||
"This operation forwards to next-hop."; | "This operation forwards to the next hop."; | |||
} | } | |||
enum pop-and-lookup { | enum pop-and-lookup { | |||
description | description | |||
"This operation pops an incoming label and performs a | "This operation pops an incoming label and performs a | |||
lookup."; | lookup."; | |||
reference | ||||
"RFC 8960: A YANG Data Model for MPLS Base"; | ||||
} | } | |||
} | } | |||
description | description | |||
"MPLS operations types. This is an enum modeled after the | "MPLS operation types. This set of enums is modeled after | |||
MPLS enum. The enums are the same as A YANG Data Model | the MPLS enums. With the exception of 'enum forward', | |||
for MPLS Base. RFC 8960."; | these enums are the same as those provided in RFC 8960."; | |||
reference | ||||
"RFC 8960: A YANG Data Model for MPLS Base"; | ||||
} | } | |||
typedef service-protection { | typedef service-protection { | |||
type enumeration { | type enumeration { | |||
enum none { | enum none { | |||
description | description | |||
"No service protection provided."; | "Service protection is not provided."; | |||
} | } | |||
enum replication { | enum replication { | |||
description | description | |||
"A Packet Replication Function (PRF) replicates DetNet | "A Packet Replication Function (PRF) replicates DetNet | |||
flow packets and forwards them to one or more next hops in | flow packets and forwards them to one or more next | |||
the DetNet domain. The number of packet copies sent to | hops in the DetNet domain. The number of packet copies | |||
each next hop is a DetNet flow-specific parameter at the | sent to each next hop is a DetNet-flow-specific | |||
node doing the replication. PRF can be implemented by an | parameter at the node doing the replication. A PRF can | |||
edge node, a relay node, or an end system."; | be implemented by an edge node, a relay node, or an | |||
end system."; | ||||
} | } | |||
enum elimination { | enum elimination { | |||
description | description | |||
"A Packet Elimination Function (PEF) eliminates duplicate | "A Packet Elimination Function (PEF) eliminates | |||
copies of packets to prevent excess packets flooding the | duplicate copies of packets to prevent excess packets | |||
network or duplicate packets being sent out of the DetNet | flooding the network or duplicate packets being | |||
domain. PEF can be implemented by an edge node, a relay | sent out of the DetNet domain. A PEF can be | |||
node, or an end system."; | implemented by an edge node, a relay node, or an | |||
end system."; | ||||
} | } | |||
enum ordering { | enum ordering { | |||
description | description | |||
"A Packet Ordering Function (POF) re-orders packets within | "A Packet Ordering Function (POF) reorders packets within | |||
a DetNet flow that are received out of order. This | a DetNet flow that are received out of order. This | |||
function can be implemented by an edge node, a relay node, | function can be implemented by an edge node, a relay node, | |||
or an end system."; | or an end system."; | |||
} | } | |||
enum elimination-ordering { | enum elimination-ordering { | |||
description | description | |||
"A combination of PEF and POF that can be implemented by | "A combination of a PEF and POF that can be implemented | |||
an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
} | } | |||
enum elimination-replication { | enum elimination-replication { | |||
description | description | |||
"A combination of PEF and PRF that can be implemented by | "A combination of a PEF and PRF that can be implemented | |||
an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
} | } | |||
enum elimination-ordering-replication { | enum elimination-ordering-replication { | |||
description | description | |||
"A combination of PEF, POF and PRF that can be implemented | "A combination of a PEF, POF, and PRF that can be | |||
by an edge node, a relay node, or an end system."; | implemented by an edge node, a relay node, or | |||
an end system."; | ||||
} | } | |||
} | } | |||
description | description | |||
"This typedef describes the service protection enumeration | "This typedef describes the service protection enumeration | |||
values."; | values."; | |||
} | } | |||
typedef sequence-number-generation { | typedef sequence-number-generation { | |||
type enumeration { | type enumeration { | |||
enum copy-from-app-flow { | enum copy-from-app-flow { | |||
description | description | |||
"Copy-from-app-flow is used to extend and use the | "'copy-from-app-flow' is used to extend and use the | |||
sequence number used in App-flow. This function is | sequence number used in an App-flow. This function | |||
required when encapsulating App-flows that have been | is required when encapsulating App-flows that have been | |||
replicated and received through multiple ingress nodes | replicated and received through multiple ingress nodes | |||
into a member flow, and then eliminate it at the relay | into a member flow, and then eliminate it at the relay | |||
node."; | node."; | |||
} | } | |||
enum generate-by-detnet-flow { | enum generate-by-detnet-flow { | |||
description | description | |||
"Generate-by-detnet-flow is used to create a new | "'generate-by-detnet-flow' is used to create a new | |||
sequence number for a DetNet flow at the ingress node. | sequence number for a DetNet flow at the ingress node. | |||
Care must be taken when using this option to ensure | Care must be taken when using this option to ensure | |||
there is only one source for generating sequence | that there is only one source for generating sequence | |||
numbers."; | numbers."; | |||
} | } | |||
} | } | |||
description | description | |||
"This typedef defines how to generate sequence numbers to | "This typedef defines how to generate sequence numbers to | |||
be used in DetNet encapsulation."; | be used in DetNet encapsulation."; | |||
} | } | |||
typedef sequence-number-field { | typedef sequence-number-field { | |||
type enumeration { | type enumeration { | |||
enum zero-sn { | enum zero-sn { | |||
description | description | |||
"No DetNet sequence number field is used."; | "The DetNet sequence number field is not used."; | |||
} | } | |||
enum short-sn { | enum short-sn { | |||
value 16; | value 16; | |||
description | description | |||
"A 16-bit DetNet sequence number field is used."; | "A 16-bit DetNet sequence number field is used."; | |||
} | } | |||
enum long-sn { | enum long-sn { | |||
value 28; | value 28; | |||
description | description | |||
"A 28-bit DetNet sequence number field is used."; | "A 28-bit DetNet sequence number field is used."; | |||
} | } | |||
} | } | |||
description | description | |||
"This enumeration configures the sequence number behavior."; | "These enums configure the behavior of the | |||
sequence number field."; | ||||
} | } | |||
grouping ip-header { | grouping ip-header { | |||
description | description | |||
"This grouping captures the IPv4/IPv6 packet header | "This grouping captures the IPv4/IPv6 packet header | |||
information. It is modeled after existing fields."; | information. It is modeled after existing fields."; | |||
leaf src-ip-address { | leaf src-ip-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The source IP address in the header."; | "The source IP address in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf dest-ip-address { | leaf dest-ip-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The destination IP address in the header."; | "The destination IP address in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf protocol-next-header { | leaf protocol-next-header { | |||
type uint8; | type uint8; | |||
description | description | |||
"In IPv4 refers to the protocol of the | "In IPv4, this field refers to the protocol of the | |||
payload. In IPv6, this field is known as 'next-header', | payload. In IPv6, this field is known as | |||
and identifies the type of header immediately following | 'next-header'; it identifies the type of header | |||
the IPv6 header."; | immediately following the IPv6 header."; | |||
reference | reference | |||
"RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
Specification."; | Specification"; | |||
} | } | |||
leaf dscp { | leaf dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"The traffic class value in the header."; | "The traffic class value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf flow-label { | leaf flow-label { | |||
type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
description | description | |||
"The flow label value of the header. IPv6 only."; | "The flow label value in the header. IPv6 only."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf source-port { | leaf source-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The source port number."; | "The source port number."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf destination-port { | leaf destination-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The destination port number."; | "The destination port number."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
} | } | |||
grouping l2-header { | grouping l2-header { | |||
description | description | |||
"The Ethernet or TSN packet header information."; | "The Ethernet or Time-Sensitive Networking (TSN) packet | |||
header information."; | ||||
leaf source-mac-address { | leaf source-mac-address { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The source MAC address value of the Ethernet header."; | "The source Media Access Control (MAC) address value of | |||
the Ethernet header."; | ||||
} | } | |||
leaf destination-mac-address { | leaf destination-mac-address { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The destination MAC address value of the Ethernet header."; | "The destination MAC address value of the Ethernet | |||
header."; | ||||
} | } | |||
leaf ethertype { | leaf ethertype { | |||
type ethertypes:ethertype; | type ethertypes:ethertype; | |||
description | description | |||
"The Ethernet packet type value of the Ethernet header."; | "The Ethernet packet type value of the Ethernet header."; | |||
} | } | |||
leaf vlan-id { | leaf vlan-id { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
description | description | |||
"The VLAN value of the Ethernet header."; | "The VLAN value of the Ethernet header."; | |||
reference | reference | |||
"IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
Metropolitan Area Networks--Bridges and Bridged | ||||
Networks"; | ||||
} | } | |||
leaf pcp { | leaf pcp { | |||
type dot1q-types:priority-type; | type dot1q-types:priority-type; | |||
description | description | |||
"The priority value of the Ethernet header."; | "The priority value of the Ethernet header."; | |||
reference | reference | |||
"IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
Metropolitan Area Networks--Bridges and Bridged | ||||
Networks"; | ||||
} | } | |||
} | } | |||
grouping destination-ip-port-id { | grouping destination-ip-port-id { | |||
description | description | |||
"The TCP/UDP port destination identification | "The TCP/UDP port destination identification information."; | |||
information."; | ||||
container destination-port { | container destination-port { | |||
uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
description | description | |||
"This grouping captures the destination port fields."; | "This grouping captures the destination port fields."; | |||
} | } | |||
} | } | |||
grouping source-ip-port-id { | grouping source-ip-port-id { | |||
description | description | |||
"The TCP/UDP port source identification | "The TCP/UDP port source identification information."; | |||
information."; | ||||
container source-port { | container source-port { | |||
uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
description | description | |||
"This grouping captures the source port fields."; | "This grouping captures the source port fields."; | |||
} | } | |||
} | } | |||
grouping ip-flow-id { | grouping ip-flow-id { | |||
description | description | |||
"The IPv4/IPv6 packet header identification information."; | "The IPv4/IPv6 packet header identification information."; | |||
leaf src-ip-prefix { | leaf src-ip-prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"The source IP prefix."; | "The source IP prefix."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf dest-ip-prefix { | leaf dest-ip-prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"The destination IP prefix."; | "The destination IP prefix."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf protocol-next-header { | leaf protocol-next-header { | |||
type uint8; | type uint8; | |||
description | description | |||
"Internet Protocol number. Refers to the protocol of the | "Internet Protocol number. Refers to the protocol of the | |||
payload. In IPv6, this field is known as 'next-header', and | payload. In IPv6, this field is known as 'next-header'; | |||
if extension headers are present, the protocol is present in | if extension headers are present, the protocol is present | |||
the 'upper-layer' header."; | in the 'upper-layer' header."; | |||
reference | reference | |||
"RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
Specification."; | Specification"; | |||
} | } | |||
leaf dscp { | leaf dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"The traffic class value in the header."; | "The traffic class value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf flow-label { | leaf flow-label { | |||
type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
description | description | |||
"The flow label value of the header."; | "The flow label value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
uses source-ip-port-id; | uses source-ip-port-id; | |||
uses destination-ip-port-id; | uses destination-ip-port-id; | |||
leaf ipsec-spi { | leaf ipsec-spi { | |||
type ipsec-spi; | type ipsec-spi; | |||
description | description | |||
"IPsec Security Parameters Index of the Security | "IPsec Security Parameters Index of the Security | |||
Association."; | Association."; | |||
reference | reference | |||
"IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
} | } | |||
} | } | |||
grouping mpls-flow-id { | grouping mpls-flow-id { | |||
description | description | |||
"The MPLS packet header identification information."; | "The MPLS packet header identification information."; | |||
choice label-space { | choice label-space { | |||
description | description | |||
"Designates the label space being used."; | "Designates the label space being used."; | |||
case context-label-space { | case context-label-space { | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
case platform-label-space { | case platform-label-space { | |||
leaf label { | leaf label { | |||
type rt-types:mpls-label; | type rt-types:mpls-label; | |||
description | description | |||
"This is the case for Platform label space."; | "This is the case for the platform label space."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping data-flow-spec { | grouping data-flow-spec { | |||
description | description | |||
"app-flow identification."; | "App-flow identification."; | |||
choice data-flow-type { | choice data-flow-type { | |||
description | description | |||
"The Application flow type choices."; | "The application flow type choices."; | |||
container tsn-app-flow { | container tsn-app-flow { | |||
uses l2-header; | uses l2-header; | |||
description | description | |||
"The L2 header for application."; | "The L2 header for the application."; | |||
} | } | |||
container ip-app-flow { | container ip-app-flow { | |||
uses ip-flow-id; | uses ip-flow-id; | |||
description | description | |||
"The IP header for application."; | "The IP header for the application."; | |||
} | } | |||
container mpls-app-flow { | container mpls-app-flow { | |||
uses mpls-flow-id; | uses mpls-flow-id; | |||
description | description | |||
"The MPLS header for application."; | "The MPLS header for the application."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping detnet-flow-spec { | grouping detnet-flow-spec { | |||
description | description | |||
"detnet-flow identification."; | "DetNet flow identification."; | |||
choice detnet-flow-type { | choice detnet-flow-type { | |||
description | description | |||
"The DetNet flow type choices."; | "The DetNet flow type choices."; | |||
case ip-detnet-flow { | case ip-detnet-flow { | |||
uses ip-flow-id; | uses ip-flow-id; | |||
} | } | |||
case mpls-detnet-flow { | case mpls-detnet-flow { | |||
uses mpls-flow-id; | uses mpls-flow-id; | |||
} | } | |||
} | } | |||
} | } | |||
grouping app-flows-group { | grouping app-flows-group { | |||
description | description | |||
"Incoming or outgoing app-flow reference group."; | "Reference group for incoming or outgoing App-flows."; | |||
leaf-list flow { | leaf-list flow { | |||
type app-flow-ref; | type app-flow-ref; | |||
description | description | |||
"List of ingress or egress app-flows."; | "List of ingress or egress App-flows."; | |||
} | } | |||
} | } | |||
grouping service-sub-layer-group { | grouping service-sub-layer-group { | |||
description | description | |||
"Incoming or outgoing service sub-layer reference group."; | "Reference group for incoming or outgoing | |||
service sub-layers."; | ||||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
description | description | |||
"List of incoming or outgoing service sub-layers that have | "List of incoming or outgoing service sub-layers that | |||
to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
} | } | |||
} | } | |||
grouping forwarding-sub-layer-group { | grouping forwarding-sub-layer-group { | |||
description | description | |||
"Incoming or outgoing forwarding sub-layer reference group."; | "Reference group for incoming or outgoing | |||
forwarding sub-layers."; | ||||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
description | description | |||
"List of incoming or outgoing forwarding sub-layers that | "List of incoming or outgoing forwarding sub-layers that | |||
have to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
} | } | |||
} | } | |||
grouping detnet-header { | grouping detnet-header { | |||
description | description | |||
"DetNet header info for DetNet encapsulation or swap."; | "DetNet header information for DetNet encapsulation | |||
or swap."; | ||||
choice header-type { | choice header-type { | |||
description | description | |||
"The choice of DetNet header type."; | "The choice of DetNet header type."; | |||
case mpls { | case mpls { | |||
description | description | |||
"MPLS label stack for DetNet MPLS encapsulation or | "MPLS label stack for DetNet MPLS encapsulation or | |||
forwarding."; | forwarding."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
case ip { | case ip { | |||
description | description | |||
"IPv4/IPv6 packet header for DetNet IP encapsulation."; | "IPv4/IPv6 packet header for DetNet IP encapsulation."; | |||
uses ip-header; | uses ip-header; | |||
} | } | |||
} | } | |||
} | } | |||
grouping detnet-app-next-hop-content { | grouping detnet-app-next-hop-content { | |||
description | description | |||
"Generic parameters of DetNet next hops. This follows the | "Generic parameters for DetNet next hops. These follow the | |||
principles for next hops in RFC 8349"; | principles for next hops as discussed in RFC 8349."; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
choice next-hop-options { | choice next-hop-options { | |||
description | description | |||
"Options for next hops. It is expected that further cases | "Options for next hops. It is expected that further | |||
will be added through | cases will be added through augments from other modules, | |||
augments from other modules, e.g., for recursive | e.g., for recursive next hops."; | |||
next hops."; | ||||
case simple-next-hop { | case simple-next-hop { | |||
description | description | |||
"This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of | |||
next-hop address and/or outgoing interface."; | the next-hop address and/or outgoing interface."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
the interface."; | the interface."; | |||
} | } | |||
choice flow-type { | choice flow-type { | |||
description | description | |||
"The flow type choices."; | "The flow type choices."; | |||
case ip { | case ip { | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The IP next hop case."; | "The IP next-hop case."; | |||
} | } | |||
} | } | |||
case mpls { | case mpls { | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
description | description | |||
"The MPLS label stack next hop case."; | "The MPLS label stack next-hop case."; | |||
} | } | |||
} | } | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
description | description | |||
"Container for multiple next hops."; | "Container for multiple next hops."; | |||
list next-hop { | list next-hop { | |||
key "hop-index"; | key "hop-index"; | |||
description | description | |||
"An entry in a next-hop list."; | "An entry in a next-hop list."; | |||
skipping to change at line 1184 ¶ | skipping to change at line 1363 ¶ | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping detnet-forwarding-next-hop-content { | grouping detnet-forwarding-next-hop-content { | |||
description | description | |||
"Generic parameters of DetNet next hops. This follows the | "Generic parameters for DetNet next hops. These follow the | |||
principles for next hops in RFC 8349"; | principles for next hops as discussed in RFC 8349."; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
choice next-hop-options { | choice next-hop-options { | |||
description | description | |||
"Options for next hops. | "Options for next hops. It is expected that further | |||
It is expected that further cases will be added through | cases will be added through augments from other modules, | |||
augments from other modules, e.g., for recursive | e.g., for recursive next hops."; | |||
next hops."; | case simple-next-hop { | |||
case simple-next-hop { | ||||
description | description | |||
"This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of | |||
next-hop address and/or outgoing interface."; | the next-hop address and/or outgoing interface."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
the interface."; | the interface."; | |||
} | } | |||
choice flow-type { | choice flow-type { | |||
description | description | |||
"These are the flow type next hop choices."; | "These are the flow type next-hop choices."; | |||
case ip { | case ip { | |||
description | description | |||
"Use IP data plane for forwarding."; | "Use the IP data plane for forwarding."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"This is an IP address as a next hop."; | "This is an IP address as a next hop."; | |||
} | } | |||
uses ip-header; | uses ip-header; | |||
} | } | |||
case mpls { | case mpls { | |||
description | description | |||
"Use MPLS data plane for forwarding."; | "Use the MPLS data plane for forwarding."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
description | description | |||
"Container for multiple next hops."; | "Container for multiple next hops."; | |||
list next-hop { | list next-hop { | |||
key "hop-index"; | key "hop-index"; | |||
description | description | |||
"An entry in a next-hop list."; | "An entry in a next-hop list."; | |||
leaf hop-index { | leaf hop-index { | |||
type uint8; | type uint8; | |||
description | description | |||
"The value of the index for a hop."; | "The value of the index for a next hop."; | |||
} | } | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
the interface."; | the interface."; | |||
} | } | |||
choice flow-type { | choice flow-type { | |||
description | description | |||
"These are the flow type next hop choices."; | "These are the flow type next-hop choices."; | |||
case ip { | case ip { | |||
description | description | |||
"Use IP data plane for forwarding."; | "Use the IP data plane for forwarding."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"This is an IP address as a next hop."; | "This is an IP address as a next hop."; | |||
} | } | |||
uses ip-header; | uses ip-header; | |||
} | } | |||
case mpls { | case mpls { | |||
description | description | |||
"Use MPLS data plane for forwarding."; | "Use the MPLS data plane for forwarding."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container detnet { | container detnet { | |||
description | description | |||
"The top level DetNet container. This contains | "The top-level DetNet container. This contains | |||
applications, service sub-layers and forwarding sub-layers | applications, service sub-layers, and forwarding sub-layers | |||
as well as the traffic profiles."; | as well as the traffic profiles."; | |||
list traffic-profile { | list traffic-profile { | |||
key "name"; | key "name"; | |||
description | description | |||
"A traffic profile."; | "A traffic profile."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the traffic profile which is used as a | "The name of the traffic profile that is used as a | |||
reference to this profile."; | reference to this profile."; | |||
} | } | |||
container traffic-requirements { | container traffic-requirements { | |||
description | description | |||
"This defines the attributes of the App-flow | "This defines the attributes of the App-flow | |||
regarding bandwidth, latency, latency variation, loss, and | regarding bandwidth, latency, latency variation, loss, | |||
misordering tolerance."; | and misordering tolerance."; | |||
reference | reference | |||
"RFC 9016 Section 5.9"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9"; | ||||
leaf min-bandwidth { | leaf min-bandwidth { | |||
type uint64; | type uint64; | |||
units 'octets per second'; | units "octets per second"; | |||
description | description | |||
"This is the minimum bandwidth that has to be | "This is the minimum bandwidth that has to be | |||
guaranteed for the DetNet service. MinBandwidth is | guaranteed for the DetNet service. MinBandwidth is | |||
specified in octets per second."; | specified in octets per second."; | |||
reference | reference | |||
"RFC 9016 Section 5.9.1"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.1"; | ||||
} | } | |||
leaf max-latency { | leaf max-latency { | |||
type uint32; | type uint32; | |||
units "nanoseconds"; | units "nanoseconds"; | |||
description | description | |||
"This is the maximum latency from Ingress to | "This is the maximum latency from the ingress to | |||
Egress(es) for a single packet of the DetNet flow. | one or more egresses for a single packet of the | |||
MaxLatency is specified as an integer number of | DetNet flow. MaxLatency is specified as an | |||
nanoseconds. The MAX value is 4,294,967,295 | integer number of nanoseconds. The maximum value | |||
nanoseconds."; | for this parameter is 4,294,967,295 nanoseconds."; | |||
reference | reference | |||
"RFC 9016 Section 5.9.2"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.2"; | ||||
} | } | |||
leaf max-latency-variation { | leaf max-latency-variation { | |||
type uint32; | type uint32; | |||
units "nanoseconds"; | units "nanoseconds"; | |||
description | description | |||
"This is the difference between the | "This is the difference between the | |||
minimum and the maximum end-to-end one-way latency. | minimum and maximum end-to-end one-way latency. | |||
MaxLatencyVariation is specified as an integer number of | MaxLatencyVariation is specified as an integer | |||
nanoseconds."; | number of nanoseconds."; | |||
reference | reference | |||
"RFC 9016 Section 5.9.3"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.3"; | ||||
} | } | |||
leaf max-loss { | leaf max-loss { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 10; | fraction-digits 10; | |||
range "0 .. 100"; | range "0 .. 100"; | |||
} | } | |||
units "percent"; | units "percent"; | |||
description | description | |||
"This defines the maximum Packet Loss Rate (PLR) | "This defines the maximum Packet Loss Rate (PLR) | |||
parameter for the DetNet service between the Ingress and | parameter for the DetNet service between the ingress | |||
Egress(es) of the DetNet domain. Packet loss rate is | and one or more egresses of the DetNet domain. The | |||
calculated by the number of transmitted packets minus | PLR is calculated by the number of transmitted | |||
the number of received packets divided by the number | packets minus the number of received packets divided | |||
transmitted packets expressed as a percent."; | by the number of transmitted packets, expressed as a | |||
percentage."; | ||||
reference | reference | |||
"RFC 9016 Section 5.9.4"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.4"; | ||||
} | } | |||
leaf max-consecutive-loss-tolerance { | leaf max-consecutive-loss-tolerance { | |||
type uint32; | type uint32; | |||
units "packets"; | units "packets"; | |||
description | description | |||
"Some applications have special loss requirement, such | "Some applications have special loss requirements | |||
as MaxConsecutiveLossTolerance. The maximum consecutive | and use such parameters as | |||
loss tolerance parameter describes the maximum number of | MaxConsecutiveLossTolerance. | |||
consecutive packets whose loss can be tolerated. The | 'max-consecutive-loss-tolerance' describes the | |||
maximum consecutive loss tolerance can be measured for | maximum number of consecutive packets whose loss | |||
example based on sequence number."; | can be tolerated. The maximum consecutive loss | |||
tolerance can be measured, for example, based on | ||||
sequence number."; | ||||
reference | reference | |||
"RFC 9016 Section 5.9.5"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.5"; | ||||
} | } | |||
leaf max-misordering { | leaf max-misordering { | |||
type uint32; | type uint32; | |||
units "packets"; | units "packets"; | |||
description | description | |||
"This describes the tolerable maximum number | "This describes the maximum tolerable number of | |||
of packets that can be received out of order. The | packets that can be received out of order. The | |||
maximum allowed misordering can be measured for example | maximum allowed misordering can be measured, for | |||
based on sequence number. The value zero for the | example, based on sequence number. A value of '0' | |||
maximum allowed misordering indicates that in order | for the maximum allowed misordering indicates that | |||
delivery is required, misordering cannot be tolerated."; | in-order delivery is required and misordering cannot | |||
be tolerated."; | ||||
reference | reference | |||
"RFC 9016 Section 5.9.6"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.9.6"; | ||||
} | } | |||
} | } | |||
container traffic-spec { | container traffic-spec { | |||
description | description | |||
"Traffic-specification specifies how the Source transmits | "'traffic-spec' specifies how the source transmits | |||
packets for the flow. This is the promise/request of the | packets for the flow. This is the promise/request of | |||
Source to the network. The network uses this flow | the source to the network. The network uses this flow | |||
specification to allocate resources and adjust queue | specification to allocate resources and adjust queue | |||
parameters in network nodes."; | parameters in network nodes."; | |||
reference | reference | |||
"RFC 9016 Section 5.5"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5"; | ||||
leaf interval { | leaf interval { | |||
type uint32; | type uint32; | |||
units "nanoseconds"; | units "nanoseconds"; | |||
description | description | |||
"The period of time in which the traffic | "The period of time during which the traffic | |||
specification should not be exceeded."; | specification should not be exceeded."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | IEEE802.1Q"; | |||
} | } | |||
leaf max-pkts-per-interval { | leaf max-pkts-per-interval { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of packets that the | "The maximum number of packets that the | |||
source will transmit in one interval."; | source will transmit in one interval."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf max-payload-size { | leaf max-payload-size { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum payload size that the source | "The maximum payload size that the source | |||
will transmit."; | will transmit."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf min-payload-size { | leaf min-payload-size { | |||
type uint32; | type uint32; | |||
description | description | |||
"The minimum payload size that the source | "The minimum payload size that the source | |||
will transmit., IEEE802.1Q"; | will transmit."; | |||
reference | ||||
"RFC 9016: Flow and Service Information Model for | ||||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf min-pkts-per-interval { | leaf min-pkts-per-interval { | |||
type uint32; | type uint32; | |||
description | description | |||
"The minimum number of packets that the | "The minimum number of packets that the | |||
source will transmit in one interval."; | source will transmit in one interval."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
} | } | |||
leaf-list member-app-flow { | leaf-list member-app-flow { | |||
type app-flow-ref; | type app-flow-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Applications attached to this profile. Each | "A list of applications attached to this profile. Each | |||
application that uses a profile has an automatically | application that uses a profile has an automatically | |||
populated reference."; | populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
leaf-list member-svc-sublayer { | leaf-list member-svc-sublayer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Service Sub-layers attached to this profile. | "A list of service sub-layers attached to this profile. | |||
Each Service Sub-layers that uses a profile has an | Each service sub-layer that uses a profile has an | |||
automatically populated reference."; | automatically populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
leaf-list member-fwd-sublayer { | leaf-list member-fwd-sublayer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Forwarding Sub-layers attached to this profile. | "A list of forwarding sub-layers attached to this profile. | |||
Each Forwarding Sub-layers that uses a profile has an | Each forwarding sub-layer that uses a profile has an | |||
automatically populated reference."; | automatically populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
} | } | |||
container app-flows { | container app-flows { | |||
description | description | |||
"The DetNet app-flow configuration."; | "Configuration information for DetNet App-flows."; | |||
reference | reference | |||
"RFC 9016 Section 4.1"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 4.1"; | ||||
list app-flow { | list app-flow { | |||
key "name"; | key "name"; | |||
description | description | |||
"A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
reference | reference | |||
"RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
Sections 4.1, 5.1"; | Deterministic Networking (DetNet), Sections 4.1 | |||
and 5.1"; | ||||
} | } | |||
leaf bidir-congruent { | leaf bidir-congruent { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Defines the data path requirement of the App-flow | "Defines the data path requirement of the App-flow - | |||
whether it must share the same data path and physical | whether it must share the same data path and physical | |||
path for both directions through the network, e.g., to | path for both directions through the network, e.g., | |||
provide congruent paths in the two directions."; | to provide congruent paths in the two directions."; | |||
reference | reference | |||
"RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
Section 4.2"; | Deterministic Networking (DetNet), Section 4.2"; | |||
} | } | |||
leaf outgoing-service { | leaf outgoing-service { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"Binding to this applications outgoing | "Binding to this application's outgoing service."; | |||
service."; | ||||
} | } | |||
leaf incoming-service { | leaf incoming-service { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"Binding to this applications incoming service."; | "Binding to this application's incoming service."; | |||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
} | } | |||
container ingress { | container ingress { | |||
description | description | |||
"Ingress DetNet application flows or a compound flow."; | "Ingress DetNet application flows or a | |||
compound flow."; | ||||
leaf app-flow-status { | leaf app-flow-status { | |||
type identityref { | type identityref { | |||
base app-status; | base app-status; | |||
} | } | |||
default none; | default "none"; | |||
config false; | config false; | |||
description | description | |||
"Status of ingress application flow. This is an | "Status of an ingress application flow. This is an | |||
operational status and defaults to none if | operational status and defaults to 'none' if | |||
incomplete."; | incomplete."; | |||
reference | reference | |||
"RFC 9016 Sections | "RFC 9016: Flow and Service Information Model for | |||
4.1, 5.8"; | Deterministic Networking (DetNet), Sections 4.1 | |||
and 5.8"; | ||||
} | } | |||
leaf-list interface { | leaf-list interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface is optional for a service type. When | "An interface is optional for a service type. | |||
matching a flow to a single interface one | When matching a flow to a single interface, | |||
interface is specified. The list allows for | one interface is specified. This list allows | |||
matching a subset of interfaces. When more | the matching of a subset of interfaces. | |||
than one interfaces is specified, these | When more than one interface is specified, these | |||
flows are simply aggregated and the service | flows are simply aggregated, and the service | |||
sub-layer is unaware of the aggregation."; | sub-layer is unaware of the aggregation."; | |||
} | } | |||
uses data-flow-spec; | uses data-flow-spec; | |||
} //End of app-ingress | } //End of app-ingress | |||
container egress { | container egress { | |||
description | description | |||
"Egress DetNet application flows or a compound flow."; | "Egress DetNet application flows or a compound flow."; | |||
uses data-flow-spec; | uses data-flow-spec; | |||
choice application-type { | choice application-type { | |||
description | description | |||
"This is the application type choices."; | "The application type choices."; | |||
container ethernet { | container ethernet { | |||
description | description | |||
"This is Ethernet or TSN traffic that maps to an | "Ethernet or TSN traffic that maps to an | |||
interface."; | interface."; | |||
leaf-list interface { | leaf-list interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"This is one or more Ethernet or TSN interfaces. | "One or more Ethernet or TSN interfaces. | |||
If multiple interfaces are specified, this | If multiple interfaces are specified, this | |||
application flow is replicated to those | application flow is replicated to those | |||
interfaces. DetNet application Flow filtering | interfaces. DetNet application flow filtering | |||
applies to the whole list of interfaces. | applies to the whole list of interfaces. | |||
For fine grain flow filtering, use a single | For fine-grained flow filtering, use a single | |||
interface per application."; | interface per application."; | |||
} | } | |||
} | } | |||
container ip-mpls { | container ip-mpls { | |||
description | description | |||
"This is IP or MPLS DetNet application types."; | "IP or MPLS DetNet application types."; | |||
uses detnet-app-next-hop-content; | uses detnet-app-next-hop-content; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container service { | container service { | |||
description | description | |||
"The DetNet service sub-layer configuration."; | "The DetNet service sub-layer configuration."; | |||
list sub-layer { | list sub-layer { | |||
key "name"; | key "name"; | |||
description | description | |||
"Services are indexed by name."; | "Services are indexed by name."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the DetNet service sub-layer."; | "The name of the DetNet service sub-layer."; | |||
} | } | |||
leaf service-rank { | leaf service-rank { | |||
type uint8; | type uint8; | |||
default 255; | default "255"; | |||
description | description | |||
"The DetNet rank for this service. Defaults to 255 | "The DetNet rank for this service. Defaults to '255' | |||
lowest rank if not specified."; | (lowest rank) if not specified."; | |||
reference | reference | |||
"RFC 9016 Section 5.7."; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.7"; | ||||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this service."; | "The traffic profile for this service."; | |||
} | } | |||
container service-protection { | container service-protection { | |||
description | description | |||
"This is the service protection type and sequence number | "The service protection type and sequence number | |||
options."; | options."; | |||
leaf protection { | leaf protection { | |||
type service-protection; | type service-protection; | |||
description | description | |||
"The DetNet service protection type such as | "The DetNet service protection type, such as | |||
Packet Replication Function (PRF), | the Packet Replication Function (PRF), the | |||
Packet Elimination Function (PEF), | Packet Elimination Function (PEF), or the | |||
Packet Replication, Elimination, and Ordering Functions | Packet Replication, Elimination, and Ordering | |||
(PREOF)."; | Functions (PREOF)."; | |||
reference | reference | |||
"RFC 8938 Section 4.3"; | "RFC 8938: Deterministic Networking (DetNet) | |||
Data Plane Framework, Section 4.3"; | ||||
} | } | |||
leaf sequence-number-length { | leaf sequence-number-length { | |||
type sequence-number-field; | type sequence-number-field; | |||
default zero-sn; | default "zero-sn"; | |||
description | description | |||
"Sequence number field length can be one of 0 (none), | "The sequence number field length can be one of | |||
16-bits or 28-bits. The default is none."; | 0 (none), 16 bits, or 28 bits. The default is | |||
0 (none)."; | ||||
} | } | |||
} | } | |||
leaf operation { | leaf operation { | |||
type operation; | type operation; | |||
description | description | |||
"This is the service operation type for this service | "This is the service operation type for this service | |||
sub-layer;"; | sub-layer."; | |||
} | } | |||
container incoming { | container incoming { | |||
description | description | |||
"The DetNet service sub-layer incoming configuration."; | "The DetNet service sub-layer incoming configuration."; | |||
choice incoming { | choice incoming { | |||
description | description | |||
"A service sub-layer may have App flows or other | "A service sub-layer may have App-flows or other | |||
service sub-layers."; | service sub-layers."; | |||
container app-flow { | container app-flow { | |||
description | description | |||
"This service sub-layer is related to the app-flows | "This service sub-layer is related to the | |||
of the upper layer and provide ingress proxy or | App-flows of the upper layer and provides an | |||
ingress aggregation at the ingress node."; | ingress proxy or ingress aggregation at the | |||
ingress node."; | ||||
uses app-flows-group; | uses app-flows-group; | |||
} | } | |||
container service-aggregation { | container service-aggregation { | |||
description | description | |||
"This service sub-layer is related to the service | "This service sub-layer is related to the service | |||
sub-layer of the upper layer and provide | sub-layer of the upper layer and provides | |||
service-to-service aggregation at the ingress node | service-to-service aggregation at the | |||
or relay node."; | ingress node or relay node."; | |||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-aggregation { | container forwarding-aggregation { | |||
description | description | |||
"This service sub-layer is related to the forwarding | "This service sub-layer is related to the | |||
sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
forwarding-to-service aggregation at the ingress | provides forwarding-to-service aggregation at | |||
node or relay node."; | the ingress node or relay node."; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
container service-id { | container service-id { | |||
description | description | |||
"This service sub-layer is related to the service or | "This service sub-layer is related to the service | |||
forwarding sub-layer of the lower layer and provide | or forwarding sub-layer of the lower layer and | |||
DetNet service relay or termination at the relay | provides DetNet service relay or termination at | |||
node or egress node."; | the relay node or egress node."; | |||
uses detnet-flow-spec; | uses detnet-flow-spec; | |||
} | } | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This entry specifies one or more forwarding | "This entry specifies one or more forwarding | |||
sub-layers. No or minimal service sub-layer | sub-layers. No or minimal service sub-layer | |||
encapsulation is allowed."; | encapsulation is allowed."; | |||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"List of outgoing forwarding sub-layers."; | "List of outgoing forwarding sub-layers."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container outgoing { | container outgoing { | |||
description | description | |||
"The DetNet service sub-layer outgoing configuration."; | "The DetNet service sub-layer outgoing | |||
configuration."; | ||||
choice outgoing { | choice outgoing { | |||
description | description | |||
"The outgoing type may be a forwarding Sub-layer or a | "The outgoing type may be a forwarding sub-layer, a | |||
service sub-layer or aggregation type."; | service sub-layer, or an aggregation type."; | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
sub-layers of the lower layer for DetNet service | forwarding sub-layers of the lower layer | |||
forwarding or service-to-forwarding aggregation at | for DetNet service forwarding or | |||
the ingress node or relay node. When the operation | service-to-forwarding aggregation at the | |||
type is service-initiation, The service sub-layer | ingress node or relay node. When the | |||
encapsulates the DetNet Control-Word and services | operation type is 'service-initiation', the | |||
label, which are for individual DetNet flow when the | service sub-layer encapsulates the DetNet | |||
incoming type is app-flow and for aggregated DetNet | Control Word (d-CW) and S-Label, which are for | |||
flow when the incoming type is service or | individual DetNet flows when the incoming type | |||
forwarding. The service sub-layer swaps the service | is 'app-flow' and for an aggregated DetNet flow | |||
label when the operation type is service-relay."; | when the incoming type is 'service' or | |||
'forwarding'. The service sub-layer swaps the | ||||
service label when the operation type is | ||||
'service-relay'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
list service-outgoing { | list service-outgoing { | |||
key "index"; | key "index"; | |||
description | description | |||
"List of the outgoing service | "List of the outgoing service | |||
that separately for each node | that separately for each node | |||
where services will be eliminated."; | where services will be eliminated."; | |||
leaf index { | leaf index { | |||
type uint8; | type uint8; | |||
description | description | |||
"This index allows a list of multiple outgoing | "This index allows a list of multiple outgoing | |||
forwarding sub-layers"; | forwarding sub-layers."; | |||
} | } | |||
uses detnet-header; | uses detnet-header; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
sub-layers of the lower layer for service-to-service | service sub-layers of the lower layer for | |||
aggregation at the ingress node or relay node. The | service-to-service aggregation at the | |||
service sub-layer encapsulates the DetNet | ingress node or relay node. The service | |||
Control-Word and S-label when the operation type is | sub-layer encapsulates the d-CW and S-Label when | |||
service-initiation, and swaps the S-label when the | the operation type is 'service-initiation' and | |||
operation type is service-relay."; | swaps the S-Label when the operation type is | |||
'service-relay'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
description | description | |||
"reference point of the service-sub-layer | "Reference point of the service-sub-layer | |||
at which this service will be aggregated."; | at which this service will be aggregated."; | |||
} | } | |||
container service-label { | container service-label { | |||
description | description | |||
"This is the MPLS service sub-layer label. This | "This is the MPLS service sub-layer label. This | |||
is optional and only used when the service | is optional and is only used when the service | |||
sub-layer uses MPLS. It is an MPLS stack since | sub-layer uses MPLS. It is an MPLS stack, | |||
more than a single label may be used."; | since more than a single label may be used."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container app-flow { | container app-flow { | |||
description | description | |||
"This service sub-layer is sending to the app-flow of | "This service sub-layer is sending to the | |||
the upper layer for egress proxy at the egress node, | App-flow of the upper layer for the | |||
and decapsulates the DetNet Control-Word and S-label | egress proxy at the egress node. It then | |||
for individual DetNet service. This outgoing type | decapsulates the d-CW and S-Label for an | |||
only can be chosen when the operation type is | individual DetNet service. This outgoing type | |||
service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses app-flows-group; | uses app-flows-group; | |||
} | } | |||
container service-disaggregation { | container service-disaggregation { | |||
description | description | |||
"This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
sub-layer of the upper layer for service-to-service | service sub-layer of the upper layer for | |||
disaggregation at the relay node or egress node, and | service-to-service disaggregation at the | |||
decapsulates the DetNet Control-Word and A-label for | relay node or egress node. It then | |||
aggregated DetNet service. This outgoing type only | decapsulates the d-CW and A-Label for an | |||
can be chosen when the operation type is | aggregated DetNet service. This outgoing type | |||
service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-disaggregation { | container forwarding-disaggregation { | |||
description | description | |||
"This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
sub-layer of the upper layer for | forwarding sub-layer of the upper layer for | |||
forwarding-to-service disaggregation at the relay | forwarding-to-service disaggregation at the | |||
node or egress node, and decapsulates the DetNet | relay node or egress node. It then | |||
Control-Word and A-label for aggregated DetNet | decapsulates the d-CW and A-Label for an | |||
service. This outgoing type only can be chosen when | aggregated DetNet service. This outgoing type | |||
the operation type is service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container forwarding { | container forwarding { | |||
description | description | |||
"The DetNet forwarding sub-layer configuration."; | "The DetNet forwarding sub-layer configuration."; | |||
list sub-layer { | list sub-layer { | |||
key "name"; | key "name"; | |||
description | description | |||
"The list is one or more DetNet service/forwarding types."; | "List of one or more DetNet service/forwarding | |||
types."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the DetNet forwarding sub-layer."; | "The name of the DetNet forwarding sub-layer."; | |||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
} | } | |||
leaf operation { | leaf operation { | |||
type mpls-fwd-operation; | type mpls-fwd-operation; | |||
description | description | |||
"This is the forwarding operation types | "The forwarding operation types | |||
impose-and-forward, pop-and-forward, | 'impose-and-forward', 'pop-and-forward', | |||
pop-impose-and-forward, forward, pop-and-lookup."; | 'pop-impose-and-forward', 'forward', and | |||
'pop-and-lookup'."; | ||||
} | } | |||
container incoming { | container incoming { | |||
description | description | |||
"The DetNet forwarding sub-layer incoming | "The DetNet forwarding sub-layer incoming | |||
configuration."; | configuration."; | |||
choice incoming { | choice incoming { | |||
description | description | |||
"Cases of incoming types."; | "Choices of incoming types."; | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is related to the service | "This forwarding sub-layer is related to the | |||
sub-layers of the upper layer and provide DetNet | service sub-layers of the upper layer and | |||
forwarding or service-to-forwarding aggregation at | provides DetNet forwarding or | |||
service-to-forwarding aggregation at | ||||
the ingress node or relay node."; | the ingress node or relay node."; | |||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-aggregation { | container forwarding-aggregation { | |||
description | description | |||
"This forwarding sub-layer is related to the | "This forwarding sub-layer is related to the | |||
forwarding sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
forwarding-to-forwarding aggregation at the ingress | provides forwarding-to-forwarding aggregation at | |||
node or relay node or transit node."; | the ingress node, relay node, or transit node."; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
container forwarding-id { | container forwarding-id { | |||
description | description | |||
"This forwarding sub-layer is related to all of the | "This forwarding sub-layer is related to all of | |||
lower layer and provide DetNet forwarding swap or | the lower layer and provides DetNet forwarding | |||
termination at the transit node or relay node or | swap or termination at the transit node, | |||
egress node."; | relay node, or egress node."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"This is the interface associated with the | "This is the interface associated with the | |||
forwarding sub-layer."; | forwarding sub-layer."; | |||
} | } | |||
uses detnet-flow-spec; | uses detnet-flow-spec; | |||
} | } | |||
} | } | |||
} | } | |||
container outgoing { | container outgoing { | |||
description | description | |||
"The DetNet forwarding sub-layer outbound | "The DetNet forwarding sub-layer outbound | |||
configuration."; | configuration."; | |||
choice outgoing { | choice outgoing { | |||
description | description | |||
"This is when a service connected directly to an | "A service is connected directly to an | |||
interface with no forwarding sub-layer."; | interface with no forwarding sub-layer."; | |||
container | container interface { | |||
interface { | ||||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
interface for send to next-hop at the ingress | interface, for sending to the next hop at the | |||
node or relay node or transit node."; | ingress node, relay node, or transit node."; | |||
uses detnet-forwarding-next-hop-content; | uses detnet-forwarding-next-hop-content; | |||
} | } | |||
container service-aggregation { | container service-aggregation { | |||
description | description | |||
"This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the service | |||
sub-layers of the lower layer for | sub-layers of the lower layer for | |||
forwarding-to-service aggregation at the ingress | forwarding-to-service aggregation at the ingress | |||
node or relay node."; | node or relay node."; | |||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
skipping to change at line 1870 ¶ | skipping to change at line 2096 ¶ | |||
"This is the optional forwarding label for service | "This is the optional forwarding label for service | |||
aggregation."; | aggregation."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
forwarding sub-layers of the lower layer for | forwarding sub-layers of the lower layer for | |||
forwarding-to-forwarding aggregation at the ingress | forwarding-to-forwarding aggregation at the ingress | |||
node or relay node or transit node."; | node, relay node, or transit node."; | |||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
description | description | |||
"This is a reference to the forwarding sub-layer."; | "This is a reference to the forwarding sub-layer."; | |||
} | } | |||
container forwarding-label { | container forwarding-label { | |||
description | description | |||
"This is the forwarding label for forwarding | "This is the forwarding label for forwarding | |||
sub-layer aggregation."; | sub-layer aggregation."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the | |||
sub-layer of the upper layer and decapsulate the | service sub-layer of the upper layer. It then | |||
F-label for DetNet service or service-to-forwarding | decapsulates the F-Label for DetNet service or | |||
disaggregation at the relay node or egress node. | service-to-forwarding disaggregation at the | |||
This outgoing type only can be chosen when the | relay node or egress node. This outgoing type | |||
operation type is pop-and-lookup."; | can only be chosen when the operation type is | |||
'pop-and-lookup'."; | ||||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
reference | reference | |||
"RFC 8964 Section 4.2.3"; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Section 4.2.3"; | ||||
} | } | |||
container forwarding-disaggregation { | container forwarding-disaggregation { | |||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
forwarding sub-layer of the upper layer and | forwarding sub-layer of the upper layer. It | |||
decapsulate the F-label for forwarding-to-forwarding | then decapsulates the F-Label for | |||
disaggregation at the transit node or relay node or | forwarding-to-forwarding disaggregation at the | |||
egress node. This outgoing type only can be chosen | transit node, relay node, or egress node. | |||
when the operation type is pop-and-lookup."; | This outgoing type can only be chosen when the | |||
operation type is 'pop-and-lookup'."; | ||||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<!-- [rfced] Section 8, Acknowledgments section, and Contributors | ||||
section: We see the "Editor:" designation in the YANG module and | ||||
"The editors" in the Acknowledgments and Contributors sections, but | ||||
none of the authors are listed as editors on the front page. May | ||||
we change "Editor:" and "editors" to "Author:" and "authors", per our | ||||
standard process? | ||||
Original (the semicolon after Don Fedyk's "mailto" entry has been | ||||
removed, the spelling of Xufeng Liu's name has been corrected, | ||||
a comma has been added after "Petch", and the extra character | ||||
after "Scudder" has been removed): | ||||
Editor: Xuesong Geng | ||||
<mailto:gengxuesong@huawei.com> | ||||
Editor: Yeoncheol Ryoo | ||||
<mailto:dbduscjf@etri.re.kr> | ||||
Editor: Don Fedyk | ||||
<mailto:dfedyk@labn.net>; | ||||
Editor: Reshad Rahman | ||||
<mailto:reshad@yahoo.com> | ||||
Editor: Zhenqiang Li | ||||
<mailto:lizhenqiang@chinamobile.com>"; | ||||
... | ||||
The editors of this document wish to thank and acknowledge the | ||||
following people who contributed substantially to the content of this | ||||
document and should be considered coauthors: | ||||
... | ||||
The editors of this document would like to thank Lou Berger, Tom | ||||
Petch Xufeng Lui, Julien Meuric, John Scudder` and Florian Kauer for | ||||
their detailed comments. | ||||
Suggested: | ||||
Author: Xuesong Geng | ||||
<mailto:gengxuesong@huawei.com> | ||||
Author: Yeoncheol Ryoo | ||||
<mailto:dbduscjf@etri.re.kr> | ||||
Author: Don Fedyk | ||||
<mailto:dfedyk@labn.net> | ||||
Author: Reshad Rahman | ||||
<mailto:reshad@yahoo.com> | ||||
Author: Zhenqiang Li | ||||
<mailto:lizhenqiang@chinamobile.com>"; | ||||
... | ||||
The authors of this document would like to thank Lou Berger, Tom | ||||
Petch, Xufeng Liu, Julien Meuric, John Scudder, and Florian Kauer for | ||||
their detailed comments. | ||||
... | ||||
The authors of this document wish to thank and acknowledge the | ||||
following individual, who contributed substantially to the content of | ||||
this document and should be considered a coauthor: --> | ||||
<!-- [rfced] Section 8: | ||||
a) We do not see any variation of "IEEE802.1Q" mentioned in | ||||
Section 5.5 of RFC 9016. Should reference listings for | ||||
IEEE 802.1Q-2022 be added for these items as separate reference | ||||
entries? If not, please clarify their meanings. | ||||
Original: | ||||
"RFC 9016 Section 5.5, IEEE802.1Q"; (4 instances) | ||||
... | ||||
"The minimum payload size that the source | ||||
will transmit., IEEE802.1Q"; | ||||
Perhaps (changed the double hyphen after "Networks" to avoid | ||||
xml2rfc's "Double hyphen within comment" error): | ||||
"RFC 9016: Flow and Service Information Model for | ||||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
Metropolitan Area Networks-Bridges and Bridged | ||||
Networks"; | ||||
b) This sentence does not parse. Please clarify how "have been | ||||
replicated and received" and "and then eliminate it" relate here. | ||||
In other words, to what does "and then eliminate it" refer to? | ||||
Original (the previous sentence is included for context): | ||||
description | ||||
"Copy-from-app-flow is used to extend and use the | ||||
sequence number used in App-flow. This function is | ||||
required when encapsulating App-flows that have been | ||||
replicated and received through multiple ingress nodes | ||||
into a member flow, and then eliminate it at the relay | ||||
node."; | ||||
c) This sentence does not parse. Please clarify "that separately for | ||||
each node where". | ||||
Original: | ||||
description | ||||
"List of the outgoing service | ||||
that separately for each node | ||||
where services will be eliminated."; | ||||
d) We could not find "service-initiation", "service-relay", or | ||||
"service-termination" in any published RFC. It appears that either | ||||
(1) "service-initiation", "service-relay", and "service-termination" | ||||
were at some point changed to "initiation", "termination", and | ||||
"relay" (please see the enums listed under "typedef operation") and | ||||
should be updated accordingly or | ||||
(2) the enums under "typedef operation", relevant '"operation":' | ||||
JSON entries (e.g., '"operation": "initiation"'), and | ||||
"<operation>initiation</operation>" XML entries need to be prepended | ||||
with "service-". Please let us know which is correct, so that we may | ||||
make appropriate corrections. | ||||
Original: | ||||
typedef operation { | ||||
type enumeration { | ||||
enum initiation { | ||||
description | ||||
"This is an initiating service sub-layer encapsulation."; | ||||
} | ||||
enum termination { | ||||
description | ||||
"Operation for DetNet service sub-layer decapsulation."; | ||||
} | ||||
enum relay { | ||||
description | ||||
"Operation for DetNet service sub-layer swap."; | ||||
} | ||||
enum non-detnet { | ||||
description | ||||
"No operation for DetNet service sub-layer."; | ||||
} | ||||
... | ||||
When the operation | ||||
type is service-initiation, The service sub-layer | ||||
encapsulates the DetNet Control-Word and services | ||||
label, which are for individual DetNet flow when the | ||||
incoming type is app-flow and for aggregated DetNet | ||||
flow when the incoming type is service or | ||||
forwarding. The service sub-layer swaps the service | ||||
label when the operation type is service-relay. | ||||
... | ||||
The service sub-layer encapsulates the DetNet | ||||
Control-Word and S-label when the operation type is | ||||
service-initiation, and swaps the S-label when the | ||||
operation type is service-relay. | ||||
... | ||||
This outgoing type | ||||
only can be chosen when the operation type is | ||||
service-termination. | ||||
... | ||||
This outgoing type only | ||||
can be chosen when the operation type is | ||||
service-termination. | ||||
... | ||||
This outgoing type only can be chosen when | ||||
the operation type is service-termination. --> | ||||
<!-- [rfced] Section 8: | ||||
a) Because we do not see an "enum forward" in RFC 8960, we updated | ||||
this description clause as noted below. (We see an "enum forward" | ||||
in RFC 8776, but this document and RFC 8960 do not mention RFC 8776.) | ||||
If this update is incorrect, please clarify the text. | ||||
Original: | ||||
description | ||||
"MPLS operations types. This is an enum modeled after the | ||||
MPLS enum. The enums are the same as A YANG Data Model | ||||
for MPLS Base. RFC 8960."; | ||||
} | ||||
Currently: | ||||
description | ||||
"MPLS operation types. This set of enums is modeled after | ||||
the MPLS enums. With the exception of 'enum forward', | ||||
these enums are the same as those provided in RFC 8960."; | ||||
reference | ||||
"RFC 8960: A YANG Data Model for MPLS Base"; | ||||
} | ||||
b) We changed "a hop" to "a next hop" here, as "next hop" seems to | ||||
be used everywhere else. Please let us know if this is incorrect. | ||||
Original: | ||||
description | ||||
"The value of the index for a hop."; | ||||
Currently: | ||||
description | ||||
"The value of the index for a next hop."; | ||||
c) As we do not see "MAX", "Max", or "max" anywhere in RFC 9016, we | ||||
changed "MAX" to "maximum". If this is incorrect, please clarify the | ||||
meaning of "MAX". | ||||
Original: | ||||
leaf max-latency { | ||||
type uint32; | ||||
units "nanoseconds"; | ||||
description | ||||
"This is the maximum latency from Ingress to | ||||
Egress(es) for a single packet of the DetNet flow. | ||||
MaxLatency is specified as an integer number of | ||||
nanoseconds. The MAX value is 4,294,967,295 | ||||
nanoseconds."; | ||||
reference | ||||
"RFC 9016 Section 5.9.2"; | ||||
} | ||||
Currently: | ||||
leaf max-latency { | ||||
type uint32; | ||||
units "nanoseconds"; | ||||
description | ||||
"This is the maximum latency from the ingress to | ||||
one or more egresses for a single packet of the | ||||
DetNet flow. MaxLatency is specified as an | ||||
integer number of nanoseconds. The maximum value | ||||
for this parameter is 4,294,967,295 nanoseconds."; | ||||
reference | ||||
"RFC 9016: Flow and Service Information Model for | ||||
Deterministic Networking (DetNet), Section 5.9.2"; | ||||
} | ||||
d) We do not see "app-ingress" used in this document. Also, this is | ||||
the only comment in the YANG module. Should it be removed? | ||||
Original: | ||||
} //End of app-ingress --> | ||||
<!-- [rfced] Section 8: | ||||
a) We could not verify that Section 5 of this document is applicable | ||||
to the following definitions. Please confirm that these citations | ||||
are correct and will be clear to readers. | ||||
Original: | ||||
leaf-list member-app-flow { | ||||
type app-flow-ref; | ||||
config false; | ||||
description | ||||
"A list of Applications attached to this profile. Each | ||||
application that uses a profile has an automatically | ||||
populated reference."; | ||||
reference | ||||
"RFC 9633: Deterministic Networking (DetNet) YANG Model | ||||
Section 5"; | ||||
} | ||||
leaf-list member-svc-sublayer { | ||||
type service-sub-layer-ref; | ||||
config false; | ||||
description | ||||
"A list of Service Sub-layers attached to this profile. | ||||
Each Service Sub-layers that uses a profile has an | ||||
automatically populated reference."; | ||||
reference | ||||
"RFC 9633: Deterministic Networking (DetNet) YANG Model | ||||
Section 5"; | ||||
} | ||||
leaf-list member-fwd-sublayer { | ||||
type forwarding-sub-layer-ref; | ||||
config false; | ||||
description | ||||
"A list of Forwarding Sub-layers attached to this profile. | ||||
Each Forwarding Sub-layers that uses a profile has an | ||||
automatically populated reference."; | ||||
reference | ||||
"RFC 9633: Deterministic Networking (DetNet) YANG Model | ||||
Section 5"; | ||||
} | ||||
b) Should the text for these two items match (i.e., include | ||||
"IPv6 only" in both)? | ||||
Original: | ||||
type inet:ipv6-flow-label; | ||||
description | ||||
"The flow label value of the header. IPv6 only."; | ||||
... | ||||
type inet:ipv6-flow-label; | ||||
description | ||||
"The flow label value of the header."; | ||||
c) We do not see "A-label" ("A-Label") mentioned in Section 4.2.1 | ||||
or 4.2.2 of RFC 8964. Should different section numbers be listed | ||||
here? If not, please clarify the text, as Section 4.2 of RFC 8964 | ||||
appears to discuss the S-Label and F-Label but not the A-Label. | ||||
Original: | ||||
container service-disaggregation { | ||||
description | ||||
"This service sub-layer is sending to the service | ||||
sub-layer of the upper layer for service-to-service | ||||
disaggregation at the relay node or egress node, and | ||||
decapsulates the DetNet Control-Word and A-label for | ||||
aggregated DetNet service. This outgoing type only | ||||
can be chosen when the operation type is | ||||
service-termination."; | ||||
reference | ||||
"RFC 8964 Section 4.2.1 and 4.2.2."; | ||||
uses service-sub-layer-group; | ||||
} | ||||
container forwarding-disaggregation { | ||||
description | ||||
"This service sub-layer is sending to the forwarding | ||||
sub-layer of the upper layer for | ||||
forwarding-to-service disaggregation at the relay | ||||
node or egress node, and decapsulates the DetNet | ||||
Control-Word and A-label for aggregated DetNet | ||||
service. This outgoing type only can be chosen when | ||||
the operation type is service-termination."; | ||||
reference | ||||
"RFC 8964 Section 4.2.1 and 4.2.2."; --> | ||||
</section> | </section> | |||
<section anchor="IANA" toc="include" numbered="true" removeInRFC="false"> | <section anchor="IANA" toc="include" numbered="true" removeInRFC="false"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t>This document registers a URI in the "IETF XML Registry" | <t>IANA has registered the following URI in the "ns" subregistry within th | |||
<xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/>, | e "IETF XML Registry" <xref target="RFC3688"/>: | |||
the following registration is requested to be made: | ||||
</t> | </t> | |||
<dl newline="false" spacing="compact" indent="3"> | <dl newline="false" spacing="compact"> | |||
<dt>ID:</dt> | ||||
<dd>yang:ietf-detnet</dd> | ||||
<dt>URI:</dt> | <dt>URI:</dt> | |||
<dd>urn:ietf:params:xml:ns:yang:ietf-detnet</dd> | <dd>urn:ietf:params:xml:ns:yang:ietf-detnet</dd> | |||
<dt>Registrant Contact:</dt> | <dt>Registrant Contact:</dt> | |||
<dd>The IESG.</dd> | <dd>The IESG.</dd> | |||
<dt>XML:</dt> | <dt>XML:</dt> | |||
<dd>N/A, the requested URI is an XML namespace.</dd> | <dd>N/A; the requested URI is an XML namespace.</dd> | |||
</dl> | </dl> | |||
<t>This document registers YANG modules in the "YANG Module Names" | <t>IANA has registered the following YANG module in the "YANG Module Names | |||
registry <xref target="RFC6020" format="default" sectionFormat="of" derive | " | |||
dContent="RFC6020"/>. | subregistry <xref target="RFC6020" format="default"/> within the "YANG Par | |||
ameters" registry: | ||||
</t> | </t> | |||
<dl newline="false" spacing="compact" indent="3"> | <dl newline="false" spacing="compact"> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd>ietf-detnet</dd> | <dd>ietf-detnet</dd> | |||
<dt>Maintained by IANA:</dt> | <dt>Maintained by IANA:</dt> | |||
<dd>N</dd> | <dd>N</dd> | |||
<dt>Namespace:</dt> | <dt>Namespace:</dt> | |||
<dd>urn:ietf:params:xml:ns:yang:ietf-detnet</dd> | <dd>urn:ietf:params:xml:ns:yang:ietf-detnet</dd> | |||
<dt>Prefix:</dt> | <dt>Prefix:</dt> | |||
<dd>dnet</dd> | <dd>dnet</dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd>This RFC when published.</dd> | <dd>RFC 9633</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | <section anchor="Security" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t> | <t> | |||
Security considerations for DetNet are covered in the DetNet Architecture | Security considerations for DetNet are covered in "<xref target="RFC8655" | |||
<xref target="RFC8655"/> and DetNet Security Considerations <xref target=" | format="title"/>" <xref target="RFC8655" format="default"/> | |||
RFC9055"/> . | and "<xref target="RFC9055" format="title"/>" <xref target="RFC9055" form | |||
</t> | at="default"/>. | |||
<t>The YANG modules specified in this document define a schema for | ||||
data that is designed to be accessed via network | ||||
management protocols, such as NETCONF <xref target="RFC6241"/> or | ||||
RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure | ||||
transport | ||||
layer, and the mandatory-to-implement secure transport is Secure Shell (S | ||||
SH) | ||||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>. | ||||
</t> | </t> | |||
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC | <!-- YANG security cons. boilerplate paragraph 1 --> | |||
8341"/> | <t>The YANG module specified in this document defines a schema for data | |||
provides the | that is designed to be accessed via network management protocols such | |||
means to restrict access for particular NETCONF or RESTCONF users to a | as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | The lowest NETCONF layer is the secure transport layer, and the | |||
mandatory-to-implement secure transport is Secure Shell (SSH) | ||||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</ | ||||
t> | ||||
<!-- YANG security cons. boilerplate paragraph 2 --> | ||||
<t>The Network Configuration Access Control Model (NACM) <xref targe | ||||
t="RFC8341"/> | ||||
provides the means to restrict access for particular NETCONF or RESTCONF u | ||||
sers | ||||
to a preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
operations and content.</t> | operations and content.</t> | |||
<t>There are a number of data nodes defined in the module | <!-- YANG security cons. boilerplate paragraph 3 --> | |||
that are writable/creatable/deletable (i.e., config true, which is the def | <t>There are a number of data nodes defined in this YANG module that are | |||
ault). | writable/creatable/deletable (i.e., config true, which is the default). Th | |||
These data nodes may be considered sensitive or vulnerable in some network | ese | |||
environments. | data nodes may be considered sensitive or vulnerable in some network | |||
Unauthorized write operations (e.g., edit-config) to any elements of this | environments. Write operations (e.g., edit-config) to these data nodes wit | |||
hout | ||||
proper protection can have a negative effect on network operations. These | ||||
are | ||||
the subtrees and data nodes and their sensitivity/vulnerability:</t> | ||||
<t>Unauthorized write operations (e.g., edit-config) to any elements of th | ||||
is | ||||
module can break or incorrectly connect DetNet flows. Since DetNet is a | module can break or incorrectly connect DetNet flows. Since DetNet is a | |||
configured Data Plane, any changes that are not coordinated with all devic | configured data plane, any changes that are not coordinated with all devic | |||
es | es | |||
along the path will create a denial of service. | along the path will result in a denial of service. | |||
In addition, arbitrary write operations could also enable an attacker to m | In addition, arbitrary write operations could enable an attacker to modify | |||
odify | ||||
a network path to enable select traffic to avoid inspection or treatment b y | a network path to enable select traffic to avoid inspection or treatment b y | |||
security controls, or route traffic in a way that it would be subject to | security controls or to route traffic in such a way that the traffic would | |||
inspect/modification by an adversary node. | be subject to | |||
</t> | inspection/modification by an adversary node.</t> | |||
<t> | ||||
Similarly, the data nodes in these YANG modules may be | <!-- YANG security cons. boilerplate paragraph 4 --> | |||
considered sensitive or vulnerable in some network environments. It | <t>Some of the readable data nodes in this YANG module may be considered | |||
is thus important to control read access (e.g., via get, get-config, | sensitive or vulnerable in some network environments. It is thus important | |||
or notification) to these data nodes. These are the subtrees and data node | to | |||
and their sensitivity/vulnerability: | control read access (e.g., via get, get-config, or notification) to these | |||
</t> | data | |||
<t> | nodes. These are the subtrees and data nodes and their | |||
/detnet/app-flows: This controls the application details so it could be c | sensitivity/vulnerability:</t> | |||
onsidered sensitive. | <dl newline="false" spacing="normal"> | |||
</t> | <dt>/detnet/app-flows:</dt><dd>This controls the application details, so i | |||
<t> | t could be considered sensitive.</dd> | |||
/detnet/traffic-profile/member-app-flow: This links traffic profiles to ap | <dt>/detnet/traffic-profile/member-app-flow:</dt><dd>This links traffic pr | |||
plications, | ofiles to applications, | |||
service sub-layers and/or and forwarding sub-layers so | service sub-layers, and/or forwarding sub-layers, so | |||
this also could be considered more sensitive. | this could also be considered more sensitive.</dd> | |||
</t> | <dt>/detnet/service/sub-layer/incoming/app-flow:</dt><dd>This links applic | |||
<t> | ations to services.</dd> | |||
/detnet/service/sub-layer/incoming/app-flow: This links applications to se | <dt>/detnet/service/sub-layer/outgoing/app-flow:</dt><dd>This links applic | |||
rvices. | ations to services.</dd> | |||
</t> | </dl> | |||
<t> | <t>The above nodes can reveal identifiable characteristics of the applicat | |||
/detnet/service/sub-layer/outgoing/app-flow: This links applications to se | ion flows. | |||
rvices. | ||||
</t> | ||||
<t> | ||||
The above nodes can reveal identifiable characteristics of the application | ||||
flows. | ||||
</t> | ||||
<t>/detnet/service/sub-layer: This defines the service and forwarding oper | ||||
ations. | ||||
</t> | ||||
<t>/detnet/fowarding/sub-layer: This defines the forwarding operations. | ||||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>/detnet/service/sub-layer:</dt><dd>This defines the service and forwar | ||||
ding operations.</dd> | ||||
<dt>/detnet/forwarding/sub-layer:</dt><dd>This defines the forwarding oper | ||||
ations.</dd> | ||||
<!-- [rfced] Security Considerations: Please note that we changed | ||||
"fowarding" to "forwarding" in this node definition. If this node | ||||
definition uses "fowarding" elsewhere and our update could cause | ||||
problems, please let us know, and we will revert the change. | ||||
Original: | ||||
/detnet/fowarding/sub-layer: This defines the forwarding operations. | ||||
Currently: | ||||
/detnet/forwarding/sub-layer: This defines the forwarding | ||||
operations. --> | ||||
</dl> | ||||
<t> | <t> | |||
The above nodes can reveal some aspects of the network topology of there i s unauthorized access to this configuration. | The above nodes can reveal some aspects of the network topology in the cas e of unauthorized access to this configuration. | |||
</t> | </t> | |||
<!-- [rfced] Authors and *[AD] Security Considerations: | ||||
We tried to align the fourth paragraph of this section with | ||||
Paragraph 3 ("There are a number of data nodes ...") on the | ||||
IETF's "YANG module security considerations" page | ||||
(https://wiki.ietf.org/group/ops/yang-security-guidelines). | ||||
Typically, there are two different lists of "subtrees and data nodes | ||||
and their sensitivity/vulnerability" provided in this section. We | ||||
only see one list. Does the single list apply to both Paragraphs 3 | ||||
and 4 as shown on the "YANG module security considerations" page? | ||||
If yes, how could this be clarified? If no, please provide the | ||||
additional list of subtrees and data nodes as appropriate. (In the | ||||
meantime, we have left a placeholder for an additional list.) | ||||
Also, it appears that RPC operations as noted on the IETF page do not | ||||
apply to this document. Please confirm. | ||||
Per the note on the IETF page (near the bottom) that lists which | ||||
RFCs must be in the Normative References section, we moved the | ||||
listings for RFCs 6241, 6242, 8040, and 8341 to the | ||||
Normative References section accordingly. --> | ||||
</section> | </section> | |||
<section anchor="Contributors" numbered="true" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>The editors of this document wish to thank and acknowledge | ||||
the following people who contributed substantially to the content | ||||
of this document and should be considered coauthors: | ||||
</t> | ||||
<contact fullname="Mach(Guoyi) Chen" initials="M." surname="Chen"> | ||||
<organization>Huawei Technologies</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<email>mach.chen@huawei.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
<section anchor="Acknowledgments" numbered="true" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t> The editors of this document would like to thank Lou Berger, Tom Petc | ||||
h | ||||
Xufeng Lui, Julien Meuric, John Scudder` and Florian Kauer for thei | ||||
r detailed comments. | ||||
</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 991.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 991.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 020.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 020.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 950.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 950.xml"/> | |||
<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.8 655.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0 791.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0 791.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 303.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 303.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
241.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
242.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
040.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 200.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 200.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 294.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 294.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 341.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 343.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 343.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 349.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 349.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 446.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 446.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 519.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 519.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 938.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 960.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 960.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.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 016.xml"/> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 688.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 688.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
241.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
242.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 055.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 055.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
040.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
341.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 340.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 340.xml"/> | |||
<reference anchor="IEEE8021Q" target="https://ieeexplore.ieee.org/document | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
/8403927" quoteTitle="true" derivedAnchor="IEEE8021Q"> | 259.xml"/> | |||
<reference anchor="IEEE8021Q" target="https://ieeexplore.ieee.org/document | ||||
/10004498"> | ||||
<front> | <front> | |||
<title>IEEE Standard for Local and Metropolitan Area Networks--Bridges and Bridged Networks</title> | <title>IEEE Standard for Local and Metropolitan Area Networks--Bridges and Bridged Networks</title> | |||
<author> | <author> | |||
<organization showOnFrontPage="true">IEEE</organization> | <organization>IEEE</organization> | |||
</author> | </author> | |||
<date month="July" year="2022"/> | <date month="December" year="2022"/> | |||
</front> | </front> | |||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2022.10004498"/> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2022.10004498"/> | |||
<seriesInfo name="IEEE" value="802.1Q-2022"/> | <seriesInfo name="IEEE Std" value="802.1Q-2022"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="Tree" numbered="true" toc="default"> | <section anchor="Tree" numbered="true" toc="default"> | |||
<name>DetNet Configuration YANG Tree</name> | <name>DetNet Configuration YANG Tree</name> | |||
<t> This is the full YANG tree as described in <xref target="RFC8340"/>. | <t> This is the full YANG tree per the guidelines provided in <xref targe t="RFC8340"/>. | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="yangtree"><![CDATA[ | |||
module: ietf-detnet | module: ietf-detnet | |||
+--rw detnet | +--rw detnet | |||
+--rw traffic-profile* [name] | +--rw traffic-profile* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw traffic-requirements | | +--rw traffic-requirements | |||
| | +--rw min-bandwidth? uint64 | | | +--rw min-bandwidth? uint64 | |||
| | +--rw max-latency? uint32 | | | +--rw max-latency? uint32 | |||
| | +--rw max-latency-variation? uint32 | | | +--rw max-latency-variation? uint32 | |||
| | +--rw max-loss? decimal64 | | | +--rw max-loss? decimal64 | |||
| | +--rw max-consecutive-loss-tolerance? uint32 | | | +--rw max-consecutive-loss-tolerance? uint32 | |||
skipping to change at line 2546 ¶ | skipping to change at line 3097 ¶ | |||
| +--rw label? | | +--rw label? | |||
| | rt-types:mpls-label | | | rt-types:mpls-label | |||
| +--rw ttl? uint8 | | +--rw ttl? uint8 | |||
| +--rw traffic-class? uint8 | | +--rw traffic-class? uint8 | |||
+--:(service-sub-layer) | +--:(service-sub-layer) | |||
| +--rw service-sub-layer | | +--rw service-sub-layer | |||
| +--rw sub-layer* service-sub-layer-ref | | +--rw sub-layer* service-sub-layer-ref | |||
+--:(forwarding-disaggregation) | +--:(forwarding-disaggregation) | |||
+--rw forwarding-disaggregation | +--rw forwarding-disaggregation | |||
+--rw sub-layer* forwarding-sub-layer-ref | +--rw sub-layer* forwarding-sub-layer-ref | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
<section anchor="Examples" numbered="true" toc="default"> | <section anchor="Examples" numbered="true" toc="default"> | |||
<name>Examples</name> | <name>Examples</name> | |||
<t> The following examples are provided. These examples are tested with Y | <t>This section provides several examples. These examples were tested wit | |||
anglint | h the "yanglint" program | |||
and use operational output to exercise both config true and config | and use operational output to exercise both "config true" and "con | |||
false objects. | fig false" objects. | |||
Note that IPv4 and IPv6 addresses are supported but for clarity in | Note that IPv4 and IPv6 addresses are supported, but for clarity, | |||
the examples | IPv4 is used, with the exception of Example A-1 (<xref target="example-a-1"/>). | |||
and diagrams IPv4 has been used in most examples. The IP types are | The IP types are imported from | |||
imported from | <xref target="RFC6991" format="default"/>; these types support both | |||
<xref target="RFC6991" format="default"/> and these support both I | IPv4 and IPv6. | |||
Pv4 and IPv6. | ||||
</t> | </t> | |||
<t> The following conventions are used in the diagrams. | <t> The following conventions are used in the diagrams. | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Replication and Elimination points are shown as an R in and E in | <li>In the diagrams found in the PDF and HTML copies of this document, r | |||
circles respectively. | eplication and elimination points are shown as "R" and "E" in | |||
circles, respectively. | ||||
</li> | </li> | |||
<li>Packet Headers including DetNet aggregation label or A-label, Servic | <li>Packet headers, including a DetNet aggregation label (A-Label), serv | |||
e label or | ice label | |||
S-label and Forwarding label or F-label are illustrated at each hop | (S-Label), and forwarding label (F-Label), are illustrated at each hop | |||
as defined in <xref target="RFC8964"/>. | as defined in <xref target="RFC8964"/>. | |||
</li> | </li> | |||
<li>Aggregation/Disaggregation nodes are indicated by dashed line boxes. | <li>Aggregation/disaggregation nodes are indicated by dashed-line boxes. | |||
</li> | </li> | |||
<li> Since the model augments IETF interfaces, minimal interface YANG | <li> Since the model augments IETF interfaces, minimal interface YANG | |||
data is provided to validate the interface data as well. This shows | data is provided to validate the interface data as well. This shows | |||
up as a named value such as "eth0" etc. that is referenced by the c onfiguration. | up as a named value, such as "eth0", that is referenced by the conf iguration. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
The following are examples of aggregation and disaggregation at various | Below are examples of aggregation and disaggregation at various points | |||
points in DetNet. Figures | in DetNet. Where indicated, figures | |||
are provided in the PDF and HTML version of this document. | are provided in the PDF and HTML copies of this document. | |||
</t> | </t> | |||
<section numbered="true" toc="default"> | ||||
<name>Example A-1 JSON Configuration/Operational</name> | <!-- [rfced] Appendices B.1 through B.4. We notice inconsistencies | |||
with spacing, hyphens, and case in the figures containing | ||||
SVG. Please review and provide an updated XML file with fixes as | ||||
you see fit. | ||||
Figure 1: | ||||
- Add a space to "Relay2" (e.g., "Relay 2") | ||||
- Capitalize all instances of "label" (e.g., "S-Label") to match use in | ||||
the running text and RFC 8964 | ||||
- Make spacing consistent for "S-label" and "F-label" (e.g., update | ||||
"S -label" to "S-Label") | ||||
Figure 2: | ||||
- Remove hyphens from "incoming-service", "outgoing-service", | ||||
"service-identification", and "forwarding-identification" | ||||
Figure 4: | ||||
- Fix "App-2" (the dash overlaps the "p") - 2 instances | ||||
- Capitalize all instances of "label" | ||||
Figure 6: | ||||
- Capitalize all instances of "label" | ||||
Figure 8: | ||||
- Make spacing around the hyphen consistent for "DN-1" and "DN-2" | ||||
- "Transit 2" overlaps a box (if possible, move the term to the | ||||
left one space or move the box to the right one space) | ||||
- Capitalize all instances of "label" | ||||
- Make spacing consistent for "S-label" and "F-label" | ||||
Figure 11: | ||||
- Capitalize all instances of "label" | ||||
- Make spacing consistent for "S-label" and "F-label" | ||||
Figure 14: | ||||
- Fix overlap of "DN-2" and "disaggregation" | ||||
- Check spacing around hyphens for "DN-1" and "DN-2" | ||||
- Capitalize all instances of "label" | ||||
- Make spacing consistent for "S-label", "F-label", and "A-label" --> | ||||
<!-- [rfced] Appendices B.1 through B.8: We found these titles | ||||
confusing, because the JSON and XML examples only represent part of | ||||
the information in each section. For example, Appendix B.1 cites | ||||
three figures, but only the third figure contains JSON language. | ||||
Also, (1) we could not follow the meaning of | ||||
"Configuration/Operational" and (2) we could not find the terms | ||||
"JSON Relay", "JSON relay", "JSON Transit", "JSON transit", | ||||
"JSON Service", or "JSON service" in any published RFC. If the | ||||
suggested updates below are not correct, please clarify. | ||||
Original: | ||||
B.1. Example A-1 JSON Configuration/Operational | ||||
B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer | ||||
B.3. Example B-2 JSON Service Aggregation Configuration | ||||
B.4. Example C-1 JSON Relay Aggregation/Disaggregation Configuration | ||||
B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service Sub- | ||||
Layer | ||||
B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | ||||
Disaggregation | ||||
B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | ||||
Disaggregation | ||||
B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | ||||
Disaggregation | ||||
Suggested: | ||||
B.1. Example A-1: Application Aggregation | ||||
B.2. Example B-1: Aggregation Using a Forwarding Sub-layer | ||||
B.3. Example B-2: Service Aggregation | ||||
B.4. Example C-1: DetNet Relay Service Sub-layer | ||||
Aggregation/Disaggregation | ||||
B.5. Example C-2: DetNet Relay Service Sub-layer | ||||
Aggregation/Disaggregation | ||||
B.6. Example C-3: DetNet Relay Service Sub-layer | ||||
Aggregation/Disaggregation | ||||
B.7. Example C-4: DetNet Relay Service Sub-layer | ||||
Aggregation/Disaggregation | ||||
B.8. Example D-1: Transit Node Forwarding Sub-layer | ||||
Aggregation/Disaggregation --> | ||||
<section numbered="true" toc="default" anchor="example-a-1"> | ||||
<name>Example A-1: JSON Configuration/Operational</name> | ||||
<t> | <t> | |||
This illustrates that multiple App flows with the same source, | This example illustrates multiple App-flows with the same source | |||
the same destination, and the same traffic specification are ag | , | |||
gregated in | destination, and traffic specification aggregated into | |||
a single DetNet flow service sub-layer. Ingress node 1 | a single DetNet flow service sub-layer. Ingress node 1 | |||
aggregates App flows 0 and 1 into a service sub-layer of DetNet | aggregates App-flows 0 and 1 into a service sub-layer of DetNet | |||
flow 1. | flow 1. | |||
Two ways of illustrating this follow, then the JSON operational | Two ways to illustrate this are provided in Figures <xref t | |||
data model | arget="case-a1" format="counter"/> and <xref target="case-a1-pipe" format="count | |||
corresponding to the diagrams follows. This example uses IPv6 ad | er"/>; the JSON operational data model <xref target="RFC8259"/> | |||
dress format. | corresponding to the diagrams is then shown in <xref | |||
target="example-detnet-json-configuration-a-1"/>. The address for | ||||
mat used in this example is IPv6. | ||||
<!-- [rfced] Appendix B.1: For ease of the reader, we have cited | ||||
RFC 8259 here and listed it in the Informative References section. | ||||
Please let us know any objections. | ||||
Original: | ||||
Two ways of illustrating this follow, then the JSON operational | ||||
data model corresponding to the diagrams follows. | ||||
Currently: | ||||
Two ways to illustrate this are provided in Figures 1 and 2; the | ||||
JSON operational data model [RFC8259] corresponding to the | ||||
diagrams is then shown in Figure 3. | ||||
... | ||||
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | ||||
Interchange Format", STD 90, RFC 8259, | ||||
DOI 10.17487/RFC8259, December 2017, | ||||
<https://www.rfc-editor.org/info/rfc8259>. --> | ||||
</t> | </t> | |||
<!-- [rfced] Appendix B.1: We found "Application Aggregation" and | ||||
"Application Aggregation Flow Stack" confusing. Could these figure | ||||
titles be updated as suggested? | ||||
Original: | ||||
Figure 2: Case A-1 Application Aggregation | ||||
... | ||||
Figure 3: Case A-1 Application Aggregation Flow Stack Detail | ||||
... | ||||
Figure 4: Example A-1 DetNet configuration Application Aggregation | ||||
Suggested: | ||||
Figure 1: Case A-1: Application Flow Aggregation | ||||
... | ||||
Figure 2: Case A-1: Stack Details for Application Flow Aggregation | ||||
... | ||||
Figure 3: Example A-1: DetNet Configuration Application Flow | ||||
Aggregation --> | ||||
<figure anchor="case-a1"> | <figure anchor="case-a1"> | |||
<name>Case A-1 Application Aggregation</name> | <name>Case A-1: Application Aggregation</name> | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case A-1 Diagram. | Please consult the PDF or HTML copy for the Case A-1 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 120" | viewBox="0 0 210 120" | |||
version="1.1" | version="1.1" | |||
skipping to change at line 3969 ¶ | skipping to change at line 4641 ¶ | |||
x="189.36337" | x="189.36337" | |||
y="26.483425" | y="26.483425" | |||
id="tspan411" | id="tspan411" | |||
>IP</tspan></text> | >IP</tspan></text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<figure anchor="case-a1-pipe"> | <figure anchor="case-a1-pipe"> | |||
<name>Case A-1 Application Aggregation Flow Stack Detail</name> | <name>Case A-1: Application Aggregation Flow Stack Details</name > | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case A-1 Diagram. | Please consult the PDF or HTML copy for the Case A-1 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="100mm" | height="100mm" | |||
viewBox="0 0 210 110" | viewBox="0 0 210 110" | |||
version="1.1" | version="1.1" | |||
skipping to change at line 4262 ¶ | skipping to change at line 4934 ¶ | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="69.92778" | x="69.92778" | |||
y="38.035889" | y="38.035889" | |||
transform="scale(0.93486789,1.0696699)">incoming<tspan | transform="scale(0.93486789,1.0696699)">incoming<tspan | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="70.134247" | x="70.134247" | |||
y="40.953987" | y="40.953987" | |||
>app-flow</tspan></text> | >App-flow</tspan></text> | |||
<path | <path | |||
d="m 62.541679,13.751102 -1.3e-5,4.259474 h 0.102668 l 1.3e-5,-4.259474 z m -0.564688,4.024521 0.616005,1.409679 0.616015,-1.409668 z" | d="m 62.541679,13.751102 -1.3e-5,4.259474 h 0.102668 l 1.3e-5,-4.259474 z m -0.564688,4.024521 0.616005,1.409679 0.616015,-1.409668 z" | |||
/> | /> | |||
<path | <path | |||
d="m 77.325907,13.751102 -1e-5,4.259474 h 0.102661 l 2e-5,-4.259474 z m - 0.564686,4.024521 0.616007,1.409679 0.616015,-1.409668 z" | d="m 77.325907,13.751102 -1e-5,4.259474 h 0.102661 l 2e-5,-4.259474 z m - 0.564686,4.024521 0.616007,1.409679 0.616015,-1.409668 z" | |||
/> | /> | |||
<rect | <rect | |||
x="120.01389" | x="120.01389" | |||
skipping to change at line 4420 ¶ | skipping to change at line 5092 ¶ | |||
>service-identification</tspan><tspan | >service-identification</tspan><tspan | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="137.78165" | x="137.78165" | |||
y="37.659351" | y="37.659351" | |||
>outgoing</tspan><tspan | >outgoing</tspan><tspan | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="137.91891" | x="137.91891" | |||
y="40.577454" | y="40.577454" | |||
>app-flow</tspan><tspan | >App-flow</tspan><tspan | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="137.71245" | x="137.71245" | |||
y="82.372231" | y="82.372231" | |||
>incoming</tspan><tspan | >incoming</tspan><tspan | |||
font-size="2.44744px" | font-size="2.44744px" | |||
x="129.24306" | x="129.24306" | |||
y="85.290337" | y="85.290337" | |||
>forwarding-identification</tspan></text> | >forwarding-identification</tspan></text> | |||
skipping to change at line 4477 ¶ | skipping to change at line 5149 ¶ | |||
stroke-dasharray="1.75714, 1.31786" | stroke-dasharray="1.75714, 1.31786" | |||
fill="none" | fill="none" | |||
fill-rule="evenodd" | fill-rule="evenodd" | |||
/> | /> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-configuration-a-1"/> contains the o perational JSON configuration for the ingress aggregation | <t> <xref target="example-detnet-json-configuration-a-1"/> contains the o perational JSON configuration for the ingress aggregation | |||
node illustrated in <xref target="case-a1"/> and | node illustrated in Figures <xref target="case-a1" format="c | |||
<xref target="case-a1-pipe"/>. App-0 and app-1 | ounter"/> and | |||
are aggregated into Service Sub-layer ssl-1. | <xref target="case-a1-pipe" format="counter"/>. "app-0" and | |||
"app-1" | ||||
are aggregated into service sub-layer ssl-1. | ||||
</t> | </t> | |||
<!-- [rfced] Appendices B.1 and subsequent: Please review each | ||||
artwork element in this document. For example, should the artwork | ||||
items in the appendices be tagged as sourcecode with type="json", | ||||
with the exception of the XML in Appendix B.2 (which, if appropriate, | ||||
should perhaps be sourcecode with type="xml")? | ||||
Please see | ||||
<https://www.rfc-editor.org/materials/sourcecode-types.txt>; if this | ||||
page does not contain an applicable type, please let us know. | ||||
Also, it is acceptable to leave the "type" attribute unset. --> | ||||
<figure anchor="example-detnet-json-configuration-a-1"> | <figure anchor="example-detnet-json-configuration-a-1"> | |||
<name>Example A-1 DetNet configuration Application Aggregation</name> | <name>Example A-1: DetNet Configuration Application Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 20000000, | "max-latency-variation": 20000000, | |||
skipping to change at line 4677 ¶ | skipping to change at line 5360 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example B-1 XML Config: Aggregation using a Forwarding Sub-layer</ | <name>Example B-1: XML Configuration - Aggregation Using a Forwarding Su | |||
name> | b-layer</name> | |||
<t> <xref target="case-b1"/> illustrates the DetNet service sub-layer fl | <t>As illustrated in <xref target="case-b1"/>, DetNet service sub-layer | |||
ows 1 and 2 are | flows 1 and 2 are | |||
aggregated into a single forwarding sub-layer. | aggregated into a single forwarding sub-layer. | |||
For the same destination multiple DetNet flows use a single forward ing path and | For the same destination, multiple DetNet flows use a single forwar ding path, and | |||
service protection is performed by the corresponding service sub-la yer | service protection is performed by the corresponding service sub-la yer | |||
of each flow. A diagram illustrating this case is shown and then th | of each flow. The corresponding | |||
e corresponding | XML operational data for node "Ingress 1" follows. | |||
XML operational data for node Ingress 1 follows. | ||||
<!-- [rfced] Appendix B.2: Regarding the XML in this section: Would | ||||
you like to add a citation and Normative Reference listing, e.g., | ||||
for [W3C.REC-xml-20081126], per <https://datatracker.ietf.org/doc/ | ||||
statement-iesg-guidelines-for-the-use-of-formal-languages-in-ietf-specifications | ||||
-20011001/>? | ||||
We see that the XML does not include the typical <?xml version="1.0" | ||||
encoding="UTF-8"?> line in it, so it is not clear to us whether | ||||
or not the IESG's guidelines for the use of formal languages | ||||
apply here, but please review and advise. | ||||
Original: | ||||
Figure 6 contains the operational XML configuration for the ingress | ||||
aggregation node illustrated in Figure 5. | ||||
Possibly: | ||||
Figure 5 contains the operational XML configuration | ||||
[W3C.REC-xml-20081126] for the ingress aggregation node illustrated | ||||
in Figure 4. | ||||
... | ||||
[W3C.REC-xml-20081126] | ||||
Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., | ||||
and F. Yergeau, "Extensible Markup Language (XML) 1.0 | ||||
(Fifth Edition)", W3C Recommendation REC-xml-20081126, | ||||
November 2008, <https://www.w3.org/TR/xml/>. --> | ||||
</t> | </t> | |||
<figure anchor="case-b1"> | <figure anchor="case-b1"> | |||
<name>Case B-1 Example Config: Aggregation using a Forwarding Su b-layer</name> | <name>Case B-1: Example Configuration - Aggregation Using a Forw arding Sub&nbhy;layer</name> | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case B-1 Diagram. | Please consult the PDF or HTML copy for the Case B-1 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 6719 ¶ | skipping to change at line 7427 ¶ | |||
font-size="2.92393px" | font-size="2.92393px" | |||
x="196.88129" | x="196.88129" | |||
y="65.450958" | y="65.450958" | |||
transform="scale(0.88605917,1.1285928)">App-1<tspan | transform="scale(0.88605917,1.1285928)">App-1<tspan | |||
font-size="4.1952px" | font-size="4.1952px" | |||
x="181.19646" | x="181.19646" | |||
y="84.901405" | y="84.901405" | |||
>Note: S-label in this</tspan><tspan | >Note: S-Label in this</tspan><tspan | |||
font-size="4.1952px" | font-size="4.1952px" | |||
x="181.19646" | x="181.19646" | |||
y="89.859375" | y="89.859375" | |||
>diagram includes d-CW.</tspan></text> | >diagram includes d-CW.</tspan></text> | |||
<path | <path | |||
d="m 74.511135,36.707479 c 0,-1.980957 1.235575,-3.586871 2.759739,-3.586 871 1.524159,0 2.759734,1.605914 2.759734,3.586871 0,1.980956 -1.235575,3.58687 -2.759734,3.58687 -1.524164,0 -2.759739,-1.605914 -2.759739,-3.58687 z" | d="m 74.511135,36.707479 c 0,-1.980957 1.235575,-3.586871 2.759739,-3.586 871 1.524159,0 2.759734,1.605914 2.759734,3.586871 0,1.980956 -1.235575,3.58687 -2.759734,3.58687 -1.524164,0 -2.759739,-1.605914 -2.759739,-3.58687 z" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.29663" | stroke-width="0.29663" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
skipping to change at line 6848 ¶ | skipping to change at line 7556 ¶ | |||
transform="scale(0.88605917,1.1285928)">Relay 1</text> | transform="scale(0.88605917,1.1285928)">Relay 1</text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-xml-fwd-aggregation-b-1"/> | <t> <xref target="example-detnet-xml-fwd-aggregation-b-1"/> | |||
contains the operational XML configuration for the ingress aggregati on | contains the operational XML configuration for the ingress aggregati on | |||
node illustrated in <xref target="case-b1"/>. | node illustrated in <xref target="case-b1"/>. | |||
In this example app-0 and app-1 are in separate service sub-layer | In this example, "app-0" and "app-1" are in separate service sub- | |||
s | layers | |||
with MPLS labels and the | with MPLS labels, and the | |||
aggregation happens at the forwarding sub-layer afl-1 using MPLS | aggregation happens at forwarding sub-layer afl-1, using MPLS lab | |||
labels. | els. | |||
</t> | </t> | |||
<figure anchor="example-detnet-xml-fwd-aggregation-b-1"> | <figure anchor="example-detnet-xml-fwd-aggregation-b-1"> | |||
<name>Example B-1 DetNet configuration Forwarding Layer Aggregation</n ame> | <name>Example B-1: DetNet Configuration Forwarding Layer Aggregation</ name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<interfaces | <interfaces | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<type>ia:ethernetCsmacd</type> | <type>ia:ethernetCsmacd</type> | |||
<oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2024-02-21T23:59:00Z</discontinuity-time> | <discontinuity-time>2024-02-21T23:59:00Z</discontinuity-time> | |||
skipping to change at line 7048 ¶ | skipping to change at line 7756 ¶ | |||
</mpls-label-stack> | </mpls-label-stack> | |||
</interface> | </interface> | |||
</outgoing> | </outgoing> | |||
</sub-layer> | </sub-layer> | |||
</forwarding> | </forwarding> | |||
</detnet> | </detnet> | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example B-2 JSON Service Aggregation Configuration</name> | <name>Example B-2: JSON Service Aggregation Configuration</name> | |||
<t> | <t>As illustrated in | |||
<xref target="case-b2"/> illustrates DetNet service sub-layer fl | <xref target="case-b2"/>, DetNet service sub-layer flows 1 and 2 | |||
ows 1 and 2 are | are | |||
aggregated into a service sub-layer of an aggregated flow. | aggregated into a service sub-layer of an aggregated flow. | |||
Multiple DetNet flows with the same requirements for the same | Multiple DetNet flows with the same requirements for the same | |||
destination are aggregated into a single aggregated DetNet flow, | destination are aggregated into a single aggregated DetNet flow, | |||
and service protection and resource allocation are performed by | and service protection and resource allocation are performed by | |||
an aggregated DetNet flow service sub-layer and forwarding | an aggregated DetNet flow service sub-layer and forwarding | |||
sub-layer. A diagram illustrating this case is shown and then | sub-layer. The | |||
the | corresponding JSON operational data for node "Ingress 1" follow | |||
corresponding JSON operational data for node Ingress 1 follows. | s. | |||
</t> | </t> | |||
<figure anchor="case-b2"> | <figure anchor="case-b2"> | |||
<name>Case B-2 Example Service Aggregation</name> | <name>Case B-2: Example Service Aggregation</name> | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case B-2 Diagram. | Please consult the PDF or HTML copy for the Case B-2 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 7918 ¶ | skipping to change at line 8626 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="57.77232" | x="57.77232" | |||
y="37.424942" | y="37.424942" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="63.665733" | x="63.665733" | |||
y="37.424942" | y="37.424942" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="61.765884" | x="61.765884" | |||
y="39.816174" | y="39.816174" | |||
>1000</tspan></text> | >1000</tspan></text> | |||
<rect | <rect | |||
x="78.633316" | x="78.633316" | |||
y="44.796646" | y="44.796646" | |||
width="16.734961" | width="16.734961" | |||
height="7.5306678" | height="7.5306678" | |||
skipping to change at line 8019 ¶ | skipping to change at line 8727 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="88.255699" | x="88.255699" | |||
y="37.424942" | y="37.424942" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="94.149109" | x="94.149109" | |||
y="37.424942" | y="37.424942" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="92.249329" | x="92.249329" | |||
y="39.816174" | y="39.816174" | |||
>1001</tspan></text> | >1001</tspan></text> | |||
<rect | <rect | |||
x="78.853516" | x="78.853516" | |||
y="101.79588" | y="101.79588" | |||
width="16.734961" | width="16.734961" | |||
height="7.530654" | height="7.530654" | |||
skipping to change at line 8046 ¶ | skipping to change at line 8754 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="88.481865" | x="88.481865" | |||
y="96.727638" | y="96.727638" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="94.375275" | x="94.375275" | |||
y="96.727638" | y="96.727638" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="92.475433" | x="92.475433" | |||
y="99.118874" | y="99.118874" | |||
>1001</tspan></text> | >1001</tspan></text> | |||
<rect | <rect | |||
x="78.633316" | x="78.633316" | |||
y="29.735331" | y="29.735331" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.6605062" | height="7.6605062" | |||
skipping to change at line 8073 ¶ | skipping to change at line 8781 ¶ | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="88.067657" | x="88.067657" | |||
y="29.414297" | y="29.414297" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="87.6492" | x="87.6492" | |||
y="31.088161" | y="31.088161" | |||
>S-label</tspan><tspan | >S-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="88.258743" | x="88.258743" | |||
y="33.359844" | y="33.359844" | |||
>102</tspan></text> | >102</tspan></text> | |||
<rect | <rect | |||
x="78.633316" | x="78.633316" | |||
y="22.204676" | y="22.204676" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.660481" | height="7.660481" | |||
skipping to change at line 8518 ¶ | skipping to change at line 9226 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="119.2988" | x="119.2988" | |||
y="96.727638" | y="96.727638" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="125.19222" | x="125.19222" | |||
y="96.727638" | y="96.727638" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="123.29238" | x="123.29238" | |||
y="99.118874" | y="99.118874" | |||
>1001</tspan></text> | >1001</tspan></text> | |||
<rect | <rect | |||
x="107.14881" | x="107.14881" | |||
y="37.26598" | y="37.26598" | |||
width="16.845058" | width="16.845058" | |||
height="7.6605062" | height="7.6605062" | |||
skipping to change at line 8545 ¶ | skipping to change at line 9253 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="119.27966" | x="119.27966" | |||
y="37.424942" | y="37.424942" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="125.17307" | x="125.17307" | |||
y="37.424942" | y="37.424942" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="123.27324" | x="123.27324" | |||
y="39.816174" | y="39.816174" | |||
>1001</tspan></text> | >1001</tspan></text> | |||
<rect | <rect | |||
x="107.14881" | x="107.14881" | |||
y="29.735331" | y="29.735331" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.6605062" | height="7.6605062" | |||
skipping to change at line 8572 ¶ | skipping to change at line 9280 ¶ | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="119.0908" | x="119.0908" | |||
y="29.414297" | y="29.414297" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="118.67229" | x="118.67229" | |||
y="31.088161" | y="31.088161" | |||
>S-label</tspan><tspan | >S-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="119.28188" | x="119.28188" | |||
y="33.359844" | y="33.359844" | |||
>102</tspan></text> | >102</tspan></text> | |||
<rect | <rect | |||
x="107.14881" | x="107.14881" | |||
y="22.204676" | y="22.204676" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.660481" | height="7.660481" | |||
skipping to change at line 8697 ¶ | skipping to change at line 9405 ¶ | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="119.0908" | x="119.0908" | |||
y="88.836555" | y="88.836555" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="118.67229" | x="118.67229" | |||
y="90.510422" | y="90.510422" | |||
>S-label</tspan><tspan | >S-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="119.28188" | x="119.28188" | |||
y="92.782097" | y="92.782097" | |||
>102</tspan></text> | >102</tspan></text> | |||
<rect | <rect | |||
x="115.6264" | x="115.6264" | |||
y="94.395096" | y="94.395096" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.5306678" | height="7.5306678" | |||
skipping to change at line 8724 ¶ | skipping to change at line 9432 ¶ | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="128.205" | x="128.205" | |||
y="88.836555" | y="88.836555" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.43475px" | font-size="1.43475px" | |||
x="127.78648" | x="127.78648" | |||
y="90.510422" | y="90.510422" | |||
>S-label</tspan><tspan | >S-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="128.39609" | x="128.39609" | |||
y="92.782097" | y="92.782097" | |||
>105</tspan></text> | >105</tspan></text> | |||
<rect | <rect | |||
x="107.14881" | x="107.14881" | |||
y="86.864433" | y="86.864433" | |||
width="8.3674803" | width="8.3674803" | |||
height="7.530642" | height="7.530642" | |||
skipping to change at line 9058 ¶ | skipping to change at line 9766 ¶ | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="150.02502" | x="150.02502" | |||
y="37.424942" | y="37.424942" | |||
transform="scale(0.92084851,1.0859549)">MPLS<tspan | transform="scale(0.92084851,1.0859549)">MPLS<tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="155.91843" | x="155.91843" | |||
y="37.424942" | y="37.424942" | |||
>A-label</tspan><tspan | >A-Label</tspan><tspan | |||
font-size="1.91299px" | font-size="1.91299px" | |||
x="154.01859" | x="154.01859" | |||
y="39.816174" | y="39.816174" | |||
>1002</tspan></text> | >1002</tspan></text> | |||
<rect | <rect | |||
x="180.36424" | x="180.36424" | |||
y="50.509552" | y="50.509552" | |||
width="16.624861" | width="16.624861" | |||
height="7.4007897" | height="7.4007897" | |||
skipping to change at line 9219 ¶ | skipping to change at line 9927 ¶ | |||
font-size="4.61682px" | font-size="4.61682px" | |||
x="150.25476" | x="150.25476" | |||
y="91.128922" | y="91.128922" | |||
transform="scale(0.84661926,1.1811685)">E<tspan | transform="scale(0.84661926,1.1811685)">E<tspan | |||
font-size="3.6275px" | font-size="3.6275px" | |||
x="162.79132" | x="162.79132" | |||
y="82.884621" | y="82.884621" | |||
>Notes:</tspan><tspan | >Note:</tspan><tspan | |||
font-size="3.6275px" | font-size="3.6275px" | |||
x="162.79132" | x="162.79132" | |||
y="87.171661" | y="87.171661" | |||
>-</tspan><tspan | >-</tspan><tspan | |||
font-size="3.6275px" | font-size="3.6275px" | |||
x="168.56235" | x="168.56235" | |||
y="87.171661" | y="87.171661" | |||
>S and A labels in this diagram include d-CWs</tspan><tspan | >S- and A-Labels in this diagram include d-CWs</tspan><tspan | |||
font-size="3.6275px" | font-size="3.6275px" | |||
x="168.56235" | x="168.56235" | |||
y="91.458702" | y="91.458702" | |||
>of their own.</tspan></text> | >of their own.</tspan></text> | |||
<path | <path | |||
d="m 37.841833,54.27332 c 0,-0.321738 0.221209,-0.582718 0.494144,-0.5827 18 h 14.315442 c 0.272932,0 0.4941,0.26098 0.4941,0.582718 v 17.920882 c 0,0.321 869 -0.221168,0.582717 -0.4941,0.582717 H 38.335977 c -0.272935,0 -0.494144,-0.2 60848 -0.494144,-0.582717 z" | d="m 37.841833,54.27332 c 0,-0.321738 0.221209,-0.582718 0.494144,-0.5827 18 h 14.315442 c 0.272932,0 0.4941,0.26098 0.4941,0.582718 v 17.920882 c 0,0.321 869 -0.221168,0.582717 -0.4941,0.582717 H 38.335977 c -0.272935,0 -0.494144,-0.2 60848 -0.494144,-0.582717 z" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.557954" | stroke-width="0.557954" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
skipping to change at line 9273 ¶ | skipping to change at line 9981 ¶ | |||
>disaggregation</tspan></text> | >disaggregation</tspan></text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-service-aggregation-b-2"/> | <t> <xref target="example-detnet-json-service-aggregation-b-2"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-b2"/>. | node illustrated in <xref target="case-b2"/>. | |||
In this example, service sub-layer ssl-1 for DetNet flow DN1 | In this example, service sub-layer ssl-1 for DetNet flow DN-1 | |||
and ssl-2 for flow DN2 aggregate at service sub-layer Detet flow asl | and ssl-2 for DetNet flow DN-2 aggregate at service sub-layer DetNet | |||
-1. | flow asl-1. | |||
In this example an aggregation service sub-layer asl-1 is created | In this example, an aggregation service sub-layer, asl-1, is created | |||
to aggregated ssl-1 and ssl2 and that label is encapsulated in a | to aggregated ssl-1 and ssl2, and that label is encapsulated in a | |||
separate forwarding sub-layer afl-1 with MPLS labels. | separate forwarding sub-layer, afl-1, with MPLS labels. | |||
<!-- [rfced] Appendix B.3: We had trouble following "is created to | ||||
aggregated ssl-1 and ssl2" in this sentence. Should it be | ||||
"is created for aggregated ssl-1 and ssl2" or perhaps | ||||
"is created to aggregate ssl-1 and ssl2"? | ||||
Original: | ||||
In this example an | ||||
aggregation service sub-layer asl-1 is created to aggregated ssl-1 | ||||
and ssl2 and that label is encapsulated in a separate forwarding sub- | ||||
layer afl-1 with MPLS labels. --> | ||||
</t> | </t> | |||
<figure anchor="example-detnet-json-service-aggregation-b-2"> | <figure anchor="example-detnet-json-service-aggregation-b-2"> | |||
<name>Example B-2 DetNet Service Aggregation</name> | <name>Example B-2: DetNet Service Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "1", | "name": "1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 20000000, | "max-latency-variation": 20000000, | |||
skipping to change at line 9546 ¶ | skipping to change at line 10266 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example C-1 JSON Relay Aggregation/Disaggregation Configurat ion</name> | <name>Example C-1: JSON Relay Aggregation/Disaggregation Configura tion</name> | |||
<t> | <t> | |||
<xref target="case-c1"/> illustrates the relay node's forwarding sub-layer | <xref target="case-c1"/> illustrates the DetNet relay node's for warding sub-layer | |||
flows 1 and 2 aggregated into a single forwarding sub-layer. | flows 1 and 2 aggregated into a single forwarding sub-layer. | |||
Service protection and resource allocation are | Service protection and resource allocation are | |||
performed by the corresponding service sub-layer and forwarding | performed by the corresponding service sub-layer and forwarding | |||
sub-layer of each flow. | sub-layer of each flow. | |||
A diagram illustrating both aggregation and disaggregation is sh | <xref target="case-c1"/> illustrates both aggregation and disagg | |||
own and then the | regation, and the | |||
corresponding JSON operational data follows. | corresponding JSON operational data follows.</t> | |||
</t> | ||||
<figure anchor="case-c1"> | <figure anchor="case-c1"> | |||
<name>Case C-1 Example Service Aggregation/Disaggregation</name> | <name>Case C-1: Example Service Aggregation/Disaggregation</name > | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case C-1 Diagram. | Please consult the PDF or HTML copy for the Case C-1 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 11868 ¶ | skipping to change at line 12587 ¶ | |||
>label</tspan><tspan | >label</tspan><tspan | |||
font-size="1.96317px" | font-size="1.96317px" | |||
x="149.82739" | x="149.82739" | |||
y="112.26123" | y="112.26123" | |||
>10011</tspan><tspan | >10011</tspan><tspan | |||
font-size="4.04903px" | font-size="4.04903px" | |||
x="167.5692" | x="167.5692" | |||
y="44.777386" | y="44.777386" | |||
>Note: S-label in this</tspan><tspan | >Note: S-Label in this</tspan><tspan | |||
font-size="4.04903px" | font-size="4.04903px" | |||
x="167.5692" | x="167.5692" | |||
y="49.562603" | y="49.562603" | |||
>diagram includes d-CW.</tspan></text> | >diagram includes d-CW.</tspan></text> | |||
<path | <path | |||
d="m 74.502406,63.602996 c -0.443801,0 -0.803557,-1.52868 -0.803557,-3.41 448 0,-1.88581 0.359756,-3.41449 0.803557,-3.41449 0.443802,0 0.803558,1.52868 0 .803558,3.41449 0,1.8858 -0.359756,3.41448 -0.803558,3.41448 H 68.7287 c -0.4438 02,0 -0.803557,-1.52868 -0.803557,-3.41448 0,-1.88581 0.359755,-3.41449 0.803557 ,-3.41449 h 5.773706" | d="m 74.502406,63.602996 c -0.443801,0 -0.803557,-1.52868 -0.803557,-3.41 448 0,-1.88581 0.359756,-3.41449 0.803557,-3.41449 0.443802,0 0.803558,1.52868 0 .803558,3.41449 0,1.8858 -0.359756,3.41448 -0.803558,3.41448 H 68.7287 c -0.4438 02,0 -0.803557,-1.52868 -0.803557,-3.41448 0,-1.88581 0.359755,-3.41449 0.803557 ,-3.41449 h 5.773706" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.286295" | stroke-width="0.286295" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
skipping to change at line 12018 ¶ | skipping to change at line 12737 ¶ | |||
>disaggregation</tspan></text> | >disaggregation</tspan></text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-service-aggregation-c-1"/> | <t> <xref target="example-detnet-json-service-aggregation-c-1"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-c1"/>. | node illustrated in <xref target="case-c1"/>. | |||
In this example, a relay performing aggregation at the forwarding su b-layer is illustrated. | In this example, a relay performing aggregation at the forwarding su b-layer is illustrated. | |||
Two DetNet flows DN1 and DN2 are replicated at each service sub-laye r. | Two DetNet flows -- DN-1 and DN-2 -- are replicated at each service sub-layer. | |||
The two forwarding sub-layers for the upside path are aggregated | The two forwarding sub-layers for the upside path are aggregated | |||
at the forwarding sub-layer with label 20000 and the two forwarding | at the forwarding sub-layer with label 20000, and the two forwarding | |||
sub-layers for the downside path are aggregated at the forwarding | sub-layers for the downside path are aggregated at the forwarding | |||
sub-layer with label 20001. | sub-layer with label 20001. | |||
<xref target="example-detnet-json-service-disaggregation-c-1"/> | <xref target="example-detnet-json-service-disaggregation-c-1"/> | |||
contains the operational JSON configuration for the egress disaggreg ation | contains the operational JSON configuration for the egress disaggreg ation | |||
node illustrated in <xref target="case-c1"/>. | node illustrated in <xref target="case-c1"/>. | |||
</t> | </t> | |||
<figure anchor="example-detnet-json-service-aggregation-c-1"> | <figure anchor="example-detnet-json-service-aggregation-c-1"> | |||
<name>Example C-1 DetNet Relay Service Aggregation</name> | <name>Example C-1: DetNet Relay Service Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 12422 ¶ | skipping to change at line 13141 ¶ | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="example-detnet-json-service-disaggregation-c-1"> | <figure anchor="example-detnet-json-service-disaggregation-c-1"> | |||
<name>Example C-1 DetNet Relay Service Disaggregation</name> | <name>Example C-1: DetNet Relay Service Disaggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 12807 ¶ | skipping to change at line 13526 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example C-2 JSON Relay Aggregation/Disaggregation Service Su b-Layer</name> | <name>Example C-2: JSON Relay Aggregation/Disaggregation Service S ub-layer</name> | |||
<t> | <t> | |||
<xref target="case-c2"/> illustrates the DetNet relay node servi ce sub-layer | <xref target="case-c2"/> illustrates the DetNet relay node's ser vice sub-layer | |||
flows 1 and 2 aggregated into a single forwarding sub-layer. | flows 1 and 2 aggregated into a single forwarding sub-layer. | |||
Service protection is performed by the | Service protection is performed by the | |||
corresponding service sub-layer of each flow and resource alloca tion | corresponding service sub-layer of each flow, and resource alloc ation | |||
is performed by an aggregated forwarding sub-layer for all aggr egated | is performed by an aggregated forwarding sub-layer for all aggr egated | |||
flows. A diagram illustrating both aggregation and disaggregati | flows. <xref target="case-c2"/> illustrates both aggregation an | |||
on is | d disaggregation, and the corresponding JSON operational data follows. | |||
shown and then the corresponding JSON operational data follows. | ||||
<!-- [rfced] Appendices B.5 through B.7: We changed "node" to | ||||
"node's" in these sentences, per the first sentence of Appendix B.4. | ||||
Please let us know any objections. | ||||
Original: | ||||
Figure 12 illustrates the DetNet relay node service sub-layer flows 1 | ||||
and 2 aggregated into a single forwarding sub-layer. | ||||
... | ||||
Figure 15 illustrates the DetNet relay node service sub-layer flows 1 | ||||
and 2 aggregated into a service sub-layer flow. | ||||
... | ||||
Figure 18 illustrates the relay node DetNet forwarding sub-layer | ||||
flows 1 and 2 aggregated into a service sub-layer DetNet flow. | ||||
Currently (figures renumbered after replacing Figure 1 with Table 1): | ||||
Figure 11 illustrates the DetNet relay node's service sub-layer flows | ||||
1 and 2 aggregated into a single forwarding sub-layer. | ||||
... | ||||
Figure 14 illustrates the DetNet relay node's service sub-layer flows | ||||
1 and 2 aggregated into a service sub-layer flow. | ||||
... | ||||
Figure 17 illustrates the DetNet relay node's forwarding sub-layer | ||||
flows 1 and 2 aggregated into a service sub-layer DetNet flow. --> | ||||
</t> | </t> | |||
<figure anchor="case-c2"> | <figure anchor="case-c2"> | |||
<name>Case C-2 Example Service Aggregation/Disaggregation</name> | <name>Case C-2: Example Service Aggregation/Disaggregation</name > | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case C-2 Diagram. | Please consult the PDF or HTML copy for the Case C-2 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 14864 ¶ | skipping to change at line 15607 ¶ | |||
>label</tspan><tspan | >label</tspan><tspan | |||
font-size="2.19403px" | font-size="2.19403px" | |||
x="165.91196" | x="165.91196" | |||
y="106.93934" | y="106.93934" | |||
>10011</tspan><tspan | >10011</tspan><tspan | |||
font-size="4.52519px" | font-size="4.52519px" | |||
x="188.81236" | x="188.81236" | |||
y="40.43272" | y="40.43272" | |||
>Note: S-label in this</tspan><tspan | >Note: S-Label in this</tspan><tspan | |||
font-size="4.52519px" | font-size="4.52519px" | |||
x="188.81236" | x="188.81236" | |||
y="45.780682" | y="45.780682" | |||
>diagram includes d-CW.</tspan></text> | >diagram includes d-CW.</tspan></text> | |||
<path | <path | |||
d="m 73.268351,69.837657 c -0.429466,0 -0.777603,-1.973086 -0.777603,-4.4 07127 0,-2.434041 0.348137,-4.407131 0.777603,-4.407131 0.429468,0 0.777603,1.97 309 0.777603,4.407131 0,2.434041 -0.348135,4.407127 -0.777603,4.407127 h -5.5872 2 c -0.429468,0 -0.777604,-1.973086 -0.777604,-4.407127 0,-2.434041 0.348136,-4. 407131 0.777604,-4.407131 h 5.58722" | d="m 73.268351,69.837657 c -0.429466,0 -0.777603,-1.973086 -0.777603,-4.4 07127 0,-2.434041 0.348137,-4.407131 0.777603,-4.407131 0.429468,0 0.777603,1.97 309 0.777603,4.407131 0,2.434041 -0.348135,4.407127 -0.777603,4.407127 h -5.5872 2 c -0.429468,0 -0.777604,-1.973086 -0.777604,-4.407127 0,-2.434041 0.348136,-4. 407131 0.777604,-4.407131 h 5.58722" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.319963" | stroke-width="0.319963" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
skipping to change at line 15032 ¶ | skipping to change at line 15775 ¶ | |||
/> | /> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-service-aggregation-c-2"/> | <t> <xref target="example-detnet-json-service-aggregation-c-2"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-c2"/>. | node illustrated in <xref target="case-c2"/>. | |||
In this example, a relay performing aggregation at the forwarding su b-layer is illustrated. | In this example, a relay performing aggregation at the forwarding su b-layer is illustrated. | |||
Two DetNet flows DN1 and DN2 are replicated at each | Two DetNet flows -- DN-1 and DN-2 -- are replicated at each | |||
service sub-layer, and the replicated each service sub-layer for the | service sub-layer. Each replicated flow for the service sub-layer fo | |||
r the | ||||
upside path is aggregated at the single forwarding sub-layer with | upside path is aggregated at the single forwarding sub-layer with | |||
MPLS label 20000, and the replicated each service sub-layer for the | MPLS label 20000, and each replicated flow for the service sub-layer for the | |||
downside path is aggregated at the forwarding sub-layer with | downside path is aggregated at the forwarding sub-layer with | |||
MPLS label 20001. | MPLS label 20001. | |||
<xref target="example-detnet-json-service-disaggregation-c-2"/> | <xref target="example-detnet-json-service-disaggregation-c-2"/> | |||
contains the operational JSON configuration for the egress disaggreg ation | contains the operational JSON configuration for the egress disaggreg ation | |||
node illustrated in <xref target="case-c2"/>. | node illustrated in <xref target="case-c2"/>. | |||
<!-- [rfced] Appendix B.5: This sentence did not parse. We updated | ||||
it along the lines of similar text in Appendix B.4. If this is | ||||
incorrect, please clarify "the replicated each service sub-layer for | ||||
the upside path is" and "the replicated each service sub-layer for | ||||
the downside path is". | ||||
Also, should "upside" and "downside" here and in Appendix B.4 be | ||||
"upstream" and "downstream"? | ||||
Original: | ||||
Two DetNet flows DN1 and DN2 are replicated at each service sub- | ||||
layer, and the replicated each service sub-layer for the upside path | ||||
is aggregated at the single forwarding sub-layer with MPLS label | ||||
20000, and the replicated each service sub-layer for the downside | ||||
path is aggregated at the forwarding sub-layer with MPLS label 20001. | ||||
Currently (single dashes here, to avoid xml2rfc's "Double hyphen | ||||
within comment" error): | ||||
Two DetNet flows - DN-1 and DN-2 - are replicated at each service | ||||
sub-layer. Each replicated flow for the service sub-layer for the | ||||
upside path is aggregated at the single forwarding sub-layer with | ||||
MPLS label 20000, and each replicated flow for the service sub-layer | ||||
for the downside path is aggregated at the forwarding sub-layer with | ||||
MPLS label 20001. --> | ||||
</t> | </t> | |||
<figure anchor="example-detnet-json-service-aggregation-c-2"> | <figure anchor="example-detnet-json-service-aggregation-c-2"> | |||
<name>Example C-2 DetNet Relay Aggregation Service Sub-Layer</name> | <name>Example C-2: DetNet Relay Aggregation Service Sub-layer</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 15325 ¶ | skipping to change at line 16094 ¶ | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="example-detnet-json-service-disaggregation-c-2"> | <figure anchor="example-detnet-json-service-disaggregation-c-2"> | |||
<name>Example C-2 DetNet Relay Disaggregation Service Sub-Layer</name> | <name>Example C-2: DetNet Relay Disaggregation Service Sub-layer</name > | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 15606 ¶ | skipping to change at line 16375 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example C-3 JSON Relay Service Sub-Layer Aggregation/Disaggr egation</name> | <name>Example C-3: JSON Relay Service Sub-layer Aggregation/Disagg regation</name> | |||
<t> | <t> | |||
<xref target="case-c3"/> illustrates the DetNet relay node servi ce sub-layer | <xref target="case-c3"/> illustrates the DetNet relay node's ser vice sub-layer | |||
flows 1 and 2 aggregated into a service sub-layer | flows 1 and 2 aggregated into a service sub-layer | |||
flow. Multiple DetNet flows with the same requirements | flow. Multiple DetNet flows with the same requirements | |||
which can use the same path are aggregated into a single | that can use the same path are aggregated into a single | |||
aggregated DetNet flow, and service protection and resource allo cation | aggregated DetNet flow, and service protection and resource allo cation | |||
are performed by the service sub-layer and forwarding sub-layer of | are performed by the service sub-layer and forwarding sub-layer of | |||
aggregated DetNet flow. A diagram illustrating both aggregation | the aggregated DetNet flow. <xref target="case-c3"/> illustrates | |||
and | both aggregation and | |||
disaggregation is shown and then the corresponding JSON operatio | disaggregation, and the corresponding JSON operational | |||
nal | ||||
data follows. | data follows. | |||
</t> | </t> | |||
<figure anchor="case-c3"> | <figure anchor="case-c3"> | |||
<name>Case C-3 Example Service Aggregation/Disaggregation</name> | <name>Case C-3: Example Service Aggregation/Disaggregation</name > | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case C-3 Diagram. | Please consult the PDF or HTML copy for the Case C-3 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="120mm" | height="120mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 17805 ¶ | skipping to change at line 18574 ¶ | |||
transform="scale(0.92557641,1.0804078)">DATA <tspan | transform="scale(0.92557641,1.0804078)">DATA <tspan | |||
font-size="1.60848px" | font-size="1.60848px" | |||
x="125.30804" | x="125.30804" | |||
y="79.909279" | y="79.909279" | |||
>2</tspan><tspan | >2</tspan><tspan | |||
font-size="3.79143px" | font-size="3.79143px" | |||
x="163.70938" | x="163.70938" | |||
y="39.23761" | y="39.23761" | |||
>Note: S and A labels in this</tspan><tspan | >Note: S- and A-Labels in this</tspan><tspan | |||
font-size="3.79143px" | font-size="3.79143px" | |||
x="163.70938" | x="163.70938" | |||
y="43.718391" | y="43.718391" | |||
>diagram include d-CWs of their</tspan><tspan | >diagram include d-CWs of their</tspan><tspan | |||
font-size="3.79143px" | font-size="3.79143px" | |||
x="163.70938" | x="163.70938" | |||
y="48.199173" | y="48.199173" | |||
>own.</tspan></text> | >own.</tspan></text> | |||
skipping to change at line 17949 ¶ | skipping to change at line 18718 ¶ | |||
>disaggregation</tspan></text> | >disaggregation</tspan></text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-service-aggregation-c-3"/> | <t> <xref target="example-detnet-json-service-aggregation-c-3"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-c3"/>. | node illustrated in <xref target="case-c3"/>. | |||
In this example a relay performing aggregation at the service sub-la | In this example, a relay performing aggregation at the service sub-l | |||
yer is illustrated. | ayer is illustrated. | |||
Two DetNet flows DN1 and DN2 are relayed at each service | Two DetNet flows -- DN-1 and DN-2 -- are relayed at each service | |||
sub-layer with MPLS labels 101 and 104 respectively, and each servic | sub-layer with MPLS labels 101 and 104, respectively, and each servi | |||
e sub-layer is | ce sub-layer is | |||
aggregated at a single service sub-layer flow and replicated. | aggregated at a single service sub-layer flow and replicated. | |||
<xref target="example-detnet-json-service-disaggregation-c-3"/> | <xref target="example-detnet-json-service-disaggregation-c-3"/> | |||
contains the operational JSON configuration for the egress disaggreg ation | contains the operational JSON configuration for the egress disaggreg ation | |||
node illustrated in <xref target="case-c3"/>. | node illustrated in <xref target="case-c3"/>. | |||
</t> | </t> | |||
<figure anchor="example-detnet-json-service-aggregation-c-3"> | <figure anchor="example-detnet-json-service-aggregation-c-3"> | |||
<name>Example C-3 DetNet Relay Service Sub-Layer Aggregation</name> | <name>Example C-3: DetNet Relay Service Sub-layer Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 18279 ¶ | skipping to change at line 19048 ¶ | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="example-detnet-json-service-disaggregation-c-3"> | <figure anchor="example-detnet-json-service-disaggregation-c-3"> | |||
<name>Example C-3 DetNet Relay Service Sub-Layer Disaggregation</name> | <name>Example C-3: DetNet Relay Service Sub-layer Disaggregation</name > | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 18602 ¶ | skipping to change at line 19371 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example C-4 JSON Relay Service Sub-Layer Aggregation/Disaggr egation</name> | <name>Example C-4: JSON Relay Service Sub-layer Aggregation/Disagg regation</name> | |||
<t> | <t> | |||
<xref target="case-c4"/> | <xref target="case-c4"/> | |||
illustrates the relay node DetNet forwarding sub-layer | illustrates the DetNet relay node's forwarding sub-layer | |||
flows 1 and 2 aggregated into a service sub-layer | flows 1 and 2 aggregated into a service sub-layer | |||
DetNet flow. Multiple DetNet flows with the same requirements | DetNet flow. Multiple DetNet flows with the same requirements | |||
which can use the same path are aggregated into a single | that can use the same path are aggregated into a single | |||
aggregated DetNet flow. Service protection is performed by the | aggregated DetNet flow. Service protection is performed by the | |||
service sub-layer of the aggregated DetNet flow and resource all ocation | service sub-layer of the aggregated DetNet flow, and resource al location | |||
is performed by the forwarding sub-layer of each aggregated DetN et flow. | is performed by the forwarding sub-layer of each aggregated DetN et flow. | |||
A diagram illustrating both aggregation and disaggregation is sh own and then the | <xref target="case-c4"/> illustrates both aggregation and disagg regation, and the | |||
corresponding JSON operational data follows. | corresponding JSON operational data follows. | |||
</t> | </t> | |||
<figure anchor="case-c4"> | <figure anchor="case-c4"> | |||
<name>Case C-4 Example Service Aggregation/Disaggregation</name> | <name>Case C-4: Example Service Aggregation/Disaggregation</name > | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case C-4 Diagram | Please consult the PDF or HTML copy for the Case C-4 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="155mm" | height="155mm" | |||
viewBox="0 0 210 155" | viewBox="0 0 210 155" | |||
skipping to change at line 21084 ¶ | skipping to change at line 21853 ¶ | |||
>label</tspan><tspan | >label</tspan><tspan | |||
font-size="1.74602px" | font-size="1.74602px" | |||
x="130.6279" | x="130.6279" | |||
y="106.54491" | y="106.54491" | |||
>20005</tspan><tspan | >20005</tspan><tspan | |||
font-size="4.11562px" | font-size="4.11562px" | |||
x="161.91939" | x="161.91939" | |||
y="41.443268" | y="41.443268" | |||
>Note: S and A labels in this diagram</tspan><tspan | >Note: S- and A-Labels in this diagram</tspan><tspan | |||
font-size="4.11562px" | font-size="4.11562px" | |||
x="161.91939" | x="161.91939" | |||
y="46.307182" | y="46.307182" | |||
>include d-CWs of their own.</tspan></text> | >include d-CWs of their own.</tspan></text> | |||
<path | <path | |||
d="m 71.133298,73.209813 c -0.397845,0 -0.720348,-1.761811 -0.720348,-3.9 35215 0,-2.173405 0.322503,-3.935215 0.720348,-3.935215 0.397845,0 0.720347,1.76 181 0.720347,3.935215 0,2.173404 -0.322502,3.935215 -0.720347,3.935215 h -5.1758 3 c -0.397845,0 -0.720348,-1.761811 -0.720348,-3.935215 0,-2.173405 0.322503,-3. 935215 0.720348,-3.935215 h 5.17583" | d="m 71.133298,73.209813 c -0.397845,0 -0.720348,-1.761811 -0.720348,-3.9 35215 0,-2.173405 0.322503,-3.935215 0.720348,-3.935215 0.397845,0 0.720347,1.76 181 0.720347,3.935215 0,2.173404 -0.322502,3.935215 -0.720347,3.935215 h -5.1758 3 c -0.397845,0 -0.720348,-1.761811 -0.720348,-3.935215 0,-2.173405 0.322503,-3. 935215 0.720348,-3.935215 h 5.17583" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.291003" | stroke-width="0.291003" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
skipping to change at line 21224 ¶ | skipping to change at line 21993 ¶ | |||
>disaggregation</tspan></text> | >disaggregation</tspan></text> | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-forwarding-aggregation-c-4"/> | <t> <xref target="example-detnet-json-forwarding-aggregation-c-4"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-c4"/>. | node illustrated in <xref target="case-c4"/>. | |||
In this example, a relay performing aggregation at the service sub-l ayer is | In this example, a relay performing aggregation at the service sub-l ayer is | |||
illustrated. Two DetNet flows DN1 and DN2 are relayed at each servic e | illustrated. Two DetNet flows -- DN-1 and DN-2 -- are relayed at eac h service | |||
sub-layer. The two DetNet forwarding sub-layer flows with MPLS label s | sub-layer. The two DetNet forwarding sub-layer flows with MPLS label s | |||
20004 and 20005 are aggregated at the single service sub-layer | 20004 and 20005 are aggregated at the single service sub-layer | |||
DetNet flow and then replicated. | DetNet flow and then replicated. | |||
<xref target="example-detnet-json-forwarding-disaggregation-c-4"/> | <xref target="example-detnet-json-forwarding-disaggregation-c-4"/> | |||
contains the operational JSON configuration for the egress disaggreg ation | contains the operational JSON configuration for the egress disaggreg ation | |||
node illustrated in <xref target="case-c4"/>. | node illustrated in <xref target="case-c4"/>. | |||
</t> | </t> | |||
<figure anchor="example-detnet-json-forwarding-aggregation-c-4"> | <figure anchor="example-detnet-json-forwarding-aggregation-c-4"> | |||
<name>Example C-4 DetNet Relay Service Sub-Layer Aggregation</name> | <name>Example C-4: DetNet Relay Service Sub-layer Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 21620 ¶ | skipping to change at line 22389 ¶ | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="example-detnet-json-forwarding-disaggregation-c-4"> | <figure anchor="example-detnet-json-forwarding-disaggregation-c-4"> | |||
<name>Example C-4 DetNet Relay Service Sub-Layer Disaggregation</name> | <name>Example C-4: DetNet Relay Service Sub-layer Disaggregation</name > | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-requirements": { | "traffic-requirements": { | |||
"min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
"max-latency": 100000000, | "max-latency": 100000000, | |||
"max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
skipping to change at line 21995 ¶ | skipping to change at line 22764 ¶ | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/Disaggre | <name>Example D-1: JSON Transit Forwarding Sub-layer Aggregation/Disaggr | |||
gation</name> | egation</name> | |||
<t> | <t>As illustrated in | |||
<xref target="case-d1"/> | <xref target="case-d1"/>, | |||
illustrates at the transit node, forwarding sub-layer | at the transit node, forwarding sub-layer | |||
flows 1 and 2 are aggregated into a single forwarding sub-layer . | flows 1 and 2 are aggregated into a single forwarding sub-layer . | |||
Resource allocation is performed by the | Resource allocation is performed by the | |||
corresponding forwarding sub-layer for all aggregated flows. | corresponding forwarding sub-layer for all aggregated flows. | |||
<xref target="case-d1"/> illustrating both aggregation and disa | <xref target="case-d1"/> illustrates both aggregation and disag | |||
ggregation is shown | gregation, and the corresponding JSON operational data follows. | |||
and then the corresponding JSON operational data follows. | ||||
</t> | </t> | |||
<figure anchor="case-d1"> | <figure anchor="case-d1"> | |||
<name>Case D-1 Example Transit Node Forwarding Aggregation/Disag gregation</name> | <name>Case D-1: Example Transit Node Forwarding Aggregation/Disa ggregation</name> | |||
<artset> | <artset> | |||
<artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | <artwork align="left" type="ascii-art" name="" alt=""><![CDATA[ | |||
Please consult the PDF or HTML versions for the Case D-1 Diagram | Please consult the PDF or HTML copy for the Case D-1 diagram. | |||
]]></artwork> | ]]></artwork> | |||
<artwork type="svg"> | <artwork type="svg"> | |||
<svg | <svg | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | xmlns="http://www.w3.org/2000/svg" | |||
width="180mm" | width="180mm" | |||
height="130mm" | height="130mm" | |||
viewBox="0 0 210 140" | viewBox="0 0 210 140" | |||
skipping to change at line 22777 ¶ | skipping to change at line 23545 ¶ | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
fill-rule="evenodd" | fill-rule="evenodd" | |||
id="path231" /> | id="path231" /> | |||
<text | <text | |||
font-size="2.89029px" | font-size="2.89029px" | |||
x="67.196251" | x="67.196251" | |||
y="50.545357" | y="50.545357" | |||
transform="scale(0.8869959,1.1274009)">DN - 1</text> | transform="scale(0.8869959,1.1274009)">DN-1</text> | |||
<path | <path | |||
d="m 185.06317,111.78883 c -0.1226,-0.18843 0.25972,-0.85006 0.85605,-1.4 7768 0.59633,-0.6262 1.17929,-0.98038 1.3019,-0.79195 0.12372,0.18984 -0.25972,0 .85146 -0.85605,1.47766 -0.59521,0.62761 -1.17818,0.98181 -1.3019,0.79197 L 167. 25344,84.42992 c -0.1226,-0.189275 0.25972,-0.850898 0.85605,-1.477523 0.59633,- 0.626769 1.17929,-0.981235 1.3019,-0.791821 l 17.80973,27.358624" | d="m 185.06317,111.78883 c -0.1226,-0.18843 0.25972,-0.85006 0.85605,-1.4 7768 0.59633,-0.6262 1.17929,-0.98038 1.3019,-0.79195 0.12372,0.18984 -0.25972,0 .85146 -0.85605,1.47766 -0.59521,0.62761 -1.17818,0.98181 -1.3019,0.79197 L 167. 25344,84.42992 c -0.1226,-0.189275 0.25972,-0.850898 0.85605,-1.477523 0.59633,- 0.626769 1.17929,-0.981235 1.3019,-0.791821 l 17.80973,27.358624" | |||
stroke="#000000" | stroke="#000000" | |||
stroke-width="0.293217" | stroke-width="0.293217" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
fill-rule="evenodd" | fill-rule="evenodd" | |||
id="path237" /> | id="path237" /> | |||
<text | <text | |||
font-size="2.89029px" | font-size="2.89029px" | |||
skipping to change at line 23474 ¶ | skipping to change at line 24242 ¶ | |||
stroke-width="0.293217" | stroke-width="0.293217" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
id="rect475" /> | id="rect475" /> | |||
<text | <text | |||
font-size="1.50798px" | font-size="1.50798px" | |||
x="95.528229" | x="95.528229" | |||
y="32.323982" | y="32.323982" | |||
transform="scale(0.8869959,1.1274009)">MPLS F-label<tspan | transform="scale(0.8869959,1.1274009)">MPLS F-Label<tspan | |||
font-size="1.75931px" | font-size="1.75931px" | |||
x="94.922752" | x="94.922752" | |||
y="36.219585" | y="36.219585" | |||
id="tspan481" | id="tspan481" | |||
>10002</tspan></text> | >10002</tspan></text> | |||
<rect | <rect | |||
x="90.693245" | x="90.693245" | |||
y="33.891949" | y="33.891949" | |||
width="8.4712687" | width="8.4712687" | |||
height="8.2171326" | height="8.2171326" | |||
skipping to change at line 23496 ¶ | skipping to change at line 24264 ¶ | |||
stroke-width="0.293217" | stroke-width="0.293217" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
id="rect485" /> | id="rect485" /> | |||
<text | <text | |||
font-size="1.50798px" | font-size="1.50798px" | |||
x="105.08666" | x="105.08666" | |||
y="32.323982" | y="32.323982" | |||
transform="scale(0.8869959,1.1274009)">MPLS F-label<tspan | transform="scale(0.8869959,1.1274009)">MPLS F-Label<tspan | |||
font-size="1.75931px" | font-size="1.75931px" | |||
x="104.48116" | x="104.48116" | |||
y="36.219585" | y="36.219585" | |||
id="tspan491" | id="tspan491" | |||
>10006</tspan></text> | >10006</tspan></text> | |||
<rect | <rect | |||
x="110.97971" | x="110.97971" | |||
y="33.891949" | y="33.891949" | |||
width="8.4712687" | width="8.4712687" | |||
height="8.2171326" | height="8.2171326" | |||
skipping to change at line 23518 ¶ | skipping to change at line 24286 ¶ | |||
stroke-width="0.293217" | stroke-width="0.293217" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
id="rect495" /> | id="rect495" /> | |||
<text | <text | |||
font-size="1.50798px" | font-size="1.50798px" | |||
x="127.93854" | x="127.93854" | |||
y="32.323982" | y="32.323982" | |||
transform="scale(0.8869959,1.1274009)">MPLS F-label<tspan | transform="scale(0.8869959,1.1274009)">MPLS F-Label<tspan | |||
font-size="1.75931px" | font-size="1.75931px" | |||
x="127.33303" | x="127.33303" | |||
y="36.219585" | y="36.219585" | |||
id="tspan501" | id="tspan501" | |||
>10002</tspan></text> | >10002</tspan></text> | |||
<rect | <rect | |||
x="119.45098" | x="119.45098" | |||
y="33.891949" | y="33.891949" | |||
width="8.4712687" | width="8.4712687" | |||
height="8.2171326" | height="8.2171326" | |||
skipping to change at line 23540 ¶ | skipping to change at line 24308 ¶ | |||
stroke-width="0.293217" | stroke-width="0.293217" | |||
stroke-miterlimit="8" | stroke-miterlimit="8" | |||
fill="none" | fill="none" | |||
id="rect505" /> | id="rect505" /> | |||
<text | <text | |||
font-size="1.50798px" | font-size="1.50798px" | |||
x="137.4966" | x="137.4966" | |||
y="32.323982" | y="32.323982" | |||
transform="scale(0.8869959,1.1274009)">MPLS F-label<tspan | transform="scale(0.8869959,1.1274009)">MPLS F-Label<tspan | |||
font-size="1.75931px" | font-size="1.75931px" | |||
x="136.8911" | x="136.8911" | |||
y="36.219585" | y="36.219585" | |||
id="tspan511" | id="tspan511" | |||
>10006</tspan></text> | >10006</tspan></text> | |||
<rect | <rect | |||
x="139.51451" | x="139.51451" | |||
y="25.958176" | y="25.958176" | |||
width="16.942537" | width="16.942537" | |||
height="8.2171326" | height="8.2171326" | |||
skipping to change at line 23738 ¶ | skipping to change at line 24506 ¶ | |||
</g> | </g> | |||
</svg> | </svg> | |||
</artwork> | </artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t> <xref target="example-detnet-json-forwarding-aggregation-d-1"/> | <t> <xref target="example-detnet-json-forwarding-aggregation-d-1"/> | |||
contains the operational JSON configuration for the ingress aggregat ion | contains the operational JSON configuration for the ingress aggregat ion | |||
node illustrated in <xref target="case-d1"/>. | node illustrated in <xref target="case-d1"/>. | |||
In this example, a transit node performing aggregation at the forwar ding sub-layer | In this example, a transit node performing aggregation at the forwar ding sub-layer | |||
is illustrated. | is illustrated. | |||
Two DetNet flows DN1 and DN2 are transmitted at each | Two DetNet flows -- DN-1 and DN-2 -- are transmitted at each | |||
forwarding sub-layer. The DetNet forwarding sub-layer flows with | forwarding sub-layer. The DetNet forwarding sub-layer flows with | |||
MPLS labels 10002 and 10006 are aggregated at the single forwarding | MPLS labels 10002 and 10006 are aggregated at the single forwarding | |||
sub-layer. The resulting aggregated DetNet flow has MPLS label 20000 . | sub-layer. The resulting aggregated DetNet flow has MPLS label 20000 . | |||
<xref target="example-detnet-json-forwarding-disaggregation-d-1"/> | <xref target="example-detnet-json-forwarding-disaggregation-d-1"/> | |||
contains the operational JSON configuration for the egress disaggreg ation | contains the operational JSON configuration for the egress disaggreg ation | |||
transit node illustrated in <xref target="case-d1"/>. | transit node illustrated in <xref target="case-d1"/>. | |||
</t> | </t> | |||
<figure anchor="example-detnet-json-forwarding-aggregation-d-1"> | <figure anchor="example-detnet-json-forwarding-aggregation-d-1"> | |||
<name>Example D-1 Transit Node Forwarding Aggregation</name> | <name>Example D-1: Transit Node Forwarding Aggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-spec": { | "traffic-spec": { | |||
"interval": 125, | "interval": 125, | |||
"max-pkts-per-interval": 1, | "max-pkts-per-interval": 1, | |||
"max-payload-size": 1518 | "max-payload-size": 1518 | |||
skipping to change at line 23905 ¶ | skipping to change at line 24673 ¶ | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="example-detnet-json-forwarding-disaggregation-d-1"> | <figure anchor="example-detnet-json-forwarding-disaggregation-d-1"> | |||
<name>Example D-1 Transit Node Forwarding Disaggregation</name> | <name>Example D-1: Transit Node Forwarding Disaggregation</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
{ | { | |||
"ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
"traffic-profile": [ | "traffic-profile": [ | |||
{ | { | |||
"name": "pf-1", | "name": "pf-1", | |||
"traffic-spec": { | "traffic-spec": { | |||
"interval": 125, | "interval": 125, | |||
"max-pkts-per-interval": 1, | "max-pkts-per-interval": 1, | |||
"max-payload-size": 1518 | "max-payload-size": 1518 | |||
skipping to change at line 24058 ¶ | skipping to change at line 24826 ¶ | |||
"oper-status": "up", | "oper-status": "up", | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<!-- [rfced] Appendix B.8: Apologies if we are missing something, | ||||
but please confirm that (1) skipping "eth2" in these two lists in the | ||||
original Figure 22 and (2) starting the numbering with "eth1" in the | ||||
list at the end of the original Figure 23 are both as intended. | ||||
Original (Figure 22): | ||||
"forwarding": { | ||||
"sub-layer": [ | ||||
{ | ||||
"name": "fsl-1", | ||||
"traffic-profile": "pf-1", | ||||
"operation": "pop-impose-and-forward", | ||||
"incoming": { | ||||
"forwarding-id": { | ||||
"interface": "eth0", | ||||
"mpls-label-stack": { | ||||
"entry": [ | ||||
{ | ||||
"id": 0, | ||||
"label": 10000 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
}, | ||||
"outgoing": { | ||||
"forwarding-sub-layer": { | ||||
"aggregation-sub-layer": "afl-1", | ||||
"forwarding-label": { | ||||
"mpls-label-stack": { | ||||
"entry": [ | ||||
{ | ||||
"id": 0, | ||||
"label": 10002 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
{ | ||||
"name": "fsl-2", | ||||
"traffic-profile": "pf-1", | ||||
"operation": "pop-impose-and-forward", | ||||
"incoming": { | ||||
"forwarding-id": { | ||||
"interface": "eth1", | ||||
"mpls-label-stack": { | ||||
"entry": [ | ||||
{ | ||||
"id": 0, | ||||
"label": 10004 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
}, | ||||
"outgoing": { | ||||
"forwarding-sub-layer": { | ||||
"aggregation-sub-layer": "afl-1", | ||||
"forwarding-label": { | ||||
"mpls-label-stack": { | ||||
"entry": [ | ||||
{ | ||||
"id": 0, | ||||
"label": 10006 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
{ | ||||
"name": "afl-1", | ||||
"traffic-profile": "pf-2", | ||||
"operation": "impose-and-forward", | ||||
"incoming": { | ||||
"forwarding-aggregation": { | ||||
"sub-layer": [ | ||||
"fsl-1", | ||||
"fsl-2" | ||||
] | ||||
} | ||||
}, | ||||
"outgoing": { | ||||
"interface": { | ||||
"outgoing-interface": "eth3", | ||||
"mpls-label-stack": { | ||||
"entry": [ | ||||
{ | ||||
"id": 0, | ||||
"label": 20000 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
} | ||||
} | ||||
] | ||||
} | ||||
}, | ||||
... | ||||
{ | ||||
"name": "eth1", | ||||
"type": "iana-if-type:ethernetCsmacd", | ||||
"oper-status": "up", | ||||
"statistics": { | ||||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | ||||
} | ||||
}, | ||||
{ | ||||
"name": "eth3", | ||||
"type": "iana-if-type:ethernetCsmacd", | ||||
"oper-status": "up", | ||||
"statistics": { | ||||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | ||||
} | ||||
... | ||||
"interface": [ | ||||
{ | ||||
"name": "eth1", | ||||
"type": "iana-if-type:ethernetCsmacd", | ||||
"oper-status": "up", | ||||
"statistics": { | ||||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | ||||
} | ||||
}, | ||||
{ | ||||
"name": "eth2", | ||||
"type": "iana-if-type:ethernetCsmacd", | ||||
"oper-status": "up", | ||||
"statistics": { | ||||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | ||||
} | ||||
}, | ||||
{ | ||||
"name": "eth3", | ||||
"type": "iana-if-type:ethernetCsmacd", | ||||
"oper-status": "up", | ||||
"statistics": { | ||||
"discontinuity-time": "2024-02-21T18:59:00-05:00" | ||||
} | ||||
} | ||||
] --> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The editors of this document would like to thank <contact fullname="Lou | ||||
Berger"/>, <contact fullname="Tom Petch"/>, | ||||
<contact fullname="Xufeng Liu"/>, <contact fullname="Julien Meuric" | ||||
/>, <contact fullname="John Scudder"/>, and <contact fullname="Florian Kauer"/> | ||||
for their detailed comments. | ||||
</t> | ||||
</section> | ||||
<section anchor="Contributors" numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>The editors of this document wish to thank and acknowledge | ||||
the following individual, who contributed substantially to the content | ||||
of this document and should be considered a coauthor: | ||||
</t> | ||||
<contact fullname="Mach(Guoyi) Chen" initials="M." surname="Chen"> | ||||
<organization>Huawei Technologies</organization> | ||||
<address> | ||||
<email>mach.chen@huawei.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
</back> | </back> | |||
<!--[rfced] Please confirm if the following comments made during the | ||||
early review process (see "https://datatracker.ietf.org/doc/ | ||||
review-ietf-detnet-yang-12-yangdoctors-early-liu-2021-06-27/“) | ||||
have been addressed in the document or if further updates are | ||||
needed: | ||||
6.7) Why is app-flow-status under the container ingress? app-flow-status | ||||
is related to an instance of app-flow, not only the ingress part of | ||||
the app-flow, right? | ||||
6.9) ...Why are there the incoming-service and outgoing-service? Are the | ||||
terms incoming-service and outgoing-service defined and/or described | ||||
in any document? --> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the | ||||
online Style Guide at | ||||
<https://www.rfc-editor.org/styleguide/part2/#inclusive_language>, | ||||
and let us know if any changes are needed. | ||||
Note that our script did not flag any words in particular, but this | ||||
should still be reviewed as a best practice. --> | ||||
<!-- [rfced] Terminology | ||||
a) The following terms were used inconsistently in running text in | ||||
this document. We chose to use the latter forms. Please let us | ||||
know any objections. | ||||
A-label / A-Label (Per RFC 8964) | ||||
App flow / app-flow / App-flow (in text) (per RFC 9546) | ||||
Application flow (1 instance) / application Flow (1 instance) / | ||||
application flow (9 instances) | ||||
Dn - 1 / DN1 / DN-1 (per most common usage in the SVG figures) | ||||
DN2 / DN-2 (per the SVG figures) | ||||
F-label / F-Label (per RFC 8964) | ||||
Forwarding label / forwarding label (per RFC 8964) | ||||
Forwarding sub-layer / Forwarding Sub-layer / forwarding sub-layer | ||||
(per usage elsewhere in this document and per the rest of | ||||
Cluster 505 (https://www.rfc-editor.org/cluster_info.php?cid=C505) | ||||
S-label / S-Label (per RFC 8964) | ||||
Service label / service label (per RFC 8964) | ||||
Service sub-layer / Service Sub-layer / service sub-layer | ||||
(per usage elsewhere in this document and per the rest of | ||||
Cluster 505 (https://www.rfc-editor.org/cluster_info.php?cid=C505) | ||||
Traffic Profile (3 instances) / traffic Profile (1 instance) / | ||||
Traffic profile (1 instance) / traffic profile (5 instances) | ||||
(per post-6000 published RFCs) | ||||
b) Should the following be made consistent? | ||||
Original - singular vs. plural: | ||||
app-flows of the upper layer | ||||
app-flow of the upper layer | ||||
service sub-layer of the upper layer | ||||
service sub-layers of the upper layer | ||||
service or forwarding sub-layer of the lower layer | ||||
forwarding sub-layers of the lower layer | ||||
service sub-layers of the lower layer | ||||
We also see "all of the lower layer"; should this be | ||||
"all of the lower layers"? --> | ||||
</rfc> | </rfc> | |||
End of changes. 427 change blocks. | ||||
915 lines changed or deleted | 1949 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |