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 | August 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: JSON Configuration/Operational | |||
Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 55 | B.2. Example B-1: XML Configuration - Aggregation Using a | |||
B.1. Example A-1 JSON Configuration/Operational . . . . . . . 55 | Forwarding Sub-layer | |||
B.2. Example B-1 XML Config: Aggregation using a Forwarding | B.3. Example B-2: JSON Service Aggregation Configuration | |||
Sub-layer . . . . . . . . . . . . . . . . . . . . . . . . 60 | B.4. Example C-1: JSON Relay Aggregation/Disaggregation | |||
B.3. Example B-2 JSON Service Aggregation Configuration . . . 64 | Configuration | |||
B.4. Example C-1 JSON Relay Aggregation/Disaggregation | B.5. Example C-2: JSON Relay Aggregation/Disaggregation Service | |||
Configuration . . . . . . . . . . . . . . . . . . . . . . 70 | Sub-layer | |||
B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service | B.6. Example C-3: JSON Relay Service Sub-layer Aggregation/ | |||
Sub-Layer . . . . . . . . . . . . . . . . . . . . . . . . 87 | Disaggregation | |||
B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | B.7. Example C-4: JSON Relay Service Sub-layer Aggregation/ | |||
Disaggregation . . . . . . . . . . . . . . . . . . . . . 99 | Disaggregation | |||
B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | B.8. Example D-1: JSON Transit Forwarding Sub-layer Aggregation/ | |||
Disaggregation . . . . . . . . . . . . . . . . . . . . . 113 | Disaggregation | |||
B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | Acknowledgments | |||
Disaggregation . . . . . . . . . . . . . . . . . . . . . 129 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 136 | Authors' Addresses | |||
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 | POF: Packet Ordering Function | |||
PEOF Packet Elimination and Ordering Functions | PRF: Packet Replication Function | |||
PERF Packet Elimination and Replication Functions | PEOF: Packet Elimination and Ordering Functions | |||
PREOF Packet Replication, Elimination and Ordering Functions | PERF: Packet Elimination and Replication Functions | |||
MPLS Multiprotocol Label Switching | PREOF: Packet Replication, Elimination, and Ordering Functions | |||
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 | generally represent the flow direction towards the remote | |||
Application to Service sub-layer to Forwarding sub-layer and incoming | application. "Outgoing" is viewed as going down the stack from the | |||
is the reverse. Although, in examples where there is aggregation and | application to the service sub-layer to the forwarding sub-layer, and | |||
disaggregation outgoing relates to the aggregating output and | "incoming" indicates the reverse. However, in examples (Appendix B) | |||
incoming relates to the disaggregating flows. | where both aggregation and disaggregation take place, "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 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 aspects. | |||
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 reservations are used, the reservation | |||
should be a reasonable representation of the individual reservations; | should be a reasonable representation of the individual reservations; | |||
if maximum delay bounds are used, the system should ensure that the | if maximum delay bounds are used, the system should ensure that the | |||
aggregate does not exceed the delay bounds of the individual flows. | aggregate does not exceed the delay bounds of the individual flows. | |||
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 399 ¶ | |||
+--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]. This YANG data model also | |||
following references to RFCs that are not in the document text body | includes the following RFC references, which are not cited elsewhere | |||
[RFC0791], [RFC4303], [RFC8349], [RFC8938], [RFC8960], [RFC8964], and | 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 | Editor: Xuesong Geng | |||
<mailto:gengxuesong@huawei.com> | <mailto:gengxuesong@huawei.com> | |||
Editor: Yeoncheol Ryoo | Editor: Yeoncheol Ryoo | |||
<mailto:dbduscjf@etri.re.kr> | <mailto:dbduscjf@etri.re.kr> | |||
Editor: Don Fedyk | Editor: Don Fedyk | |||
<mailto:dfedyk@labn.net>; | <mailto:dfedyk@labn.net> | |||
Editor: Reshad Rahman | Editor: Reshad Rahman | |||
<mailto:reshad@yahoo.com> | <mailto:reshad@yahoo.com> | |||
Editor: Zhenqiang Li | Editor: Zhenqiang Li | |||
<mailto:lizhenqiang@chinamobile.com>"; | <mailto:lizhenqiang@chinamobile.com>"; | |||
description | description | |||
"This YANG module describes the parameters needed | "This YANG module describes the parameters needed | |||
for DetNet flow configuration and flow status | for DetNet flow configuration and flow status | |||
reporting. This YANG module conforms to the Network | reporting. This YANG module conforms to the Network | |||
Management Datastore Architecture (NMDA). | Management Datastore Architecture (NMDA). | |||
Copyright (c) 2024 IETF Trust and the persons identified as | Copyright (c) 2024 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject | |||
the license terms contained in, the Revised BSD License set | to the license terms contained in, the Revised BSD License | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9633; see the | |||
see the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note | ||||
// replace '2024-02-21' with the module publication date | ||||
// the format is (year-month-day) | ||||
revision 2024-02-21 { | revision 2024-08-15 { | |||
description | description | |||
"Initial revision"; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model"; | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Model"; | ||||
} | } | |||
identity app-status { | identity app-status { | |||
description | description | |||
"Base identity from which all application-status | "Base identity from which all application status types | |||
status types are derived."; | are derived."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity none { | identity none { | |||
base app-status; | base app-status; | |||
description | description | |||
"This application has no status. This identity is | "This application has no status. This identity is | |||
expected when the configuration is incomplete."; | expected when the configuration is incomplete."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity ready { | identity ready { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application ingress/egress ready."; | "The application is ingress/egress ready."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity failed { | identity failed { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application ingres/egress failed."; | "The application is ingress/egress failed."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity out-of-service { | identity out-of-service { | |||
base app-status; | base app-status; | |||
description | description | |||
"Application administratively blocked."; | "The application is administratively blocked."; | |||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
identity partial-failed { | identity partial-failed { | |||
base app-status; | base app-status; | |||
description | description | |||
"This is an application with one or more Egress ready, and one | "This is an application with one or more egress-ready | |||
or more Egress failed. The DetNet flow can be used if the | instances and one or more instances where egress failed. | |||
Ingress is Ready."; | The DetNet flow can be used if the ingress's status is | |||
'ready'."; | ||||
reference | reference | |||
"RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.8"; | ||||
} | } | |||
typedef app-flow-ref { | typedef app-flow-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:app-flows" | + "/dnet:app-flows" | |||
+ "/dnet:app-flow" | + "/dnet:app-flow" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is an application Reference."; | "This is a reference to an application."; | |||
} | } | |||
typedef service-sub-layer-ref { | typedef service-sub-layer-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:service" | + "/dnet:service" | |||
+ "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a service sub-layer Reference."; | "This is a reference to the service sub-layer."; | |||
} | } | |||
typedef forwarding-sub-layer-ref { | typedef forwarding-sub-layer-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:forwarding" | + "/dnet:forwarding" | |||
+ "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a forwarding sub-layer Reference."; | "This is a reference to the forwarding sub-layer."; | |||
} | } | |||
typedef traffic-profile-ref { | typedef traffic-profile-ref { | |||
type leafref { | type leafref { | |||
path "/dnet:detnet" | path "/dnet:detnet" | |||
+ "/dnet:traffic-profile" | + "/dnet:traffic-profile" | |||
+ "/dnet:name"; | + "/dnet:name"; | |||
} | } | |||
description | description | |||
"This is a traffic Profile Reference."; | "This is a reference to a traffic profile."; | |||
} | } | |||
typedef ipsec-spi { | typedef ipsec-spi { | |||
type uint32 { | type uint32 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
description | description | |||
"IPsec Security Parameters Index. A 32 bit value | "IPsec Security Parameters Index. A 32-bit value, | |||
where some values are reserved."; | where some values are reserved."; | |||
reference | reference | |||
"IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
} | } | |||
typedef operation { | typedef operation { | |||
type enumeration { | type enumeration { | |||
enum initiation { | enum initiation { | |||
description | description | |||
"This is an initiating service sub-layer encapsulation."; | "An initiating service sub-layer encapsulation."; | |||
} | } | |||
enum termination { | enum termination { | |||
description | description | |||
"Operation for DetNet service sub-layer decapsulation."; | "Operation for DetNet service sub-layer decapsulation."; | |||
} | } | |||
enum relay { | enum relay { | |||
description | description | |||
"Operation for DetNet service sub-layer swap."; | "Operation for DetNet service sub-layer swap."; | |||
} | } | |||
enum non-detnet { | enum non-detnet { | |||
description | description | |||
"No operation for DetNet service sub-layer."; | "No operation for the DetNet service sub-layer."; | |||
} | } | |||
} | } | |||
description | description | |||
"Operation type identifies the behavior for this service | "The operation type identifies this service sub-layer's | |||
sub-layer. Operations are described as unidirectional | behavior. Operations are described as unidirectional, | |||
but a service sub-layer may combine operation types."; | but a service sub-layer may combine operation types."; | |||
} | } | |||
typedef mpls-fwd-operation { | typedef mpls-fwd-operation { | |||
type enumeration { | type enumeration { | |||
enum impose-and-forward { | enum impose-and-forward { | |||
description | description | |||
"This operation imposes outgoing label(s) and forwards to | "This operation imposes one or more outgoing labels and | |||
next-hop."; | forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum pop-and-forward { | enum pop-and-forward { | |||
description | description | |||
"This operation pops the incoming label and forwards to | "This operation pops the incoming label and forwards to | |||
the next-hop."; | the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum pop-impose-and-forward { | enum pop-impose-and-forward { | |||
description | description | |||
"This operation pops the incoming label, imposes one or | "This operation pops the incoming label, imposes one or | |||
more outgoing label(s) and forwards to the next-hop."; | more outgoing labels, and forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum swap-and-forward { | enum swap-and-forward { | |||
description | description | |||
"This operation swaps an incoming label, with an outgoing | "This operation swaps an incoming label with an outgoing | |||
label and forwards to the next-hop."; | label and forwards to the next hop."; | |||
reference | reference | |||
" A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
} | } | |||
enum forward { | enum forward { | |||
description | description | |||
"This operation forwards to next-hop."; | "This operation forwards to the next hop."; | |||
} | } | |||
enum pop-and-lookup { | enum pop-and-lookup { | |||
description | description | |||
"This operation pops an incoming label and performs a | "This operation pops an incoming label and performs a | |||
lookup."; | lookup."; | |||
reference | ||||
"RFC 8960: A YANG Data Model for MPLS Base"; | ||||
} | } | |||
} | } | |||
description | description | |||
"MPLS operations types. This is an enum modeled after the | "MPLS operation types. This set of enums is modeled after | |||
MPLS enum. The enums are the same as A YANG Data Model | the MPLS enums. With the exception of 'enum forward', | |||
for MPLS Base. RFC 8960."; | these enums are the same as those provided in RFC 8960."; | |||
reference | ||||
"RFC 8960: A YANG Data Model for MPLS Base"; | ||||
} | } | |||
typedef service-protection { | typedef service-protection { | |||
type enumeration { | type enumeration { | |||
enum none { | enum none { | |||
description | description | |||
"No service protection provided."; | "Service protection is not provided."; | |||
} | } | |||
enum replication { | enum replication { | |||
description | description | |||
"A Packet Replication Function (PRF) replicates DetNet | "A Packet Replication Function (PRF) replicates DetNet | |||
flow packets and forwards them to one or more next hops in | flow packets and forwards them to one or more next | |||
the DetNet domain. The number of packet copies sent to | hops in the DetNet domain. The number of packet copies | |||
each next hop is a DetNet flow-specific parameter at the | sent to each next hop is a DetNet-flow-specific | |||
node doing the replication. PRF can be implemented by an | parameter at the node doing the replication. A PRF can | |||
edge node, a relay node, or an end system."; | be implemented by an edge node, a relay node, or an | |||
end system."; | ||||
} | } | |||
enum elimination { | enum elimination { | |||
description | description | |||
"A Packet Elimination Function (PEF) eliminates duplicate | "A Packet Elimination Function (PEF) eliminates | |||
copies of packets to prevent excess packets flooding the | duplicate copies of packets to prevent excess packets | |||
network or duplicate packets being sent out of the DetNet | flooding the network or duplicate packets being | |||
domain. PEF can be implemented by an edge node, a relay | sent out of the DetNet domain. A PEF can be | |||
node, or an end system."; | implemented by an edge node, a relay node, or an | |||
end system."; | ||||
} | } | |||
enum ordering { | enum ordering { | |||
description | description | |||
"A Packet Ordering Function (POF) re-orders packets within | "A Packet Ordering Function (POF) reorders packets within | |||
a DetNet flow that are received out of order. This | a DetNet flow that are received out of order. This | |||
function can be implemented by an edge node, a relay node, | function can be implemented by an edge node, a relay node, | |||
or an end system."; | or an end system."; | |||
} | } | |||
enum elimination-ordering { | enum elimination-ordering { | |||
description | description | |||
"A combination of PEF and POF that can be implemented by | "A combination of a PEF and POF that can be implemented | |||
an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
} | } | |||
enum elimination-replication { | enum elimination-replication { | |||
description | description | |||
"A combination of PEF and PRF that can be implemented by | "A combination of a PEF and PRF that can be implemented | |||
an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
} | } | |||
enum elimination-ordering-replication { | enum elimination-ordering-replication { | |||
description | description | |||
"A combination of PEF, POF and PRF that can be implemented | "A combination of a PEF, POF, and PRF that can be | |||
by an edge node, a relay node, or an end system."; | implemented by an edge node, a relay node, or | |||
an end system."; | ||||
} | } | |||
} | } | |||
description | description | |||
"This typedef describes the service protection enumeration | "This typedef describes the service protection enumeration | |||
values."; | values."; | |||
} | } | |||
typedef sequence-number-generation { | typedef sequence-number-generation { | |||
type enumeration { | type enumeration { | |||
enum copy-from-app-flow { | enum copy-from-app-flow { | |||
description | description | |||
"Copy-from-app-flow is used to extend and use the | "'copy-from-app-flow' is used to extend and use the | |||
sequence number used in App-flow. This function is | sequence number used in an App-flow. This function | |||
required when encapsulating App-flows that have been | is required when encapsulating App-flows that have been | |||
replicated and received through multiple ingress nodes | replicated and received through multiple ingress nodes | |||
into a member flow, and then eliminate it at the relay | into a member flow, and then eliminate it at the relay | |||
node."; | node."; | |||
} | } | |||
enum generate-by-detnet-flow { | enum generate-by-detnet-flow { | |||
description | description | |||
"Generate-by-detnet-flow is used to create a new | "'generate-by-detnet-flow' is used to create a new | |||
sequence number for a DetNet flow at the ingress node. | sequence number for a DetNet flow at the ingress node. | |||
Care must be taken when using this option to ensure | Care must be taken when using this option to ensure | |||
there is only one source for generating sequence | that there is only one source for generating sequence | |||
numbers."; | numbers."; | |||
} | } | |||
} | } | |||
description | description | |||
"This typedef defines how to generate sequence numbers to | "This typedef defines how to generate sequence numbers to | |||
be used in DetNet encapsulation."; | be used in DetNet encapsulation."; | |||
} | } | |||
typedef sequence-number-field { | typedef sequence-number-field { | |||
type enumeration { | type enumeration { | |||
enum zero-sn { | enum zero-sn { | |||
description | description | |||
"No DetNet sequence number field is used."; | "The DetNet sequence number field is not used."; | |||
} | } | |||
enum short-sn { | enum short-sn { | |||
value 16; | value 16; | |||
description | description | |||
"A 16-bit DetNet sequence number field is used."; | "A 16-bit DetNet sequence number field is used."; | |||
} | } | |||
enum long-sn { | enum long-sn { | |||
value 28; | value 28; | |||
description | description | |||
"A 28-bit DetNet sequence number field is used."; | "A 28-bit DetNet sequence number field is used."; | |||
} | } | |||
} | } | |||
description | description | |||
"This enumeration configures the sequence number behavior."; | "These enums configure the behavior of the | |||
sequence number field."; | ||||
} | } | |||
grouping ip-header { | grouping ip-header { | |||
description | description | |||
"This grouping captures the IPv4/IPv6 packet header | "This grouping captures the IPv4/IPv6 packet header | |||
information. It is modeled after existing fields."; | information. It is modeled after existing fields."; | |||
leaf src-ip-address { | leaf src-ip-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The source IP address in the header."; | "The source IP address in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf dest-ip-address { | leaf dest-ip-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The destination IP address in the header."; | "The destination IP address in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf protocol-next-header { | leaf protocol-next-header { | |||
type uint8; | type uint8; | |||
description | description | |||
"In IPv4 refers to the protocol of the | "In IPv4, this field refers to the protocol of the | |||
payload. In IPv6, this field is known as 'next-header', | payload. In IPv6, this field is known as | |||
and identifies the type of header immediately following | 'next-header'; it identifies the type of header | |||
the IPv6 header."; | immediately following the IPv6 header."; | |||
reference | reference | |||
"RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
Specification."; | Specification"; | |||
} | } | |||
leaf dscp { | leaf dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"The traffic class value in the header."; | "The traffic class value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf flow-label { | leaf flow-label { | |||
type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
description | description | |||
"The flow label value of the header. IPv6 only."; | "The flow label value in the header. IPv6 only."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf source-port { | leaf source-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The source port number."; | "The source port number."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf destination-port { | leaf destination-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The destination port number."; | "The destination port number."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
} | } | |||
grouping l2-header { | grouping l2-header { | |||
description | description | |||
"The Ethernet or TSN packet header information."; | "The Ethernet or Time-Sensitive Networking (TSN) packet | |||
header information."; | ||||
leaf source-mac-address { | leaf source-mac-address { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The source MAC address value of the Ethernet header."; | "The source Media Access Control (MAC) address value of | |||
the Ethernet header."; | ||||
} | } | |||
leaf destination-mac-address { | leaf destination-mac-address { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The destination MAC address value of the Ethernet header."; | "The destination MAC address value of the Ethernet | |||
header."; | ||||
} | } | |||
leaf ethertype { | leaf ethertype { | |||
type ethertypes:ethertype; | type ethertypes:ethertype; | |||
description | description | |||
"The Ethernet packet type value of the Ethernet header."; | "The Ethernet packet type value of the Ethernet header."; | |||
} | } | |||
leaf vlan-id { | leaf vlan-id { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
description | description | |||
"The VLAN value of the Ethernet header."; | "The VLAN value of the Ethernet header."; | |||
reference | reference | |||
"IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
Metropolitan Area Networks--Bridges and Bridged | ||||
Networks"; | ||||
} | } | |||
leaf pcp { | leaf pcp { | |||
type dot1q-types:priority-type; | type dot1q-types:priority-type; | |||
description | description | |||
"The priority value of the Ethernet header."; | "The priority value of the Ethernet header."; | |||
reference | reference | |||
"IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
Metropolitan Area Networks--Bridges and Bridged | ||||
Networks"; | ||||
} | } | |||
} | } | |||
grouping destination-ip-port-id { | grouping destination-ip-port-id { | |||
description | description | |||
"The TCP/UDP port destination identification | "The TCP/UDP port destination identification information."; | |||
information."; | ||||
container destination-port { | container destination-port { | |||
uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
description | description | |||
"This grouping captures the destination port fields."; | "This grouping captures the destination port fields."; | |||
} | } | |||
} | } | |||
grouping source-ip-port-id { | grouping source-ip-port-id { | |||
description | description | |||
"The TCP/UDP port source identification | "The TCP/UDP port source identification information."; | |||
information."; | ||||
container source-port { | container source-port { | |||
uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
description | description | |||
"This grouping captures the source port fields."; | "This grouping captures the source port fields."; | |||
} | } | |||
} | } | |||
grouping ip-flow-id { | grouping ip-flow-id { | |||
description | description | |||
"The IPv4/IPv6 packet header identification information."; | "The IPv4/IPv6 packet header identification information."; | |||
leaf src-ip-prefix { | leaf src-ip-prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"The source IP prefix."; | "The source IP prefix."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf dest-ip-prefix { | leaf dest-ip-prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"The destination IP prefix."; | "The destination IP prefix."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf protocol-next-header { | leaf protocol-next-header { | |||
type uint8; | type uint8; | |||
description | description | |||
"Internet Protocol number. Refers to the protocol of the | "Internet Protocol number. Refers to the protocol of the | |||
payload. In IPv6, this field is known as 'next-header', and | payload. In IPv6, this field is known as 'next-header'; | |||
if extension headers are present, the protocol is present in | if extension headers are present, the protocol is present | |||
the 'upper-layer' header."; | in the 'upper-layer' header."; | |||
reference | reference | |||
"RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
Specification."; | Specification"; | |||
} | } | |||
leaf dscp { | leaf dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"The traffic class value in the header."; | "The traffic class value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
leaf flow-label { | leaf flow-label { | |||
type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
description | description | |||
"The flow label value of the header."; | "The flow label value in the header."; | |||
reference | reference | |||
"RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
uses source-ip-port-id; | uses source-ip-port-id; | |||
uses destination-ip-port-id; | uses destination-ip-port-id; | |||
leaf ipsec-spi { | leaf ipsec-spi { | |||
type ipsec-spi; | type ipsec-spi; | |||
description | description | |||
"IPsec Security Parameters Index of the Security | "IPsec Security Parameters Index of the Security | |||
Association."; | Association."; | |||
reference | reference | |||
"IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
} | } | |||
} | } | |||
grouping mpls-flow-id { | grouping mpls-flow-id { | |||
description | description | |||
"The MPLS packet header identification information."; | "The MPLS packet header identification information."; | |||
choice label-space { | choice label-space { | |||
description | description | |||
"Designates the label space being used."; | "Designates the label space being used."; | |||
case context-label-space { | case context-label-space { | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
case platform-label-space { | case platform-label-space { | |||
leaf label { | leaf label { | |||
type rt-types:mpls-label; | type rt-types:mpls-label; | |||
description | description | |||
"This is the case for Platform label space."; | "This is the case for the platform label space."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping data-flow-spec { | grouping data-flow-spec { | |||
description | description | |||
"app-flow identification."; | "App-flow identification."; | |||
choice data-flow-type { | choice data-flow-type { | |||
description | description | |||
"The Application flow type choices."; | "The application flow type choices."; | |||
container tsn-app-flow { | container tsn-app-flow { | |||
uses l2-header; | uses l2-header; | |||
description | description | |||
"The L2 header for application."; | "The L2 header for the application."; | |||
} | } | |||
container ip-app-flow { | container ip-app-flow { | |||
uses ip-flow-id; | uses ip-flow-id; | |||
description | description | |||
"The IP header for application."; | "The IP header for the application."; | |||
} | } | |||
container mpls-app-flow { | container mpls-app-flow { | |||
uses mpls-flow-id; | uses mpls-flow-id; | |||
description | description | |||
"The MPLS header for application."; | "The MPLS header for the application."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping detnet-flow-spec { | grouping detnet-flow-spec { | |||
description | description | |||
"detnet-flow identification."; | "DetNet flow identification."; | |||
choice detnet-flow-type { | choice detnet-flow-type { | |||
description | description | |||
"The DetNet flow type choices."; | "The DetNet flow type choices."; | |||
case ip-detnet-flow { | case ip-detnet-flow { | |||
uses ip-flow-id; | uses ip-flow-id; | |||
} | } | |||
case mpls-detnet-flow { | case mpls-detnet-flow { | |||
uses mpls-flow-id; | uses mpls-flow-id; | |||
} | } | |||
} | } | |||
} | } | |||
grouping app-flows-group { | grouping app-flows-group { | |||
description | description | |||
"Incoming or outgoing app-flow reference group."; | "Reference group for incoming or outgoing App-flows."; | |||
leaf-list flow { | leaf-list flow { | |||
type app-flow-ref; | type app-flow-ref; | |||
description | description | |||
"List of ingress or egress app-flows."; | "List of ingress or egress App-flows."; | |||
} | } | |||
} | } | |||
grouping service-sub-layer-group { | grouping service-sub-layer-group { | |||
description | description | |||
"Incoming or outgoing service sub-layer reference group."; | "Reference group for incoming or outgoing | |||
service sub-layers."; | ||||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
description | description | |||
"List of incoming or outgoing service sub-layers that have | "List of incoming or outgoing service sub-layers that | |||
to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
} | } | |||
} | } | |||
grouping forwarding-sub-layer-group { | grouping forwarding-sub-layer-group { | |||
description | description | |||
"Incoming or outgoing forwarding sub-layer reference group."; | "Reference group for incoming or outgoing | |||
forwarding sub-layers."; | ||||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
description | description | |||
"List of incoming or outgoing forwarding sub-layers that | "List of incoming or outgoing forwarding sub-layers that | |||
have to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
} | } | |||
} | } | |||
grouping detnet-header { | grouping detnet-header { | |||
description | description | |||
"DetNet header info for DetNet encapsulation or swap."; | "DetNet header information for DetNet encapsulation | |||
or swap."; | ||||
choice header-type { | choice header-type { | |||
description | description | |||
"The choice of DetNet header type."; | "The choice of DetNet header type."; | |||
case mpls { | case mpls { | |||
description | description | |||
"MPLS label stack for DetNet MPLS encapsulation or | "MPLS label stack for DetNet MPLS encapsulation or | |||
forwarding."; | forwarding."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
case ip { | case ip { | |||
description | description | |||
"IPv4/IPv6 packet header for DetNet IP encapsulation."; | "IPv4/IPv6 packet header for DetNet IP encapsulation."; | |||
uses ip-header; | uses ip-header; | |||
} | } | |||
} | } | |||
} | } | |||
grouping detnet-app-next-hop-content { | grouping detnet-app-next-hop-content { | |||
description | description | |||
"Generic parameters of DetNet next hops. This follows the | "Generic parameters for DetNet next hops. These follow the | |||
principles for next hops in RFC 8349"; | principles for next hops as discussed in RFC 8349."; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management | ||||
(NMDA Version)"; | ||||
choice next-hop-options { | choice next-hop-options { | |||
description | description | |||
"Options for next hops. It is expected that further cases | "Options for next hops. It is expected that further | |||
will be added through | cases will be added through augments from other modules, | |||
augments from other modules, e.g., for recursive | e.g., for recursive next hops."; | |||
next hops."; | ||||
case simple-next-hop { | case simple-next-hop { | |||
description | description | |||
"This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of | |||
next-hop address and/or outgoing interface."; | the next-hop address and/or outgoing interface."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
the interface."; | the interface."; | |||
} | } | |||
choice flow-type { | choice flow-type { | |||
description | description | |||
"The flow type choices."; | "The flow type choices."; | |||
case ip { | case ip { | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The IP next hop case."; | "The IP next-hop case."; | |||
} | } | |||
} | } | |||
case mpls { | case mpls { | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
description | description | |||
"The MPLS label stack next hop case."; | "The MPLS label stack next-hop case."; | |||
} | } | |||
} | } | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
description | description | |||
"Container for multiple next hops."; | "Container for multiple next hops."; | |||
list next-hop { | list next-hop { | |||
key "hop-index"; | key "hop-index"; | |||
description | description | |||
"An entry in a next-hop list."; | "An entry in a next-hop list."; | |||
skipping to change at page 25, line 4 ¶ | skipping to change at line 1141 ¶ | |||
} | } | |||
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 | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | IEEE802.1Q"; | |||
} | } | |||
leaf max-pkts-per-interval { | leaf max-pkts-per-interval { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of packets that the | "The maximum number of packets that the | |||
source will transmit in one interval."; | source will transmit in one interval."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf max-payload-size { | leaf max-payload-size { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum payload size that the source | "The maximum payload size that the source | |||
will transmit."; | will transmit."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf min-payload-size { | leaf min-payload-size { | |||
type uint32; | type uint32; | |||
description | description | |||
"The minimum payload size that the source | "The minimum payload size that the source | |||
will transmit., IEEE802.1Q"; | will transmit."; | |||
reference | ||||
"RFC 9016: Flow and Service Information Model for | ||||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
leaf min-pkts-per-interval { | leaf min-pkts-per-interval { | |||
type uint32; | type uint32; | |||
description | description | |||
"The minimum number of packets that the | "The minimum number of packets that the | |||
source will transmit in one interval."; | source will transmit in one interval."; | |||
reference | reference | |||
"RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.5 | ||||
IEEE802.1Q"; | ||||
} | } | |||
} | } | |||
leaf-list member-app-flow { | leaf-list member-app-flow { | |||
type app-flow-ref; | type app-flow-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Applications attached to this profile. Each | "A list of applications attached to this profile. Each | |||
application that uses a profile has an automatically | application that uses a profile has an automatically | |||
populated reference."; | populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
leaf-list member-svc-sublayer { | leaf-list member-svc-sublayer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Service Sub-layers attached to this profile. | "A list of service sub-layers attached to this profile. | |||
Each Service Sub-layers that uses a profile has an | Each service sub-layer that uses a profile has an | |||
automatically populated reference."; | automatically populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
leaf-list member-fwd-sublayer { | leaf-list member-fwd-sublayer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"A list of Forwarding Sub-layers attached to this profile. | "A list of forwarding sub-layers attached to this profile. | |||
Each Forwarding Sub-layers that uses a profile has an | Each forwarding sub-layer that uses a profile has an | |||
automatically populated reference."; | automatically populated reference."; | |||
reference | reference | |||
"RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
Section 5"; | Model, Section 5"; | |||
} | } | |||
} | } | |||
container app-flows { | container app-flows { | |||
description | description | |||
"The DetNet app-flow configuration."; | "Configuration information for DetNet App-flows."; | |||
reference | reference | |||
"RFC 9016 Section 4.1"; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 4.1"; | ||||
list app-flow { | list app-flow { | |||
key "name"; | key "name"; | |||
description | description | |||
"A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
reference | reference | |||
"RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
Sections 4.1, 5.1"; | Deterministic Networking (DetNet), Sections 4.1 | |||
and 5.1"; | ||||
} | } | |||
leaf bidir-congruent { | leaf bidir-congruent { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Defines the data path requirement of the App-flow | "Defines the data path requirement of the App-flow - | |||
whether it must share the same data path and physical | whether it must share the same data path and physical | |||
path for both directions through the network, e.g., to | path for both directions through the network, e.g., | |||
provide congruent paths in the two directions."; | to provide congruent paths in the two directions."; | |||
reference | reference | |||
"RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
Section 4.2"; | Deterministic Networking (DetNet), Section 4.2"; | |||
} | } | |||
leaf outgoing-service { | leaf outgoing-service { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"Binding to this applications outgoing | "Binding to this application's outgoing service."; | |||
service."; | ||||
} | } | |||
leaf incoming-service { | leaf incoming-service { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"Binding to this applications incoming service."; | "Binding to this application's incoming service."; | |||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
} | } | |||
container ingress { | container ingress { | |||
description | description | |||
"Ingress DetNet application flows or a compound flow."; | "Ingress DetNet application flows or a | |||
compound flow."; | ||||
leaf app-flow-status { | leaf app-flow-status { | |||
type identityref { | type identityref { | |||
base app-status; | base app-status; | |||
} | } | |||
default none; | default "none"; | |||
config false; | config false; | |||
description | description | |||
"Status of ingress application flow. This is an | "Status of an ingress application flow. This is an | |||
operational status and defaults to none if | operational status and defaults to 'none' if | |||
incomplete."; | incomplete."; | |||
reference | reference | |||
"RFC 9016 Sections | "RFC 9016: Flow and Service Information Model for | |||
4.1, 5.8"; | Deterministic Networking (DetNet), Sections 4.1 | |||
and 5.8"; | ||||
} | } | |||
leaf-list interface { | leaf-list interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface is optional for a service type. When | "An interface is optional for a service type. | |||
matching a flow to a single interface one | When matching a flow to a single interface, | |||
interface is specified. The list allows for | one interface is specified. This list allows | |||
matching a subset of interfaces. When more | the matching of a subset of interfaces. | |||
than one interfaces is specified, these | When more than one interface is specified, these | |||
flows are simply aggregated and the service | flows are simply aggregated, and the service | |||
sub-layer is unaware of the aggregation."; | sub-layer is unaware of the aggregation."; | |||
} | } | |||
uses data-flow-spec; | uses data-flow-spec; | |||
} //End of app-ingress | } //End of app-ingress | |||
container egress { | container egress { | |||
description | description | |||
"Egress DetNet application flows or a compound flow."; | "Egress DetNet application flows or a compound flow."; | |||
uses data-flow-spec; | uses data-flow-spec; | |||
choice application-type { | choice application-type { | |||
description | description | |||
"This is the application type choices."; | "The application type choices."; | |||
container ethernet { | container ethernet { | |||
description | description | |||
"This is Ethernet or TSN traffic that maps to an | "Ethernet or TSN traffic that maps to an | |||
interface."; | interface."; | |||
leaf-list interface { | leaf-list interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"This is one or more Ethernet or TSN interfaces. | "One or more Ethernet or TSN interfaces. | |||
If multiple interfaces are specified, this | If multiple interfaces are specified, this | |||
application flow is replicated to those | application flow is replicated to those | |||
interfaces. DetNet application Flow filtering | interfaces. DetNet application flow filtering | |||
applies to the whole list of interfaces. | applies to the whole list of interfaces. | |||
For fine grain flow filtering, use a single | For fine-grained flow filtering, use a single | |||
interface per application."; | interface per application."; | |||
} | } | |||
} | } | |||
container ip-mpls { | container ip-mpls { | |||
description | description | |||
"This is IP or MPLS DetNet application types."; | "IP or MPLS DetNet application types."; | |||
uses detnet-app-next-hop-content; | uses detnet-app-next-hop-content; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container service { | container service { | |||
description | description | |||
"The DetNet service sub-layer configuration."; | "The DetNet service sub-layer configuration."; | |||
list sub-layer { | list sub-layer { | |||
key "name"; | key "name"; | |||
description | description | |||
"Services are indexed by name."; | "Services are indexed by name."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the DetNet service sub-layer."; | "The name of the DetNet service sub-layer."; | |||
} | } | |||
leaf service-rank { | leaf service-rank { | |||
type uint8; | type uint8; | |||
default 255; | default "255"; | |||
description | description | |||
"The DetNet rank for this service. Defaults to 255 | "The DetNet rank for this service. Defaults to '255' | |||
lowest rank if not specified."; | (lowest rank) if not specified."; | |||
reference | reference | |||
"RFC 9016 Section 5.7."; | "RFC 9016: Flow and Service Information Model for | |||
Deterministic Networking (DetNet), Section 5.7"; | ||||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this service."; | "The traffic profile for this service."; | |||
} | } | |||
container service-protection { | container service-protection { | |||
description | description | |||
"This is the service protection type and sequence number | "The service protection type and sequence number | |||
options."; | options."; | |||
leaf protection { | leaf protection { | |||
type service-protection; | type service-protection; | |||
description | description | |||
"The DetNet service protection type such as | "The DetNet service protection type, such as | |||
Packet Replication Function (PRF), | the Packet Replication Function (PRF), the | |||
Packet Elimination Function (PEF), | Packet Elimination Function (PEF), or the | |||
Packet Replication, Elimination, and Ordering Functions | Packet Replication, Elimination, and Ordering | |||
(PREOF)."; | Functions (PREOF)."; | |||
reference | reference | |||
"RFC 8938 Section 4.3"; | "RFC 8938: Deterministic Networking (DetNet) | |||
Data Plane Framework, Section 4.3"; | ||||
} | } | |||
leaf sequence-number-length { | leaf sequence-number-length { | |||
type sequence-number-field; | type sequence-number-field; | |||
default zero-sn; | default "zero-sn"; | |||
description | description | |||
"Sequence number field length can be one of 0 (none), | "The sequence number field length can be one of | |||
16-bits or 28-bits. The default is none."; | 0 (none), 16 bits, or 28 bits. The default is | |||
0 (none)."; | ||||
} | } | |||
} | } | |||
leaf operation { | leaf operation { | |||
type operation; | type operation; | |||
description | description | |||
"This is the service operation type for this service | "This is the service operation type for this service | |||
sub-layer;"; | sub-layer."; | |||
} | } | |||
container incoming { | container incoming { | |||
description | description | |||
"The DetNet service sub-layer incoming configuration."; | "The DetNet service sub-layer incoming configuration."; | |||
choice incoming { | choice incoming { | |||
description | description | |||
"A service sub-layer may have App flows or other | "A service sub-layer may have App-flows or other | |||
service sub-layers."; | service sub-layers."; | |||
container app-flow { | container app-flow { | |||
description | description | |||
"This service sub-layer is related to the app-flows | "This service sub-layer is related to the | |||
of the upper layer and provide ingress proxy or | App-flows of the upper layer and provides an | |||
ingress aggregation at the ingress node."; | ingress proxy or ingress aggregation at the | |||
ingress node."; | ||||
uses app-flows-group; | uses app-flows-group; | |||
} | } | |||
container service-aggregation { | container service-aggregation { | |||
description | description | |||
"This service sub-layer is related to the service | "This service sub-layer is related to the service | |||
sub-layer of the upper layer and provide | sub-layer of the upper layer and provides | |||
service-to-service aggregation at the ingress node | service-to-service aggregation at the | |||
or relay node."; | ingress node or relay node."; | |||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-aggregation { | container forwarding-aggregation { | |||
description | description | |||
"This service sub-layer is related to the forwarding | "This service sub-layer is related to the | |||
sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
forwarding-to-service aggregation at the ingress | provides forwarding-to-service aggregation at | |||
node or relay node."; | the ingress node or relay node."; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
container service-id { | container service-id { | |||
description | description | |||
"This service sub-layer is related to the service or | "This service sub-layer is related to the service | |||
forwarding sub-layer of the lower layer and provide | or forwarding sub-layer of the lower layer and | |||
DetNet service relay or termination at the relay | provides DetNet service relay or termination at | |||
node or egress node."; | the relay node or egress node."; | |||
uses detnet-flow-spec; | uses detnet-flow-spec; | |||
} | } | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This entry specifies one or more forwarding | "This entry specifies one or more forwarding | |||
sub-layers. No or minimal service sub-layer | sub-layers. No or minimal service sub-layer | |||
encapsulation is allowed."; | encapsulation is allowed."; | |||
leaf-list sub-layer { | leaf-list sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
config false; | config false; | |||
description | description | |||
"List of outgoing forwarding sub-layers."; | "List of outgoing forwarding sub-layers."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container outgoing { | container outgoing { | |||
description | description | |||
"The DetNet service sub-layer outgoing configuration."; | "The DetNet service sub-layer outgoing | |||
configuration."; | ||||
choice outgoing { | choice outgoing { | |||
description | description | |||
"The outgoing type may be a forwarding Sub-layer or a | "The outgoing type may be a forwarding sub-layer, a | |||
service sub-layer or aggregation type."; | service sub-layer, or an aggregation type."; | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
sub-layers of the lower layer for DetNet service | forwarding sub-layers of the lower layer | |||
forwarding or service-to-forwarding aggregation at | for DetNet service forwarding or | |||
the ingress node or relay node. When the operation | service-to-forwarding aggregation at the | |||
type is service-initiation, The service sub-layer | ingress node or relay node. When the | |||
encapsulates the DetNet Control-Word and services | operation type is 'service-initiation', the | |||
label, which are for individual DetNet flow when the | service sub-layer encapsulates the DetNet | |||
incoming type is app-flow and for aggregated DetNet | Control Word (d-CW) and S-Label, which are for | |||
flow when the incoming type is service or | individual DetNet flows when the incoming type | |||
forwarding. The service sub-layer swaps the service | is 'app-flow' and for an aggregated DetNet flow | |||
label when the operation type is service-relay."; | when the incoming type is 'service' or | |||
'forwarding'. The service sub-layer swaps the | ||||
service label when the operation type is | ||||
'service-relay'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
list service-outgoing { | list service-outgoing { | |||
key "index"; | key "index"; | |||
description | description | |||
"List of the outgoing service | "List of the outgoing service | |||
that separately for each node | that separately for each node | |||
where services will be eliminated."; | where services will be eliminated."; | |||
leaf index { | leaf index { | |||
type uint8; | type uint8; | |||
description | description | |||
"This index allows a list of multiple outgoing | "This index allows a list of multiple outgoing | |||
forwarding sub-layers"; | forwarding sub-layers."; | |||
} | } | |||
uses detnet-header; | uses detnet-header; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
sub-layers of the lower layer for service-to-service | service sub-layers of the lower layer for | |||
aggregation at the ingress node or relay node. The | service-to-service aggregation at the | |||
service sub-layer encapsulates the DetNet | ingress node or relay node. The service | |||
Control-Word and S-label when the operation type is | sub-layer encapsulates the d-CW and S-Label when | |||
service-initiation, and swaps the S-label when the | the operation type is 'service-initiation' and | |||
operation type is service-relay."; | swaps the S-Label when the operation type is | |||
'service-relay'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
description | description | |||
"reference point of the service-sub-layer | "Reference point of the service-sub-layer | |||
at which this service will be aggregated."; | at which this service will be aggregated."; | |||
} | } | |||
container service-label { | container service-label { | |||
description | description | |||
"This is the MPLS service sub-layer label. This | "This is the MPLS service sub-layer label. This | |||
is optional and only used when the service | is optional and is only used when the service | |||
sub-layer uses MPLS. It is an MPLS stack since | sub-layer uses MPLS. It is an MPLS stack, | |||
more than a single label may be used."; | since more than a single label may be used."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container app-flow { | container app-flow { | |||
description | description | |||
"This service sub-layer is sending to the app-flow of | "This service sub-layer is sending to the | |||
the upper layer for egress proxy at the egress node, | App-flow of the upper layer for the | |||
and decapsulates the DetNet Control-Word and S-label | egress proxy at the egress node. It then | |||
for individual DetNet service. This outgoing type | decapsulates the d-CW and S-Label for an | |||
only can be chosen when the operation type is | individual DetNet service. This outgoing type | |||
service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses app-flows-group; | uses app-flows-group; | |||
} | } | |||
container service-disaggregation { | container service-disaggregation { | |||
description | description | |||
"This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
sub-layer of the upper layer for service-to-service | service sub-layer of the upper layer for | |||
disaggregation at the relay node or egress node, and | service-to-service disaggregation at the | |||
decapsulates the DetNet Control-Word and A-label for | relay node or egress node. It then | |||
aggregated DetNet service. This outgoing type only | decapsulates the d-CW and A-Label for an | |||
can be chosen when the operation type is | aggregated DetNet service. This outgoing type | |||
service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-disaggregation { | container forwarding-disaggregation { | |||
description | description | |||
"This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
sub-layer of the upper layer for | forwarding sub-layer of the upper layer for | |||
forwarding-to-service disaggregation at the relay | forwarding-to-service disaggregation at the | |||
node or egress node, and decapsulates the DetNet | relay node or egress node. It then | |||
Control-Word and A-label for aggregated DetNet | decapsulates the d-CW and A-Label for an | |||
service. This outgoing type only can be chosen when | aggregated DetNet service. This outgoing type | |||
the operation type is service-termination."; | can only be chosen when the operation type is | |||
'service-termination'."; | ||||
reference | reference | |||
"RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container forwarding { | container forwarding { | |||
description | description | |||
"The DetNet forwarding sub-layer configuration."; | "The DetNet forwarding sub-layer configuration."; | |||
list sub-layer { | list sub-layer { | |||
key "name"; | key "name"; | |||
description | description | |||
"The list is one or more DetNet service/forwarding types."; | "List of one or more DetNet service/forwarding | |||
types."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the DetNet forwarding sub-layer."; | "The name of the DetNet forwarding sub-layer."; | |||
} | } | |||
leaf traffic-profile { | leaf traffic-profile { | |||
type traffic-profile-ref; | type traffic-profile-ref; | |||
description | description | |||
"The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
} | } | |||
leaf operation { | leaf operation { | |||
type mpls-fwd-operation; | type mpls-fwd-operation; | |||
description | description | |||
"This is the forwarding operation types | "The forwarding operation types | |||
impose-and-forward, pop-and-forward, | 'impose-and-forward', 'pop-and-forward', | |||
pop-impose-and-forward, forward, pop-and-lookup."; | 'pop-impose-and-forward', 'forward', and | |||
'pop-and-lookup'."; | ||||
} | } | |||
container incoming { | container incoming { | |||
description | description | |||
"The DetNet forwarding sub-layer incoming | "The DetNet forwarding sub-layer incoming | |||
configuration."; | configuration."; | |||
choice incoming { | choice incoming { | |||
description | description | |||
"Cases of incoming types."; | "Choices of incoming types."; | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is related to the service | "This forwarding sub-layer is related to the | |||
sub-layers of the upper layer and provide DetNet | service sub-layers of the upper layer and | |||
forwarding or service-to-forwarding aggregation at | provides DetNet forwarding or | |||
service-to-forwarding aggregation at | ||||
the ingress node or relay node."; | the ingress node or relay node."; | |||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
} | } | |||
container forwarding-aggregation { | container forwarding-aggregation { | |||
description | description | |||
"This forwarding sub-layer is related to the | "This forwarding sub-layer is related to the | |||
forwarding sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
forwarding-to-forwarding aggregation at the ingress | provides forwarding-to-forwarding aggregation at | |||
node or relay node or transit node."; | the ingress node, relay node, or transit node."; | |||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
container forwarding-id { | container forwarding-id { | |||
description | description | |||
"This forwarding sub-layer is related to all of the | "This forwarding sub-layer is related to all of | |||
lower layer and provide DetNet forwarding swap or | the lower layer and provides DetNet forwarding | |||
termination at the transit node or relay node or | swap or termination at the transit node, | |||
egress node."; | relay node, or egress node."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"This is the interface associated with the | "This is the interface associated with the | |||
forwarding sub-layer."; | forwarding sub-layer."; | |||
} | } | |||
uses detnet-flow-spec; | uses detnet-flow-spec; | |||
} | } | |||
} | } | |||
} | } | |||
container outgoing { | container outgoing { | |||
description | description | |||
"The DetNet forwarding sub-layer outbound | "The DetNet forwarding sub-layer outbound | |||
configuration."; | configuration."; | |||
choice outgoing { | choice outgoing { | |||
description | description | |||
"This is when a service connected directly to an | "A service is connected directly to an | |||
interface with no forwarding sub-layer."; | interface with no forwarding sub-layer."; | |||
container | container interface { | |||
interface { | ||||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
interface for send to next-hop at the ingress | interface, for sending to the next hop at the | |||
node or relay node or transit node."; | ingress node, relay node, or transit node."; | |||
uses detnet-forwarding-next-hop-content; | uses detnet-forwarding-next-hop-content; | |||
} | } | |||
container service-aggregation { | container service-aggregation { | |||
description | description | |||
"This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the service | |||
sub-layers of the lower layer for | sub-layers of the lower layer for | |||
forwarding-to-service aggregation at the ingress | forwarding-to-service aggregation at the ingress | |||
node or relay node."; | node or relay node."; | |||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type service-sub-layer-ref; | type service-sub-layer-ref; | |||
skipping to change at page 39, line 36 ¶ | skipping to change at line 1892 ¶ | |||
"This is the optional forwarding label for service | "This is the optional forwarding label for service | |||
aggregation."; | aggregation."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container forwarding-sub-layer { | container forwarding-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
forwarding sub-layers of the lower layer for | forwarding sub-layers of the lower layer for | |||
forwarding-to-forwarding aggregation at the ingress | forwarding-to-forwarding aggregation at the ingress | |||
node or relay node or transit node."; | node, relay node, or transit node."; | |||
leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
description | description | |||
"This is a reference to the forwarding sub-layer."; | "This is a reference to the forwarding sub-layer."; | |||
} | } | |||
container forwarding-label { | container forwarding-label { | |||
description | description | |||
"This is the forwarding label for forwarding | "This is the forwarding label for forwarding | |||
sub-layer aggregation."; | sub-layer aggregation."; | |||
uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
} | } | |||
} | } | |||
container service-sub-layer { | container service-sub-layer { | |||
description | description | |||
"This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the | |||
sub-layer of the upper layer and decapsulate the | service sub-layer of the upper layer. It then | |||
F-label for DetNet service or service-to-forwarding | decapsulates the F-Label for DetNet service or | |||
disaggregation at the relay node or egress node. | service-to-forwarding disaggregation at the | |||
This outgoing type only can be chosen when the | relay node or egress node. This outgoing type | |||
operation type is pop-and-lookup."; | can only be chosen when the operation type is | |||
'pop-and-lookup'."; | ||||
uses service-sub-layer-group; | uses service-sub-layer-group; | |||
reference | reference | |||
"RFC 8964 Section 4.2.3"; | "RFC 8964: Deterministic Networking (DetNet) | |||
Data Plane: MPLS, Section 4.2.3"; | ||||
} | } | |||
container forwarding-disaggregation { | container forwarding-disaggregation { | |||
description | description | |||
"This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
forwarding sub-layer of the upper layer and | forwarding sub-layer of the upper layer. It | |||
decapsulate the F-label for forwarding-to-forwarding | then decapsulates the F-Label for | |||
disaggregation at the transit node or relay node or | forwarding-to-forwarding disaggregation at the | |||
egress node. This outgoing type only can be chosen | transit node, relay node, or egress node. | |||
when the operation type is pop-and-lookup."; | This outgoing type can only be chosen when the | |||
operation type is 'pop-and-lookup'."; | ||||
uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<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) | |||
edit-config) to any elements of this module can break or incorrectly | to these data nodes without proper protection can have a negative | |||
connect DetNet flows. Since DetNet is a configured Data Plane, any | effect on network operations. These are the subtrees and data nodes | |||
changes that are not coordinated with all devices along the path will | and their sensitivity/vulnerability: | |||
create a denial of service. In addition, arbitrary write operations | ||||
could also enable an attacker to modify a network path to enable | Unauthorized write operations (e.g., edit-config) to any elements of | |||
select traffic to avoid inspection or treatment by security controls, | this module can break or incorrectly connect DetNet flows. Since | |||
or route traffic in a way that it would be subject to inspect/ | DetNet is a configured data plane, any changes that are not | |||
coordinated with all devices along the path will result in a denial | ||||
of service. In addition, arbitrary write operations could enable an | ||||
attacker to modify a network path to enable select traffic to avoid | ||||
inspection or treatment by security controls or to route traffic in | ||||
such a way that the traffic would be subject to inspection/ | ||||
modification by an adversary node. | 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 2121 ¶ | |||
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] | |||
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 2617 ¶ | |||
| +--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: JSON Configuration/Operational | |||
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. | Please consult the PDF or HTML copy for the Case A-1 diagram. | |||
Figure 2: Case A-1 Application Aggregation | Figure 1: Case A-1: Application Aggregation | |||
Please consult the PDF or HTML versions for the Case A-1 Diagram. | Please consult the PDF or HTML copy for the Case A-1 diagram. | |||
Figure 3: Case A-1 Application Aggregation Flow Stack Detail | Figure 2: Case A-1: Application Aggregation Flow Stack Details | |||
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 2856 ¶ | |||
{ | { | |||
"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 Aggregation | |||
B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer | B.2. Example B-1: XML Configuration - 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. | Please consult the PDF or HTML copy for the Case B-1 diagram. | |||
Figure 5: Case B-1 Example Config: Aggregation using a Forwarding | Figure 4: Case B-1: Example Configuration - Aggregation Using a | |||
Sub-layer | Forwarding 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 3071 ¶ | |||
<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 Layer | |||
Aggregation | Aggregation | |||
B.3. Example B-2 JSON Service Aggregation Configuration | B.3. Example B-2: JSON Service Aggregation Configuration | |||
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. | Please consult the PDF or HTML copy for the Case B-2 diagram. | |||
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 aggregated | |||
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 3356 ¶ | |||
"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: JSON Relay Aggregation/Disaggregation Configuration | |||
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. | Please consult the PDF or HTML copy for the Case C-1 diagram. | |||
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 upside 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 downside 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 3766 ¶ | |||
"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 4150 ¶ | |||
} | } | |||
}, | }, | |||
{ | { | |||
"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: JSON Relay Aggregation/Disaggregation Service Sub- | |||
Layer | layer | |||
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. | Please consult the PDF or HTML copy for the Case C-2 diagram. | |||
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 | upside path is aggregated at the single forwarding sub-layer with | |||
20000, and the replicated each service sub-layer for the downside | MPLS label 20000, and each replicated flow for the service sub-layer | |||
path is aggregated at the forwarding sub-layer with MPLS label 20001. | for the downside path is aggregated at the forwarding sub-layer with | |||
Figure 14 contains the operational JSON configuration for the egress | MPLS label 20001. Figure 13 contains the operational JSON | |||
disaggregation node illustrated in Figure 12. | configuration 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 4461 ¶ | |||
"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 4739 ¶ | |||
"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: JSON 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. | Please consult the PDF or HTML copy for the Case C-3 diagram. | |||
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 5083 ¶ | |||
"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 5399 ¶ | |||
} | } | |||
}, | }, | |||
{ | { | |||
"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: JSON 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 | Please consult the PDF or HTML copy for the Case C-4 diagram. | |||
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 5815 ¶ | |||
"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 6187 ¶ | |||
"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: JSON Transit 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 | Please consult the PDF or HTML copy for the Case D-1 diagram. | |||
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 133, line 14 ¶ | skipping to change at line 6368 ¶ | |||
"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 6520 ¶ | |||
"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 editors 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 editors of this document wish to thank and acknowledge the | ||||
following individual, who contributed substantially to the content of | ||||
this document and should be considered a coauthor: | ||||
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. 390 change blocks. | ||||
867 lines changed or deleted | 952 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |