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 "&#160;">
<?rfc comments="yes"?> <!ENTITY zwsp "&#8203;">
<?rfc inline="yes"?> <!ENTITY nbhy "&#8209;">
<?rfc compact="yes"?> <!ENTITY wj "&#8288;">
<?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&nbsp;<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&nbsp;<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&nbsp;<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"/>. &nbsp;"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.