| rfc9633.original | rfc9633.txt | |||
|---|---|---|---|---|
| Network Working Group X. Geng | Internet Engineering Task Force (IETF) X. Geng | |||
| Internet-Draft Huawei Technologies | Request for Comments: 9633 Huawei Technologies | |||
| Intended status: Standards Track Y. Ryoo | Category: Standards Track Y. Ryoo | |||
| Expires: 26 August 2024 ETRI | ISSN: 2070-1721 ETRI | |||
| D. Fedyk | D. Fedyk | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| R. Rahman | R. Rahman | |||
| Equinix | Equinix | |||
| Z. Li | Z. Li | |||
| China Mobile | China Mobile | |||
| 23 February 2024 | October 2024 | |||
| Deterministic Networking (DetNet) YANG Model | Deterministic Networking (DetNet) YANG Data Model | |||
| draft-ietf-detnet-yang-20 | ||||
| Abstract | Abstract | |||
| This document contains the specification for the Deterministic | This document contains the specification for the Deterministic | |||
| Networking YANG Model for configuration and operational data of | Networking (DetNet) YANG data model for configuration and operational | |||
| DetNet Flows. The model allows for provisioning of end-to-end DetNet | data for DetNet flows. The model allows the provisioning of an end- | |||
| service on devices along the path without dependency on any signaling | to-end DetNet service on devices along the path without depending on | |||
| protocol. It also specifies operational status for flows. | any signaling protocol. It also specifies operational status for | |||
| flows. | ||||
| The YANG module defined in this document conforms to the Network | The YANG module defined in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA). | Management Datastore Architecture (NMDA). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 26 August 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9633. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Abbreviations | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Terminology | |||
| 4. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 4 | 4. DetNet YANG Module | |||
| 4.1. DetNet Application Flow YANG Attributes . . . . . . . . . 5 | 4.1. DetNet Application Flow YANG Attributes | |||
| 4.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 5 | 4.2. DetNet Service Sub-layer YANG Attributes | |||
| 4.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 5 | 4.3. DetNet Forwarding Sub-layer YANG Attributes | |||
| 5. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 6 | 5. DetNet Flow Aggregation | |||
| 6. DetNet YANG Structure Considerations . . . . . . . . . . . . 7 | 6. DetNet YANG Structure Considerations | |||
| 7. DetNet Configuration YANG Structures . . . . . . . . . . . . 8 | 7. DetNet Configuration YANG Structures | |||
| 8. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 10 | 8. DetNet Configuration YANG Data Model | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 | 9. IANA Considerations | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | 10. Security Considerations | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 42 | 11. References | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42 | 11.1. Normative References | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 11.2. Informative References | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 42 | Appendix A. DetNet Configuration YANG Tree | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 44 | Appendix B. Examples | |||
| Appendix A. DetNet Configuration YANG Tree . . . . . . . . . . . 45 | B.1. Example A-1: Application Flow Aggregation | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 55 | B.2. Example B-1: Aggregation Using a Forwarding Sub-layer | |||
| B.1. Example A-1 JSON Configuration/Operational . . . . . . . 55 | B.3. Example B-2: Service Aggregation | |||
| B.2. Example B-1 XML Config: Aggregation using a Forwarding | B.4. Example C-1: DetNet Relay Service Sub-layer | |||
| Sub-layer . . . . . . . . . . . . . . . . . . . . . . . . 60 | B.5. Example C-2: DetNet Relay Service Sub-layer Aggregation/ | |||
| B.3. Example B-2 JSON Service Aggregation Configuration . . . 64 | Disaggregation | |||
| B.4. Example C-1 JSON Relay Aggregation/Disaggregation | B.6. Example C-3: DetNet Relay Service Sub-layer Aggregation/ | |||
| Configuration . . . . . . . . . . . . . . . . . . . . . . 70 | Disaggregation | |||
| B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service | B.7. Example C-4: DetNet Relay Service Sub-layer Aggregation/ | |||
| Sub-Layer . . . . . . . . . . . . . . . . . . . . . . . . 87 | Disaggregation | |||
| B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | B.8. Example D-1: Transit Node Forwarding Sub-layer Aggregation/ | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 99 | Disaggregation | |||
| B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | Acknowledgments | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 113 | Contributors | |||
| B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | Authors' Addresses | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 129 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 136 | ||||
| 1. Introduction | 1. Introduction | |||
| DetNet (Deterministic Networking) provides a capability to carry | DetNet (Deterministic Networking) provides the ability to carry | |||
| specified unicast or multicast data flows for real-time applications | specified unicast or multicast data flows for real-time applications | |||
| with extremely low packet loss rates and assured maximum end-to-end | with extremely low packet loss rates and assured maximum end-to-end | |||
| delivery latency. A description of the general background and | delivery latency. A description of the general background and | |||
| concepts of DetNet can be found in [RFC8655]. | concepts of DetNet can be found in [RFC8655]. | |||
| This document defines a YANG model for DetNet based on YANG data | This document defines a YANG data model for DetNet based on YANG data | |||
| types and modeling language defined in [RFC6991] and [RFC7950]. | types and modeling language defined in [RFC6991] and [RFC7950]. | |||
| DetNet service, which is designed for describing the characteristics | ||||
| of services being provided for application flows over a network, and | ||||
| DetNet configuration, which is designed for DetNet flow path | ||||
| establishment, flow status reporting, and DetNet functions | ||||
| configuration in order to achieve end-to-end bounded latency and zero | ||||
| congestion loss, are both included in this document. | ||||
| This Yang model is scoped to the description of the aggregation/ | This document also includes the following: | |||
| * The DetNet service, which is designed to describe the | ||||
| characteristics of services being provided for application flows | ||||
| over a network. | ||||
| * DetNet configuration, which is designed to provide DetNet flow | ||||
| path establishment, flow status reporting, and configuration of | ||||
| DetNet functions in order to achieve end-to-end bounded latency | ||||
| and zero congestion loss. | ||||
| This YANG data model is scoped to the description of the aggregation/ | ||||
| disaggregation and data plane capabilities of the DetNet data planes | disaggregation and data plane capabilities of the DetNet data planes | |||
| defined in the DetNet Architecture [RFC8655] and DetNet Framework | defined in "Deterministic Networking Architecture" [RFC8655] and | |||
| [RFC8938]. DetNet operates at the IP layer and delivers service over | "Deterministic Networking (DetNet) Data Plane Framework" [RFC8938]. | |||
| lower-layer technologies such as MPLS and IEEE 802.1 Time-Sensitive | DetNet operates at the IP layer and delivers service over lower-layer | |||
| Networking (TSN). | technologies such as MPLS and IEEE 802.1 Time-Sensitive Networking | |||
| (TSN). | ||||
| 2. Abbreviations | 2. Abbreviations | |||
| The following abbreviations are used in this document: | The following abbreviations are used in this document: | |||
| PEF Packet Elimination Function | PEF: Packet Elimination Function | |||
| PRF Packet Replication Function | ||||
| PEOF Packet Elimination and Ordering Functions | POF: Packet Ordering Function | |||
| PERF Packet Elimination and Replication Functions | PRF: Packet Replication Function | |||
| PREOF Packet Replication, Elimination and Ordering Functions | PREOF: Packet Replication, Elimination, and Ordering Functions | |||
| MPLS Multiprotocol Label Switching | MPLS: Multiprotocol Label Switching | |||
| 3. Terminology | 3. Terminology | |||
| This document uses the terminology defined in [RFC8655]. The terms | This document uses the terminology defined in [RFC8655]. The terms | |||
| A-label, S-label, and F-label are used in this document as defined in | "A-Label", "S-Label", and "F-Label" are used in this document as | |||
| [RFC8964]. | defined in [RFC8964]. | |||
| 4. DetNet YANG Module | 4. DetNet YANG Module | |||
| The DetNet YANG module includes DetNet App-flow, DetNet Service Sub- | The DetNet YANG module (Section 8) includes DetNet App-flow, DetNet | |||
| layer, and DetNet Forwarding Sub-layer configuration and operational | service sub-layer, and DetNet forwarding sub-layer configuration and | |||
| objects. The corresponding attributes used in different sub-layers | operational objects. The corresponding attributes used in different | |||
| are defined in Section 4.1 , Section 4.2 , Section 4.3 respectively. | sub-layers are defined in Sections 4.1, 4.2, and 4.3, respectively. | |||
| Layers of the objects typically occur in the different data instances | Layers of the objects typically occur in the different data instances | |||
| forming the node types defined in [RFC8655]. Figure 1 illustrates | forming the node types defined in [RFC8655]. Table 1 illustrates the | |||
| the relationship between data instance node types and the included | relationship between data instance node types and the included | |||
| layers. Node types are logical roles per DetNet service: a device | layers. Node types are logical roles per DetNet service: one DetNet | |||
| along one DetNet service can be of one node type, while another | service may use a device of one node type, while another service may | |||
| service may use the same device with a different node type. This | use the same device with a different node type. This model is a | |||
| model is a controller based model because a controller or operator | controller-based model, because a controller or operator configures | |||
| configures all the devices to form a service. | all of the devices to form a service. | |||
| +---------------------------------------------------+ | +============================================================+ | |||
| | Instance | | | Data Instance | | |||
| +-----+-----------------+-----------------+---------------+ | +======================+======================+==============+ | |||
| | |Edge Node | Relay Node | Transit Node | | | Edge Node | Relay Node | Transit Node | | |||
| +-----+-----------------+-----------------+---------------+ | +======================+======================+==============+ | |||
| | L |Application | | | | | App-Flow Data Layer | | | | |||
| | a +-----------------+-----------------+---------------+ | +----------------------+----------------------+--------------+ | |||
| | y |Service Sub-Layer|Service Sub-Layer| | | | Service Sub-layer | Service Sub-layer | | | |||
| | e +-----------------+-----------------+---------------+ | +----------------------+----------------------+--------------+ | |||
| | r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | | Forwarding Sub-layer | Forwarding Sub-layer | Forwarding | | |||
| +-----+-----------------+-----------------+---------------+ | | | | Sub-layer | | |||
| +----------------------+----------------------+--------------+ | ||||
| Figure 1: DetNet Layers and Node Types | Table 1: DetNet Layers and Node Types | |||
| All of the layers have ingress/incoming and egress/outgoing | All of the layers have ingress/incoming and egress/outgoing | |||
| operations, but any instance may be configured as only | operations, but any instance may be configured as unidirectional | |||
| unidirectional. Ingress refers to any DetNet layer where a DetNet | only. "Ingress" refers to any DetNet layer where a DetNet context is | |||
| context is applied. Ingress allows functions such as switching, | applied. Ingress allows functions such as switching, aggregation, | |||
| aggregation and encapsulation. Likewise, egress refers to any DetNet | and encapsulation. "Egress" refers to any DetNet layer where a | |||
| layer where a DetNet context is removed. Egress allows functions | DetNet context is removed. Egress allows functions such as | |||
| such as switching, disaggregation and decapsulation. This means that | switching, disaggregation, and decapsulation. This means that each | |||
| each unidirectional flow identifier configuration is programmed | unidirectional flow identifier configuration is programmed starting | |||
| starting at the ingress and flow status is reported at ingress on | at the ingress and flow status is reported at the ingress on each | |||
| each end. In the MPLS cases once encapsulated, the IP 6-tuple, see | end. In the case of MPLS, once encapsulated, the IP 6-tuple | |||
| [RFC8938], parameters may not be required to be programmed again. In | parameters (see [RFC8938]) may not be required to be programmed | |||
| the IP case, without encapsulation, various IP flow id parameters | again. In the case of IP, without encapsulation, various IP flow | |||
| must be configured along the flow path. | identification parameters must be configured along the flow path. | |||
| In the YANG model the terms source and destination are used as flow | In the YANG data model defined in this document, the terms "source" | |||
| identifiers whereas ingress and egress refer to a DetNet application | and "destination" are used as flow identifiers, whereas "ingress" and | |||
| direction from the application edge. Ingress is to the DetNet | "egress" refer to a DetNet application direction from the application | |||
| application and egress is from the application. The terms incoming | edge. "Ingress" means "to the DetNet application", and "egress" | |||
| and outgoing generally represent the flow direction towards the | means "from the application". The terms "incoming" and "outgoing" | |||
| remote application. Outgoing is viewed as going down the stack from | represent the flow direction towards the remote application as a | |||
| Application to Service sub-layer to Forwarding sub-layer and incoming | unidirectional flow. This means the terms are used at a sub-layer to | |||
| is the reverse. Although, in examples where there is aggregation and | represent "incoming" to the sub-layer function and "outgoing" is | |||
| disaggregation outgoing relates to the aggregating output and | viewed as leaving the sub-layer. For the service sub-layer, | |||
| incoming relates to the disaggregating flows. | "incoming" is typically aggregating applications flows or other | |||
| service sub-layers, etc. For the forwarding sub-layer, "incoming" is | ||||
| typically aggregating service sub-layers. However, this also means | ||||
| for both service and forwarding sub-layers at the egress DetNet node | ||||
| "incoming" also handles external flows "incoming" to the respective | ||||
| sub-layer. For MPLS, this would usually involve the removal of a | ||||
| label. For IP -- where the representative sub-layer is merely an | ||||
| aggregation of an IP prefix or IP tuple -- there may be no incoming/ | ||||
| outgoing definitions, since the arriving packet can be handled | ||||
| directly by a standard next-hop routing decision. In examples | ||||
| (Appendix B) where both aggregation and disaggregation take place, at | ||||
| the egress of the flow "outgoing" relates to the aggregating output | ||||
| and "incoming" relates to the disaggregating flows. | ||||
| At the egress point, forwarding information is determined by the App- | At the egress point, forwarding information is determined by the App- | |||
| flow type with all DetNet-related headers removed. The forwarding | flow type with all DetNet-related headers removed. In the case of | |||
| information can specify an output port, or set a next-hop-address in | IP, the forwarding information can specify an output port or set a | |||
| case of IP, or set an MPLS label in case of MPLS. | next-hop address. In the case of MPLS, it can set an MPLS label. | |||
| 4.1. DetNet Application Flow YANG Attributes | 4.1. DetNet Application Flow YANG Attributes | |||
| DetNet application flow is responsible for mapping between | DetNet application flows are responsible for mapping between | |||
| application flows and DetNet flows at the edge node (egress/ingress | application flows and DetNet flows at the edge node (egress/ingress | |||
| node). The application flows can be either layer 2 or layer 3 flows. | node). The application flows can be either Layer 2 or Layer 3 flows. | |||
| To map a flow at the User Network Interface (UNI), the corresponding | To map a flow at the User-Network Interface (UNI), the corresponding | |||
| attributes are defined in [RFC9016]. | attributes defined in [RFC9016] are used. | |||
| 4.2. DetNet Service Sub-layer YANG Attributes | 4.2. DetNet Service Sub-layer YANG Attributes | |||
| DetNet service functions, e.g., DetNet tunnel initialization/ | DetNet service functions, e.g., DetNet tunnel initialization/ | |||
| termination and service protection, are provided in the DetNet | termination and service protection, are provided in the DetNet | |||
| service sub-layer. To support these functions, the following service | service sub-layer. To support these functions, the following service | |||
| attributes need to be configured: | attributes need to be configured: | |||
| * DetNet flow identification | * DetNet flow identification. | |||
| * Service function indication, indicates which service function will | * Service function type. Indicates which service function will be | |||
| be invoked at a DetNet edge, relay node or end station. (DetNet | invoked at a DetNet edge, relay node, or end station. (DetNet | |||
| tunnel initialization or termination are default functions in the | tunnel initialization and termination are default functions in the | |||
| DetNet service layer, so there is no need for explicit | DetNet service sub-layer, so there is no need to indicate them | |||
| indication). The corresponding arguments for service functions | explicitly.) The corresponding arguments for service functions | |||
| also need to be defined. | also need to be defined. | |||
| 4.3. DetNet Forwarding Sub-layer YANG Attributes | 4.3. DetNet Forwarding Sub-layer YANG Attributes | |||
| As defined in [RFC8655], DetNet forwarding sub-layer optionally | As defined in [RFC8655], the DetNet forwarding sub-layer optionally | |||
| provides congestion protection for DetNet flows over paths provided | provides congestion protection for DetNet flows over paths provided | |||
| by the underlying network. Explicit route is another mechanism that | by the underlying network. Explicit routes provide another mechanism | |||
| is used by DetNet to avoid temporary interruptions caused by the | used by DetNet to avoid temporary interruptions caused by the | |||
| convergence of routing or bridging protocols, and it is also | convergence of routing or bridging protocols. Explicit routes are | |||
| implemented at the DetNet forwarding sub-layer. | also implemented at the DetNet forwarding sub-layer. | |||
| To support congestion protection and explicit route, the following | To support congestion protection and explicit routes, the following | |||
| transport layer related attributes are necessary: | transport-layer-related attributes are necessary: | |||
| * Flow Specification and Traffic Requirements, as described in the | * Flow specification and traffic requirements are as described in | |||
| information model in [RFC9016]. These may be used for resource | the information model provided in [RFC9016]. These may be used | |||
| reservation, flow shaping, filtering and policing by a control | for resource reservation, flow shaping, filtering, and policing by | |||
| plane or other network management and control mechanisms. | a control plane or other network management and control | |||
| mechanisms. | ||||
| * Since this model programs the data plane existing explicit route | * Since this model programs the data plane, existing explicit route | |||
| mechanisms can be reused. If a static MPLS tunnel is used as the | mechanisms can be reused. If a static MPLS tunnel is used as the | |||
| transport tunnel, the configuration needs to be at every transit | transport tunnel, the configuration needs to be at every transit | |||
| node along the path. For an IP-based path, the static | node along the path. For an IP-based path, the static | |||
| configuration is similar to the static MPLS case. This document | configuration is similar to the static MPLS case. This document | |||
| provides data-plane configuration of IP addresses or MPLS labels | provides data plane configuration of IP addresses or MPLS labels, | |||
| but it does not provide control plane mapping or other aspects. | but it does not provide control plane mapping or other techniques. | |||
| 5. DetNet Flow Aggregation | 5. DetNet Flow Aggregation | |||
| DetNet provides the capability of flow aggregation to improve | DetNet provides the ability to perform flow aggregation to improve | |||
| scalability of DetNet data, management and control planes. | the scalability of DetNet data, management, and control planes. | |||
| Aggregated flows can be viewed by some DetNet nodes as individual | Aggregated flows can be viewed by some DetNet nodes as individual | |||
| DetNet flows. When aggregating DetNet flows, the flows should be | DetNet flows. When aggregating DetNet flows, the flows should be | |||
| compatible: if bandwidth reservations are used, the reservation | compatible: if bandwidth reservation is used, the reservation should | |||
| should be a reasonable representation of the individual reservations; | be a reasonable representation of the total aggregate bandwidth; if | |||
| if maximum delay bounds are used, the system should ensure that the | maximum delay bounds are used, the system should ensure that the | |||
| aggregate does not exceed the delay bounds of the individual flows. | total DetNet flow delay does not exceed the maximum delay bound of | |||
| any individual flow. | ||||
| The DetNet YANG model defined in this document supports DetNet flow | The DetNet YANG data model defined in this document supports DetNet | |||
| aggregation with the following functions: | flow aggregation with the following functions: | |||
| * Aggregated flow encapsulation/decapsulation/identification | * Aggregated flow encapsulation/decapsulation/identification. | |||
| * Mapping individual DetNet flows to an aggregated flow | * Mapping individual DetNet flows to an aggregated flow. | |||
| * Changing traffic specification parameters for aggregated flows | * Changing traffic specification parameters for aggregated flows. | |||
| The following cases of DetNet aggregation are supported: | The following DetNet aggregation scenarios are supported: | |||
| * Ingress node aggregates App flows into a service sub-layer of | * The ingress node aggregates App-flows into a service sub-layer of | |||
| DetNet flow | a DetNet flow. | |||
| * In ingress node, the service sub-layers of DetNet flows are | * In the ingress node, the service sub-layers of DetNet flows are | |||
| aggregated into a forwarding sub-layer | aggregated into a forwarding sub-layer. | |||
| * In ingress node, the service sub-layers of DetNet flows are | * In the ingress node, the service sub-layers of DetNet flows are | |||
| aggregated into a service sub-layer of an aggregated DetNet flow | aggregated into a service sub-layer of an aggregated DetNet flow. | |||
| * Relay node aggregates the forwarding sub-layers DetNet flows into | * The relay node aggregates the forwarding sub-layers of DetNet | |||
| a forwarding sub-layer | flows into a forwarding sub-layer. | |||
| * Relay node aggregates the service sub-layers of DetNet flows into | * The relay node aggregates the service sub-layers of DetNet flows | |||
| a forwarding sub-layer | into a forwarding sub-layer. | |||
| * Relay node aggregates the service sub-layers of DetNet flows into | * The relay node aggregates the service sub-layers of DetNet flows | |||
| a service sub-layer of Aggregated DetNet flow | into a service sub-layer of an aggregated DetNet flow. | |||
| * Relay node aggregates the forwarding sub-layers of DetNet flow | * The relay node aggregates the forwarding sub-layers of DetNet | |||
| into a service sub-layer of Aggregated DetNet flow | flows into a service sub-layer of an aggregated DetNet flow. | |||
| * Transit node aggregates the forwarding sub-layers of DetNet flows | * The transit node aggregates the forwarding sub-layers of DetNet | |||
| into a forwarding sub-layer | flows into a forwarding sub-layer. | |||
| Traffic requirements and traffic specification may be tracked for | Traffic requirements and the traffic specification may be tracked for | |||
| individual or aggregate flows but reserving resources and tracking | individual or aggregate flows, but reserving resources and tracking | |||
| the services in the aggregated flow is out of scope. | the services in the aggregated flow are out of scope. | |||
| 6. DetNet YANG Structure Considerations | 6. DetNet YANG Structure Considerations | |||
| The picture shows the general structure of the DetNet YANG Model: | This diagram shows the general structure of the DetNet YANG data | |||
| model: | ||||
| +-----------+ | +-----------+ | |||
| |ietf-detnet| | |ietf-detnet| | |||
| +-----+-----+ | +-----+-----+ | |||
| | | | | |||
| +--------------+----------------+------------------+ | +--------------+----------------+------------------+ | |||
| | | | | | | | | | | |||
| +-----+------+ +-----+------+ +-------+------+ | | +-----+------+ +-----+------+ +-------+------+ | | |||
| | App Flows | |service s-l | |forwarding s-l| | | | App- | | Service | | Forwarding | | | |||
| +-----+------+ +-----+------+ +-------+------+ | | | Flows | | Sub-layer | | Sub-layer | | | |||
| | | | | | +-----+------+ +-----+------+ +-------+------+ | | |||
| +-----+------+ +-----+------+ +-------+------+ | | | | | | | |||
| | Reference | | Reference | | Reference | | | +-----+------+ +-----+------+ +-------+------+ | | |||
| | to Traffic | | to Traffic | | to Traffic | +-------+-------+ | | Reference | | Reference | | Reference | | | |||
| | Profile | | Profile | | Profile | |Traffic Profile| | | to Traffic | | to Traffic | | to Traffic | +-------+-------+ | |||
| +------------+ +------------+ +--------------+ +---------------+ | | Profile | | Profile | | Profile | |Traffic Profile| | |||
| +------------+ +------------+ +--------------+ +---------------+ | ||||
| There are three layer types in the DetNet YANG Model: App-flow data | There are three layer types in the DetNet YANG data model: the App- | |||
| layer, service sub-layer and forwarding sub-layer. Additionally, the | flow data layer, the service sub-layer, and the forwarding sub-layer. | |||
| Traffic parameters are captured in a Traffic profile that can be | Additionally, the traffic parameters are captured in a traffic | |||
| referenced by any of the layers. | profile that can be referenced by any of the layers. | |||
| Below is a summary YANG tree showing the major items. A complete | Below is a summary YANG tree showing the major items. The complete | |||
| YANG tree is in section Appendix A. | YANG tree is provided in Appendix A. | |||
| A traffic profile can be created for an application, a service sub- | A traffic profile can be created for an application, a service sub- | |||
| layer or a forwarding sub-layer. A single profile may be shared by | layer, or a forwarding sub-layer. A single profile may be shared by | |||
| multiple applications/sub-layer. Each profile indicates the members | multiple applications/sub-layers. Each profile indicates the members | |||
| currently using that profile. | currently using that profile. | |||
| Depending on which DetNet layers and functions are required, some or | Depending on which DetNet layers and functions are required, some or | |||
| all of the components may be configured. Examples are shown in | all of the components may be configured. Examples are provided in | |||
| Appendix B. | Appendix B. | |||
| 7. DetNet Configuration YANG Structures | 7. DetNet Configuration YANG Structures | |||
| The following is a partial tree representation of the YANG as defined | The following is a partial tree representation of the DetNet YANG | |||
| in [RFC8340]. This corresponds to the structure layout in the | data model, per the guidelines provided in [RFC8340]. This | |||
| previous section. | corresponds to the layout of the diagram in Section 6. | |||
| module: ietf-detnet | module: ietf-detnet | |||
| +--rw detnet | +--rw detnet | |||
| +--rw traffic-profile* [name] | +--rw traffic-profile* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw traffic-requirements | | +--rw traffic-requirements | |||
| | +--rw traffic-spec | | +--rw traffic-spec | |||
| | +--ro member-app-flow* app-flow-ref | | +--ro member-app-flow* app-flow-ref | |||
| | +--ro member-svc-sublayer* service-sub-layer-ref | | +--ro member-svc-sublayer* service-sub-layer-ref | |||
| | +--ro member-fwd-sublayer* forwarding-sub-layer-ref | | +--ro member-fwd-sublayer* forwarding-sub-layer-ref | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at line 404 ¶ | |||
| +--rw forwarding | +--rw forwarding | |||
| +--rw sub-layer* [name] | +--rw sub-layer* [name] | |||
| +--rw name string | +--rw name string | |||
| +--rw traffic-profile? traffic-profile-ref | +--rw traffic-profile? traffic-profile-ref | |||
| +--rw operation? mpls-fwd-operation | +--rw operation? mpls-fwd-operation | |||
| +--rw incoming | +--rw incoming | |||
| | ... | | ... | |||
| +--rw outgoing | +--rw outgoing | |||
| ... | ... | |||
| 8. DetNet Configuration YANG Model | 8. DetNet Configuration YANG Data Model | |||
| This YANG model imports typedefs from [RFC6991], [RFC8519], | This YANG data model imports typedefs from [RFC6991], [RFC8519], | |||
| [RFC8294], [RFC8343], and [IEEE8021Q]. This YANG model also has the | [RFC8294], [RFC8343], and [IEEE8021Q-2022]. This YANG data model | |||
| following references to RFCs that are not in the document text body | also includes the following RFC references, which are not cited | |||
| [RFC0791], [RFC4303], [RFC8349], [RFC8938], [RFC8960], [RFC8964], and | elsewhere in the body of this document: [RFC0791], [RFC4303], | |||
| [RFC8200]. | [RFC8200], [RFC8349], and [RFC8960]. | |||
| <CODE BEGINS> file "ietf-detnet@2022-02-21.yang" | <CODE BEGINS> file "ietf-detnet@2024-08-15.yang" | |||
| module ietf-detnet { | module ietf-detnet { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-detnet"; | namespace "urn:ietf:params:xml:ns:yang:ietf-detnet"; | |||
| prefix dnet; | prefix dnet; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991 - Common YANG Data Types."; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991 - Common YANG Data Types."; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-ethertypes { | import ietf-ethertypes { | |||
| prefix ethertypes; | prefix ethertypes; | |||
| reference | reference | |||
| "RFC 8519 - YANG Data Model for Network Access Control | "RFC 8519: YANG Data Model for Network Access Control | |||
| Lists (ACLs)."; | Lists (ACLs)"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix rt-types; | prefix rt-types; | |||
| reference | reference | |||
| "RFC 8294 - Common YANG Data Types for the Routing Area."; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| import ietf-packet-fields { | import ietf-packet-fields { | |||
| prefix packet-fields; | prefix packet-fields; | |||
| reference | reference | |||
| "RFC 8519 - YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control | |||
| (ACLs)."; | Lists (ACLs)"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix if; | prefix if; | |||
| reference | reference | |||
| "RFC 8343 - A YANG Data Model for Interface Management."; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
| } | } | |||
| import ieee802-dot1q-types { | import ieee802-dot1q-types { | |||
| prefix dot1q-types; | prefix dot1q-types; | |||
| reference | reference | |||
| "IEEE 802.1Q-2022 - IEEE Standard for Local and Metropolitan | "IEEE 802.1Q-2022: IEEE Standard for Local and Metropolitan | |||
| Area Networks--Bridges and Bridged Networks Clause 48: YANG | Area Networks--Bridges and Bridged Networks, | |||
| Data Models."; | Clause 48 ('YANG Data Models')"; | |||
| } | } | |||
| organization | organization | |||
| "IETF DetNet Working Group"; | "IETF DetNet Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/detnet/> | "WG Web: <https://datatracker.ietf.org/wg/detnet/> | |||
| WG List: <mailto:detnet@ietf.org> | WG List: <mailto:detnet@ietf.org> | |||
| Editor: Xuesong Geng | Author: Xuesong Geng | |||
| <mailto:gengxuesong@huawei.com> | <mailto:gengxuesong@huawei.com> | |||
| Editor: Yeoncheol Ryoo | Author: Yeoncheol Ryoo | |||
| <mailto:dbduscjf@etri.re.kr> | <mailto:dbduscjf@etri.re.kr> | |||
| Editor: Don Fedyk | Author: Don Fedyk | |||
| <mailto:dfedyk@labn.net>; | <mailto:dfedyk@labn.net> | |||
| Editor: Reshad Rahman | Author: Reshad Rahman | |||
| <mailto:reshad@yahoo.com> | <mailto:reshad@yahoo.com> | |||
| Author: Zhenqiang Li | ||||
| <mailto:lizhenqiang@chinamobile.com>"; | ||||
| Editor: Zhenqiang Li | ||||
| <mailto:lizhenqiang@chinamobile.com>"; | ||||
| description | description | |||
| "This YANG module describes the parameters needed | "This YANG module describes the parameters needed | |||
| for DetNet flow configuration and flow status | for DetNet flow configuration and flow status | |||
| reporting. This YANG module conforms to the Network | reporting. This YANG module conforms to the Network | |||
| Management Datastore Architecture (NMDA). | Management Datastore Architecture (NMDA). | |||
| Copyright (c) 2024 IETF Trust and the persons identified as | Copyright (c) 2024 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject | |||
| the license terms contained in, the Revised BSD License set | to the license terms contained in, the Revised BSD License | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9633; see the | |||
| see the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove | ||||
| // this note | ||||
| // replace '2024-02-21' with the module publication date | ||||
| // the format is (year-month-day) | ||||
| revision 2024-02-21 { | revision 2024-08-15 { | |||
| description | description | |||
| "Initial revision"; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model"; | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
| Model"; | ||||
| } | } | |||
| identity app-status { | identity app-status { | |||
| description | description | |||
| "Base identity from which all application-status | "Base identity from which all application status types | |||
| status types are derived."; | are derived."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| identity none { | identity none { | |||
| base app-status; | base app-status; | |||
| description | description | |||
| "This application has no status. This identity is | "This application has no status. This identity is | |||
| expected when the configuration is incomplete."; | expected when the configuration is incomplete."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| identity ready { | identity ready { | |||
| base app-status; | base app-status; | |||
| description | description | |||
| "Application ingress/egress ready."; | "The application is ingress/egress ready."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| identity failed { | identity failed { | |||
| base app-status; | base app-status; | |||
| description | description | |||
| "Application ingres/egress failed."; | "The application is ingress/egress failed."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| identity out-of-service { | identity out-of-service { | |||
| base app-status; | base app-status; | |||
| description | description | |||
| "Application administratively blocked."; | "The application is administratively blocked."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| identity partial-failed { | identity partial-failed { | |||
| base app-status; | base app-status; | |||
| description | description | |||
| "This is an application with one or more Egress ready, and one | "This is an application with one or more egress-ready | |||
| or more Egress failed. The DetNet flow can be used if the | instances and one or more instances where egress failed. | |||
| Ingress is Ready."; | The DetNet flow can be used if the ingress's status is | |||
| 'ready'."; | ||||
| reference | reference | |||
| "RFC 9016 Section 5.8"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.8"; | ||||
| } | } | |||
| typedef app-flow-ref { | typedef app-flow-ref { | |||
| type leafref { | type leafref { | |||
| path "/dnet:detnet" | path "/dnet:detnet" | |||
| + "/dnet:app-flows" | + "/dnet:app-flows" | |||
| + "/dnet:app-flow" | + "/dnet:app-flow" | |||
| + "/dnet:name"; | + "/dnet:name"; | |||
| } | } | |||
| description | description | |||
| "This is an application Reference."; | "This is a reference to an application."; | |||
| } | } | |||
| typedef service-sub-layer-ref { | typedef service-sub-layer-ref { | |||
| type leafref { | type leafref { | |||
| path "/dnet:detnet" | path "/dnet:detnet" | |||
| + "/dnet:service" | + "/dnet:service" | |||
| + "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
| + "/dnet:name"; | + "/dnet:name"; | |||
| } | } | |||
| description | description | |||
| "This is a service sub-layer Reference."; | "This is a reference to the service sub-layer."; | |||
| } | } | |||
| typedef forwarding-sub-layer-ref { | typedef forwarding-sub-layer-ref { | |||
| type leafref { | type leafref { | |||
| path "/dnet:detnet" | path "/dnet:detnet" | |||
| + "/dnet:forwarding" | + "/dnet:forwarding" | |||
| + "/dnet:sub-layer" | + "/dnet:sub-layer" | |||
| + "/dnet:name"; | + "/dnet:name"; | |||
| } | } | |||
| description | description | |||
| "This is a forwarding sub-layer Reference."; | "This is a reference to the forwarding sub-layer."; | |||
| } | } | |||
| typedef traffic-profile-ref { | typedef traffic-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/dnet:detnet" | path "/dnet:detnet" | |||
| + "/dnet:traffic-profile" | + "/dnet:traffic-profile" | |||
| + "/dnet:name"; | + "/dnet:name"; | |||
| } | } | |||
| description | description | |||
| "This is a traffic Profile Reference."; | "This is a reference to a traffic profile."; | |||
| } | } | |||
| typedef ipsec-spi { | typedef ipsec-spi { | |||
| type uint32 { | type uint32 { | |||
| range "1..max"; | range "1..max"; | |||
| } | } | |||
| description | description | |||
| "IPsec Security Parameters Index. A 32 bit value | "IPsec Security Parameters Index. A 32-bit value, | |||
| where some values are reserved."; | where some values are reserved."; | |||
| reference | reference | |||
| "IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
| } | } | |||
| typedef operation { | typedef operation { | |||
| type enumeration { | type enumeration { | |||
| enum initiation { | enum initiation { | |||
| description | description | |||
| "This is an initiating service sub-layer encapsulation."; | "An initiating service sub-layer encapsulation."; | |||
| } | } | |||
| enum termination { | enum termination { | |||
| description | description | |||
| "Operation for DetNet service sub-layer decapsulation."; | "Operation for DetNet service sub-layer decapsulation."; | |||
| } | } | |||
| enum relay { | enum relay { | |||
| description | description | |||
| "Operation for DetNet service sub-layer swap."; | "Operation for DetNet service sub-layer swap."; | |||
| } | } | |||
| enum non-detnet { | enum non-detnet { | |||
| description | description | |||
| "No operation for DetNet service sub-layer."; | "No operation for the DetNet service sub-layer."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Operation type identifies the behavior for this service | "The operation type identifies this service sub-layer's | |||
| sub-layer. Operations are described as unidirectional | behavior. Operations are described as unidirectional, | |||
| but a service sub-layer may combine operation types."; | but a service sub-layer may combine operation types."; | |||
| } | } | |||
| typedef mpls-fwd-operation { | typedef mpls-fwd-operation { | |||
| type enumeration { | type enumeration { | |||
| enum impose-and-forward { | enum impose-and-forward { | |||
| description | description | |||
| "This operation imposes outgoing label(s) and forwards to | "This operation imposes one or more outgoing labels and | |||
| next-hop."; | forwards to the next hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
| } | } | |||
| enum pop-and-forward { | enum pop-and-forward { | |||
| description | description | |||
| "This operation pops the incoming label and forwards to | "This operation pops the incoming label and forwards to | |||
| the next-hop."; | the next hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
| } | } | |||
| enum pop-impose-and-forward { | enum pop-impose-and-forward { | |||
| description | description | |||
| "This operation pops the incoming label, imposes one or | "This operation pops the incoming label, imposes one or | |||
| more outgoing label(s) and forwards to the next-hop."; | more outgoing labels, and forwards to the next hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
| } | } | |||
| enum swap-and-forward { | enum swap-and-forward { | |||
| description | description | |||
| "This operation swaps an incoming label, with an outgoing | "This operation swaps an incoming label with an outgoing | |||
| label and forwards to the next-hop."; | label and forwards to the next hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base RFC 8960."; | "RFC 8960: A YANG Data Model for MPLS Base"; | |||
| } | } | |||
| enum forward { | enum forward { | |||
| description | description | |||
| "This operation forwards to next-hop."; | "This operation forwards to the next hop."; | |||
| } | } | |||
| enum pop-and-lookup { | enum pop-and-lookup { | |||
| description | description | |||
| "This operation pops an incoming label and performs a | "This operation pops an incoming label and performs a | |||
| lookup."; | lookup."; | |||
| reference | ||||
| "RFC 8960: A YANG Data Model for MPLS Base"; | ||||
| } | } | |||
| } | } | |||
| description | description | |||
| "MPLS operations types. This is an enum modeled after the | "MPLS operation types. This set of enums is modeled after | |||
| MPLS enum. The enums are the same as A YANG Data Model | the MPLS enums. With the exception of 'enum forward', | |||
| for MPLS Base. RFC 8960."; | these enums are the same as those provided in RFC 8960."; | |||
| reference | ||||
| "RFC 8960: A YANG Data Model for MPLS Base"; | ||||
| } | } | |||
| typedef service-protection { | typedef service-protection { | |||
| type enumeration { | type enumeration { | |||
| enum none { | enum none { | |||
| description | description | |||
| "No service protection provided."; | "Service protection is not provided."; | |||
| } | } | |||
| enum replication { | enum replication { | |||
| description | description | |||
| "A Packet Replication Function (PRF) replicates DetNet | "A Packet Replication Function (PRF) replicates DetNet | |||
| flow packets and forwards them to one or more next hops in | flow packets and forwards them to one or more next | |||
| the DetNet domain. The number of packet copies sent to | hops in the DetNet domain. The number of packet copies | |||
| each next hop is a DetNet flow-specific parameter at the | sent to each next hop is a DetNet-flow-specific | |||
| node doing the replication. PRF can be implemented by an | parameter at the node doing the replication. A PRF can | |||
| edge node, a relay node, or an end system."; | be implemented by an edge node, a relay node, or an | |||
| end system."; | ||||
| } | } | |||
| enum elimination { | enum elimination { | |||
| description | description | |||
| "A Packet Elimination Function (PEF) eliminates duplicate | "A Packet Elimination Function (PEF) eliminates | |||
| copies of packets to prevent excess packets flooding the | duplicate copies of packets to prevent excess packets | |||
| network or duplicate packets being sent out of the DetNet | flooding the network or duplicate packets being | |||
| domain. PEF can be implemented by an edge node, a relay | sent out of the DetNet domain. A PEF can be | |||
| node, or an end system."; | implemented by an edge node, a relay node, or an | |||
| end system."; | ||||
| } | } | |||
| enum ordering { | enum ordering { | |||
| description | description | |||
| "A Packet Ordering Function (POF) re-orders packets within | "A Packet Ordering Function (POF) reorders packets within | |||
| a DetNet flow that are received out of order. This | a DetNet flow that are received out of order. This | |||
| function can be implemented by an edge node, a relay node, | function can be implemented by an edge node, a relay node, | |||
| or an end system."; | or an end system."; | |||
| } | } | |||
| enum elimination-ordering { | enum elimination-ordering { | |||
| description | description | |||
| "A combination of PEF and POF that can be implemented by | "A combination of a PEF and POF that can be implemented | |||
| an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
| } | } | |||
| enum elimination-replication { | enum elimination-replication { | |||
| description | description | |||
| "A combination of PEF and PRF that can be implemented by | "A combination of a PEF and PRF that can be implemented | |||
| an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
| } | } | |||
| enum elimination-ordering-replication { | enum elimination-ordering-replication { | |||
| description | description | |||
| "A combination of PEF, POF and PRF that can be implemented | "A combination of a PEF, POF, and PRF that can be | |||
| by an edge node, a relay node, or an end system."; | implemented by an edge node, a relay node, or | |||
| an end system."; | ||||
| } | } | |||
| } | } | |||
| description | description | |||
| "This typedef describes the service protection enumeration | "This typedef describes the service protection enumeration | |||
| values."; | values."; | |||
| } | } | |||
| typedef sequence-number-generation { | typedef sequence-number-generation { | |||
| type enumeration { | type enumeration { | |||
| enum copy-from-app-flow { | enum copy-from-app-flow { | |||
| description | description | |||
| "Copy-from-app-flow is used to extend and use the | "'copy-from-app-flow' is used to utilize the sequence | |||
| sequence number used in App-flow. This function is | number present in the App-flow. This function is | |||
| required when encapsulating App-flows that have been | required when encapsulating App-flows that have been | |||
| replicated and received through multiple ingress nodes | replicated and received through multiple ingress nodes | |||
| into a member flow, and then eliminate it at the relay | into a member flow. When a relay node sees the same | |||
| node."; | sequence number on an App-flow, it may be programmed | |||
| } | to eliminate duplicate App-flow packets."; | |||
| } | ||||
| enum generate-by-detnet-flow { | enum generate-by-detnet-flow { | |||
| description | description | |||
| "Generate-by-detnet-flow is used to create a new | "'generate-by-detnet-flow' is used to create a new | |||
| sequence number for a DetNet flow at the ingress node. | sequence number for a DetNet flow at the ingress node. | |||
| Care must be taken when using this option to ensure | Care must be taken when using this option to ensure | |||
| there is only one source for generating sequence | that there is only one source for generating sequence | |||
| numbers."; | numbers."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This typedef defines how to generate sequence numbers to | "This typedef defines how to generate sequence numbers to | |||
| be used in DetNet encapsulation."; | be used in DetNet encapsulation."; | |||
| } | } | |||
| typedef sequence-number-field { | typedef sequence-number-field { | |||
| type enumeration { | type enumeration { | |||
| enum zero-sn { | enum zero-sn { | |||
| description | description | |||
| "No DetNet sequence number field is used."; | "The DetNet sequence number field is not used."; | |||
| } | } | |||
| enum short-sn { | enum short-sn { | |||
| value 16; | value 16; | |||
| description | description | |||
| "A 16-bit DetNet sequence number field is used."; | "A 16-bit DetNet sequence number field is used."; | |||
| } | } | |||
| enum long-sn { | enum long-sn { | |||
| value 28; | value 28; | |||
| description | description | |||
| "A 28-bit DetNet sequence number field is used."; | "A 28-bit DetNet sequence number field is used."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This enumeration configures the sequence number behavior."; | "These enums configure the behavior of the | |||
| sequence number field."; | ||||
| } | } | |||
| grouping ip-header { | grouping ip-header { | |||
| description | description | |||
| "This grouping captures the IPv4/IPv6 packet header | "This grouping captures the IPv4/IPv6 packet header | |||
| information. It is modeled after existing fields."; | information. It is modeled after existing fields."; | |||
| leaf src-ip-address { | leaf src-ip-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "The source IP address in the header."; | "The source IP address in the header."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf dest-ip-address { | leaf dest-ip-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "The destination IP address in the header."; | "The destination IP address in the header."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf protocol-next-header { | leaf protocol-next-header { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "In IPv4 refers to the protocol of the | "In IPv4, this field refers to the protocol of the | |||
| payload. In IPv6, this field is known as 'next-header', | payload. In IPv6, this field is known as | |||
| and identifies the type of header immediately following | 'next-header'; it identifies the type of header | |||
| the IPv6 header."; | immediately following the IPv6 header."; | |||
| reference | reference | |||
| "RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
| Specification."; | Specification"; | |||
| } | } | |||
| leaf dscp { | leaf dscp { | |||
| type inet:dscp; | type inet:dscp; | |||
| description | description | |||
| "The traffic class value in the header."; | "The traffic class value in the header."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf flow-label { | leaf flow-label { | |||
| type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
| description | description | |||
| "The flow label value of the header. IPv6 only."; | "The flow label value in the header. IPv6 only."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf source-port { | leaf source-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The source port number."; | "The source port number."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf destination-port { | leaf destination-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The destination port number."; | "The destination port number."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| } | } | |||
| grouping l2-header { | grouping l2-header { | |||
| description | description | |||
| "The Ethernet or TSN packet header information."; | "The Ethernet or Time-Sensitive Networking (TSN) packet | |||
| header information."; | ||||
| leaf source-mac-address { | leaf source-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The source MAC address value of the Ethernet header."; | "The source Media Access Control (MAC) address value of | |||
| the Ethernet header."; | ||||
| } | } | |||
| leaf destination-mac-address { | leaf destination-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The destination MAC address value of the Ethernet header."; | "The destination MAC address value of the Ethernet | |||
| header."; | ||||
| } | } | |||
| leaf ethertype { | leaf ethertype { | |||
| type ethertypes:ethertype; | type ethertypes:ethertype; | |||
| description | description | |||
| "The Ethernet packet type value of the Ethernet header."; | "The Ethernet packet type value of the Ethernet header."; | |||
| } | } | |||
| leaf vlan-id { | leaf vlan-id { | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "The VLAN value of the Ethernet header."; | "The VLAN value of the Ethernet header."; | |||
| reference | reference | |||
| "IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| leaf pcp { | leaf pcp { | |||
| type dot1q-types:priority-type; | type dot1q-types:priority-type; | |||
| description | description | |||
| "The priority value of the Ethernet header."; | "The priority value of the Ethernet header."; | |||
| reference | reference | |||
| "IEEE 802.1Q-2022."; | "IEEE 802.1Q-2022: IEEE Standard for Local and | |||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| } | } | |||
| grouping destination-ip-port-id { | grouping destination-ip-port-id { | |||
| description | description | |||
| "The TCP/UDP port destination identification | "The TCP/UDP port destination identification information."; | |||
| information."; | ||||
| container destination-port { | container destination-port { | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| description | description | |||
| "This grouping captures the destination port fields."; | "This grouping captures the destination port fields."; | |||
| } | } | |||
| } | } | |||
| grouping source-ip-port-id { | grouping source-ip-port-id { | |||
| description | description | |||
| "The TCP/UDP port source identification | "The TCP/UDP port source identification information."; | |||
| information."; | ||||
| container source-port { | container source-port { | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| description | description | |||
| "This grouping captures the source port fields."; | "This grouping captures the source port fields."; | |||
| } | } | |||
| } | } | |||
| grouping ip-flow-id { | grouping ip-flow-id { | |||
| description | description | |||
| "The IPv4/IPv6 packet header identification information."; | "The IPv4/IPv6 packet header identification information."; | |||
| leaf src-ip-prefix { | leaf src-ip-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "The source IP prefix."; | "The source IP prefix."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf dest-ip-prefix { | leaf dest-ip-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "The destination IP prefix."; | "The destination IP prefix."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf protocol-next-header { | leaf protocol-next-header { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Internet Protocol number. Refers to the protocol of the | "Internet Protocol number. Refers to the protocol of the | |||
| payload. In IPv6, this field is known as 'next-header', and | payload. In IPv6, this field is known as 'next-header'; | |||
| if extension headers are present, the protocol is present in | if extension headers are present, the protocol is present | |||
| the 'upper-layer' header."; | in the 'upper-layer' header."; | |||
| reference | reference | |||
| "RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) | RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
| Specification."; | Specification"; | |||
| } | } | |||
| leaf dscp { | leaf dscp { | |||
| type inet:dscp; | type inet:dscp; | |||
| description | description | |||
| "The traffic class value in the header."; | "The traffic class value in the header."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| leaf flow-label { | leaf flow-label { | |||
| type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
| description | description | |||
| "The flow label value of the header."; | "The flow label value in the header. IPv6 only."; | |||
| reference | reference | |||
| "RFC 6991 Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| uses source-ip-port-id; | uses source-ip-port-id; | |||
| uses destination-ip-port-id; | uses destination-ip-port-id; | |||
| leaf ipsec-spi { | leaf ipsec-spi { | |||
| type ipsec-spi; | type ipsec-spi; | |||
| description | description | |||
| "IPsec Security Parameters Index of the Security | "IPsec Security Parameters Index of the Security | |||
| Association."; | Association."; | |||
| reference | reference | |||
| "IETF RFC 4303 Encapsulating Security Payload (ESP)."; | "RFC 4303: IP Encapsulating Security Payload (ESP)"; | |||
| } | } | |||
| } | } | |||
| grouping mpls-flow-id { | grouping mpls-flow-id { | |||
| description | description | |||
| "The MPLS packet header identification information."; | "The MPLS packet header identification information."; | |||
| choice label-space { | choice label-space { | |||
| description | description | |||
| "Designates the label space being used."; | "Designates the label space being used."; | |||
| case context-label-space { | case context-label-space { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| case platform-label-space { | case platform-label-space { | |||
| leaf label { | leaf label { | |||
| type rt-types:mpls-label; | type rt-types:mpls-label; | |||
| description | description | |||
| "This is the case for Platform label space."; | "This is the case for the platform label space."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping data-flow-spec { | grouping data-flow-spec { | |||
| description | description | |||
| "app-flow identification."; | "App-flow identification."; | |||
| choice data-flow-type { | choice data-flow-type { | |||
| description | description | |||
| "The Application flow type choices."; | "The application flow type choices."; | |||
| container tsn-app-flow { | container tsn-app-flow { | |||
| uses l2-header; | uses l2-header; | |||
| description | description | |||
| "The L2 header for application."; | "The L2 header for the application."; | |||
| } | } | |||
| container ip-app-flow { | container ip-app-flow { | |||
| uses ip-flow-id; | uses ip-flow-id; | |||
| description | description | |||
| "The IP header for application."; | "The IP header for the application."; | |||
| } | } | |||
| container mpls-app-flow { | container mpls-app-flow { | |||
| uses mpls-flow-id; | uses mpls-flow-id; | |||
| description | description | |||
| "The MPLS header for application."; | "The MPLS header for the application."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-flow-spec { | grouping detnet-flow-spec { | |||
| description | description | |||
| "detnet-flow identification."; | "DetNet flow identification."; | |||
| choice detnet-flow-type { | choice detnet-flow-type { | |||
| description | description | |||
| "The DetNet flow type choices."; | "The DetNet flow type choices."; | |||
| case ip-detnet-flow { | case ip-detnet-flow { | |||
| uses ip-flow-id; | uses ip-flow-id; | |||
| } | } | |||
| case mpls-detnet-flow { | case mpls-detnet-flow { | |||
| uses mpls-flow-id; | uses mpls-flow-id; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping app-flows-group { | grouping app-flows-group { | |||
| description | description | |||
| "Incoming or outgoing app-flow reference group."; | "Reference group for incoming or outgoing App-flows."; | |||
| leaf-list flow { | leaf-list flow { | |||
| type app-flow-ref; | type app-flow-ref; | |||
| description | description | |||
| "List of ingress or egress app-flows."; | "List of ingress or egress App-flows."; | |||
| } | } | |||
| } | } | |||
| grouping service-sub-layer-group { | grouping service-sub-layer-group { | |||
| description | description | |||
| "Incoming or outgoing service sub-layer reference group."; | "Reference group for incoming or outgoing | |||
| service sub-layers."; | ||||
| leaf-list sub-layer { | leaf-list sub-layer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| description | description | |||
| "List of incoming or outgoing service sub-layers that have | "List of incoming or outgoing service sub-layers that | |||
| to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
| } | } | |||
| } | } | |||
| grouping forwarding-sub-layer-group { | grouping forwarding-sub-layer-group { | |||
| description | description | |||
| "Incoming or outgoing forwarding sub-layer reference group."; | "Reference group for incoming or outgoing | |||
| forwarding sub-layers."; | ||||
| leaf-list sub-layer { | leaf-list sub-layer { | |||
| type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
| description | description | |||
| "List of incoming or outgoing forwarding sub-layers that | "List of incoming or outgoing forwarding sub-layers that | |||
| have to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
| } | } | |||
| } | } | |||
| grouping detnet-header { | grouping detnet-header { | |||
| description | description | |||
| "DetNet header info for DetNet encapsulation or swap."; | "DetNet header information for DetNet encapsulation | |||
| or swap."; | ||||
| choice header-type { | choice header-type { | |||
| description | description | |||
| "The choice of DetNet header type."; | "The choice of DetNet header type."; | |||
| case mpls { | case mpls { | |||
| description | description | |||
| "MPLS label stack for DetNet MPLS encapsulation or | "MPLS label stack for DetNet MPLS encapsulation or | |||
| forwarding."; | forwarding."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| case ip { | case ip { | |||
| description | description | |||
| "IPv4/IPv6 packet header for DetNet IP encapsulation."; | "IPv4/IPv6 packet header for DetNet IP encapsulation."; | |||
| uses ip-header; | uses ip-header; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-app-next-hop-content { | grouping detnet-app-next-hop-content { | |||
| description | description | |||
| "Generic parameters of DetNet next hops. This follows the | "Generic parameters for DetNet next hops. These follow the | |||
| principles for next hops in RFC 8349"; | principles for next hops as discussed in RFC 8349."; | |||
| reference | ||||
| "RFC 8349: A YANG Data Model for Routing Management | ||||
| (NMDA Version)"; | ||||
| choice next-hop-options { | choice next-hop-options { | |||
| description | description | |||
| "Options for next hops. It is expected that further cases | "Options for next hops. It is expected that further | |||
| will be added through | cases will be added through augments from other modules, | |||
| augments from other modules, e.g., for recursive | e.g., for recursive next hops."; | |||
| next hops."; | ||||
| case simple-next-hop { | case simple-next-hop { | |||
| description | description | |||
| "This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of | |||
| next-hop address and/or outgoing interface."; | the next-hop address and/or outgoing interface."; | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
| the interface."; | the interface."; | |||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | description | |||
| "The flow type choices."; | "The flow type choices."; | |||
| case ip { | case ip { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "The IP next hop case."; | "The IP next-hop case."; | |||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| description | description | |||
| "The MPLS label stack next hop case."; | "The MPLS label stack next-hop case."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case next-hop-list { | case next-hop-list { | |||
| description | description | |||
| "Container for multiple next hops."; | "Container for multiple next hops."; | |||
| list next-hop { | list next-hop { | |||
| key "hop-index"; | key "hop-index"; | |||
| description | description | |||
| "An entry in a next-hop list."; | "An entry in a next-hop list."; | |||
| skipping to change at page 25, line 4 ¶ | skipping to change at line 1147 ¶ | |||
| } | } | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
| the interface."; | the interface."; | |||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | description | |||
| "The flow types supported."; | "The flow types supported."; | |||
| case ip { | case ip { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "This is the IP flow type next hop."; | "This is the IP flow type next hop."; | |||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-forwarding-next-hop-content { | grouping detnet-forwarding-next-hop-content { | |||
| description | description | |||
| "Generic parameters of DetNet next hops. This follows the | "Generic parameters for DetNet next hops. These follow the | |||
| principles for next hops in RFC 8349"; | principles for next hops as discussed in RFC 8349."; | |||
| reference | ||||
| "RFC 8349: A YANG Data Model for Routing Management | ||||
| (NMDA Version)"; | ||||
| choice next-hop-options { | choice next-hop-options { | |||
| description | description | |||
| "Options for next hops. | "Options for next hops. It is expected that further | |||
| It is expected that further cases will be added through | cases will be added through augments from other modules, | |||
| augments from other modules, e.g., for recursive | e.g., for recursive next hops."; | |||
| next hops."; | case simple-next-hop { | |||
| case simple-next-hop { | ||||
| description | description | |||
| "This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of | |||
| next-hop address and/or outgoing interface."; | the next-hop address and/or outgoing interface."; | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
| the interface."; | the interface."; | |||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | description | |||
| "These are the flow type next hop choices."; | "These are the flow type next-hop choices."; | |||
| case ip { | case ip { | |||
| description | description | |||
| "Use IP data plane for forwarding."; | "Use the IP data plane for forwarding."; | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "This is an IP address as a next hop."; | "This is an IP address as a next hop."; | |||
| } | } | |||
| uses ip-header; | uses ip-header; | |||
| } | } | |||
| case mpls { | case mpls { | |||
| description | description | |||
| "Use MPLS data plane for forwarding."; | "Use the MPLS data plane for forwarding."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case next-hop-list { | case next-hop-list { | |||
| description | description | |||
| "Container for multiple next hops."; | "Container for multiple next hops."; | |||
| list next-hop { | list next-hop { | |||
| key "hop-index"; | key "hop-index"; | |||
| description | description | |||
| "An entry in a next-hop list."; | "An entry in a next-hop list."; | |||
| leaf hop-index { | leaf hop-index { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The value of the index for a hop."; | "The value of the index for a next hop."; | |||
| } | } | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "The outgoing interface, when matching all flows to | "The outgoing interface, when matching all flows to | |||
| the interface."; | the interface."; | |||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | description | |||
| "These are the flow type next hop choices."; | "These are the flow type next-hop choices."; | |||
| case ip { | case ip { | |||
| description | description | |||
| "Use IP data plane for forwarding."; | "Use the IP data plane for forwarding."; | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "This is an IP address as a next hop."; | "This is an IP address as a next hop."; | |||
| } | } | |||
| uses ip-header; | uses ip-header; | |||
| } | } | |||
| case mpls { | case mpls { | |||
| description | description | |||
| "Use MPLS data plane for forwarding."; | "Use the MPLS data plane for forwarding."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container detnet { | container detnet { | |||
| description | description | |||
| "The top level DetNet container. This contains | "The top-level DetNet container. This contains | |||
| applications, service sub-layers and forwarding sub-layers | applications, service sub-layers, and forwarding sub-layers | |||
| as well as the traffic profiles."; | as well as the traffic profiles."; | |||
| list traffic-profile { | list traffic-profile { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "A traffic profile."; | "A traffic profile."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the traffic profile which is used as a | "The name of the traffic profile that is used as a | |||
| reference to this profile."; | reference to this profile."; | |||
| } | } | |||
| container traffic-requirements { | container traffic-requirements { | |||
| description | description | |||
| "This defines the attributes of the App-flow | "This defines the attributes of the App-flow | |||
| regarding bandwidth, latency, latency variation, loss, and | regarding bandwidth, latency, latency variation, loss, | |||
| misordering tolerance."; | and misordering tolerance."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.9"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9"; | ||||
| leaf min-bandwidth { | leaf min-bandwidth { | |||
| type uint64; | type uint64; | |||
| units 'octets per second'; | units "octets per second"; | |||
| description | description | |||
| "This is the minimum bandwidth that has to be | "This is the minimum bandwidth that has to be | |||
| guaranteed for the DetNet service. MinBandwidth is | guaranteed for the DetNet service. MinBandwidth is | |||
| specified in octets per second."; | specified in octets per second."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.9.1"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.1"; | ||||
| } | } | |||
| leaf max-latency { | leaf max-latency { | |||
| type uint32; | type uint32; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| "This is the maximum latency from Ingress to | "This is the maximum latency from the ingress to | |||
| Egress(es) for a single packet of the DetNet flow. | one or more egresses for a single packet of the | |||
| MaxLatency is specified as an integer number of | DetNet flow. MaxLatency is specified as an | |||
| nanoseconds. The MAX value is 4,294,967,295 | integer number of nanoseconds. The maximum value | |||
| nanoseconds."; | for this parameter is 4,294,967,295 nanoseconds."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.9.2"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.2"; | ||||
| } | } | |||
| leaf max-latency-variation { | leaf max-latency-variation { | |||
| type uint32; | type uint32; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| "This is the difference between the | "This is the difference between the | |||
| minimum and the maximum end-to-end one-way latency. | minimum and maximum end-to-end one-way latency. | |||
| MaxLatencyVariation is specified as an integer number of | MaxLatencyVariation is specified as an integer | |||
| nanoseconds."; | number of nanoseconds."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.9.3"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.3"; | ||||
| } | } | |||
| leaf max-loss { | leaf max-loss { | |||
| type decimal64 { | type decimal64 { | |||
| fraction-digits 10; | fraction-digits 10; | |||
| range "0 .. 100"; | range "0 .. 100"; | |||
| } | } | |||
| units "percent"; | units "percent"; | |||
| description | description | |||
| "This defines the maximum Packet Loss Rate (PLR) | "This defines the maximum Packet Loss Rate (PLR) | |||
| parameter for the DetNet service between the Ingress and | parameter for the DetNet service between the ingress | |||
| Egress(es) of the DetNet domain. Packet loss rate is | and one or more egresses of the DetNet domain. The | |||
| calculated by the number of transmitted packets minus | PLR is calculated by the number of transmitted | |||
| the number of received packets divided by the number | packets minus the number of received packets divided | |||
| transmitted packets expressed as a percent."; | by the number of transmitted packets, expressed as a | |||
| percentage."; | ||||
| reference | reference | |||
| "RFC 9016 Section 5.9.4"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.4"; | ||||
| } | } | |||
| leaf max-consecutive-loss-tolerance { | leaf max-consecutive-loss-tolerance { | |||
| type uint32; | type uint32; | |||
| units "packets"; | units "packets"; | |||
| description | description | |||
| "Some applications have special loss requirement, such | "Some applications have special loss requirements | |||
| as MaxConsecutiveLossTolerance. The maximum consecutive | and use such parameters as | |||
| loss tolerance parameter describes the maximum number of | MaxConsecutiveLossTolerance. | |||
| consecutive packets whose loss can be tolerated. The | 'max-consecutive-loss-tolerance' describes the | |||
| maximum consecutive loss tolerance can be measured for | maximum number of consecutive packets whose loss | |||
| example based on sequence number."; | can be tolerated. The maximum consecutive loss | |||
| tolerance can be measured, for example, based on | ||||
| sequence number."; | ||||
| reference | reference | |||
| "RFC 9016 Section 5.9.5"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.5"; | ||||
| } | } | |||
| leaf max-misordering { | leaf max-misordering { | |||
| type uint32; | type uint32; | |||
| units "packets"; | units "packets"; | |||
| description | description | |||
| "This describes the tolerable maximum number | "This describes the maximum tolerable number of | |||
| of packets that can be received out of order. The | packets that can be received out of order. The | |||
| maximum allowed misordering can be measured for example | maximum allowed misordering can be measured, for | |||
| based on sequence number. The value zero for the | example, based on sequence number. A value of '0' | |||
| maximum allowed misordering indicates that in order | for the maximum allowed misordering indicates that | |||
| delivery is required, misordering cannot be tolerated."; | in-order delivery is required and misordering cannot | |||
| be tolerated."; | ||||
| reference | reference | |||
| "RFC 9016 Section 5.9.6"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.9.6"; | ||||
| } | } | |||
| } | } | |||
| container traffic-spec { | container traffic-spec { | |||
| description | description | |||
| "Traffic-specification specifies how the Source transmits | "'traffic-spec' specifies how the source transmits | |||
| packets for the flow. This is the promise/request of the | packets for the flow. This is the promise/request of | |||
| Source to the network. The network uses this flow | the source to the network. The network uses this flow | |||
| specification to allocate resources and adjust queue | specification to allocate resources and adjust queue | |||
| parameters in network nodes."; | parameters in network nodes."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.5"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.5"; | ||||
| leaf interval { | leaf interval { | |||
| type uint32; | type uint32; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| "The period of time in which the traffic | "The period of time during which the traffic | |||
| specification should not be exceeded."; | specification should not be exceeded."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.5, | "RFC 9016: Flow and Service Information Model for | |||
| IEEE802.1Q"; | Deterministic Networking (DetNet), Section 5.5 | |||
| IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| leaf max-pkts-per-interval { | leaf max-pkts-per-interval { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of packets that the | "The maximum number of packets that the | |||
| source will transmit in one interval."; | source will transmit in one interval."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.5 | ||||
| IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| leaf max-payload-size { | leaf max-payload-size { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum payload size that the source | "The maximum payload size that the source | |||
| will transmit."; | will transmit."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.5 | ||||
| IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| leaf min-payload-size { | leaf min-payload-size { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The minimum payload size that the source | "The minimum payload size that the source | |||
| will transmit., IEEE802.1Q"; | will transmit."; | |||
| reference | ||||
| "RFC 9016: Flow and Service Information Model for | ||||
| Deterministic Networking (DetNet), Section 5.5 | ||||
| IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| leaf min-pkts-per-interval { | leaf min-pkts-per-interval { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The minimum number of packets that the | "The minimum number of packets that the | |||
| source will transmit in one interval."; | source will transmit in one interval."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.5, IEEE802.1Q"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.5 | ||||
| IEEE 802.1Q-2022: IEEE Standard for Local and | ||||
| Metropolitan Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| } | } | |||
| leaf-list member-app-flow { | leaf-list member-app-flow { | |||
| type app-flow-ref; | type app-flow-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "A list of Applications attached to this profile. Each | "A list of applications attached to this profile. Each | |||
| application that uses a profile has an automatically | application that uses a profile has an automatically | |||
| populated reference."; | populated reference."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
| Section 5"; | Model, Sections 6 and 7"; | |||
| } | } | |||
| leaf-list member-svc-sublayer { | leaf-list member-svc-sublayer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "A list of Service Sub-layers attached to this profile. | "A list of service sub-layers attached to this profile. | |||
| Each Service Sub-layers that uses a profile has an | Each service sub-layer that uses a profile has an | |||
| automatically populated reference."; | automatically populated reference."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
| Section 5"; | Model, Sections 6 and 7"; | |||
| } | } | |||
| leaf-list member-fwd-sublayer { | leaf-list member-fwd-sublayer { | |||
| type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "A list of Forwarding Sub-layers attached to this profile. | "A list of forwarding sub-layers attached to this profile. | |||
| Each Forwarding Sub-layers that uses a profile has an | Each forwarding sub-layer that uses a profile has an | |||
| automatically populated reference."; | automatically populated reference."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC 9633: Deterministic Networking (DetNet) YANG Data | |||
| Section 5"; | Model, Sections 6 and 7"; | |||
| } | } | |||
| } | } | |||
| container app-flows { | container app-flows { | |||
| description | description | |||
| "The DetNet app-flow configuration."; | "Configuration information for DetNet App-flows."; | |||
| reference | reference | |||
| "RFC 9016 Section 4.1"; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 4.1"; | ||||
| list app-flow { | list app-flow { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "A unique (management) identifier of the App-flow."; | "A unique (management) identifier of the App-flow."; | |||
| reference | reference | |||
| "RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
| Sections 4.1, 5.1"; | Deterministic Networking (DetNet), Sections 4.1 | |||
| and 5.1"; | ||||
| } | } | |||
| leaf bidir-congruent { | leaf bidir-congruent { | |||
| type boolean; | type boolean; | |||
| default false; | default "false"; | |||
| description | description | |||
| "Defines the data path requirement of the App-flow | "Defines the data path requirement of the App-flow - | |||
| whether it must share the same data path and physical | whether it must share the same data path and physical | |||
| path for both directions through the network, e.g., to | path for both directions through the network, e.g., | |||
| provide congruent paths in the two directions."; | to provide congruent paths in the two directions."; | |||
| reference | reference | |||
| "RFC 9016 | "RFC 9016: Flow and Service Information Model for | |||
| Section 4.2"; | Deterministic Networking (DetNet), Section 4.2"; | |||
| } | } | |||
| leaf outgoing-service { | leaf outgoing-service { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "Binding to this applications outgoing | "Binding to this application's outgoing service."; | |||
| service."; | ||||
| } | } | |||
| leaf incoming-service { | leaf incoming-service { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "Binding to this applications incoming service."; | "Binding to this application's incoming service."; | |||
| } | } | |||
| leaf traffic-profile { | leaf traffic-profile { | |||
| type traffic-profile-ref; | type traffic-profile-ref; | |||
| description | description | |||
| "The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
| } | } | |||
| container ingress { | container ingress { | |||
| description | description | |||
| "Ingress DetNet application flows or a compound flow."; | "Ingress DetNet application flows or a | |||
| compound flow."; | ||||
| leaf app-flow-status { | leaf app-flow-status { | |||
| type identityref { | type identityref { | |||
| base app-status; | base app-status; | |||
| } | } | |||
| default none; | default "none"; | |||
| config false; | config false; | |||
| description | description | |||
| "Status of ingress application flow. This is an | "Status of an ingress application flow. This is an | |||
| operational status and defaults to none if | operational status and defaults to 'none' if | |||
| incomplete."; | incomplete."; | |||
| reference | reference | |||
| "RFC 9016 Sections | "RFC 9016: Flow and Service Information Model for | |||
| 4.1, 5.8"; | Deterministic Networking (DetNet), Sections 4.1 | |||
| and 5.8"; | ||||
| } | } | |||
| leaf-list interface { | leaf-list interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Interface is optional for a service type. When | "An interface is optional for a service type. | |||
| matching a flow to a single interface one | When matching a flow to a single interface, | |||
| interface is specified. The list allows for | one interface is specified. This list allows | |||
| matching a subset of interfaces. When more | the matching of a subset of interfaces. | |||
| than one interfaces is specified, these | When more than one interface is specified, these | |||
| flows are simply aggregated and the service | flows are simply aggregated, and the service | |||
| sub-layer is unaware of the aggregation."; | sub-layer is unaware of the aggregation."; | |||
| } | } | |||
| uses data-flow-spec; | uses data-flow-spec; | |||
| } //End of app-ingress | } | |||
| container egress { | container egress { | |||
| description | description | |||
| "Egress DetNet application flows or a compound flow."; | "Egress DetNet application flows or a compound flow."; | |||
| uses data-flow-spec; | uses data-flow-spec; | |||
| choice application-type { | choice application-type { | |||
| description | description | |||
| "This is the application type choices."; | "The application type choices."; | |||
| container ethernet { | container ethernet { | |||
| description | description | |||
| "This is Ethernet or TSN traffic that maps to an | "Ethernet or TSN traffic that maps to an | |||
| interface."; | interface."; | |||
| leaf-list interface { | leaf-list interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "This is one or more Ethernet or TSN interfaces. | "One or more Ethernet or TSN interfaces. | |||
| If multiple interfaces are specified, this | If multiple interfaces are specified, this | |||
| application flow is replicated to those | application flow is replicated to those | |||
| interfaces. DetNet application Flow filtering | interfaces. DetNet application flow filtering | |||
| applies to the whole list of interfaces. | applies to the whole list of interfaces. | |||
| For fine grain flow filtering, use a single | For fine-grained flow filtering, use a single | |||
| interface per application."; | interface per application."; | |||
| } | } | |||
| } | } | |||
| container ip-mpls { | container ip-mpls { | |||
| description | description | |||
| "This is IP or MPLS DetNet application types."; | "IP or MPLS DetNet application types."; | |||
| uses detnet-app-next-hop-content; | uses detnet-app-next-hop-content; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container service { | container service { | |||
| description | description | |||
| "The DetNet service sub-layer configuration."; | "The DetNet service sub-layer configuration."; | |||
| list sub-layer { | list sub-layer { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "Services are indexed by name."; | "Services are indexed by name."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the DetNet service sub-layer."; | "The name of the DetNet service sub-layer."; | |||
| } | } | |||
| leaf service-rank { | leaf service-rank { | |||
| type uint8; | type uint8; | |||
| default 255; | default "255"; | |||
| description | description | |||
| "The DetNet rank for this service. Defaults to 255 | "The DetNet rank for this service. Defaults to '255' | |||
| lowest rank if not specified."; | (lowest rank) if not specified."; | |||
| reference | reference | |||
| "RFC 9016 Section 5.7."; | "RFC 9016: Flow and Service Information Model for | |||
| Deterministic Networking (DetNet), Section 5.7"; | ||||
| } | } | |||
| leaf traffic-profile { | leaf traffic-profile { | |||
| type traffic-profile-ref; | type traffic-profile-ref; | |||
| description | description | |||
| "The Traffic Profile for this service."; | "The traffic profile for this service."; | |||
| } | } | |||
| container service-protection { | container service-protection { | |||
| description | description | |||
| "This is the service protection type and sequence number | "The service protection type and sequence number | |||
| options."; | options."; | |||
| leaf protection { | leaf protection { | |||
| type service-protection; | type service-protection; | |||
| description | description | |||
| "The DetNet service protection type such as | "The DetNet service protection type, such as | |||
| Packet Replication Function (PRF), | the Packet Replication Function (PRF), the | |||
| Packet Elimination Function (PEF), | Packet Elimination Function (PEF), or the | |||
| Packet Replication, Elimination, and Ordering Functions | Packet Replication, Elimination, and Ordering | |||
| (PREOF)."; | Functions (PREOF)."; | |||
| reference | reference | |||
| "RFC 8938 Section 4.3"; | "RFC 8938: Deterministic Networking (DetNet) | |||
| Data Plane Framework, Section 4.3"; | ||||
| } | } | |||
| leaf sequence-number-length { | leaf sequence-number-length { | |||
| type sequence-number-field; | type sequence-number-field; | |||
| default zero-sn; | default "zero-sn"; | |||
| description | description | |||
| "Sequence number field length can be one of 0 (none), | "The sequence number field length can be one of | |||
| 16-bits or 28-bits. The default is none."; | 0 (none), 16 bits, or 28 bits. The default is | |||
| 0 (none)."; | ||||
| } | } | |||
| } | } | |||
| leaf operation { | leaf operation { | |||
| type operation; | type operation; | |||
| description | description | |||
| "This is the service operation type for this service | "This is the service operation type for this service | |||
| sub-layer;"; | sub-layer."; | |||
| } | } | |||
| container incoming { | container incoming { | |||
| description | description | |||
| "The DetNet service sub-layer incoming configuration."; | "The DetNet service sub-layer incoming configuration."; | |||
| choice incoming { | choice incoming { | |||
| description | description | |||
| "A service sub-layer may have App flows or other | "A service sub-layer may have App-flows or other | |||
| service sub-layers."; | service sub-layers."; | |||
| container app-flow { | container app-flow { | |||
| description | description | |||
| "This service sub-layer is related to the app-flows | "This service sub-layer is related to the | |||
| of the upper layer and provide ingress proxy or | App-flow of the upper layer and provides an | |||
| ingress aggregation at the ingress node."; | ingress proxy or ingress aggregation at the | |||
| ingress node."; | ||||
| uses app-flows-group; | uses app-flows-group; | |||
| } | } | |||
| container service-aggregation { | container service-aggregation { | |||
| description | description | |||
| "This service sub-layer is related to the service | "This service sub-layer is related to the service | |||
| sub-layer of the upper layer and provide | sub-layer of the upper layer and provides | |||
| service-to-service aggregation at the ingress node | service-to-service aggregation at the | |||
| or relay node."; | ingress node or relay node."; | |||
| uses service-sub-layer-group; | uses service-sub-layer-group; | |||
| } | } | |||
| container forwarding-aggregation { | container forwarding-aggregation { | |||
| description | description | |||
| "This service sub-layer is related to the forwarding | "This service sub-layer is related to the | |||
| sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
| forwarding-to-service aggregation at the ingress | provides forwarding-to-service aggregation at | |||
| node or relay node."; | the ingress node or relay node."; | |||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| container service-id { | container service-id { | |||
| description | description | |||
| "This service sub-layer is related to the service or | "This service sub-layer is related to the service | |||
| forwarding sub-layer of the lower layer and provide | or forwarding sub-layer of the lower layer and | |||
| DetNet service relay or termination at the relay | provides DetNet service relay or termination at | |||
| node or egress node."; | the relay node or egress node."; | |||
| uses detnet-flow-spec; | uses detnet-flow-spec; | |||
| } | } | |||
| container forwarding-sub-layer { | container forwarding-sub-layer { | |||
| description | description | |||
| "This entry specifies one or more forwarding | "This entry specifies one or more forwarding | |||
| sub-layers. No or minimal service sub-layer | sub-layers. No or minimal service sub-layer | |||
| encapsulation is allowed."; | encapsulation is allowed."; | |||
| leaf-list sub-layer { | leaf-list sub-layer { | |||
| type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
| config false; | config false; | |||
| description | description | |||
| "List of outgoing forwarding sub-layers."; | "List of outgoing forwarding sub-layers."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container outgoing { | container outgoing { | |||
| description | description | |||
| "The DetNet service sub-layer outgoing configuration."; | "The DetNet service sub-layer outgoing | |||
| configuration."; | ||||
| choice outgoing { | choice outgoing { | |||
| description | description | |||
| "The outgoing type may be a forwarding Sub-layer or a | "The outgoing type may be a forwarding sub-layer, a | |||
| service sub-layer or aggregation type."; | service sub-layer, or an aggregation type."; | |||
| container forwarding-sub-layer { | container forwarding-sub-layer { | |||
| description | description | |||
| "This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
| sub-layers of the lower layer for DetNet service | forwarding sub-layer of the lower layer | |||
| forwarding or service-to-forwarding aggregation at | for DetNet service forwarding or | |||
| the ingress node or relay node. When the operation | service-to-forwarding aggregation at the | |||
| type is service-initiation, The service sub-layer | ingress node or relay node. When the | |||
| encapsulates the DetNet Control-Word and services | operation type is 'initiation', the | |||
| label, which are for individual DetNet flow when the | service sub-layer encapsulates the DetNet | |||
| incoming type is app-flow and for aggregated DetNet | Control Word (d-CW) and S-Label, which are for | |||
| flow when the incoming type is service or | individual DetNet flows when the incoming type | |||
| forwarding. The service sub-layer swaps the service | is 'app-flow' and for an aggregated DetNet flow | |||
| label when the operation type is service-relay."; | when the incoming type is 'service' or | |||
| 'forwarding'. The service sub-layer swaps the | ||||
| service label when the operation type is | ||||
| 'relay'."; | ||||
| reference | reference | |||
| "RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
| list service-outgoing { | list service-outgoing { | |||
| key "index"; | key "index"; | |||
| description | description | |||
| "List of the outgoing service | "List of outgoing service sub-layers aggregated | |||
| that separately for each node | in the forwarding sub-layer."; | |||
| where services will be eliminated."; | ||||
| leaf index { | leaf index { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "This index allows a list of multiple outgoing | "This index allows a list of multiple outgoing | |||
| forwarding sub-layers"; | forwarding sub-layers."; | |||
| } | } | |||
| uses detnet-header; | uses detnet-header; | |||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| } | } | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
| sub-layers of the lower layer for service-to-service | service sub-layer of the lower layer for | |||
| aggregation at the ingress node or relay node. The | service-to-service aggregation at the | |||
| service sub-layer encapsulates the DetNet | ingress node or relay node. The service | |||
| Control-Word and S-label when the operation type is | sub-layer encapsulates the d-CW and S-Label when | |||
| service-initiation, and swaps the S-label when the | the operation type is 'initiation' and | |||
| operation type is service-relay."; | swaps the S-Label when the operation type is | |||
| 'relay'."; | ||||
| reference | reference | |||
| "RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
| leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| description | description | |||
| "reference point of the service-sub-layer | "Reference point of the service-sub-layer | |||
| at which this service will be aggregated."; | at which this service will be aggregated."; | |||
| } | } | |||
| container service-label { | container service-label { | |||
| description | description | |||
| "This is the MPLS service sub-layer label. This | "This is the MPLS service sub-layer label. This | |||
| is optional and only used when the service | is optional and is only used when the service | |||
| sub-layer uses MPLS. It is an MPLS stack since | sub-layer uses MPLS. It is an MPLS stack, | |||
| more than a single label may be used."; | since more than a single label may be used."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container app-flow { | container app-flow { | |||
| description | description | |||
| "This service sub-layer is sending to the app-flow of | "This service sub-layer is sending to the | |||
| the upper layer for egress proxy at the egress node, | App-flow of the upper layer for the | |||
| and decapsulates the DetNet Control-Word and S-label | egress proxy at the egress node. It then | |||
| for individual DetNet service. This outgoing type | decapsulates the d-CW and S-Label for an | |||
| only can be chosen when the operation type is | individual DetNet service. This outgoing type | |||
| service-termination."; | can only be chosen when the operation type is | |||
| 'termination'."; | ||||
| reference | reference | |||
| "RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Sections 4.2.1 and 4.2.2"; | ||||
| uses app-flows-group; | uses app-flows-group; | |||
| } | } | |||
| container service-disaggregation { | container service-disaggregation { | |||
| description | description | |||
| "This service sub-layer is sending to the service | "This service sub-layer is sending to the | |||
| sub-layer of the upper layer for service-to-service | service sub-layer of the upper layer for | |||
| disaggregation at the relay node or egress node, and | service-to-service disaggregation at the | |||
| decapsulates the DetNet Control-Word and A-label for | relay node or egress node. It then | |||
| aggregated DetNet service. This outgoing type only | decapsulates the d-CW and A-Label for an | |||
| can be chosen when the operation type is | aggregated DetNet service. This outgoing type | |||
| service-termination."; | can only be chosen when the operation type is | |||
| 'termination'."; | ||||
| reference | reference | |||
| "RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Sections 3.1 and 4.4.2"; | ||||
| uses service-sub-layer-group; | uses service-sub-layer-group; | |||
| } | } | |||
| container forwarding-disaggregation { | container forwarding-disaggregation { | |||
| description | description | |||
| "This service sub-layer is sending to the forwarding | "This service sub-layer is sending to the | |||
| sub-layer of the upper layer for | forwarding sub-layer of the upper layer for | |||
| forwarding-to-service disaggregation at the relay | forwarding-to-service disaggregation at the | |||
| node or egress node, and decapsulates the DetNet | relay node or egress node. It then | |||
| Control-Word and A-label for aggregated DetNet | decapsulates the d-CW and A-Label for an | |||
| service. This outgoing type only can be chosen when | aggregated DetNet service. This outgoing type | |||
| the operation type is service-termination."; | can only be chosen when the operation type is | |||
| 'termination'."; | ||||
| reference | reference | |||
| "RFC 8964 Section 4.2.1 and 4.2.2."; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Sections 3.1 and 4.4.2"; | ||||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container forwarding { | container forwarding { | |||
| description | description | |||
| "The DetNet forwarding sub-layer configuration."; | "The DetNet forwarding sub-layer configuration."; | |||
| list sub-layer { | list sub-layer { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "The list is one or more DetNet service/forwarding types."; | "List of one or more DetNet service/forwarding | |||
| types."; | ||||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the DetNet forwarding sub-layer."; | "The name of the DetNet forwarding sub-layer."; | |||
| } | } | |||
| leaf traffic-profile { | leaf traffic-profile { | |||
| type traffic-profile-ref; | type traffic-profile-ref; | |||
| description | description | |||
| "The Traffic Profile for this group."; | "The traffic profile for this group."; | |||
| } | } | |||
| leaf operation { | leaf operation { | |||
| type mpls-fwd-operation; | type mpls-fwd-operation; | |||
| description | description | |||
| "This is the forwarding operation types | "The forwarding operation types | |||
| impose-and-forward, pop-and-forward, | 'impose-and-forward', 'pop-and-forward', | |||
| pop-impose-and-forward, forward, pop-and-lookup."; | 'pop-impose-and-forward', 'forward', and | |||
| 'pop-and-lookup'."; | ||||
| } | } | |||
| container incoming { | container incoming { | |||
| description | description | |||
| "The DetNet forwarding sub-layer incoming | "The DetNet forwarding sub-layer incoming | |||
| configuration."; | configuration."; | |||
| choice incoming { | choice incoming { | |||
| description | description | |||
| "Cases of incoming types."; | "Choices of incoming types."; | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "This forwarding sub-layer is related to the service | "This forwarding sub-layer is related to the | |||
| sub-layers of the upper layer and provide DetNet | service sub-layer of the upper layer and | |||
| forwarding or service-to-forwarding aggregation at | provides DetNet forwarding or | |||
| service-to-forwarding aggregation at | ||||
| the ingress node or relay node."; | the ingress node or relay node."; | |||
| uses service-sub-layer-group; | uses service-sub-layer-group; | |||
| } | } | |||
| container forwarding-aggregation { | container forwarding-aggregation { | |||
| description | description | |||
| "This forwarding sub-layer is related to the | "This forwarding sub-layer is related to the | |||
| forwarding sub-layer of the upper layer and provide | forwarding sub-layer of the upper layer and | |||
| forwarding-to-forwarding aggregation at the ingress | provides forwarding-to-forwarding aggregation at | |||
| node or relay node or transit node."; | the ingress node, relay node, or transit node."; | |||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| container forwarding-id { | container forwarding-id { | |||
| description | description | |||
| "This forwarding sub-layer is related to all of the | "This forwarding sub-layer is related to all of | |||
| lower layer and provide DetNet forwarding swap or | the lower layers and provides DetNet forwarding | |||
| termination at the transit node or relay node or | swap or termination at the transit node, | |||
| egress node."; | relay node, or egress node."; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "This is the interface associated with the | "This is the interface associated with the | |||
| forwarding sub-layer."; | forwarding sub-layer."; | |||
| } | } | |||
| uses detnet-flow-spec; | uses detnet-flow-spec; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container outgoing { | container outgoing { | |||
| description | description | |||
| "The DetNet forwarding sub-layer outbound | "The DetNet forwarding sub-layer outbound | |||
| configuration."; | configuration."; | |||
| choice outgoing { | choice outgoing { | |||
| description | description | |||
| "This is when a service connected directly to an | "A service is connected directly to an | |||
| interface with no forwarding sub-layer."; | interface with no forwarding sub-layer."; | |||
| container | container interface { | |||
| interface { | ||||
| description | description | |||
| "This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
| interface for send to next-hop at the ingress | interface, for sending to the next hop at the | |||
| node or relay node or transit node."; | ingress node, relay node, or transit node."; | |||
| uses detnet-forwarding-next-hop-content; | uses detnet-forwarding-next-hop-content; | |||
| } | } | |||
| container service-aggregation { | container service-aggregation { | |||
| description | description | |||
| "This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the service | |||
| sub-layers of the lower layer for | sub-layers of the lower layer for | |||
| forwarding-to-service aggregation at the ingress | forwarding-to-service aggregation at the ingress | |||
| node or relay node."; | node or relay node."; | |||
| leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| skipping to change at page 39, line 34 ¶ | skipping to change at line 1905 ¶ | |||
| container optional-forwarding-label { | container optional-forwarding-label { | |||
| description | description | |||
| "This is the optional forwarding label for service | "This is the optional forwarding label for service | |||
| aggregation."; | aggregation."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container forwarding-sub-layer { | container forwarding-sub-layer { | |||
| description | description | |||
| "This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
| forwarding sub-layers of the lower layer for | forwarding sub-layer of the lower layer for | |||
| forwarding-to-forwarding aggregation at the ingress | forwarding-to-forwarding aggregation at the ingress | |||
| node or relay node or transit node."; | node, relay node, or transit node."; | |||
| leaf aggregation-sub-layer { | leaf aggregation-sub-layer { | |||
| type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
| description | description | |||
| "This is a reference to the forwarding sub-layer."; | "This is a reference to the forwarding sub-layer."; | |||
| } | } | |||
| container forwarding-label { | container forwarding-label { | |||
| description | description | |||
| "This is the forwarding label for forwarding | "This is the forwarding label for forwarding | |||
| sub-layer aggregation."; | sub-layer aggregation."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "This forwarding sub-layer is sending to the service | "This forwarding sub-layer is sending to the | |||
| sub-layer of the upper layer and decapsulate the | service sub-layer of the upper layer. It then | |||
| F-label for DetNet service or service-to-forwarding | decapsulates the F-Label for DetNet service or | |||
| disaggregation at the relay node or egress node. | service-to-forwarding disaggregation at the | |||
| This outgoing type only can be chosen when the | relay node or egress node. This outgoing type | |||
| operation type is pop-and-lookup."; | can only be chosen when the operation type is | |||
| 'pop-and-lookup'."; | ||||
| uses service-sub-layer-group; | uses service-sub-layer-group; | |||
| reference | reference | |||
| "RFC 8964 Section 4.2.3"; | "RFC 8964: Deterministic Networking (DetNet) | |||
| Data Plane: MPLS, Section 4.2.3"; | ||||
| } | } | |||
| container forwarding-disaggregation { | container forwarding-disaggregation { | |||
| description | description | |||
| "This forwarding sub-layer is sending to the | "This forwarding sub-layer is sending to the | |||
| forwarding sub-layer of the upper layer and | forwarding sub-layer of the upper layer. It | |||
| decapsulate the F-label for forwarding-to-forwarding | then decapsulates the F-Label for | |||
| disaggregation at the transit node or relay node or | forwarding-to-forwarding disaggregation at the | |||
| egress node. This outgoing type only can be chosen | transit node, relay node, or egress node. | |||
| when the operation type is pop-and-lookup."; | This outgoing type can only be chosen when the | |||
| operation type is 'pop-and-lookup'."; | ||||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| This document registers a URI in the "IETF XML Registry" [RFC3688]. | IANA has registered the following URI in the "ns" subregistry within | |||
| Following the format in [RFC3688], the following registration is | the "IETF XML Registry" [RFC3688]: | |||
| requested to be made: | ||||
| ID: yang:ietf-detnet | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-detnet | URI: urn:ietf:params:xml:ns:yang:ietf-detnet | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| This document registers YANG modules in the "YANG Module Names" | IANA has registered the following YANG module in the "YANG Module | |||
| registry [RFC6020]. | Names" subregistry [RFC6020] within the "YANG Parameters" registry: | |||
| Name: ietf-detnet | Name: ietf-detnet | |||
| Maintained by IANA: N | Maintained by IANA: N | |||
| Namespace: urn:ietf:params:xml:ns:yang:ietf-detnet | Namespace: urn:ietf:params:xml:ns:yang:ietf-detnet | |||
| Prefix: dnet | Prefix: dnet | |||
| Reference: This RFC when published. | Reference: RFC 9633 | |||
| 10. Security Considerations | 10. Security Considerations | |||
| Security considerations for DetNet are covered in the DetNet | Security considerations for DetNet are covered in "Deterministic | |||
| Architecture [RFC8655] and DetNet Security Considerations [RFC9055] . | Networking Architecture" [RFC8655] and "Deterministic Networking | |||
| (DetNet) Security Considerations" [RFC9055]. | ||||
| The YANG modules specified in this document define a schema for data | The YANG module specified in this document defines a schema for data | |||
| that is designed to be accessed via network management protocols, | that is designed to be accessed via network management protocols such | |||
| such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| layer is the secure transport layer, and the mandatory-to-implement | is the secure transport layer, and the mandatory-to-implement secure | |||
| secure transport is Secure Shell (SSH) [RFC6242]. The lowest | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| RESTCONF layer is HTTPS, and the mandatory-to-implement secure | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| transport is TLS [RFC8446]. | [RFC8446]. | |||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| There are a number of data nodes defined in the module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
| default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
| in some network environments. Unauthorized write operations (e.g., | in some network environments. Write operations (e.g., edit-config) | |||
| to these data nodes without proper protection can have a negative | ||||
| effect on network operations. Unauthorized write operations (e.g., | ||||
| edit-config) to any elements of this module can break or incorrectly | edit-config) to any elements of this module can break or incorrectly | |||
| connect DetNet flows. Since DetNet is a configured Data Plane, any | connect DetNet flows. Since DetNet is a configured data plane, any | |||
| changes that are not coordinated with all devices along the path will | changes that are not coordinated with all devices along the path will | |||
| create a denial of service. In addition, arbitrary write operations | result in a denial of service. In addition, arbitrary write | |||
| could also enable an attacker to modify a network path to enable | operations could enable an attacker to modify a network path to | |||
| select traffic to avoid inspection or treatment by security controls, | enable select traffic to avoid inspection or treatment by security | |||
| or route traffic in a way that it would be subject to inspect/ | controls or to route traffic in such a way that the traffic would be | |||
| modification by an adversary node. | subject to inspection/modification by an adversary node. | |||
| Similarly, the data nodes in these YANG modules may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
| node and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
| /detnet/app-flows: This controls the application details so it could | /detnet/app-flows: This controls the application details, so it | |||
| be considered sensitive. | could be considered sensitive. | |||
| /detnet/traffic-profile/member-app-flow: This links traffic profiles | /detnet/traffic-profile/member-app-flow: This links traffic profiles | |||
| to applications, service sub-layers and/or and forwarding sub-layers | to applications, service sub-layers, and/or forwarding sub-layers, | |||
| so this also could be considered more sensitive. | so this could also be considered more sensitive. | |||
| /detnet/service/sub-layer/incoming/app-flow: This links applications | /detnet/service/sub-layer/incoming/app-flow: This links applications | |||
| to services. | to services. | |||
| /detnet/service/sub-layer/outgoing/app-flow: This links applications | /detnet/service/sub-layer/outgoing/app-flow: This links applications | |||
| to services. | to services. | |||
| The above nodes can reveal identifiable characteristics of the | The above nodes can reveal identifiable characteristics of the | |||
| application flows. | application flows. | |||
| /detnet/service/sub-layer: This defines the service and forwarding | /detnet/service/sub-layer: This defines the service and forwarding | |||
| operations. | operations. | |||
| /detnet/fowarding/sub-layer: This defines the forwarding operations. | ||||
| The above nodes can reveal some aspects of the network topology of | ||||
| there is unauthorized access to this configuration. | ||||
| 11. Contributors | ||||
| The editors of this document wish to thank and acknowledge the | ||||
| following people who contributed substantially to the content of this | ||||
| document and should be considered coauthors: | ||||
| Mach(Guoyi) Chen | ||||
| Huawei Technologies | ||||
| Email: mach.chen@huawei.com | ||||
| 12. Acknowledgments | /detnet/forwarding/sub-layer: This defines the forwarding | |||
| operations. | ||||
| The editors of this document would like to thank Lou Berger, Tom | The above nodes can reveal some aspects of the network topology in | |||
| Petch Xufeng Lui, Julien Meuric, John Scudder` and Florian Kauer for | the case of unauthorized access to this configuration. | |||
| their detailed comments. | ||||
| 13. References | 11. References | |||
| 13.1. Normative References | 11.1. Normative References | |||
| [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
| [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | |||
| RFC 4303, DOI 10.17487/RFC4303, December 2005, | RFC 4303, DOI 10.17487/RFC4303, December 2005, | |||
| <https://www.rfc-editor.org/info/rfc4303>. | <https://www.rfc-editor.org/info/rfc4303>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8040>. | ||||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| "Common YANG Data Types for the Routing Area", RFC 8294, | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
| DOI 10.17487/RFC8294, December 2017, | DOI 10.17487/RFC8294, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc8294>. | <https://www.rfc-editor.org/info/rfc8294>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Access Control Model", STD 91, RFC 8341, | ||||
| DOI 10.17487/RFC8341, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8341>. | ||||
| [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8343>. | <https://www.rfc-editor.org/info/rfc8343>. | |||
| [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
| Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
| DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| skipping to change at page 44, line 21 ¶ | skipping to change at line 2133 ¶ | |||
| S., and J. Korhonen, "Deterministic Networking (DetNet) | S., and J. Korhonen, "Deterministic Networking (DetNet) | |||
| Data Plane: MPLS", RFC 8964, DOI 10.17487/RFC8964, January | Data Plane: MPLS", RFC 8964, DOI 10.17487/RFC8964, January | |||
| 2021, <https://www.rfc-editor.org/info/rfc8964>. | 2021, <https://www.rfc-editor.org/info/rfc8964>. | |||
| [RFC9016] Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D. | [RFC9016] Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D. | |||
| Fedyk, "Flow and Service Information Model for | Fedyk, "Flow and Service Information Model for | |||
| Deterministic Networking (DetNet)", RFC 9016, | Deterministic Networking (DetNet)", RFC 9016, | |||
| DOI 10.17487/RFC9016, March 2021, | DOI 10.17487/RFC9016, March 2021, | |||
| <https://www.rfc-editor.org/info/rfc9016>. | <https://www.rfc-editor.org/info/rfc9016>. | |||
| 13.2. Informative References | 11.2. Informative References | |||
| [IEEE8021Q] | [IEEE8021Q-2022] | |||
| IEEE, "IEEE Standard for Local and Metropolitan Area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| Networks--Bridges and Bridged Networks", | Networks--Bridges and Bridged Networks", | |||
| DOI 10.1109/IEEESTD.2022.10004498, IEEE 802.1Q-2022, July | DOI 10.1109/IEEESTD.2022.10004498, IEEE Std 802.1Q-2022, | |||
| 2022, <https://ieeexplore.ieee.org/document/8403927>. | December 2022, | |||
| <https://ieeexplore.ieee.org/document/10004498>. | ||||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
| and A. Bierman, Ed., "Network Configuration Protocol | Interchange Format", STD 90, RFC 8259, | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | DOI 10.17487/RFC8259, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc8259>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8040>. | ||||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Access Control Model", STD 91, RFC 8341, | ||||
| DOI 10.17487/RFC8341, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8341>. | ||||
| [RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker, | [RFC9055] Grossman, E., Ed., Mizrahi, T., and A. Hacker, | |||
| "Deterministic Networking (DetNet) Security | "Deterministic Networking (DetNet) Security | |||
| Considerations", RFC 9055, DOI 10.17487/RFC9055, June | Considerations", RFC 9055, DOI 10.17487/RFC9055, June | |||
| 2021, <https://www.rfc-editor.org/info/rfc9055>. | 2021, <https://www.rfc-editor.org/info/rfc9055>. | |||
| Appendix A. DetNet Configuration YANG Tree | Appendix A. DetNet Configuration YANG Tree | |||
| This is the full YANG tree as described in [RFC8340]. | This is the full YANG tree per the guidelines provided in [RFC8340]. | |||
| module: ietf-detnet | module: ietf-detnet | |||
| +--rw detnet | +--rw detnet | |||
| +--rw traffic-profile* [name] | +--rw traffic-profile* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw traffic-requirements | | +--rw traffic-requirements | |||
| | | +--rw min-bandwidth? uint64 | | | +--rw min-bandwidth? uint64 | |||
| | | +--rw max-latency? uint32 | | | +--rw max-latency? uint32 | |||
| | | +--rw max-latency-variation? uint32 | | | +--rw max-latency-variation? uint32 | |||
| | | +--rw max-loss? decimal64 | | | +--rw max-loss? decimal64 | |||
| skipping to change at page 55, line 7 ¶ | skipping to change at line 2629 ¶ | |||
| | +--rw traffic-class? uint8 | | +--rw traffic-class? uint8 | |||
| +--:(service-sub-layer) | +--:(service-sub-layer) | |||
| | +--rw service-sub-layer | | +--rw service-sub-layer | |||
| | +--rw sub-layer* service-sub-layer-ref | | +--rw sub-layer* service-sub-layer-ref | |||
| +--:(forwarding-disaggregation) | +--:(forwarding-disaggregation) | |||
| +--rw forwarding-disaggregation | +--rw forwarding-disaggregation | |||
| +--rw sub-layer* forwarding-sub-layer-ref | +--rw sub-layer* forwarding-sub-layer-ref | |||
| Appendix B. Examples | Appendix B. Examples | |||
| The following examples are provided. These examples are tested with | This section provides several examples. These examples were tested | |||
| Yanglint and use operational output to exercise both config true and | with the "yanglint" program and use operational output to exercise | |||
| config false objects. Note that IPv4 and IPv6 addresses are | both "config true" and "config false" objects. Note that IPv4 and | |||
| supported but for clarity in the examples and diagrams IPv4 has been | IPv6 addresses are supported, but for clarity, IPv4 is used, with the | |||
| used in most examples. The IP types are imported from [RFC6991] and | exception of Example A-1 (Appendix B.1). The IP types are imported | |||
| these support both IPv4 and IPv6. | from [RFC6991]; these types support both IPv4 and IPv6. | |||
| The following conventions are used in the diagrams. | The following conventions are used in the diagrams. | |||
| * Replication and Elimination points are shown as an R in and E in | * In the diagrams found in the PDF and HTML copies of this document, | |||
| circles respectively. | replication and elimination points are shown as "R" and "E" in | |||
| circles, respectively. | ||||
| * Packet Headers including DetNet aggregation label or A-label, | * Packet headers, including a DetNet aggregation label (A-Label), | |||
| Service label or S-label and Forwarding label or F-label are | service label (S-Label), and forwarding label (F-Label), are | |||
| illustrated at each hop as defined in [RFC8964]. | illustrated at each hop as defined in [RFC8964]. | |||
| * Aggregation/Disaggregation nodes are indicated by dashed line | * Aggregation/disaggregation nodes are indicated by dashed-line | |||
| boxes. | boxes. | |||
| * Since the model augments IETF interfaces, minimal interface YANG | * Since the model augments IETF interfaces, minimal interface YANG | |||
| data is provided to validate the interface data as well. This | data is provided to validate the interface data as well. This | |||
| shows up as a named value such as "eth0" etc. that is referenced | shows up as a named value, such as "eth0", that is referenced by | |||
| by the configuration. | the configuration. | |||
| The following are examples of aggregation and disaggregation at | Below are examples of aggregation and disaggregation at various | |||
| various points in DetNet. Figures are provided in the PDF and HTML | points in DetNet. Where indicated, figures are provided in the PDF | |||
| version of this document. | and HTML copies of this document. | |||
| B.1. Example A-1 JSON Configuration/Operational | B.1. Example A-1: Application Flow Aggregation | |||
| This illustrates that multiple App flows with the same source, the | This example illustrates multiple App-flows with the same source, | |||
| same destination, and the same traffic specification are aggregated | destination, and traffic specification aggregated into a single | |||
| in a single DetNet flow service sub-layer. Ingress node 1 aggregates | DetNet flow service sub-layer. Ingress node 1 aggregates App-flows 0 | |||
| App flows 0 and 1 into a service sub-layer of DetNet flow 1. Two | and 1 into a service sub-layer of DetNet flow 1. Two ways to | |||
| ways of illustrating this follow, then the JSON operational data | illustrate this are provided in Figures 1 and 2; the JSON operational | |||
| model corresponding to the diagrams follows. This example uses IPv6 | data model [RFC8259] corresponding to the diagrams is then shown in | |||
| address format. | Figure 3. The address format used in this example is IPv6. | |||
| Please consult the PDF or HTML versions for the Case A-1 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 2: Case A-1 Application Aggregation | Figure 1: Case A-1: Application Flow Aggregation | |||
| Please consult the PDF or HTML versions for the Case A-1 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 3: Case A-1 Application Aggregation Flow Stack Detail | Figure 2: Case A-1: Stack Details for Application Flow Aggregation | |||
| Figure 4 contains the operational JSON configuration for the ingress | Figure 3 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 2 and Figure 3. App-0 and | aggregation node illustrated in Figures 1 and 2. "app-0" and "app-1" | |||
| app-1 are aggregated into Service Sub-layer ssl-1. | are aggregated into service sub-layer ssl-1. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 20000000, | "max-latency-variation": 20000000, | |||
| skipping to change at page 60, line 4 ¶ | skipping to change at line 2870 ¶ | |||
| { | { | |||
| "name": "eth2", | "name": "eth2", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 4: Example A-1 DetNet configuration Application Aggregation | Figure 3: Example A-1: DetNet Configuration Application Flow | |||
| Aggregation | ||||
| B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer | B.2. Example B-1: Aggregation Using a Forwarding Sub-layer | |||
| Figure 5 illustrates the DetNet service sub-layer flows 1 and 2 are | As illustrated in Figure 4, DetNet service sub-layer flows 1 and 2 | |||
| aggregated into a single forwarding sub-layer. For the same | are aggregated into a single forwarding sub-layer. For the same | |||
| destination multiple DetNet flows use a single forwarding path and | destination, multiple DetNet flows use a single forwarding path, and | |||
| service protection is performed by the corresponding service sub- | service protection is performed by the corresponding service sub- | |||
| layer of each flow. A diagram illustrating this case is shown and | layer of each flow. The corresponding XML operational data for node | |||
| then the corresponding XML operational data for node Ingress 1 | "Ingress 1" follows. | |||
| follows. | ||||
| Please consult the PDF or HTML versions for the Case B-1 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 5: Case B-1 Example Config: Aggregation using a Forwarding | Figure 4: Case B-1: Aggregation Using a Forwarding Sub-layer | |||
| Sub-layer | ||||
| Figure 6 contains the operational XML configuration for the ingress | Figure 5 contains the operational XML configuration for the ingress | |||
| aggregation node illustrated in Figure 5. In this example app-0 and | aggregation node illustrated in Figure 4. In this example, "app-0" | |||
| app-1 are in separate service sub-layers with MPLS labels and the | and "app-1" are in separate service sub-layers with MPLS labels, and | |||
| aggregation happens at the forwarding sub-layer afl-1 using MPLS | the aggregation happens at forwarding sub-layer afl-1, using MPLS | |||
| labels. | labels. | |||
| <interfaces | <interfaces | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
| xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
| <interface> | <interface> | |||
| <name>eth0</name> | <name>eth0</name> | |||
| <type>ia:ethernetCsmacd</type> | <type>ia:ethernetCsmacd</type> | |||
| <oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
| <statistics> | <statistics> | |||
| skipping to change at page 64, line 27 ¶ | skipping to change at line 3085 ¶ | |||
| <id>0</id> | <id>0</id> | |||
| <label>10000</label> | <label>10000</label> | |||
| </entry> | </entry> | |||
| </mpls-label-stack> | </mpls-label-stack> | |||
| </interface> | </interface> | |||
| </outgoing> | </outgoing> | |||
| </sub-layer> | </sub-layer> | |||
| </forwarding> | </forwarding> | |||
| </detnet> | </detnet> | |||
| Figure 6: Example B-1 DetNet configuration Forwarding Layer | Figure 5: Example B-1: DetNet Configuration Forwarding Sub-layer | |||
| Aggregation | Aggregation | |||
| B.3. Example B-2 JSON Service Aggregation Configuration | B.3. Example B-2: Service Aggregation | |||
| Figure 7 illustrates DetNet service sub-layer flows 1 and 2 are | As illustrated in Figure 6, DetNet service sub-layer flows 1 and 2 | |||
| aggregated into a service sub-layer of an aggregated flow. Multiple | are aggregated into a service sub-layer of an aggregated flow. | |||
| DetNet flows with the same requirements for the same destination are | Multiple DetNet flows with the same requirements for the same | |||
| aggregated into a single aggregated DetNet flow, and service | destination are aggregated into a single aggregated DetNet flow, and | |||
| protection and resource allocation are performed by an aggregated | service protection and resource allocation are performed by an | |||
| DetNet flow service sub-layer and forwarding sub-layer. A diagram | aggregated DetNet flow service sub-layer and forwarding sub-layer. | |||
| illustrating this case is shown and then the corresponding JSON | The corresponding JSON operational data for node "Ingress 1" follows. | |||
| operational data for node Ingress 1 follows. | ||||
| Please consult the PDF or HTML versions for the Case B-2 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 7: Case B-2 Example Service Aggregation | Figure 6: Case B-2: Example Service Aggregation | |||
| Figure 8 contains the operational JSON configuration for the ingress | Figure 7 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 7. In this example, service | aggregation node illustrated in Figure 6. In this example, service | |||
| sub-layer ssl-1 for DetNet flow DN1 and ssl-2 for flow DN2 aggregate | sub-layer ssl-1 for DetNet flow DN-1 and ssl-2 for DetNet flow DN-2 | |||
| at service sub-layer Detet flow asl-1. In this example an | aggregate at service sub-layer DetNet flow asl-1. In this example, | |||
| aggregation service sub-layer asl-1 is created to aggregated ssl-1 | an aggregation service sub-layer, asl-1, is created to aggregate | |||
| and ssl2 and that label is encapsulated in a separate forwarding sub- | ssl-1 and ssl2, and that label is encapsulated in a separate | |||
| layer afl-1 with MPLS labels. | forwarding sub-layer, afl-1, with MPLS labels. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "1", | "name": "1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 20000000, | "max-latency-variation": 20000000, | |||
| skipping to change at page 70, line 24 ¶ | skipping to change at line 3371 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 8: Example B-2 DetNet Service Aggregation | Figure 7: Example B-2: DetNet Service Aggregation | |||
| B.4. Example C-1 JSON Relay Aggregation/Disaggregation Configuration | B.4. Example C-1: DetNet Relay Service Sub-layer | |||
| Figure 9 illustrates the relay node's forwarding sub-layer flows 1 | Figure 8 illustrates the DetNet relay node's forwarding sub-layer | |||
| and 2 aggregated into a single forwarding sub-layer. Service | flows 1 and 2 aggregated into a single forwarding sub-layer. Service | |||
| protection and resource allocation are performed by the corresponding | protection and resource allocation are performed by the corresponding | |||
| service sub-layer and forwarding sub-layer of each flow. A diagram | service sub-layer and forwarding sub-layer of each flow. Figure 8 | |||
| illustrating both aggregation and disaggregation is shown and then | illustrates both aggregation and disaggregation, and the | |||
| the corresponding JSON operational data follows. | corresponding JSON operational data follows. | |||
| Please consult the PDF or HTML versions for the Case C-1 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 9: Case C-1 Example Service Aggregation/Disaggregation | Figure 8: Case C-1: Example Service Aggregation/Disaggregation | |||
| Figure 10 contains the operational JSON configuration for the ingress | Figure 9 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 9. In this example, a relay | aggregation node illustrated in Figure 8. In this example, a relay | |||
| performing aggregation at the forwarding sub-layer is illustrated. | performing aggregation at the forwarding sub-layer is illustrated. | |||
| Two DetNet flows DN1 and DN2 are replicated at each service sub- | Two DetNet flows -- DN-1 and DN-2 -- are replicated at each service | |||
| layer. The two forwarding sub-layers for the upside path are | sub-layer. The two forwarding sub-layers for the upper path are | |||
| aggregated at the forwarding sub-layer with label 20000 and the two | aggregated at the forwarding sub-layer with label 20000, and the two | |||
| forwarding sub-layers for the downside path are aggregated at the | forwarding sub-layers for the lower path are aggregated at the | |||
| forwarding sub-layer with label 20001. Figure 11 contains the | forwarding sub-layer with label 20001. Figure 10 contains the | |||
| operational JSON configuration for the egress disaggregation node | operational JSON configuration for the egress disaggregation node | |||
| illustrated in Figure 9. | illustrated in Figure 8. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 79, line 4 ¶ | skipping to change at line 3782 ¶ | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth3", | "name": "eth3", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 10: Example C-1 DetNet Relay Service Aggregation | Figure 9: Example C-1: DetNet Relay Service Aggregation | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 87, line 4 ¶ | skipping to change at line 4166 ¶ | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth3", | "name": "eth3", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 11: Example C-1 DetNet Relay Service Disaggregation | Figure 10: Example C-1: DetNet Relay Service Disaggregation | |||
| B.5. Example C-2 JSON Relay Aggregation/Disaggregation Service Sub- | B.5. Example C-2: DetNet Relay Service Sub-layer Aggregation/ | |||
| Layer | Disaggregation | |||
| Figure 12 illustrates the DetNet relay node service sub-layer flows 1 | Figure 11 illustrates the DetNet relay node's service sub-layer flows | |||
| and 2 aggregated into a single forwarding sub-layer. Service | 1 and 2 aggregated into a single forwarding sub-layer. Service | |||
| protection is performed by the corresponding service sub-layer of | protection is performed by the corresponding service sub-layer of | |||
| each flow and resource allocation is performed by an aggregated | each flow, and resource allocation is performed by an aggregated | |||
| forwarding sub-layer for all aggregated flows. A diagram | forwarding sub-layer for all aggregated flows. Figure 11 illustrates | |||
| illustrating both aggregation and disaggregation is shown and then | both aggregation and disaggregation, and the corresponding JSON | |||
| the corresponding JSON operational data follows. | operational data follows. | |||
| Please consult the PDF or HTML versions for the Case C-2 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 12: Case C-2 Example Service Aggregation/Disaggregation | Figure 11: Case C-2: Example Service Aggregation/Disaggregation | |||
| Figure 13 contains the operational JSON configuration for the ingress | Figure 12 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 12. In this example, a relay | aggregation node illustrated in Figure 11. In this example, a relay | |||
| performing aggregation at the forwarding sub-layer is illustrated. | performing aggregation at the forwarding sub-layer is illustrated. | |||
| Two DetNet flows DN1 and DN2 are replicated at each service sub- | Two DetNet flows -- DN-1 and DN-2 -- are replicated at each service | |||
| layer, and the replicated each service sub-layer for the upside path | sub-layer. Each replicated flow for the service sub-layer for the | |||
| is aggregated at the single forwarding sub-layer with MPLS label | upper path is aggregated at the single forwarding sub-layer with MPLS | |||
| 20000, and the replicated each service sub-layer for the downside | label 20000, and each replicated flow for the service sub-layer for | |||
| path is aggregated at the forwarding sub-layer with MPLS label 20001. | the lower path is aggregated at the forwarding sub-layer with MPLS | |||
| Figure 14 contains the operational JSON configuration for the egress | label 20001. Figure 13 contains the operational JSON configuration | |||
| disaggregation node illustrated in Figure 12. | for the egress disaggregation node illustrated in Figure 11. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 93, line 27 ¶ | skipping to change at line 4477 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 13: Example C-2 DetNet Relay Aggregation Service Sub-Layer | Figure 12: Example C-2: DetNet Relay Aggregation Service Sub-layer | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 99, line 16 ¶ | skipping to change at line 4755 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 14: Example C-2 DetNet Relay Disaggregation Service Sub-Layer | Figure 13: Example C-2: DetNet Relay Disaggregation Service Sub-layer | |||
| B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | B.6. Example C-3: DetNet Relay Service Sub-layer Aggregation/ | |||
| Disaggregation | Disaggregation | |||
| Figure 15 illustrates the DetNet relay node service sub-layer flows 1 | Figure 14 illustrates the DetNet relay node's service sub-layer flows | |||
| and 2 aggregated into a service sub-layer flow. Multiple DetNet | 1 and 2 aggregated into a service sub-layer flow. Multiple DetNet | |||
| flows with the same requirements which can use the same path are | flows with the same requirements that can use the same path are | |||
| aggregated into a single aggregated DetNet flow, and service | aggregated into a single aggregated DetNet flow, and service | |||
| protection and resource allocation are performed by the service sub- | protection and resource allocation are performed by the service sub- | |||
| layer and forwarding sub-layer of aggregated DetNet flow. A diagram | layer and forwarding sub-layer of the aggregated DetNet flow. | |||
| illustrating both aggregation and disaggregation is shown and then | Figure 14 illustrates both aggregation and disaggregation, and the | |||
| the corresponding JSON operational data follows. | corresponding JSON operational data follows. | |||
| Please consult the PDF or HTML versions for the Case C-3 Diagram. | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 15: Case C-3 Example Service Aggregation/Disaggregation | Figure 14: Case C-3: Example Service Aggregation/Disaggregation | |||
| Figure 16 contains the operational JSON configuration for the ingress | Figure 15 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 15. In this example a relay | aggregation node illustrated in Figure 14. In this example, a relay | |||
| performing aggregation at the service sub-layer is illustrated. Two | performing aggregation at the service sub-layer is illustrated. Two | |||
| DetNet flows DN1 and DN2 are relayed at each service sub-layer with | DetNet flows -- DN-1 and DN-2 -- are relayed at each service sub- | |||
| MPLS labels 101 and 104 respectively, and each service sub-layer is | layer with MPLS labels 101 and 104, respectively, and each service | |||
| aggregated at a single service sub-layer flow and replicated. | sub-layer is aggregated at a single service sub-layer flow and | |||
| Figure 17 contains the operational JSON configuration for the egress | replicated. Figure 16 contains the operational JSON configuration | |||
| disaggregation node illustrated in Figure 15. | for the egress disaggregation node illustrated in Figure 14. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 106, line 24 ¶ | skipping to change at line 5100 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 16: Example C-3 DetNet Relay Service Sub-Layer Aggregation | Figure 15: Example C-3: DetNet Relay Service Sub-layer Aggregation | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 113, line 4 ¶ | skipping to change at line 5416 ¶ | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth3", | "name": "eth3", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 17: Example C-3 DetNet Relay Service Sub-Layer Disaggregation | Figure 16: Example C-3: DetNet Relay Service Sub-layer Disaggregation | |||
| B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | B.7. Example C-4: DetNet Relay Service Sub-layer Aggregation/ | |||
| Disaggregation | Disaggregation | |||
| Figure 18 illustrates the relay node DetNet forwarding sub-layer | Figure 17 illustrates the DetNet relay node's forwarding sub-layer | |||
| flows 1 and 2 aggregated into a service sub-layer DetNet flow. | flows 1 and 2 aggregated into a service sub-layer DetNet flow. | |||
| Multiple DetNet flows with the same requirements which can use the | Multiple DetNet flows with the same requirements that can use the | |||
| same path are aggregated into a single aggregated DetNet flow. | same path are aggregated into a single aggregated DetNet flow. | |||
| Service protection is performed by the service sub-layer of the | Service protection is performed by the service sub-layer of the | |||
| aggregated DetNet flow and resource allocation is performed by the | aggregated DetNet flow, and resource allocation is performed by the | |||
| forwarding sub-layer of each aggregated DetNet flow. A diagram | forwarding sub-layer of each aggregated DetNet flow. Figure 17 | |||
| illustrating both aggregation and disaggregation is shown and then | illustrates both aggregation and disaggregation, and the | |||
| the corresponding JSON operational data follows. | corresponding JSON operational data follows. | |||
| Please consult the PDF or HTML versions for the Case C-4 Diagram | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 18: Case C-4 Example Service Aggregation/Disaggregation | Figure 17: Case C-4: Example Service Aggregation/Disaggregation | |||
| Figure 19 contains the operational JSON configuration for the ingress | Figure 18 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 18. In this example, a relay | aggregation node illustrated in Figure 17. In this example, a relay | |||
| performing aggregation at the service sub-layer is illustrated. Two | performing aggregation at the service sub-layer is illustrated. Two | |||
| DetNet flows DN1 and DN2 are relayed at each service sub-layer. The | DetNet flows -- DN-1 and DN-2 -- are relayed at each service sub- | |||
| two DetNet forwarding sub-layer flows with MPLS labels 20004 and | layer. The two DetNet forwarding sub-layer flows with MPLS labels | |||
| 20005 are aggregated at the single service sub-layer DetNet flow and | 20004 and 20005 are aggregated at the single service sub-layer DetNet | |||
| then replicated. Figure 20 contains the operational JSON | flow and then replicated. Figure 19 contains the operational JSON | |||
| configuration for the egress disaggregation node illustrated in | configuration for the egress disaggregation node illustrated in | |||
| Figure 18. | Figure 17. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 121, line 36 ¶ | skipping to change at line 5833 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 19: Example C-4 DetNet Relay Service Sub-Layer Aggregation | Figure 18: Example C-4: DetNet Relay Service Sub-layer Aggregation | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 10000000, | "max-latency-variation": 10000000, | |||
| skipping to change at page 129, line 24 ¶ | skipping to change at line 6205 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 20: Example C-4 DetNet Relay Service Sub-Layer Disaggregation | Figure 19: Example C-4: DetNet Relay Service Sub-layer Disaggregation | |||
| B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | B.8. Example D-1: Transit Node Forwarding Sub-layer Aggregation/ | |||
| Disaggregation | Disaggregation | |||
| Figure 21 illustrates at the transit node, forwarding sub-layer flows | As illustrated in Figure 20, at the transit node, forwarding sub- | |||
| 1 and 2 are aggregated into a single forwarding sub-layer. Resource | layer flows 1 and 2 are aggregated into a single forwarding sub- | |||
| allocation is performed by the corresponding forwarding sub-layer for | layer. Resource allocation is performed by the corresponding | |||
| all aggregated flows. Figure 21 illustrating both aggregation and | forwarding sub-layer for all aggregated flows. Figure 20 illustrates | |||
| disaggregation is shown and then the corresponding JSON operational | both aggregation and disaggregation, and the corresponding JSON | |||
| data follows. | operational data follows. | |||
| Please consult the PDF or HTML versions for the Case D-1 Diagram | (Artwork only available as SVG: see | |||
| https://www.rfc-editor.org/rfc/rfc9633.html) | ||||
| Figure 21: Case D-1 Example Transit Node Forwarding Aggregation/ | Figure 20: Case D-1: Example Transit Node Forwarding Aggregation/ | |||
| Disaggregation | Disaggregation | |||
| Figure 22 contains the operational JSON configuration for the ingress | Figure 21 contains the operational JSON configuration for the ingress | |||
| aggregation node illustrated in Figure 21. In this example, a | aggregation node illustrated in Figure 20. In this example, a | |||
| transit node performing aggregation at the forwarding sub-layer is | transit node performing aggregation at the forwarding sub-layer is | |||
| illustrated. Two DetNet flows DN1 and DN2 are transmitted at each | illustrated. Two DetNet flows -- DN-1 and DN-2 -- are transmitted at | |||
| forwarding sub-layer. The DetNet forwarding sub-layer flows with | each forwarding sub-layer. The DetNet forwarding sub-layer flows | |||
| MPLS labels 10002 and 10006 are aggregated at the single forwarding | with MPLS labels 10002 and 10006 are aggregated at the single | |||
| sub-layer. The resulting aggregated DetNet flow has MPLS label | forwarding sub-layer. The resulting aggregated DetNet flow has MPLS | |||
| 20000. Figure 23 contains the operational JSON configuration for the | label 20000. Figure 22 contains the operational JSON configuration | |||
| egress disaggregation transit node illustrated in Figure 21. | for the egress disaggregation transit node illustrated in Figure 20. | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 1, | "max-pkts-per-interval": 1, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| skipping to change at page 132, line 17 ¶ | skipping to change at line 6342 ¶ | |||
| "incoming": { | "incoming": { | |||
| "forwarding-aggregation": { | "forwarding-aggregation": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| } | } | |||
| }, | }, | |||
| "outgoing": { | "outgoing": { | |||
| "interface": { | "interface": { | |||
| "outgoing-interface": "eth3", | "outgoing-interface": "eth2", | |||
| "mpls-label-stack": { | "mpls-label-stack": { | |||
| "entry": [ | "entry": [ | |||
| { | { | |||
| "id": 0, | "id": 0, | |||
| "label": 20000 | "label": 20000 | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| skipping to change at page 132, line 51 ¶ | skipping to change at line 6376 ¶ | |||
| }, | }, | |||
| { | { | |||
| "name": "eth1", | "name": "eth1", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth3", | "name": "eth2", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 22: Example D-1 Transit Node Forwarding Aggregation | Figure 21: Example D-1: Transit Node Forwarding Aggregation | |||
| { | { | |||
| "ietf-detnet:detnet": { | "ietf-detnet:detnet": { | |||
| "traffic-profile": [ | "traffic-profile": [ | |||
| { | { | |||
| "name": "pf-1", | "name": "pf-1", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 1, | "max-pkts-per-interval": 1, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| skipping to change at page 136, line 22 ¶ | skipping to change at line 6539 ¶ | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-02-21T18:59:00-05:00" | "discontinuity-time": "2024-02-21T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 23: Example D-1 Transit Node Forwarding Disaggregation | Figure 22: Example D-1: Transit Node Forwarding Disaggregation | |||
| Acknowledgments | ||||
| The authors of this document would like to thank Lou Berger, Tom | ||||
| Petch, Xufeng Liu, Julien Meuric, John Scudder, and Florian Kauer for | ||||
| their detailed comments. | ||||
| Contributors | ||||
| The authors of this document wish to thank and acknowledge the | ||||
| following individual, who contributed substantially to the content of | ||||
| this document and should be considered a coauthor: | ||||
| Mach(Guoyi) Chen | ||||
| Huawei Technologies | ||||
| Email: mach.chen@huawei.com | ||||
| Authors' Addresses | Authors' Addresses | |||
| Xuesong Geng | Xuesong Geng | |||
| Huawei Technologies | Huawei Technologies | |||
| Email: gengxuesong@huawei.com | Email: gengxuesong@huawei.com | |||
| Yeoncheol Ryoo | Yeoncheol Ryoo | |||
| ETRI | ETRI | |||
| Email: dbduscjf@etri.re.kr | Email: dbduscjf@etri.re.kr | |||
| End of changes. 397 change blocks. | ||||
| 887 lines changed or deleted | 991 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||