rfc9633.original   rfc9633.txt 
Network Working Group X. Geng Internet Engineering Task Force (IETF) X. Geng
Internet-Draft Huawei Technologies Request for Comments: 9633 Huawei Technologies
Intended status: Standards Track Y. Ryoo Category: Standards Track Y. Ryoo
Expires: 26 August 2024 ETRI ISSN: 2070-1721 ETRI
D. Fedyk D. Fedyk
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
R. Rahman R. Rahman
Equinix Equinix
Z. Li Z. Li
China Mobile China Mobile
23 February 2024 October 2024
Deterministic Networking (DetNet) YANG Model Deterministic Networking (DetNet) YANG Data Model
draft-ietf-detnet-yang-20
Abstract Abstract
This document contains the specification for the Deterministic This document contains the specification for the Deterministic
Networking YANG Model for configuration and operational data of Networking (DetNet) YANG data model for configuration and operational
DetNet Flows. The model allows for provisioning of end-to-end DetNet data for DetNet flows. The model allows the provisioning of an end-
service on devices along the path without dependency on any signaling to-end DetNet service on devices along the path without depending on
protocol. It also specifies operational status for flows. any signaling protocol. It also specifies operational status for
flows.
The YANG module defined in this document conforms to the Network The YANG module defined in this document conforms to the Network
Management Datastore Architecture (NMDA). Management Datastore Architecture (NMDA).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 26 August 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9633.
Copyright Notice Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Abbreviations
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Terminology
4. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 4 4. DetNet YANG Module
4.1. DetNet Application Flow YANG Attributes . . . . . . . . . 5 4.1. DetNet Application Flow YANG Attributes
4.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 5 4.2. DetNet Service Sub-layer YANG Attributes
4.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 5 4.3. DetNet Forwarding Sub-layer YANG Attributes
5. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 6 5. DetNet Flow Aggregation
6. DetNet YANG Structure Considerations . . . . . . . . . . . . 7 6. DetNet YANG Structure Considerations
7. DetNet Configuration YANG Structures . . . . . . . . . . . . 8 7. DetNet Configuration YANG Structures
8. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 10 8. DetNet Configuration YANG Data Model
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 9. IANA Considerations
10. Security Considerations . . . . . . . . . . . . . . . . . . . 41 10. Security Considerations
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 42 11. References
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42 11.1. Normative References
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 11.2. Informative References
13.1. Normative References . . . . . . . . . . . . . . . . . . 42 Appendix A. DetNet Configuration YANG Tree
13.2. Informative References . . . . . . . . . . . . . . . . . 44 Appendix B. Examples
Appendix A. DetNet Configuration YANG Tree . . . . . . . . . . . 45 B.1. Example A-1: Application Flow Aggregation
Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 55 B.2. Example B-1: Aggregation Using a Forwarding Sub-layer
B.1. Example A-1 JSON Configuration/Operational . . . . . . . 55 B.3. Example B-2: Service Aggregation
B.2. Example B-1 XML Config: Aggregation using a Forwarding B.4. Example C-1: DetNet Relay Service Sub-layer
Sub-layer . . . . . . . . . . . . . . . . . . . . . . . . 60 B.5. Example C-2: DetNet Relay Service Sub-layer Aggregation/
B.3. Example B-2 JSON Service Aggregation Configuration . . . 64 Disaggregation
B.4. Example C-1 JSON Relay Aggregation/Disaggregation B.6. Example C-3: DetNet Relay Service Sub-layer Aggregation/
Configuration . . . . . . . . . . . . . . . . . . . . . . 70 Disaggregation
B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service B.7. Example C-4: DetNet Relay Service Sub-layer Aggregation/
Sub-Layer . . . . . . . . . . . . . . . . . . . . . . . . 87 Disaggregation
B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ B.8. Example D-1: Transit Node Forwarding Sub-layer Aggregation/
Disaggregation . . . . . . . . . . . . . . . . . . . . . 99 Disaggregation
B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ Acknowledgments
Disaggregation . . . . . . . . . . . . . . . . . . . . . 113 Contributors
B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ Authors' Addresses
Disaggregation . . . . . . . . . . . . . . . . . . . . . 129
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 136
1. Introduction 1. Introduction
DetNet (Deterministic Networking) provides a capability to carry 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 delivery latency. A description of the general background and
concepts of DetNet can be found in [RFC8655]. concepts of DetNet can be found in [RFC8655].
This document defines a YANG model for DetNet based on YANG data This document defines a YANG data model for DetNet based on YANG data
types and modeling language defined in [RFC6991] and [RFC7950]. types and modeling language defined in [RFC6991] and [RFC7950].
DetNet service, which is designed for describing the characteristics
of services being provided for application flows over a network, and
DetNet configuration, which is designed for DetNet flow path
establishment, flow status reporting, and DetNet functions
configuration in order to achieve end-to-end bounded latency and zero
congestion loss, are both included in this document.
This Yang model is scoped to the description of the aggregation/ This document also includes the following:
* The DetNet service, which is designed to describe the
characteristics of services being provided for application flows
over a network.
* 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.
This YANG data model is scoped to the description of the aggregation/
disaggregation and data plane capabilities of the DetNet data planes disaggregation and data plane capabilities of the DetNet data planes
defined in the DetNet Architecture [RFC8655] and DetNet Framework defined in "Deterministic Networking Architecture" [RFC8655] and
[RFC8938]. DetNet operates at the IP layer and delivers service over "Deterministic Networking (DetNet) Data Plane Framework" [RFC8938].
lower-layer technologies such as MPLS and IEEE 802.1 Time-Sensitive DetNet operates at the IP layer and delivers service over lower-layer
Networking (TSN). technologies such as MPLS and IEEE 802.1 Time-Sensitive Networking
(TSN).
2. Abbreviations 2. Abbreviations
The following abbreviations are used in this document: The following abbreviations are used in this document:
PEF Packet Elimination Function PEF: Packet Elimination Function
PRF Packet Replication Function
PEOF Packet Elimination and Ordering Functions POF: Packet Ordering Function
PERF Packet Elimination and Replication Functions PRF: Packet Replication Function
PREOF Packet Replication, Elimination and Ordering Functions PREOF: Packet Replication, Elimination, and Ordering Functions
MPLS Multiprotocol Label Switching MPLS: Multiprotocol Label Switching
3. Terminology 3. Terminology
This document uses the terminology defined in [RFC8655]. The terms This document uses the terminology defined in [RFC8655]. The terms
A-label, S-label, and F-label are used in this document as defined in "A-Label", "S-Label", and "F-Label" are used in this document as
[RFC8964]. defined in [RFC8964].
4. DetNet YANG Module 4. DetNet YANG Module
The DetNet YANG module includes DetNet App-flow, DetNet Service Sub- The DetNet YANG module (Section 8) includes DetNet App-flow, DetNet
layer, and DetNet Forwarding Sub-layer configuration and operational service sub-layer, and DetNet forwarding sub-layer configuration and
objects. The corresponding attributes used in different sub-layers operational objects. The corresponding attributes used in different
are defined in Section 4.1 , Section 4.2 , Section 4.3 respectively. sub-layers are defined in Sections 4.1, 4.2, and 4.3, respectively.
Layers of the objects typically occur in the different data instances Layers of the objects typically occur in the different data instances
forming the node types defined in [RFC8655]. Figure 1 illustrates forming the node types defined in [RFC8655]. Table 1 illustrates the
the relationship between data instance node types and the included relationship between data instance node types and the included
layers. Node types are logical roles per DetNet service: a device layers. Node types are logical roles per DetNet service: one DetNet
along one DetNet service can be of one node type, while another service may use a device of one node type, while another service may
service may use the same device with a different node type. This use the same device with a different node type. This model is a
model is a controller based model because a controller or operator controller-based model, because a controller or operator configures
configures all the devices to form a service. all of the devices to form a service.
+---------------------------------------------------+ +============================================================+
| Instance | | Data Instance |
+-----+-----------------+-----------------+---------------+ +======================+======================+==============+
| |Edge Node | Relay Node | Transit Node | | Edge Node | Relay Node | Transit Node |
+-----+-----------------+-----------------+---------------+ +======================+======================+==============+
| L |Application | | | | App-Flow Data Layer | | |
| a +-----------------+-----------------+---------------+ +----------------------+----------------------+--------------+
| y |Service Sub-Layer|Service Sub-Layer| | | Service Sub-layer | Service Sub-layer | |
| e +-----------------+-----------------+---------------+ +----------------------+----------------------+--------------+
| r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | Forwarding Sub-layer | Forwarding Sub-layer | Forwarding |
+-----+-----------------+-----------------+---------------+ | | | Sub-layer |
+----------------------+----------------------+--------------+
Figure 1: DetNet Layers and Node Types Table 1: DetNet Layers and Node Types
All of the layers have ingress/incoming and egress/outgoing All of the layers have ingress/incoming and egress/outgoing
operations, but any instance may be configured as only operations, but any instance may be configured as unidirectional
unidirectional. Ingress refers to any DetNet layer where a DetNet only. "Ingress" refers to any DetNet layer where a DetNet context is
context is applied. Ingress allows functions such as switching, applied. Ingress allows functions such as switching, aggregation,
aggregation and encapsulation. Likewise, egress refers to any DetNet and encapsulation. "Egress" refers to any DetNet layer where a
layer where a DetNet context is removed. Egress allows functions DetNet context is removed. Egress allows functions such as
such as switching, disaggregation and decapsulation. This means that switching, disaggregation, and decapsulation. This means that each
each unidirectional flow identifier configuration is programmed unidirectional flow identifier configuration is programmed starting
starting at the ingress and flow status is reported at ingress on at the ingress and flow status is reported at the ingress on each
each end. In the MPLS cases once encapsulated, the IP 6-tuple, see end. In the case of MPLS, once encapsulated, the IP 6-tuple
[RFC8938], parameters may not be required to be programmed again. In parameters (see [RFC8938]) may not be required to be programmed
the IP case, without encapsulation, various IP flow id parameters again. In the case of IP, without encapsulation, various IP flow
must be configured along the flow path. identification parameters must be configured along the flow path.
In the YANG model the terms source and destination are used as flow In the YANG data model defined in this document, the terms "source"
identifiers whereas ingress and egress refer to a DetNet application and "destination" are used as flow identifiers, whereas "ingress" and
direction from the application edge. Ingress is to the DetNet "egress" refer to a DetNet application direction from the application
application and egress is from the application. The terms incoming edge. "Ingress" means "to the DetNet application", and "egress"
and outgoing generally represent the flow direction towards the means "from the application". The terms "incoming" and "outgoing"
remote application. Outgoing is viewed as going down the stack from represent the flow direction towards the remote application as a
Application to Service sub-layer to Forwarding sub-layer and incoming unidirectional flow. This means the terms are used at a sub-layer to
is the reverse. Although, in examples where there is aggregation and represent "incoming" to the sub-layer function and "outgoing" is
disaggregation outgoing relates to the aggregating output and viewed as leaving the sub-layer. For the service sub-layer,
incoming relates to the disaggregating flows. "incoming" is typically aggregating applications flows or other
service sub-layers, etc. For the forwarding sub-layer, "incoming" is
typically aggregating service sub-layers. However, this also means
for both service and forwarding sub-layers at the egress DetNet node
"incoming" also handles external flows "incoming" to the respective
sub-layer. For MPLS, this would usually involve the removal of a
label. For IP -- where the representative sub-layer is merely an
aggregation of an IP prefix or IP tuple -- there may be no incoming/
outgoing definitions, since the arriving packet can be handled
directly by a standard next-hop routing decision. In examples
(Appendix B) where both aggregation and disaggregation take place, at
the egress of the flow "outgoing" relates to the aggregating output
and "incoming" relates to the disaggregating flows.
At the egress point, forwarding information is determined by the App- At the egress point, forwarding information is determined by the App-
flow type with all DetNet-related headers removed. The forwarding flow type with all DetNet-related headers removed. In the case of
information can specify an output port, or set a next-hop-address in IP, the forwarding information can specify an output port or set a
case of IP, or set an MPLS label in case of MPLS. next-hop address. In the case of MPLS, it can set an MPLS label.
4.1. DetNet Application Flow YANG Attributes 4.1. DetNet Application Flow YANG Attributes
DetNet application flow is responsible for mapping between 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 flows. node). The application flows can be either Layer 2 or Layer 3 flows.
To map a flow at the User Network Interface (UNI), the corresponding To map a flow at the User-Network Interface (UNI), the corresponding
attributes are defined in [RFC9016]. attributes defined in [RFC9016] are used.
4.2. DetNet Service Sub-layer YANG Attributes 4.2. DetNet Service Sub-layer YANG Attributes
DetNet service functions, e.g., DetNet tunnel initialization/ DetNet service functions, e.g., DetNet tunnel initialization/
termination and service protection, are provided in the DetNet termination and service protection, are provided in the DetNet
service sub-layer. To support these functions, the following service service sub-layer. To support these functions, the following service
attributes need to be configured: attributes need to be configured:
* DetNet flow identification * DetNet flow identification.
* Service function indication, indicates which service function will * Service function type. Indicates which service function will be
be invoked at a DetNet edge, relay node or end station. (DetNet invoked at a DetNet edge, relay node, or end station. (DetNet
tunnel initialization or termination are default functions in the tunnel initialization and termination are default functions in the
DetNet service layer, so there is no need for explicit DetNet service sub-layer, so there is no need to indicate them
indication). The corresponding arguments for service functions explicitly.) The corresponding arguments for service functions
also need to be defined. also need to be defined.
4.3. DetNet Forwarding Sub-layer YANG Attributes 4.3. DetNet Forwarding Sub-layer YANG Attributes
As defined in [RFC8655], DetNet forwarding sub-layer optionally As defined in [RFC8655], the DetNet forwarding sub-layer optionally
provides congestion protection for DetNet flows over paths provided provides congestion protection for DetNet flows over paths provided
by the underlying network. Explicit route is another mechanism that by the underlying network. Explicit routes provide another mechanism
is used by DetNet to avoid temporary interruptions caused by the used by DetNet to avoid temporary interruptions caused by the
convergence of routing or bridging protocols, and it is also convergence of routing or bridging protocols. Explicit routes are
implemented at the DetNet forwarding sub-layer. also implemented at the DetNet forwarding sub-layer.
To support congestion protection and explicit route, the following To support congestion protection and explicit routes, the following
transport layer related attributes are necessary: transport-layer-related attributes are necessary:
* Flow Specification and Traffic Requirements, as described in the * Flow specification and traffic requirements are as described in
information model in [RFC9016]. These may be used for resource the information model provided in [RFC9016]. These may be used
reservation, flow shaping, filtering and policing by a control for resource reservation, flow shaping, filtering, and policing by
plane or other network management and control mechanisms. a control plane or other network management and control
mechanisms.
* Since this model programs the data plane existing explicit route * 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 node along the path. For an IP-based path, the static
configuration is similar to the static MPLS case. This document configuration is similar to the static MPLS case. This document
provides data-plane configuration of IP addresses or MPLS labels provides data plane configuration of IP addresses or MPLS labels,
but it does not provide control plane mapping or other aspects. but it does not provide control plane mapping or other techniques.
5. DetNet Flow Aggregation 5. DetNet Flow Aggregation
DetNet provides the capability of flow aggregation to improve DetNet provides the ability to perform flow aggregation to improve
scalability of DetNet data, management and control planes. the scalability of DetNet data, management, and control planes.
Aggregated flows can be viewed by some DetNet nodes as individual Aggregated flows can be viewed by some DetNet nodes as individual
DetNet flows. When aggregating DetNet flows, the flows should be DetNet flows. When aggregating DetNet flows, the flows should be
compatible: if bandwidth reservations are used, the reservation compatible: if bandwidth reservation is used, the reservation should
should be a reasonable representation of the individual reservations; be a reasonable representation of the total aggregate bandwidth; if
if maximum delay bounds are used, the system should ensure that the maximum delay bounds are used, the system should ensure that the
aggregate does not exceed the delay bounds of the individual flows. total DetNet flow delay does not exceed the maximum delay bound of
any individual flow.
The DetNet YANG model defined in this document supports DetNet flow The DetNet YANG data model defined in this document supports DetNet
aggregation with the following functions: flow aggregation with the following functions:
* Aggregated flow encapsulation/decapsulation/identification * Aggregated flow encapsulation/decapsulation/identification.
* Mapping individual DetNet flows to an aggregated flow * Mapping individual DetNet flows to an aggregated flow.
* Changing traffic specification parameters for aggregated flows * Changing traffic specification parameters for aggregated flows.
The following cases of DetNet aggregation are supported: The following DetNet aggregation scenarios are supported:
* Ingress node aggregates App flows into a service sub-layer of * The ingress node aggregates App-flows into a service sub-layer of
DetNet flow a DetNet flow.
* In ingress node, the service sub-layers of DetNet flows are * In the ingress node, the service sub-layers of DetNet flows are
aggregated into a forwarding sub-layer aggregated into a forwarding sub-layer.
* In ingress node, the service sub-layers of DetNet flows are * In the ingress node, the service sub-layers of DetNet flows are
aggregated into a service sub-layer of an aggregated DetNet flow aggregated into a service sub-layer of an aggregated DetNet flow.
* Relay node aggregates the forwarding sub-layers DetNet flows into * The relay node aggregates the forwarding sub-layers of DetNet
a forwarding sub-layer flows into a forwarding sub-layer.
* Relay node aggregates the service sub-layers of DetNet flows into * The relay node aggregates the service sub-layers of DetNet flows
a forwarding sub-layer into a forwarding sub-layer.
* Relay node aggregates the service sub-layers of DetNet flows into * The relay node aggregates the service sub-layers of DetNet flows
a service sub-layer of Aggregated DetNet flow into a service sub-layer of an aggregated DetNet flow.
* Relay node aggregates the forwarding sub-layers of DetNet flow * The relay node aggregates the forwarding sub-layers of DetNet
into a service sub-layer of Aggregated DetNet flow flows into a service sub-layer of an aggregated DetNet flow.
* Transit node aggregates the forwarding sub-layers of DetNet flows * The transit node aggregates the forwarding sub-layers of DetNet
into a forwarding sub-layer flows into a forwarding sub-layer.
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 individual or aggregate flows, but reserving resources and tracking
the services in the aggregated flow is out of scope. the services in the aggregated flow are out of scope.
6. DetNet YANG Structure Considerations 6. DetNet YANG Structure Considerations
The picture shows the general structure of the DetNet YANG Model: This diagram shows the general structure of the DetNet YANG data
model:
+-----------+ +-----------+
|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|
+------------+ +------------+ +--------------+ +---------------+
There are three layer types in the DetNet YANG Model: App-flow data There are three layer types in the DetNet YANG data model: the App-
layer, service sub-layer and forwarding sub-layer. Additionally, the flow data layer, the service sub-layer, and the forwarding sub-layer.
Traffic parameters are captured in a Traffic profile that can be Additionally, the traffic parameters are captured in a traffic
referenced by any of the layers. profile that can be referenced by any of the layers.
Below is a summary YANG tree showing the major items. A complete Below is a summary YANG tree showing the major items. The complete
YANG tree is in section Appendix A. YANG tree is provided in Appendix A.
A traffic profile can be created for an application, a service sub- A traffic profile can be created for an application, a service sub-
layer or a forwarding sub-layer. A single profile may be shared by layer, or a forwarding sub-layer. A single profile may be shared by
multiple applications/sub-layer. Each profile indicates the members multiple applications/sub-layers. Each profile indicates the members
currently using that profile. currently using that profile.
Depending on which DetNet layers and functions are required, some or Depending on which DetNet layers and functions are required, some or
all of the components may be configured. Examples are shown in all of the components may be configured. Examples are provided in
Appendix B. Appendix B.
7. DetNet Configuration YANG Structures 7. DetNet Configuration YANG Structures
The following is a partial tree representation of the YANG as defined The following is a partial tree representation of the DetNet YANG
in [RFC8340]. This corresponds to the structure layout in the data model, per the guidelines provided in [RFC8340]. This
previous section. corresponds to the layout of the diagram in Section 6.
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
skipping to change at page 10, line 5 skipping to change at line 404
+--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
... ...
8. DetNet Configuration YANG Model 8. DetNet Configuration YANG Data Model
This YANG model imports typedefs from [RFC6991], [RFC8519], This YANG data model imports typedefs from [RFC6991], [RFC8519],
[RFC8294], [RFC8343], and [IEEE8021Q]. This YANG model also has the [RFC8294], [RFC8343], and [IEEE8021Q-2022]. This YANG data model
following references to RFCs that are not in the document text body also includes the following RFC references, which are not cited
[RFC0791], [RFC4303], [RFC8349], [RFC8938], [RFC8960], [RFC8964], and elsewhere in the body of this document: [RFC0791], [RFC4303],
[RFC8200]. [RFC8200], [RFC8349], and [RFC8960].
<CODE BEGINS> file "ietf-detnet@2022-02-21.yang" <CODE BEGINS> file "ietf-detnet@2024-08-15.yang"
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 Author: Xuesong Geng
<mailto:gengxuesong@huawei.com> <mailto:gengxuesong@huawei.com>
Editor: Yeoncheol Ryoo Author: Yeoncheol Ryoo
<mailto:dbduscjf@etri.re.kr> <mailto:dbduscjf@etri.re.kr>
Editor: Don Fedyk Author: Don Fedyk
<mailto:dfedyk@labn.net>; <mailto:dfedyk@labn.net>
Editor: Reshad Rahman Author: Reshad Rahman
<mailto:reshad@yahoo.com> <mailto:reshad@yahoo.com>
Author: Zhenqiang Li
<mailto:lizhenqiang@chinamobile.com>";
Editor: Zhenqiang Li
<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 utilize the sequence
sequence number used in App-flow. This function is number present in the App-flow. This function is
required when encapsulating App-flows that have been 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. When a relay node sees the same
node."; sequence number on an App-flow, it may be programmed
} to eliminate duplicate App-flow packets.";
}
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. IPv6 only.";
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 page 25, line 4 skipping to change at line 1147
} }
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 types supported."; "The flow types supported.";
case ip { case ip {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
description description
"This is the IP flow type next hop."; "This is the IP flow type next hop.";
} }
} }
case mpls { case mpls {
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
IEEE802.1Q"; Deterministic Networking (DetNet), Section 5.5
IEEE 802.1Q-2022: IEEE Standard for Local and
Metropolitan Area Networks--Bridges and Bridged
Networks";
} }
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
IEEE 802.1Q-2022: IEEE Standard for Local and
Metropolitan Area Networks--Bridges and Bridged
Networks";
} }
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
IEEE 802.1Q-2022: IEEE Standard for Local and
Metropolitan Area Networks--Bridges and Bridged
Networks";
} }
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
IEEE 802.1Q-2022: IEEE Standard for Local and
Metropolitan Area Networks--Bridges and Bridged
Networks";
} }
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
IEEE 802.1Q-2022: IEEE Standard for Local and
Metropolitan Area Networks--Bridges and Bridged
Networks";
} }
} }
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, Sections 6 and 7";
} }
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, Sections 6 and 7";
} }
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, Sections 6 and 7";
} }
} }
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 }
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-flow 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-layer 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 '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
'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 outgoing service sub-layers aggregated
that separately for each node in the forwarding sub-layer.";
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-layer 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 'initiation' and
operation type is service-relay."; swaps the S-Label when the operation type is
'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
'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
'termination'.";
reference reference
"RFC 8964 Section 4.2.1 and 4.2.2."; "RFC 8964: Deterministic Networking (DetNet)
Data Plane: MPLS, Sections 3.1 and 4.4.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
'termination'.";
reference reference
"RFC 8964 Section 4.2.1 and 4.2.2."; "RFC 8964: Deterministic Networking (DetNet)
Data Plane: MPLS, Sections 3.1 and 4.4.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-layer 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 layers 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 page 39, line 34 skipping to change at line 1905
container optional-forwarding-label { container optional-forwarding-label {
description description
"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-layer 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;
} }
} }
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
9. IANA Considerations 9. IANA Considerations
This document registers a URI in the "IETF XML Registry" [RFC3688]. IANA has registered the following URI in the "ns" subregistry within
Following the format in [RFC3688], the following registration is the "IETF XML Registry" [RFC3688]:
requested to be made:
ID: yang:ietf-detnet
URI: urn:ietf:params:xml:ns:yang:ietf-detnet URI: urn:ietf:params:xml:ns:yang:ietf-detnet
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
This document registers YANG modules in the "YANG Module Names" IANA has registered the following YANG module in the "YANG Module
registry [RFC6020]. Names" subregistry [RFC6020] within the "YANG Parameters" registry:
Name: ietf-detnet Name: ietf-detnet
Maintained by IANA: N Maintained by IANA: N
Namespace: urn:ietf:params:xml:ns:yang:ietf-detnet Namespace: urn:ietf:params:xml:ns:yang:ietf-detnet
Prefix: dnet Prefix: dnet
Reference: This RFC when published. Reference: RFC 9633
10. Security Considerations 10. Security Considerations
Security considerations for DetNet are covered in the DetNet Security considerations for DetNet are covered in "Deterministic
Architecture [RFC8655] and DetNet Security Considerations [RFC9055] . Networking Architecture" [RFC8655] and "Deterministic Networking
(DetNet) Security Considerations" [RFC9055].
The YANG modules specified in this document define a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols, that is designed to be accessed via network management protocols such
such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
layer is the secure transport layer, and the mandatory-to-implement is the secure transport layer, and the mandatory-to-implement secure
secure transport is Secure Shell (SSH) [RFC6242]. The lowest transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
RESTCONF layer is HTTPS, and the mandatory-to-implement secure is HTTPS, and the mandatory-to-implement secure transport is TLS
transport is TLS [RFC8446]. [RFC8446].
The Network Configuration Access Control Model (NACM) [RFC8341] The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in the module that are There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Unauthorized write operations (e.g., in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative
effect on network operations. Unauthorized write operations (e.g.,
edit-config) to any elements of this module can break or incorrectly edit-config) to any elements of this module can break or incorrectly
connect DetNet flows. Since DetNet is a configured Data Plane, any connect DetNet flows. Since DetNet is a configured data plane, any
changes that are not coordinated with all devices along the path will changes that are not coordinated with all devices along the path will
create a denial of service. In addition, arbitrary write operations result in a denial of service. In addition, arbitrary write
could also enable an attacker to modify a network path to enable operations could enable an attacker to modify a network path to
select traffic to avoid inspection or treatment by security controls, enable select traffic to avoid inspection or treatment by security
or route traffic in a way that it would be subject to inspect/ controls or to route traffic in such a way that the traffic would be
modification by an adversary node. subject to inspection/modification by an adversary node.
Similarly, the data nodes in these YANG modules may be considered Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. These are the subtrees and data notification) to these data nodes. These are the subtrees and data
node and their sensitivity/vulnerability: nodes and their sensitivity/vulnerability:
/detnet/app-flows: This controls the application details so it could /detnet/app-flows: This controls the application details, so it
be considered sensitive. could be considered sensitive.
/detnet/traffic-profile/member-app-flow: This links traffic profiles /detnet/traffic-profile/member-app-flow: This links traffic profiles
to applications, service sub-layers and/or and forwarding sub-layers to applications, service sub-layers, and/or forwarding sub-layers,
so this also could be considered more sensitive. so this could also be considered more sensitive.
/detnet/service/sub-layer/incoming/app-flow: This links applications /detnet/service/sub-layer/incoming/app-flow: This links applications
to services. to services.
/detnet/service/sub-layer/outgoing/app-flow: This links applications /detnet/service/sub-layer/outgoing/app-flow: This links applications
to services. to services.
The above nodes can reveal identifiable characteristics of the The above nodes can reveal identifiable characteristics of the
application flows. application flows.
/detnet/service/sub-layer: This defines the service and forwarding /detnet/service/sub-layer: This defines the service and forwarding
operations. operations.
/detnet/fowarding/sub-layer: This defines the forwarding operations.
The above nodes can reveal some aspects of the network topology of
there is unauthorized access to this configuration.
11. Contributors
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:
Mach(Guoyi) Chen
Huawei Technologies
Email: mach.chen@huawei.com
12. Acknowledgments /detnet/forwarding/sub-layer: This defines the forwarding
operations.
The editors of this document would like to thank Lou Berger, Tom The above nodes can reveal some aspects of the network topology in
Petch Xufeng Lui, Julien Meuric, John Scudder` and Florian Kauer for the case of unauthorized access to this configuration.
their detailed comments.
13. References 11. References
13.1. Normative References 11.1. Normative References
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791,
DOI 10.17487/RFC0791, September 1981, DOI 10.17487/RFC0791, September 1981,
<https://www.rfc-editor.org/info/rfc791>. <https://www.rfc-editor.org/info/rfc791>.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
RFC 4303, DOI 10.17487/RFC4303, December 2005, RFC 4303, DOI 10.17487/RFC4303, December 2005,
<https://www.rfc-editor.org/info/rfc4303>. <https://www.rfc-editor.org/info/rfc4303>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", STD 86, RFC 8200, (IPv6) Specification", STD 86, RFC 8200,
DOI 10.17487/RFC8200, July 2017, DOI 10.17487/RFC8200, July 2017,
<https://www.rfc-editor.org/info/rfc8200>. <https://www.rfc-editor.org/info/rfc8200>.
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294, "Common YANG Data Types for the Routing Area", RFC 8294,
DOI 10.17487/RFC8294, December 2017, DOI 10.17487/RFC8294, December 2017,
<https://www.rfc-editor.org/info/rfc8294>. <https://www.rfc-editor.org/info/rfc8294>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
<https://www.rfc-editor.org/info/rfc8343>. <https://www.rfc-editor.org/info/rfc8343>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018, DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>. <https://www.rfc-editor.org/info/rfc8349>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
skipping to change at page 44, line 21 skipping to change at line 2133
S., and J. Korhonen, "Deterministic Networking (DetNet) S., and J. Korhonen, "Deterministic Networking (DetNet)
Data Plane: MPLS", RFC 8964, DOI 10.17487/RFC8964, January Data Plane: MPLS", RFC 8964, DOI 10.17487/RFC8964, January
2021, <https://www.rfc-editor.org/info/rfc8964>. 2021, <https://www.rfc-editor.org/info/rfc8964>.
[RFC9016] Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D. [RFC9016] Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D.
Fedyk, "Flow and Service Information Model for Fedyk, "Flow and Service Information Model for
Deterministic Networking (DetNet)", RFC 9016, Deterministic Networking (DetNet)", RFC 9016,
DOI 10.17487/RFC9016, March 2021, DOI 10.17487/RFC9016, March 2021,
<https://www.rfc-editor.org/info/rfc9016>. <https://www.rfc-editor.org/info/rfc9016>.
13.2. Informative References 11.2. Informative References
[IEEE8021Q] [IEEE8021Q-2022]
IEEE, "IEEE Standard for Local and Metropolitan Area IEEE, "IEEE Standard for Local and Metropolitan Area
Networks--Bridges and Bridged Networks", Networks--Bridges and Bridged Networks",
DOI 10.1109/IEEESTD.2022.10004498, IEEE 802.1Q-2022, July DOI 10.1109/IEEESTD.2022.10004498, IEEE Std 802.1Q-2022,
2022, <https://ieeexplore.ieee.org/document/8403927>. December 2022,
<https://ieeexplore.ieee.org/document/10004498>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
and A. Bierman, Ed., "Network Configuration Protocol Interchange Format", STD 90, RFC 8259,
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, DOI 10.17487/RFC8259, December 2017,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc8259>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker, [RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker,
"Deterministic Networking (DetNet) Security "Deterministic Networking (DetNet) Security
Considerations", RFC 9055, DOI 10.17487/RFC9055, June Considerations", RFC 9055, DOI 10.17487/RFC9055, June
2021, <https://www.rfc-editor.org/info/rfc9055>. 2021, <https://www.rfc-editor.org/info/rfc9055>.
Appendix A. DetNet Configuration YANG Tree Appendix A. DetNet Configuration YANG Tree
This is the full YANG tree as described in [RFC8340]. This is the full YANG tree per the guidelines provided in [RFC8340].
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
skipping to change at page 55, line 7 skipping to change at line 2629
| +--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
Appendix B. Examples Appendix B. Examples
The following examples are provided. These examples are tested with This section provides several examples. These examples were tested
Yanglint and use operational output to exercise both config true and with the "yanglint" program and use operational output to exercise
config false objects. Note that IPv4 and IPv6 addresses are both "config true" and "config false" objects. Note that IPv4 and
supported but for clarity in the examples and diagrams IPv4 has been IPv6 addresses are supported, but for clarity, IPv4 is used, with the
used in most examples. The IP types are imported from [RFC6991] and exception of Example A-1 (Appendix B.1). The IP types are imported
these support both IPv4 and IPv6. from [RFC6991]; these types support both IPv4 and IPv6.
The following conventions are used in the diagrams. The following conventions are used in the diagrams.
* Replication and Elimination points are shown as an R in and E in * In the diagrams found in the PDF and HTML copies of this document,
circles respectively. replication and elimination points are shown as "R" and "E" in
circles, respectively.
* Packet Headers including DetNet aggregation label or A-label, * Packet headers, including a DetNet aggregation label (A-Label),
Service label or S-label and Forwarding label or F-label are service label (S-Label), and forwarding label (F-Label), are
illustrated at each hop as defined in [RFC8964]. illustrated at each hop as defined in [RFC8964].
* Aggregation/Disaggregation nodes are indicated by dashed line * Aggregation/disaggregation nodes are indicated by dashed-line
boxes. boxes.
* Since the model augments IETF interfaces, minimal interface YANG * Since the model augments IETF interfaces, minimal interface YANG
data is provided to validate the interface data as well. This data is provided to validate the interface data as well. This
shows up as a named value such as "eth0" etc. that is referenced shows up as a named value, such as "eth0", that is referenced by
by the configuration. the configuration.
The following are examples of aggregation and disaggregation at Below are examples of aggregation and disaggregation at various
various points in DetNet. Figures are provided in the PDF and HTML points in DetNet. Where indicated, figures are provided in the PDF
version of this document. and HTML copies of this document.
B.1. Example A-1 JSON Configuration/Operational B.1. Example A-1: Application Flow Aggregation
This illustrates that multiple App flows with the same source, the This example illustrates multiple App-flows with the same source,
same destination, and the same traffic specification are aggregated destination, and traffic specification aggregated into a single
in a single DetNet flow service sub-layer. Ingress node 1 aggregates DetNet flow service sub-layer. Ingress node 1 aggregates App-flows 0
App flows 0 and 1 into a service sub-layer of DetNet flow 1. Two and 1 into a service sub-layer of DetNet flow 1. Two ways to
ways of illustrating this follow, then the JSON operational data illustrate this are provided in Figures 1 and 2; the JSON operational
model corresponding to the diagrams follows. This example uses IPv6 data model [RFC8259] corresponding to the diagrams is then shown in
address format. Figure 3. The address format used in this example is IPv6.
Please consult the PDF or HTML versions for the Case A-1 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 2: Case A-1 Application Aggregation Figure 1: Case A-1: Application Flow Aggregation
Please consult the PDF or HTML versions for the Case A-1 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 3: Case A-1 Application Aggregation Flow Stack Detail Figure 2: Case A-1: Stack Details for Application Flow Aggregation
Figure 4 contains the operational JSON configuration for the ingress Figure 3 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 2 and Figure 3. App-0 and aggregation node illustrated in Figures 1 and 2. "app-0" and "app-1"
app-1 are aggregated into Service Sub-layer ssl-1. are aggregated into service sub-layer ssl-1.
{ {
"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 page 60, line 4 skipping to change at line 2870
{ {
"name": "eth2", "name": "eth2",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 4: Example A-1 DetNet configuration Application Aggregation Figure 3: Example A-1: DetNet Configuration Application Flow
Aggregation
B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer B.2. Example B-1: Aggregation Using a Forwarding Sub-layer
Figure 5 illustrates the DetNet service sub-layer flows 1 and 2 are As illustrated in Figure 4, DetNet service sub-layer flows 1 and 2
aggregated into a single forwarding sub-layer. For the same are aggregated into a single forwarding sub-layer. For the same
destination multiple DetNet flows use a single forwarding path and destination, multiple DetNet flows use a single forwarding path, and
service protection is performed by the corresponding service sub- service protection is performed by the corresponding service sub-
layer of each flow. A diagram illustrating this case is shown and layer of each flow. The corresponding XML operational data for node
then the corresponding XML operational data for node Ingress 1 "Ingress 1" follows.
follows.
Please consult the PDF or HTML versions for the Case B-1 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 5: Case B-1 Example Config: Aggregation using a Forwarding Figure 4: Case B-1: Aggregation Using a Forwarding Sub-layer
Sub-layer
Figure 6 contains the operational XML configuration for the ingress Figure 5 contains the operational XML configuration for the ingress
aggregation node illustrated in Figure 5. In this example app-0 and aggregation node illustrated in Figure 4. In this example, "app-0"
app-1 are in separate service sub-layers with MPLS labels and the and "app-1" are in separate service sub-layers with MPLS labels, and
aggregation happens at the forwarding sub-layer afl-1 using MPLS the aggregation happens at forwarding sub-layer afl-1, using MPLS
labels. labels.
<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>
skipping to change at page 64, line 27 skipping to change at line 3085
<id>0</id> <id>0</id>
<label>10000</label> <label>10000</label>
</entry> </entry>
</mpls-label-stack> </mpls-label-stack>
</interface> </interface>
</outgoing> </outgoing>
</sub-layer> </sub-layer>
</forwarding> </forwarding>
</detnet> </detnet>
Figure 6: Example B-1 DetNet configuration Forwarding Layer Figure 5: Example B-1: DetNet Configuration Forwarding Sub-layer
Aggregation Aggregation
B.3. Example B-2 JSON Service Aggregation Configuration B.3. Example B-2: Service Aggregation
Figure 7 illustrates DetNet service sub-layer flows 1 and 2 are As illustrated in Figure 6, DetNet service sub-layer flows 1 and 2
aggregated into a service sub-layer of an aggregated flow. Multiple are aggregated into a service sub-layer of an aggregated flow.
DetNet flows with the same requirements for the same destination are Multiple DetNet flows with the same requirements for the same
aggregated into a single aggregated DetNet flow, and service destination are aggregated into a single aggregated DetNet flow, and
protection and resource allocation are performed by an aggregated service protection and resource allocation are performed by an
DetNet flow service sub-layer and forwarding sub-layer. A diagram aggregated DetNet flow service sub-layer and forwarding sub-layer.
illustrating this case is shown and then the corresponding JSON The corresponding JSON operational data for node "Ingress 1" follows.
operational data for node Ingress 1 follows.
Please consult the PDF or HTML versions for the Case B-2 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 7: Case B-2 Example Service Aggregation Figure 6: Case B-2: Example Service Aggregation
Figure 8 contains the operational JSON configuration for the ingress Figure 7 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 7. In this example, service aggregation node illustrated in Figure 6. In this example, service
sub-layer ssl-1 for DetNet flow DN1 and ssl-2 for flow DN2 aggregate sub-layer ssl-1 for DetNet flow DN-1 and ssl-2 for DetNet flow DN-2
at service sub-layer Detet flow asl-1. In this example an aggregate at service sub-layer DetNet flow asl-1. In this example,
aggregation service sub-layer asl-1 is created to aggregated ssl-1 an aggregation service sub-layer, asl-1, is created to aggregate
and ssl2 and that label is encapsulated in a separate forwarding sub- ssl-1 and ssl2, and that label is encapsulated in a separate
layer afl-1 with MPLS labels. forwarding sub-layer, afl-1, with MPLS labels.
{ {
"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 page 70, line 24 skipping to change at line 3371
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 8: Example B-2 DetNet Service Aggregation Figure 7: Example B-2: DetNet Service Aggregation
B.4. Example C-1 JSON Relay Aggregation/Disaggregation Configuration B.4. Example C-1: DetNet Relay Service Sub-layer
Figure 9 illustrates the relay node's forwarding sub-layer flows 1 Figure 8 illustrates the DetNet relay node's forwarding sub-layer
and 2 aggregated into a single forwarding sub-layer. Service flows 1 and 2 aggregated into a single forwarding sub-layer. Service
protection and resource allocation are performed by the corresponding protection and resource allocation are performed by the corresponding
service sub-layer and forwarding sub-layer of each flow. A diagram service sub-layer and forwarding sub-layer of each flow. Figure 8
illustrating both aggregation and disaggregation is shown and then illustrates both aggregation and disaggregation, and the
the corresponding JSON operational data follows. corresponding JSON operational data follows.
Please consult the PDF or HTML versions for the Case C-1 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 9: Case C-1 Example Service Aggregation/Disaggregation Figure 8: Case C-1: Example Service Aggregation/Disaggregation
Figure 10 contains the operational JSON configuration for the ingress Figure 9 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 9. In this example, a relay aggregation node illustrated in Figure 8. In this example, a relay
performing aggregation at the forwarding sub-layer is illustrated. performing aggregation at the forwarding sub-layer is illustrated.
Two DetNet flows DN1 and DN2 are replicated at each service sub- Two DetNet flows -- DN-1 and DN-2 -- are replicated at each service
layer. The two forwarding sub-layers for the upside path are sub-layer. The two forwarding sub-layers for the upper path are
aggregated at the forwarding sub-layer with label 20000 and the two aggregated 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 lower path are aggregated at the
forwarding sub-layer with label 20001. Figure 11 contains the forwarding sub-layer with label 20001. Figure 10 contains the
operational JSON configuration for the egress disaggregation node operational JSON configuration for the egress disaggregation node
illustrated in Figure 9. illustrated in Figure 8.
{ {
"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 page 79, line 4 skipping to change at line 3782
"statistics": { "statistics": {
"discontinuity-time": "2024-02-21T18:59:00-05:00" "discontinuity-time": "2024-02-21T18:59:00-05:00"
} }
}, },
{ {
"name": "eth3", "name": "eth3",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 10: Example C-1 DetNet Relay Service Aggregation Figure 9: Example C-1: DetNet Relay Service Aggregation
{ {
"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 page 87, line 4 skipping to change at line 4166
} }
}, },
{ {
"name": "eth3", "name": "eth3",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 11: Example C-1 DetNet Relay Service Disaggregation Figure 10: Example C-1: DetNet Relay Service Disaggregation
B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service Sub- B.5. Example C-2: DetNet Relay Service Sub-layer Aggregation/
Layer Disaggregation
Figure 12 illustrates the DetNet relay node service sub-layer flows 1 Figure 11 illustrates the DetNet relay node's service sub-layer flows
and 2 aggregated into a single forwarding sub-layer. Service 1 and 2 aggregated into a single forwarding sub-layer. Service
protection is performed by the corresponding service sub-layer of protection is performed by the corresponding service sub-layer of
each flow and resource allocation is performed by an aggregated each flow, and resource allocation is performed by an aggregated
forwarding sub-layer for all aggregated flows. A diagram forwarding sub-layer for all aggregated flows. Figure 11 illustrates
illustrating both aggregation and disaggregation is shown and then both aggregation and disaggregation, and the corresponding JSON
the corresponding JSON operational data follows. operational data follows.
Please consult the PDF or HTML versions for the Case C-2 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 12: Case C-2 Example Service Aggregation/Disaggregation Figure 11: Case C-2: Example Service Aggregation/Disaggregation
Figure 13 contains the operational JSON configuration for the ingress Figure 12 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 12. In this example, a relay aggregation node illustrated in Figure 11. In this example, a relay
performing aggregation at the forwarding sub-layer is illustrated. performing aggregation at the forwarding sub-layer is illustrated.
Two DetNet flows DN1 and DN2 are replicated at each service sub- Two DetNet flows -- DN-1 and DN-2 -- are replicated at each service
layer, and the replicated each service sub-layer for the upside path sub-layer. Each replicated flow for the service sub-layer for the
is aggregated at the single forwarding sub-layer with MPLS label upper path is aggregated at the single forwarding sub-layer with MPLS
20000, and the replicated each service sub-layer for the downside label 20000, and each replicated flow for the service sub-layer for
path is aggregated at the forwarding sub-layer with MPLS label 20001. the lower path is aggregated at the forwarding sub-layer with MPLS
Figure 14 contains the operational JSON configuration for the egress label 20001. Figure 13 contains the operational JSON configuration
disaggregation node illustrated in Figure 12. for the egress disaggregation node illustrated in Figure 11.
{ {
"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 page 93, line 27 skipping to change at line 4477
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 13: Example C-2 DetNet Relay Aggregation Service Sub-Layer Figure 12: Example C-2: DetNet Relay Aggregation Service Sub-layer
{ {
"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 page 99, line 16 skipping to change at line 4755
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 14: Example C-2 DetNet Relay Disaggregation Service Sub-Layer Figure 13: Example C-2: DetNet Relay Disaggregation Service Sub-layer
B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ B.6. Example C-3: DetNet Relay Service Sub-layer Aggregation/
Disaggregation Disaggregation
Figure 15 illustrates the DetNet relay node service sub-layer flows 1 Figure 14 illustrates the DetNet relay node's service sub-layer flows
and 2 aggregated into a service sub-layer flow. Multiple DetNet 1 and 2 aggregated into a service sub-layer flow. Multiple DetNet
flows with the same requirements which can use the same path are flows with the same requirements that can use the same path are
aggregated into a single aggregated DetNet flow, and service aggregated into a single aggregated DetNet flow, and service
protection and resource allocation are performed by the service sub- protection and resource allocation are performed by the service sub-
layer and forwarding sub-layer of aggregated DetNet flow. A diagram layer and forwarding sub-layer of the aggregated DetNet flow.
illustrating both aggregation and disaggregation is shown and then Figure 14 illustrates both aggregation and disaggregation, and the
the corresponding JSON operational data follows. corresponding JSON operational data follows.
Please consult the PDF or HTML versions for the Case C-3 Diagram. (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 15: Case C-3 Example Service Aggregation/Disaggregation Figure 14: Case C-3: Example Service Aggregation/Disaggregation
Figure 16 contains the operational JSON configuration for the ingress Figure 15 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 15. In this example a relay aggregation node illustrated in Figure 14. In this example, a relay
performing aggregation at the service sub-layer is illustrated. Two performing aggregation at the service sub-layer is illustrated. Two
DetNet flows DN1 and DN2 are relayed at each service sub-layer with DetNet flows -- DN-1 and DN-2 -- are relayed at each service sub-
MPLS labels 101 and 104 respectively, and each service sub-layer is layer with MPLS labels 101 and 104, respectively, and each service
aggregated at a single service sub-layer flow and replicated. sub-layer is aggregated at a single service sub-layer flow and
Figure 17 contains the operational JSON configuration for the egress replicated. Figure 16 contains the operational JSON configuration
disaggregation node illustrated in Figure 15. for the egress disaggregation node illustrated in Figure 14.
{ {
"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 page 106, line 24 skipping to change at line 5100
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 16: Example C-3 DetNet Relay Service Sub-Layer Aggregation Figure 15: Example C-3: DetNet Relay Service Sub-layer Aggregation
{ {
"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 page 113, line 4 skipping to change at line 5416
} }
}, },
{ {
"name": "eth3", "name": "eth3",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 17: Example C-3 DetNet Relay Service Sub-Layer Disaggregation Figure 16: Example C-3: DetNet Relay Service Sub-layer Disaggregation
B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ B.7. Example C-4: DetNet Relay Service Sub-layer Aggregation/
Disaggregation Disaggregation
Figure 18 illustrates the relay node DetNet forwarding sub-layer Figure 17 illustrates the DetNet relay node's forwarding sub-layer
flows 1 and 2 aggregated into a service sub-layer DetNet flow. flows 1 and 2 aggregated into a service sub-layer DetNet flow.
Multiple DetNet flows with the same requirements which can use the Multiple DetNet flows with the same requirements that can use the
same path are aggregated into a single aggregated DetNet flow. same path are aggregated into a single aggregated DetNet flow.
Service protection is performed by the service sub-layer of the Service protection is performed by the service sub-layer of the
aggregated DetNet flow and resource allocation is performed by the aggregated DetNet flow, and resource allocation is performed by the
forwarding sub-layer of each aggregated DetNet flow. A diagram forwarding sub-layer of each aggregated DetNet flow. Figure 17
illustrating both aggregation and disaggregation is shown and then illustrates both aggregation and disaggregation, and the
the corresponding JSON operational data follows. corresponding JSON operational data follows.
Please consult the PDF or HTML versions for the Case C-4 Diagram (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 18: Case C-4 Example Service Aggregation/Disaggregation Figure 17: Case C-4: Example Service Aggregation/Disaggregation
Figure 19 contains the operational JSON configuration for the ingress Figure 18 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 18. In this example, a relay aggregation node illustrated in Figure 17. In this example, a relay
performing aggregation at the service sub-layer is illustrated. Two performing aggregation at the service sub-layer is illustrated. Two
DetNet flows DN1 and DN2 are relayed at each service sub-layer. The DetNet flows -- DN-1 and DN-2 -- are relayed at each service sub-
two DetNet forwarding sub-layer flows with MPLS labels 20004 and layer. The two DetNet forwarding sub-layer flows with MPLS labels
20005 are aggregated at the single service sub-layer DetNet flow and 20004 and 20005 are aggregated at the single service sub-layer DetNet
then replicated. Figure 20 contains the operational JSON flow and then replicated. Figure 19 contains the operational JSON
configuration for the egress disaggregation node illustrated in configuration for the egress disaggregation node illustrated in
Figure 18. Figure 17.
{ {
"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 page 121, line 36 skipping to change at line 5833
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 19: Example C-4 DetNet Relay Service Sub-Layer Aggregation Figure 18: Example C-4: DetNet Relay Service Sub-layer Aggregation
{ {
"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 page 129, line 24 skipping to change at line 6205
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 20: Example C-4 DetNet Relay Service Sub-Layer Disaggregation Figure 19: Example C-4: DetNet Relay Service Sub-layer Disaggregation
B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ B.8. Example D-1: Transit Node Forwarding Sub-layer Aggregation/
Disaggregation Disaggregation
Figure 21 illustrates at the transit node, forwarding sub-layer flows As illustrated in Figure 20, at the transit node, forwarding sub-
1 and 2 are aggregated into a single forwarding sub-layer. Resource layer flows 1 and 2 are aggregated into a single forwarding sub-
allocation is performed by the corresponding forwarding sub-layer for layer. Resource allocation is performed by the corresponding
all aggregated flows. Figure 21 illustrating both aggregation and forwarding sub-layer for all aggregated flows. Figure 20 illustrates
disaggregation is shown and then the corresponding JSON operational both aggregation and disaggregation, and the corresponding JSON
data follows. operational data follows.
Please consult the PDF or HTML versions for the Case D-1 Diagram (Artwork only available as SVG: see
https://www.rfc-editor.org/rfc/rfc9633.html)
Figure 21: Case D-1 Example Transit Node Forwarding Aggregation/ Figure 20: Case D-1: Example Transit Node Forwarding Aggregation/
Disaggregation Disaggregation
Figure 22 contains the operational JSON configuration for the ingress Figure 21 contains the operational JSON configuration for the ingress
aggregation node illustrated in Figure 21. In this example, a aggregation node illustrated in Figure 20. In this example, a
transit node performing aggregation at the forwarding sub-layer is transit node performing aggregation at the forwarding sub-layer is
illustrated. Two DetNet flows DN1 and DN2 are transmitted at each illustrated. Two DetNet flows -- DN-1 and DN-2 -- are transmitted at
forwarding sub-layer. The DetNet forwarding sub-layer flows with each forwarding sub-layer. The DetNet forwarding sub-layer flows
MPLS labels 10002 and 10006 are aggregated at the single forwarding with MPLS labels 10002 and 10006 are aggregated at the single
sub-layer. The resulting aggregated DetNet flow has MPLS label forwarding sub-layer. The resulting aggregated DetNet flow has MPLS
20000. Figure 23 contains the operational JSON configuration for the label 20000. Figure 22 contains the operational JSON configuration
egress disaggregation transit node illustrated in Figure 21. for the egress disaggregation transit node illustrated in Figure 20.
{ {
"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 page 132, line 17 skipping to change at line 6342
"incoming": { "incoming": {
"forwarding-aggregation": { "forwarding-aggregation": {
"sub-layer": [ "sub-layer": [
"fsl-1", "fsl-1",
"fsl-2" "fsl-2"
] ]
} }
}, },
"outgoing": { "outgoing": {
"interface": { "interface": {
"outgoing-interface": "eth3", "outgoing-interface": "eth2",
"mpls-label-stack": { "mpls-label-stack": {
"entry": [ "entry": [
{ {
"id": 0, "id": 0,
"label": 20000 "label": 20000
} }
] ]
} }
} }
} }
skipping to change at page 132, line 51 skipping to change at line 6376
}, },
{ {
"name": "eth1", "name": "eth1",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
}, },
{ {
"name": "eth3", "name": "eth2",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 22: Example D-1 Transit Node Forwarding Aggregation Figure 21: Example D-1: Transit Node Forwarding Aggregation
{ {
"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 page 136, line 22 skipping to change at line 6539
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"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"
} }
} }
] ]
} }
} }
Figure 23: Example D-1 Transit Node Forwarding Disaggregation Figure 22: Example D-1: Transit Node Forwarding Disaggregation
Acknowledgments
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.
Contributors
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:
Mach(Guoyi) Chen
Huawei Technologies
Email: mach.chen@huawei.com
Authors' Addresses Authors' Addresses
Xuesong Geng Xuesong Geng
Huawei Technologies Huawei Technologies
Email: gengxuesong@huawei.com Email: gengxuesong@huawei.com
Yeoncheol Ryoo Yeoncheol Ryoo
ETRI ETRI
Email: dbduscjf@etri.re.kr Email: dbduscjf@etri.re.kr
 End of changes. 397 change blocks. 
887 lines changed or deleted 991 lines changed or added

This html diff was produced by rfcdiff 1.48.