| < draft-ietf-detnet-yang-14.txt | draft-ietf-detnet-yang-15.txt > | |||
|---|---|---|---|---|
| Network Working Group X. Geng | Network Working Group X. Geng | |||
| Internet-Draft Huawei Technologies | Internet-Draft Huawei Technologies | |||
| Intended status: Standards Track Y. Ryoo | Intended status: Standards Track Y. Ryoo | |||
| Expires: 25 April 2022 ETRI | Expires: 9 June 2022 ETRI | |||
| D. Fedyk | D. Fedyk | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| R. Rahman | R. Rahman | |||
| Individual | Individual | |||
| Z. Li | Z. Li | |||
| China Mobile | China Mobile | |||
| 22 October 2021 | 6 December 2021 | |||
| Deterministic Networking (DetNet) YANG Model | Deterministic Networking (DetNet) YANG Model | |||
| draft-ietf-detnet-yang-14 | draft-ietf-detnet-yang-15 | |||
| 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 for | Networking YANG Model for configuration and operational data for | |||
| DetNet Flows. The model allows for provisioning of end-to-end DetNet | DetNet Flows. The model allows for provisioning of end-to-end DetNet | |||
| service on devices along the path without dependency on any signaling | service on devices along the path without dependency on any signaling | |||
| protocol. It also specifies operational status for flows. An | protocol. It also specifies operational status for flows. An | |||
| operator or network controller programs the configuration of the | operator or network controller programs the configuration of the | |||
| devices. | devices. | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 25 April 2022. | This Internet-Draft will expire on 9 June 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Revised BSD License text as | |||
| as described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3 | 4. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4.1. DetNet Application Flow YANG Attributes . . . . . . . . . 5 | 4.1. DetNet Application Flow YANG Attributes . . . . . . . . . 5 | |||
| 4.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 5 | 4.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 5 | |||
| 4.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 5 | 4.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 5 | |||
| 5. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 6 | 5. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. DetNet YANG Structure Considerations . . . . . . . . . . . . 7 | 6. DetNet YANG Structure Considerations . . . . . . . . . . . . 7 | |||
| 7. DetNet Configuration YANG Structures . . . . . . . . . . . . 8 | 7. DetNet Configuration YANG Structures . . . . . . . . . . . . 8 | |||
| 8. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 9 | 8. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 9 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 39 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 40 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 40 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 40 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 41 | 13.2. Informative References . . . . . . . . . . . . . . . . . 42 | |||
| Appendix A. DetNet Configuration YANG Tree . . . . . . . . . . . 42 | Appendix A. DetNet Configuration YANG Tree . . . . . . . . . . . 43 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 51 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| B.1. Example A-1 JSON Configuration/Operational . . . . . . . 51 | B.1. Example A-1 JSON Configuration/Operational . . . . . . . 52 | |||
| B.2. Example B-1 XML Config: Aggregation using a Forwarding | B.2. Example B-1 XML Config: Aggregation using a Forwarding | |||
| Sub-layer . . . . . . . . . . . . . . . . . . . . . . . . 56 | Sub-layer . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| B.3. Example B-2 JSON Service Aggregation Configuration . . . 60 | B.3. Example B-2 JSON Service Aggregation Configuration . . . 61 | |||
| B.4. Example C-1 JSON Relay Aggregation/Disaggregation | B.4. Example C-1 JSON Relay Aggregation/Disaggregation | |||
| Configuration . . . . . . . . . . . . . . . . . . . . . . 66 | Configuration . . . . . . . . . . . . . . . . . . . . . . 67 | |||
| B.5. Example C-2 JSON Relay Aggregation Service Sub-Layer . . 83 | B.5. Example C-2 JSON Relay Aggregation Service Sub-Layer . . 84 | |||
| B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | B.6. Example C-3 JSON Relay Service Sub-Layer Aggregation/ | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 95 | Disaggregation . . . . . . . . . . . . . . . . . . . . . 96 | |||
| B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | B.7. Example C-4 JSON Relay Service Sub-Layer Aggregation/ | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 109 | Disaggregation . . . . . . . . . . . . . . . . . . . . . 110 | |||
| B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | B.8. Example D-1 JSON Transit Forwarding Sub-Layer Aggregation/ | |||
| Disaggregation . . . . . . . . . . . . . . . . . . . . . 126 | Disaggregation . . . . . . . . . . . . . . . . . . . . . 127 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 133 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 134 | |||
| 1. Introduction | 1. Introduction | |||
| DetNet (Deterministic Networking) provides a capability to carry | DetNet (Deterministic Networking) provides a capability 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 model for DetNet based on YANG data | |||
| skipping to change at page 4, line 17 ¶ | skipping to change at page 4, line 17 ¶ | |||
| the relationship between data instance node types and the included | the relationship between data instance node types and the included | |||
| layers. Node types typically are logical per DetNet service and one | layers. Node types typically are logical per DetNet service and one | |||
| DetNet service can be one node type while another is another node | DetNet service can be one node type while another is another node | |||
| type on same device. This model is a controller based model because | type on same device. This model is a controller based model because | |||
| a controller or operator configures all the devices to form a | a controller or operator configures all the devices to form a | |||
| service. | service. | |||
| +---------------------------------------------------+ | +---------------------------------------------------+ | |||
| | Instance | | | Instance | | |||
| +-----+-----------------+-----------------+---------------+ | +-----+-----------------+-----------------+---------------+ | |||
| | |Edge Node | Transit Node | Relay Node | | | |Edge Node | Relay Node | Transit Node | | |||
| +-----+-----------------+-----------------+---------------+ | +-----+-----------------+-----------------+---------------+ | |||
| | L |Application | | | | | L |Application | | | | |||
| | a +-----------------+-----------------+---------------+ | | a +-----------------+-----------------+---------------+ | |||
| | y |Service Sub-Layer|Service Sub-Layer| | | | y |Service Sub-Layer|Service Sub-Layer| | | |||
| | e +-----------------+-----------------+---------------+ | | e +-----------------+-----------------+---------------+ | |||
| | r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | | r |Forwarding S-L |Forwarding S-L | Forwarding S-L| | |||
| +-----+-----------------+-----------------+---------------+ | +-----+-----------------+-----------------+---------------+ | |||
| Figure 1: Detnet Layers and Node Types | Figure 1: Detnet Layers and Node Types | |||
| skipping to change at page 7, line 14 ¶ | skipping to change at page 7, line 14 ¶ | |||
| Traffic requirements and traffic specification may be tracked for | Traffic requirements and 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 is out of scope. | |||
| 6. DetNet YANG Structure Considerations | 6. DetNet YANG Structure Considerations | |||
| The picture shows that the general structure of the DetNet YANG | The picture shows that the general structure of the DetNet YANG | |||
| Model: | Model: | |||
| +-----------+ | +-----------+ | |||
| |ietf-detnet| | |ietf-detnet| | |||
| +-----+-----+ | +-----+-----+ | |||
| | | | | |||
| +--------------+----------------+-------------------+ | +--------------+----------------+------------------+ | |||
| | | | | | | | | | | |||
| +-----+------+ +-----+------+ +-------+------+ | | +-----+------+ +-----+------+ +-------+------+ | | |||
| | App Flows | |service s-l | |forwarding s-l| | | | App Flows | |service s-l | |forwarding s-l| | | |||
| +-----+------+ +-----+------+ +-------+------+ | | +-----+------+ +-----+------+ +-------+------+ | | |||
| | | | | | | | | | | |||
| +-----+------+ +-----+------+ +-------+------+ | | +-----+------+ +-----+------+ +-------+------+ | | |||
| | Reference | | Reference | | Reference | | | | Reference | | Reference | | Reference | | | |||
| | to Traffic | | to Traffic | | to Traffic | +--------+-------+ | | to Traffic | | to Traffic | | to Traffic | +-------+-------+ | |||
| | Profile | | Profile | | Profile | | Traffic Profile| | | Profile | | Profile | | Profile | |Traffic Profile| | |||
| +------------+ +------------+ +--------------+ +----------------+ | +------------+ +------------+ +--------------+ +---------------+ | |||
| There are three layer types in DetNet YANG Model: App-flow data | There are three layer types in DetNet YANG Model: App-flow data | |||
| layer, service sub-layer and forwarding sub-layer. Additionally, the | layer, service sub-layer and forwarding sub-layer. Additionally, the | |||
| Traffic parameters are captured in a Traffic profile that can be | Traffic parameters are captured in a Traffic profile that can be | |||
| referenced by any of the layers. | referenced by any of the layers. | |||
| Below is a a summary YANG tree showing the major items. A complete | Below is a a summary YANG tree showing the major items. A complete | |||
| YANG tree is in section Appendix A. | YANG tree is in section Appendix A. | |||
| A traffic profile can be created for application, service sub-layer | A traffic profile can be created for application, service sub-layer | |||
| skipping to change at page 8, line 17 ¶ | skipping to change at page 8, line 17 ¶ | |||
| The following is a partial tree representation of the YANG as defined | The following is a partial tree representation of the YANG as defined | |||
| in [RFC8340]. This corresponds to the structure layout in the | in [RFC8340]. This corresponds to the structure layout in the | |||
| previous section. | previous section. | |||
| 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-apps* app-flow-ref | | +--ro member-app* app-flow-ref | |||
| | +--ro member-services* service-sub-layer-ref | | +--ro member-service* service-sub-layer-ref | |||
| | +--ro member-fwd-sublayers* forwarding-sub-layer-ref | | +--ro member-fwd-sublayer* forwarding-sub-layer-ref | |||
| +--rw app-flows | +--rw app-flows | |||
| | +--rw app-flow* [name] | | +--rw app-flow* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw bidir-congruent? boolean | | +--rw bidir-congruent? boolean | |||
| | +--ro outgoing-service? service-sub-layer-ref | | +--ro outgoing-service? service-sub-layer-ref | |||
| | +--ro incoming-service? service-sub-layer-ref | | +--ro incoming-service? service-sub-layer-ref | |||
| | +--rw traffic-profile? traffic-profile-ref | | +--rw traffic-profile? traffic-profile-ref | |||
| | +--rw ingress | | +--rw ingress | |||
| | | ... | | | ... | |||
| | +--rw egress | | +--rw egress | |||
| skipping to change at page 11, line 5 ¶ | skipping to change at page 11, line 5 ¶ | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | 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 XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices."; | for full legal notices."; | |||
| revision 2021-10-20 { | revision 2021-11-18 { | |||
| description | description | |||
| "initial revision"; | "initial revision"; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model"; | "RFC XXXX: Deterministic Networking (DetNet) YANG Model"; | |||
| } | } | |||
| identity app-status { | identity app-status { | |||
| description | description | |||
| "Base identity from which all application-status | "Base identity from which all application-status | |||
| status types are derived."; | status types are derived."; | |||
| skipping to change at page 27, line 48 ¶ | skipping to change at page 27, line 48 ¶ | |||
| maximum allowed misordering can be measured for example | maximum allowed misordering can be measured for example | |||
| based on sequence number. The value zero for the | based on sequence number. The value zero for the | |||
| maximum allowed misordering indicates that in order | maximum allowed misordering indicates that in order | |||
| delivery is required, misordering cannot be tolerated."; | delivery is required, misordering cannot be tolerated."; | |||
| reference | reference | |||
| "RFC 9016 Section 4.2"; | "RFC 9016 Section 4.2"; | |||
| } | } | |||
| } | } | |||
| container traffic-spec { | container traffic-spec { | |||
| description | description | |||
| "Flow-specification specifies how the Source transmits | "Traffic-specification 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 the | |||
| Source to the network. The network uses this flow | 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 Section 5.5"; | |||
| leaf interval { | leaf interval { | |||
| type uint32; | type uint32; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| skipping to change at page 28, line 47 ¶ | skipping to change at page 28, line 47 ¶ | |||
| } | } | |||
| 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 Section 5.5, IEEE802.1Q"; | |||
| } | } | |||
| } | } | |||
| leaf-list member-apps { | leaf-list member-app { | |||
| 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 XXXX: Deterministic Networking (DetNet) YANG Model | |||
| Section 5"; | Section 5"; | |||
| } | } | |||
| leaf-list member-services { | leaf-list member-service { | |||
| 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-layers that uses a profile has an | |||
| automatically populated reference."; | automatically populated reference."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC XXXX: Deterministic Networking (DetNet) YANG Model | |||
| Section 5"; | Section 5"; | |||
| } | } | |||
| leaf-list member-fwd-sublayers { | 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-layers that uses a profile has an | |||
| automatically populated reference."; | automatically populated reference."; | |||
| reference | reference | |||
| "RFC XXXX: Deterministic Networking (DetNet) YANG Model | "RFC XXXX: Deterministic Networking (DetNet) YANG Model | |||
| Section 5"; | Section 5"; | |||
| } | } | |||
| skipping to change at page 39, line 37 ¶ | skipping to change at page 39, line 37 ¶ | |||
| layer is the secure transport layer, and the mandatory-to-implement | layer is the secure transport layer, and the mandatory-to-implement | |||
| secure transport is Secure Shell (SSH) [RFC6242]. The lowest | secure transport is Secure Shell (SSH) [RFC6242]. The lowest | |||
| RESTCONF layer is HTTPS, and the mandatory-to-implement secure | RESTCONF layer is HTTPS, and the mandatory-to-implement secure | |||
| transport is TLS [RFC8446]. | transport is TLS [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 modules that are | There are a number of data nodes defined in the 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. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
| to these data nodes without proper protection can break or | to these data nodes without proper protection can break or | |||
| incorrectly connect DetNet flows. | incorrectly connect DetNet flows. Since this is a configured Data | |||
| Plane any changes that are not coordinated with all devices along the | ||||
| path the whole DetNet module is considered vulnerable and should have | ||||
| authorized access only. | ||||
| Similarly, the data nodes in these YANG modules may be considered | ||||
| sensitive or vulnerable in some network environments. It is thus | ||||
| important to control read access (e.g., via get, get-config, or | ||||
| notification) to these data nodes. These are the subtrees and data | ||||
| node and their sensitivity/vulnerability: | ||||
| /detnet/app-flows: This controls the application details so it could | ||||
| be considered sensitive. | ||||
| /detnet/traffic-profile/member-app: This links traffic profiles to | ||||
| applications, o this also coudl be considered moer sensitive. The | ||||
| trafic profiles liked to service sub-layer and forwarding sub-layer | ||||
| are less sensitive. | ||||
| /detnet/service/sub-layer/incoming/app-flow: This links applications | ||||
| to services. | ||||
| /detnet/service/sub-layer/outgoing/app-flow: This links applications | ||||
| to services. | ||||
| 11. Contributors | 11. Contributors | |||
| The editors of this document wish to thank and acknowledge the | The editors of this document wish to thank and acknowledge the | |||
| following people who contributed substantially to the content of this | following people who contributed substantially to the content of this | |||
| document and should be considered coauthors: | document and should be considered coauthors: | |||
| Mach(Guoyi) Chen | Mach(Guoyi) Chen | |||
| Huawei Technologies | Huawei Technologies | |||
| Email: mach.chen@huawei.com | Email: mach.chen@huawei.com | |||
| 12. Acknowledgments | 12. Acknowledgments | |||
| The editors of this document would like to thank Lou Berger, Tom | The editors of this document would like to thank Lou Berger, Tom | |||
| Petch and Xufeng Lui for their detailed comments. | Petch and Xufeng Lui for their detailed comments. | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| skipping to change at page 42, line 35 ¶ | skipping to change at page 43, line 14 ¶ | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Access Control Model", STD 91, RFC 8341, | Access Control Model", STD 91, RFC 8341, | |||
| DOI 10.17487/RFC8341, March 2018, | DOI 10.17487/RFC8341, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8341>. | <https://www.rfc-editor.org/info/rfc8341>. | |||
| 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 as described 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? uint32 | | | +--rw max-loss? uint32 | |||
| | | +--rw max-consecutive-loss-tolerance? uint32 | | | +--rw max-consecutive-loss-tolerance? uint32 | |||
| | | +--rw max-misordering? uint32 | | | +--rw max-misordering? uint32 | |||
| | +--rw traffic-spec | | +--rw traffic-spec | |||
| | | +--rw interval? uint32 | | | +--rw interval? uint32 | |||
| | | +--rw max-pkts-per-interval? uint32 | | | +--rw max-pkts-per-interval? uint32 | |||
| | | +--rw max-payload-size? uint32 | | | +--rw max-payload-size? uint32 | |||
| | | +--rw min-payload-size? uint32 | | | +--rw min-payload-size? uint32 | |||
| | | +--rw min-pkts-per-interval? uint32 | | | +--rw min-pkts-per-interval? uint32 | |||
| | +--ro member-apps* app-flow-ref | | +--ro member-app* app-flow-ref | |||
| | +--ro member-services* service-sub-layer-ref | | +--ro member-service* service-sub-layer-ref | |||
| | +--ro member-fwd-sublayers* forwarding-sub-layer-ref | | +--ro member-fwd-sublayer* forwarding-sub-layer-ref | |||
| +--rw app-flows | +--rw app-flows | |||
| | +--rw app-flow* [name] | | +--rw app-flow* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw bidir-congruent? boolean | | +--rw bidir-congruent? boolean | |||
| | +--ro outgoing-service? service-sub-layer-ref | | +--ro outgoing-service? service-sub-layer-ref | |||
| | +--ro incoming-service? service-sub-layer-ref | | +--ro incoming-service? service-sub-layer-ref | |||
| | +--rw traffic-profile? traffic-profile-ref | | +--rw traffic-profile? traffic-profile-ref | |||
| | +--rw ingress | | +--rw ingress | |||
| | | +--ro app-flow-status? identityref | | | +--ro app-flow-status? identityref | |||
| | | +--rw interface if:interface-ref | | | +--rw interface if:interface-ref | |||
| | | +--rw (data-flow-type)? | | | +--rw (data-flow-type)? | |||
| | | +--:(tsn-app-flow) | | | +--:(tsn-app-flow) | |||
| | | | +--rw tsn-app-flow | | | | +--rw tsn-app-flow | |||
| | | | +--rw source-mac-address? | | | | +--rw source-mac-address? | |||
| | | | | yang:mac-address | | | | | yang:mac-address | |||
| | | | +--rw destination-mac-address? | | | | +--rw destination-mac-address? | |||
| | | | | yang:mac-address | | | | | yang:mac-address | |||
| | | | +--rw ethertype? | | | | +--rw ethertype? | |||
| | | | | ethertypes:ethertype | | | | | ethertypes:ethertype | |||
| | | | +--rw vlan-id? | | | | +--rw vlan-id? | |||
| | | | | dot1q-types:vlanid | | | | | dot1q-types:vlanid | |||
| | | | +--rw pcp? | | | | +--rw pcp? | |||
| | | | dot1q-types:priority-type | | | | dot1q-types:priority-type | |||
| | | +--:(ip-app-flow) | | | +--:(ip-app-flow) | |||
| | | | +--rw ip-app-flow | | | | +--rw ip-app-flow | |||
| | | | +--rw src-ip-prefix? inet:ip-prefix | | | | +--rw src-ip-prefix? inet:ip-prefix | |||
| | | | +--rw dest-ip-prefix? inet:ip-prefix | | | | +--rw dest-ip-prefix? inet:ip-prefix | |||
| | | | +--rw protocol-next-header? uint8 | | | | +--rw protocol-next-header? uint8 | |||
| | | | +--rw dscp? inet:dscp | | | | +--rw dscp? inet:dscp | |||
| | | | +--rw flow-label? | | | | +--rw flow-label? | |||
| | | | | inet:ipv6-flow-label | | | | | inet:ipv6-flow-label | |||
| | | | +--rw source-port | | | | +--rw source-port | |||
| | | | | +--rw (port-range-or-operator)? | | | | | +--rw (port-range-or-operator)? | |||
| | | | | +--:(range) | | | | | +--:(range) | |||
| | | | | | +--rw lower-port | | | | | | +--rw lower-port | |||
| | | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | | +--rw upper-port | | | | | | +--rw upper-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | +--:(operator) | |||
| | | | | +--rw operator? operator | | | | | +--rw operator? operator | |||
| | | | | +--rw port inet:port-number | | | | | +--rw port inet:port-number | |||
| | | | +--rw destination-port | | | | +--rw destination-port | |||
| | | | | +--rw (port-range-or-operator)? | | | | | +--rw (port-range-or-operator)? | |||
| | | | | +--:(range) | | | | | +--:(range) | |||
| | | | | | +--rw lower-port | | | | | | +--rw lower-port | |||
| | | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | | +--rw upper-port | | | | | | +--rw upper-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | +--:(operator) | |||
| | | | | +--rw operator? operator | | | | | +--rw operator? operator | |||
| | | | | +--rw port inet:port-number | | | | | +--rw port inet:port-number | |||
| | | | +--rw ipsec-spi? ipsec-spi | | | | +--rw ipsec-spi? ipsec-spi | |||
| | | +--:(mpls-app-flow) | | | +--:(mpls-app-flow) | |||
| | | +--rw mpls-app-flow | | | +--rw mpls-app-flow | |||
| | | +--rw (label-space)? | | | +--rw (label-space)? | |||
| | | +--:(context-label-space) | | | +--:(context-label-space) | |||
| | | | +--rw mpls-label-stack | | | | +--rw mpls-label-stack | |||
| | | | +--rw entry* [id] | | | | +--rw entry* [id] | |||
| | | | +--rw id uint8 | | | | +--rw id uint8 | |||
| | | | +--rw label? | | | | +--rw label? | |||
| | | | | rt-types:mpls-label | | | | | rt-types:mpls-label | |||
| | | | +--rw ttl? uint8 | | | | +--rw ttl? uint8 | |||
| | | | +--rw traffic-class? uint8 | | | | +--rw traffic-class? uint8 | |||
| | | +--:(platform-label-space) | | | +--:(platform-label-space) | |||
| | | +--rw label? | | | +--rw label? | |||
| | | rt-types:mpls-label | | | rt-types:mpls-label | |||
| | +--rw egress | | +--rw egress | |||
| | +--rw (application-type)? | | +--rw (application-type)? | |||
| | +--:(ethernet) | | +--:(ethernet) | |||
| | | +--rw ethernet | | | +--rw ethernet | |||
| | | +--rw interface? if:interface-ref | | | +--rw interface? if:interface-ref | |||
| | +--:(ip-mpls) | | +--:(ip-mpls) | |||
| | +--rw ip-mpls | | +--rw ip-mpls | |||
| | +--rw (next-hop-options) | | +--rw (next-hop-options) | |||
| | +--:(simple-next-hop) | | +--:(simple-next-hop) | |||
| | | +--rw outgoing-interface? | | | +--rw outgoing-interface? | |||
| | | | if:interface-ref | | | | if:interface-ref | |||
| | | +--rw (flow-type)? | | | +--rw (flow-type)? | |||
| | | +--:(ip) | | | +--:(ip) | |||
| | | | +--rw next-hop-address? | | | | +--rw next-hop-address? | |||
| | | | inet:ip-address-no-zone | | | | inet:ip-address-no-zone | |||
| | | +--:(mpls) | | | +--:(mpls) | |||
| | | +--rw mpls-label-stack | | | +--rw mpls-label-stack | |||
| | | +--rw entry* [id] | | | +--rw entry* [id] | |||
| | | +--rw id uint8 | | | +--rw id uint8 | |||
| | | +--rw label? | | | +--rw label? | |||
| | | | rt-types:mpls-label | | | | rt-types:mpls-label | |||
| | | +--rw ttl? uint8 | | | +--rw ttl? uint8 | |||
| | | +--rw traffic-class? uint8 | | | +--rw traffic-class? uint8 | |||
| | +--:(next-hop-list) | | +--:(next-hop-list) | |||
| | +--rw next-hop* [hop-index] | | +--rw next-hop* [hop-index] | |||
| | +--rw hop-index uint8 | | +--rw hop-index uint8 | |||
| | +--rw outgoing-interface? | | +--rw outgoing-interface? | |||
| | | if:interface-ref | | | if:interface-ref | |||
| | +--rw (flow-type)? | | +--rw (flow-type)? | |||
| | +--:(ip) | | +--:(ip) | |||
| | | +--rw next-hop-address? | | | +--rw next-hop-address? | |||
| | | inet:ip-address-no-zone | | | inet:ip-address-no- | |||
| | +--:(mpls) | | | zone | |||
| | +--rw mpls-label-stack | | +--:(mpls) | |||
| | +--rw entry* [id] | | +--rw mpls-label-stack | |||
| | +--rw id | | +--rw entry* [id] | |||
| | | uint8 | | +--rw id | |||
| | +--rw label? | | | uint8 | |||
| | | rt-types:mpls-label | | +--rw label? | |||
| | +--rw ttl? | | | rt-types:mpls- | |||
| | | uint8 | | | label | |||
| | +--rw traffic-class? | | +--rw ttl? | |||
| | uint8 | | | uint8 | |||
| +--rw service | | +--rw traffic-class? | |||
| | +--rw sub-layer* [name] | | uint8 | |||
| | +--rw name string | +--rw service | |||
| | +--rw service-rank? uint8 | | +--rw sub-layer* [name] | |||
| | +--rw traffic-profile? traffic-profile-ref | | +--rw name string | |||
| | +--rw service-protection | | +--rw service-rank? uint8 | |||
| | | +--rw protection? service-protection | | +--rw traffic-profile? traffic-profile-ref | |||
| | | +--rw sequence-number-length? sequence-number-field | | +--rw service-protection | |||
| | +--rw operation? operation | | | +--rw protection? service-protection | |||
| | +--rw incoming | | | +--rw sequence-number-length? sequence-number-field | |||
| | | +--rw (incoming) | | +--rw operation? operation | |||
| | | +--:(app-flow) | | +--rw incoming | |||
| | | | +--rw app-flow | | | +--rw (incoming) | |||
| | | | +--rw flow* app-flow-ref | | | +--:(app-flow) | |||
| | | +--:(service-aggregation) | | | | +--rw app-flow | |||
| | | | +--rw service-aggregation | | | | +--rw flow* app-flow-ref | |||
| | | | +--rw sub-layer* service-sub-layer-ref | | | +--:(service-aggregation) | |||
| | | +--:(forwarding-aggregation) | | | | +--rw service-aggregation | |||
| | | | +--rw forwarding-aggregation | | | | +--rw sub-layer* service-sub-layer-ref | |||
| | | | +--rw sub-layer* forwarding-sub-layer-ref | | | +--:(forwarding-aggregation) | |||
| | | +--:(service-id) | | | | +--rw forwarding-aggregation | |||
| | | +--rw service-id | | | | +--rw sub-layer* forwarding-sub-layer-ref | |||
| | | +--rw (detnet-flow-type)? | | | +--:(service-id) | |||
| | | +--:(ip-detnet-flow) | | | +--rw service-id | |||
| | | | +--rw src-ip-prefix? | | | +--rw (detnet-flow-type)? | |||
| | | | | inet:ip-prefix | | | +--:(ip-detnet-flow) | |||
| | | | +--rw dest-ip-prefix? | | | | +--rw src-ip-prefix? | |||
| | | | | inet:ip-prefix | | | | | inet:ip-prefix | |||
| | | | +--rw protocol-next-header? uint8 | | | | +--rw dest-ip-prefix? | |||
| | | | +--rw dscp? inet:dscp | | | | | inet:ip-prefix | |||
| | | | +--rw flow-label? | | | | +--rw protocol-next-header? uint8 | |||
| | | | | inet:ipv6-flow-label | | | | +--rw dscp? inet:dscp | |||
| | | | +--rw source-port | | | | +--rw flow-label? | |||
| | | | | +--rw (port-range-or-operator)? | | | | | inet:ipv6-flow-label | |||
| | | | | +--:(range) | | | | +--rw source-port | |||
| | | | | | +--rw lower-port | | | | | +--rw (port-range-or-operator)? | |||
| | | | | | | inet:port-number | | | | | +--:(range) | |||
| | | | | | +--rw upper-port | | | | | | +--rw lower-port | |||
| | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | | +--rw upper-port | |||
| | | | | +--rw operator? operator | | | | | | inet:port-number | |||
| | | | | +--rw port | | | | | +--:(operator) | |||
| | | | | inet:port-number | | | | | +--rw operator? operator | |||
| | | | +--rw destination-port | | | | | +--rw port | |||
| | | | | +--rw (port-range-or-operator)? | | | | | inet:port-number | |||
| | | | | +--:(range) | | | | +--rw destination-port | |||
| | | | | | +--rw lower-port | | | | | +--rw (port-range-or-operator)? | |||
| | | | | | | inet:port-number | | | | | +--:(range) | |||
| | | | | | +--rw upper-port | | | | | | +--rw lower-port | |||
| | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | | +--rw upper-port | |||
| | | | | +--rw operator? operator | | | | | | inet:port-number | |||
| | | | | +--rw port | | | | | +--:(operator) | |||
| | | | | inet:port-number | | | | | +--rw operator? operator | |||
| | | | +--rw ipsec-spi? ipsec-spi | | | | | +--rw port | |||
| | | +--:(mpls-detnet-flow) | | | | | inet:port-number | |||
| | | +--rw (label-space)? | | | | +--rw ipsec-spi? ipsec-spi | |||
| | | +--:(context-label-space) | | | +--:(mpls-detnet-flow) | |||
| | | | +--rw mpls-label-stack | | | +--rw (label-space)? | |||
| | | | +--rw entry* [id] | | | +--:(context-label-space) | |||
| | | | +--rw id uint8 | | | | +--rw mpls-label-stack | |||
| | | | +--rw label? | | | | +--rw entry* [id] | |||
| | | | | rt-types:mpls-label | | | | +--rw id uint8 | |||
| | | | +--rw ttl? uint8 | | | | +--rw label? | |||
| | | | +--rw traffic-class? uint8 | | | | | rt-types:mpls-label | |||
| | | +--:(platform-label-space) | | | | +--rw ttl? uint8 | |||
| | | +--rw label? | | | | +--rw traffic-class? uint8 | |||
| | | rt-types:mpls-label | | | +--:(platform-label-space) | |||
| | +--rw outgoing | | | +--rw label? | |||
| | +--rw (outgoing) | | | rt-types:mpls-label | |||
| | +--:(forwarding-sub-layer) | | +--rw outgoing | |||
| | | +--rw forwarding-sub-layer | | +--rw (outgoing) | |||
| | | +--rw service-outgoing* [index] | | +--:(forwarding-sub-layer) | |||
| | | +--rw index uint8 | | | +--rw forwarding-sub-layer | |||
| | | +--rw (header-type)? | | | +--rw service-outgoing* [index] | |||
| | | | +--:(mpls) | | | +--rw index uint8 | |||
| | | | | +--rw mpls-label-stack | | | +--rw (header-type)? | |||
| | | | | +--rw entry* [id] | | | | +--:(mpls) | |||
| | | | | +--rw id uint8 | | | | | +--rw mpls-label-stack | |||
| | | | | +--rw label? | | | | | +--rw entry* [id] | |||
| | | | | | rt-types:mpls-label | | | | | +--rw id uint8 | |||
| | | | | +--rw ttl? uint8 | | | | | +--rw label? | |||
| | | | | +--rw traffic-class? uint8 | | | | | | rt-types:mpls-label | |||
| | | | +--:(ip) | | | | | +--rw ttl? uint8 | |||
| | | | +--rw src-ip-address? | | | | | +--rw traffic-class? uint8 | |||
| | | | | inet:ip-address-no-zone | | | | +--:(ip) | |||
| | | | +--rw dest-ip-address? | | | | +--rw src-ip-address? | |||
| | | | | inet:ip-address-no-zone | | | | | inet:ip-address-no-zone | |||
| | | | +--rw protocol-next-header? uint8 | | | | +--rw dest-ip-address? | |||
| | | | +--rw dscp? | | | | | inet:ip-address-no-zone | |||
| | | | | inet:dscp | | | | +--rw protocol-next-header? uint8 | |||
| | | | +--rw flow-label? | | | | +--rw dscp? | |||
| | | | | inet:ipv6-flow-label | | | | | inet:dscp | |||
| | | | +--rw source-port? | | | | +--rw flow-label? | |||
| | | | | inet:port-number | | | | | inet:ipv6-flow-label | |||
| | | | +--rw destination-port? | | | | +--rw source-port? | |||
| | | | inet:port-number | | | | | inet:port-number | |||
| | | +--rw sub-layer* | | | | +--rw destination-port? | |||
| | | forwarding-sub-layer-ref | | | | inet:port-number | |||
| | +--:(service-sub-layer) | | | +--rw sub-layer* | |||
| | | +--rw service-sub-layer | | | forwarding-sub-layer-ref | |||
| | | +--rw aggregation-sub-layer? | | +--:(service-sub-layer) | |||
| | | | service-sub-layer-ref | | | +--rw service-sub-layer | |||
| | | +--rw service-label | | | +--rw aggregation-sub-layer? | |||
| | | +--rw mpls-label-stack | | | | service-sub-layer-ref | |||
| | | +--rw entry* [id] | | | +--rw service-label | |||
| | | +--rw id uint8 | | | +--rw mpls-label-stack | |||
| | | +--rw label? | | | +--rw entry* [id] | |||
| | | | rt-types:mpls-label | | | +--rw id uint8 | |||
| | | +--rw ttl? uint8 | | | +--rw label? | |||
| | | +--rw traffic-class? uint8 | | | | rt-types:mpls-label | |||
| | +--:(app-flow) | | | +--rw ttl? uint8 | |||
| | | +--rw app-flow | | | +--rw traffic-class? uint8 | |||
| | | +--rw flow* app-flow-ref | | +--:(app-flow) | |||
| | +--:(service-disaggregation) | | | +--rw app-flow | |||
| | | +--rw service-disaggregation | | | +--rw flow* app-flow-ref | |||
| | | +--rw sub-layer* service-sub-layer-ref | | +--:(service-disaggregation) | |||
| | +--:(forwarding-disaggregation) | | | +--rw service-disaggregation | |||
| | +--rw forwarding-disaggregation | | | +--rw sub-layer* service-sub-layer-ref | |||
| | +--rw sub-layer* forwarding-sub-layer-ref | | +--:(forwarding-disaggregation) | |||
| +--rw forwarding | | +--rw forwarding-disaggregation | |||
| +--rw sub-layer* [name] | | +--rw sub-layer* forwarding-sub-layer-ref | |||
| +--rw name string | +--rw forwarding | |||
| +--rw traffic-profile? traffic-profile-ref | +--rw sub-layer* [name] | |||
| +--rw operation? forwarding-operations | +--rw name string | |||
| +--rw incoming | +--rw traffic-profile? traffic-profile-ref | |||
| | +--rw (incoming) | +--rw operation? forwarding-operations | |||
| | +--:(service-sub-layer) | +--rw incoming | |||
| | | +--rw service-sub-layer | | +--rw (incoming) | |||
| | | +--rw sub-layer* service-sub-layer-ref | | +--:(service-sub-layer) | |||
| | +--:(forwarding-aggregation) | | | +--rw service-sub-layer | |||
| | | +--rw forwarding-aggregation | | | +--rw sub-layer* service-sub-layer-ref | |||
| | | +--rw sub-layer* forwarding-sub-layer-ref | | +--:(forwarding-aggregation) | |||
| | +--:(forwarding-id) | | | +--rw forwarding-aggregation | |||
| | +--rw forwarding-id | | | +--rw sub-layer* forwarding-sub-layer-ref | |||
| | +--rw interface? | | +--:(forwarding-id) | |||
| | | if:interface-ref | | +--rw forwarding-id | |||
| | +--rw (detnet-flow-type)? | | +--rw interface? | |||
| | +--:(ip-detnet-flow) | | | if:interface-ref | |||
| | | +--rw src-ip-prefix? | | +--rw (detnet-flow-type)? | |||
| | | | inet:ip-prefix | | +--:(ip-detnet-flow) | |||
| | | +--rw dest-ip-prefix? | | | +--rw src-ip-prefix? | |||
| | | | inet:ip-prefix | | | | inet:ip-prefix | |||
| | | +--rw protocol-next-header? uint8 | | | +--rw dest-ip-prefix? | |||
| | | +--rw dscp? inet:dscp | | | | inet:ip-prefix | |||
| | | +--rw flow-label? | | | +--rw protocol-next-header? uint8 | |||
| | | | inet:ipv6-flow-label | | | +--rw dscp? inet:dscp | |||
| | | +--rw source-port | | | +--rw flow-label? | |||
| | | | +--rw (port-range-or-operator)? | | | | inet:ipv6-flow-label | |||
| | | | +--:(range) | | | +--rw source-port | |||
| | | | | +--rw lower-port | | | | +--rw (port-range-or-operator)? | |||
| | | | | | inet:port-number | | | | +--:(range) | |||
| | | | | +--rw upper-port | | | | | +--rw lower-port | |||
| | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | +--:(operator) | | | | | +--rw upper-port | |||
| | | | +--rw operator? operator | | | | | inet:port-number | |||
| | | | +--rw port | | | | +--:(operator) | |||
| | | | inet:port-number | | | | +--rw operator? operator | |||
| | | +--rw destination-port | | | | +--rw port | |||
| | | | +--rw (port-range-or-operator)? | | | | inet:port-number | |||
| | | | +--:(range) | | | +--rw destination-port | |||
| | | | | +--rw lower-port | | | | +--rw (port-range-or-operator)? | |||
| | | | | | inet:port-number | | | | +--:(range) | |||
| | | | | +--rw upper-port | | | | | +--rw lower-port | |||
| | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | +--:(operator) | | | | | +--rw upper-port | |||
| | | | +--rw operator? operator | | | | | inet:port-number | |||
| | | | +--rw port | | | | +--:(operator) | |||
| | | | inet:port-number | | | | +--rw operator? operator | |||
| | | +--rw ipsec-spi? ipsec-spi | | | | +--rw port | |||
| | +--:(mpls-detnet-flow) | | | | inet:port-number | |||
| | +--rw (label-space)? | | | +--rw ipsec-spi? ipsec-spi | |||
| | +--:(context-label-space) | | +--:(mpls-detnet-flow) | |||
| | | +--rw mpls-label-stack | | +--rw (label-space)? | |||
| | | +--rw entry* [id] | | +--:(context-label-space) | |||
| | | +--rw id uint8 | | | +--rw mpls-label-stack | |||
| | | +--rw label? | | | +--rw entry* [id] | |||
| | | | rt-types:mpls-label | | | +--rw id uint8 | |||
| | | +--rw ttl? uint8 | | | +--rw label? | |||
| | | +--rw traffic-class? uint8 | | | | rt-types:mpls-label | |||
| | +--:(platform-label-space) | | | +--rw ttl? uint8 | |||
| | +--rw label? | | | +--rw traffic-class? uint8 | |||
| | rt-types:mpls-label | | +--:(platform-label-space) | |||
| +--rw outgoing | | +--rw label? | |||
| +--rw (outgoing) | | rt-types:mpls-label | |||
| +--:(interface) | +--rw outgoing | |||
| | +--rw interface | +--rw (outgoing) | |||
| | +--rw (next-hop-options) | +--:(interface) | |||
| | +--:(simple-next-hop) | | +--rw interface | |||
| | | +--rw outgoing-interface? | | +--rw (next-hop-options) | |||
| | | | if:interface-ref | | +--:(simple-next-hop) | |||
| | | +--rw (flow-type)? | | | +--rw outgoing-interface? | |||
| | | +--:(ip) | | | | if:interface-ref | |||
| | | | +--rw (operation-type)? | | | +--rw (flow-type)? | |||
| | | | +--:(ip-forwarding) | | | +--:(ip) | |||
| | | | | +--rw next-hop-address? | | | | +--rw (operation-type)? | |||
| | | | | inet:ip-address-no-zone | | | | +--:(ip-forwarding) | |||
| | | | +--:(mpls-over-ip-encapsulation) | | | | | +--rw next-hop-address? | |||
| | | | +--rw src-ip-address? | | | | | inet:ip-address-no-zone | |||
| | | | | inet:ip-address-no-zone | | | | +--:(mpls-over-ip- | |||
| | | | +--rw dest-ip-address? | | | | encapsulation) | |||
| | | | | inet:ip-address-no-zone | | | | +--rw src-ip-address? | |||
| | | | +--rw protocol-next-header? | | | | | inet:ip-address-no-zone | |||
| | | | | uint8 | | | | +--rw dest-ip-address? | |||
| | | | +--rw dscp? | | | | | inet:ip-address-no-zone | |||
| | | | | inet:dscp | | | | +--rw protocol-next-header? | |||
| | | | +--rw flow-label? | | | | | uint8 | |||
| | | | | inet:ipv6-flow-label | | | | +--rw dscp? | |||
| | | | +--rw source-port? | | | | | inet:dscp | |||
| | | | | inet:port-number | | | | +--rw flow-label? | |||
| | | | +--rw destination-port? | | | | | inet:ipv6-flow-label | |||
| | | | inet:port-number | | | | +--rw source-port? | |||
| | | +--:(mpls) | | | | | inet:port-number | |||
| | | +--rw mpls-label-stack | | | | +--rw destination-port? | |||
| | | +--rw entry* [id] | | | | inet:port-number | |||
| | | +--rw id uint8 | | | +--:(mpls) | |||
| | | +--rw label? | | | +--rw mpls-label-stack | |||
| | | | rt-types:mpls-label | | | +--rw entry* [id] | |||
| | | +--rw ttl? uint8 | | | +--rw id uint8 | |||
| | | +--rw traffic-class? uint8 | | | +--rw label? | |||
| | +--:(next-hop-list) | | | | rt-types:mpls-label | |||
| | +--rw next-hop* [hop-index] | | | +--rw ttl? uint8 | |||
| | +--rw hop-index | | | +--rw traffic-class? uint8 | |||
| | | uint8 | | +--:(next-hop-list) | |||
| | +--rw outgoing-interface? | | +--rw next-hop* [hop-index] | |||
| | | if:interface-ref | | +--rw hop-index | |||
| | +--rw (flow-type)? | | | uint8 | |||
| | +--:(ip) | | +--rw outgoing-interface? | |||
| | | +--rw (operation-type)? | | | if:interface-ref | |||
| | | +--:(ip-forwarding) | | +--rw (flow-type)? | |||
| | | | +--rw next-hop-address? | | +--:(ip) | |||
| | | | inet:ip-address-no-zone | | | +--rw (operation-type)? | |||
| | | +--:(mpls-over-ip- | | | +--:(ip-forwarding) | |||
| | | encapsulation) | | | | +--rw next-hop-address? | |||
| | | +--rw src-ip-address? | | | | inet:ip-address-no- | |||
| | | | inet:ip-address-no-zone | | | | zone | |||
| | | +--rw dest-ip-address? | | | +--:(mpls-over-ip- | |||
| | | | inet:ip-address-no-zone | | | encapsulation) | |||
| | | +--rw protocol-next-header? | | | +--rw src-ip-address? | |||
| | | | uint8 | | | | inet:ip-address-no- | |||
| | | +--rw dscp? | | | | zone | |||
| | | | inet:dscp | | | +--rw dest-ip-address? | |||
| | | +--rw flow-label? | | | | inet:ip-address-no- | |||
| | | | inet:ipv6-flow-label | | | | zone | |||
| | | +--rw source-port? | | | +--rw protocol-next- | |||
| | | | inet:port-number | | | | header? | |||
| | | +--rw destination-port? | | | | uint8 | |||
| | | inet:port-number | | | +--rw dscp? | |||
| | +--:(mpls) | | | | inet:dscp | |||
| | +--rw mpls-label-stack | | | +--rw flow-label? | |||
| | +--rw entry* [id] | | | | inet:ipv6-flow- | |||
| | +--rw id | | | | label | |||
| | | uint8 | | | +--rw source-port? | |||
| | +--rw label? | | | | inet:port-number | |||
| | | rt-types:mpls-label | | | +--rw destination-port? | |||
| | +--rw ttl? | | | inet:port-number | |||
| | | uint8 | | +--:(mpls) | |||
| | +--rw traffic-class? | | +--rw mpls-label-stack | |||
| | uint8 | | +--rw entry* [id] | |||
| +--:(service-aggregation) | | +--rw id | |||
| | +--rw service-aggregation | | | uint8 | |||
| | +--rw aggregation-sub-layer? | | +--rw label? | |||
| | | service-sub-layer-ref | | | rt-types:mpls- | |||
| | +--rw optional-forwarding-label | | | label | |||
| | +--rw mpls-label-stack | | +--rw ttl? | |||
| | +--rw entry* [id] | | | uint8 | |||
| | +--rw id uint8 | | +--rw traffic-class? | |||
| | +--rw label? | | uint8 | |||
| | | rt-types:mpls-label | +--:(service-aggregation) | |||
| | +--rw ttl? uint8 | | +--rw service-aggregation | |||
| | +--rw traffic-class? uint8 | | +--rw aggregation-sub-layer? | |||
| +--:(forwarding-sub-layer) | | | service-sub-layer-ref | |||
| | +--rw forwarding-sub-layer | | +--rw optional-forwarding-label | |||
| | +--rw aggregation-sub-layer? | | +--rw mpls-label-stack | |||
| | | forwarding-sub-layer-ref | | +--rw entry* [id] | |||
| | +--rw forwarding-label | | +--rw id uint8 | |||
| | +--rw mpls-label-stack | | +--rw label? | |||
| | +--rw entry* [id] | | | rt-types:mpls-label | |||
| | +--rw id uint8 | | +--rw ttl? uint8 | |||
| | +--rw label? | | +--rw traffic-class? uint8 | |||
| | | rt-types:mpls-label | +--:(forwarding-sub-layer) | |||
| | +--rw ttl? uint8 | | +--rw forwarding-sub-layer | |||
| | +--rw traffic-class? uint8 | | +--rw aggregation-sub-layer? | |||
| +--:(service-sub-layer) | | | forwarding-sub-layer-ref | |||
| | +--rw service-sub-layer | | +--rw forwarding-label | |||
| | +--rw sub-layer* service-sub-layer-ref | | +--rw mpls-label-stack | |||
| +--:(forwarding-disaggregation) | | +--rw entry* [id] | |||
| +--rw forwarding-disaggregation | | +--rw id uint8 | |||
| +--rw sub-layer* forwarding-sub-layer-ref | | +--rw label? | |||
| | | rt-types:mpls-label | ||||
| | +--rw ttl? uint8 | ||||
| | +--rw traffic-class? uint8 | ||||
| +--:(service-sub-layer) | ||||
| | +--rw service-sub-layer | ||||
| | +--rw sub-layer* service-sub-layer-ref | ||||
| +--:(forwarding-disaggregation) | ||||
| +--rw forwarding-disaggregation | ||||
| +--rw sub-layer* forwarding-sub-layer-ref | ||||
| Appendix B. Examples | Appendix B. Examples | |||
| The following examples are provided. These examples are tested with | The following examples are provided. These examples are tested with | |||
| Yanglint and use operational output to exercise both config true and | Yanglint and use operational output to exercise both config true and | |||
| config false objects. Note that IPv4 and IPv6 addresses are | config false objects. Note that IPv4 and IPv6 addresses are | |||
| supported but for clarity in the examples and diagrams IPv4 has been | supported but for clarity in the examples and diagrams IPv4 has been | |||
| used in most examples. The IP types are imported from [RFC6991] and | used in most examples. The IP types are imported from [RFC6991] and | |||
| these support both IPv4 and IPv6. | these support both IPv4 and IPv6. | |||
| skipping to change at page 52, line 25 ¶ | skipping to change at page 53, line 10 ¶ | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 5, | "interval": 5, | |||
| "max-pkts-per-interval": 10, | "max-pkts-per-interval": 10, | |||
| "max-payload-size": 1500, | "max-payload-size": 1500, | |||
| "min-payload-size": 100, | "min-payload-size": 100, | |||
| "min-pkts-per-interval": 1 | "min-pkts-per-interval": 1 | |||
| }, | }, | |||
| "member-apps": [ | "member-app": [ | |||
| "app-0", | "app-0", | |||
| "app-1" | "app-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "200000000", | "min-bandwidth": "200000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 200000000, | "max-latency-variation": 200000000, | |||
| skipping to change at page 52, line 47 ¶ | skipping to change at page 53, line 32 ¶ | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 5, | "interval": 5, | |||
| "max-pkts-per-interval": 10, | "max-pkts-per-interval": 10, | |||
| "max-payload-size": 1500, | "max-payload-size": 1500, | |||
| "min-payload-size": 100, | "min-payload-size": 100, | |||
| "min-pkts-per-interval": 1 | "min-pkts-per-interval": 1 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1" | "ssl-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 5, | "interval": 5, | |||
| "max-pkts-per-interval": 10, | "max-pkts-per-interval": 10, | |||
| "max-payload-size": 1500 | "max-payload-size": 1500 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1" | "fsl-1" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "app-flows": { | "app-flows": { | |||
| "app-flow": [ | "app-flow": [ | |||
| { | { | |||
| "name": "app-0", | "name": "app-0", | |||
| "bidir-congruent": false, | "bidir-congruent": false, | |||
| "outgoing-service": "ssl-1", | "outgoing-service": "ssl-1", | |||
| skipping to change at page 56, line 18 ¶ | skipping to change at page 57, line 4 ¶ | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth4", | "name": "eth4", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2020-12-18T18:59:00-05:00" | "discontinuity-time": "2020-12-18T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 4: Example A-1 DetNet JSON configuration | Figure 4: Example A-1 DetNet JSON configuration | |||
| B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer | B.2. Example B-1 XML Config: Aggregation using a Forwarding Sub-layer | |||
| This illustrates aggrgation in the service sub-layers of DetNet. | This illustrates aggrgation in the service sub-layers of DetNet. | |||
| Flows 1 and 2 are aggregated into a forwarding sub-layer. A diagram | Flows 1 and 2 are aggregated into a forwarding sub-layer. A diagram | |||
| illustrating this case is shown and then the corresponding XML | illustrating this case is shown and then the corresponding XML | |||
| operational data follows. | operational data follows. | |||
| Please consult the PDF or HTML versions for the Case B-1 Diagram. | Please consult the PDF or HTML versions for the Case B-1 Diagram. | |||
| Figure 5: Case B-1 Example XML Config: Aggregation using a | Figure 5: Case B-1 Example XML Config: Aggregation using a | |||
| Forwarding Sub-layer | Forwarding Sub-layer | |||
| <interfaces | <interfaces | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
| xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | xmlns:ia="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
| <interface> | <interface> | |||
| <name>eth0</name> | <name>eth0</name> | |||
| <type>ia:ethernetCsmacd</type> | <type>ia:ethernetCsmacd</type> | |||
| <oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
| <statistics> | <statistics> | |||
| <discontinuity-time>2020-12-18T23:59:00Z</discontinuity-time> | <discontinuity-time | |||
| </statistics> | >2020-12-18T23:59:00Z</discontinuity-time> | |||
| </interface> | </statistics> | |||
| <interface> | </interface> | |||
| <name>eth1</name> | <interface> | |||
| <type>ia:ethernetCsmacd</type> | <name>eth1</name> | |||
| <oper-status>up</oper-status> | <type>ia:ethernetCsmacd</type> | |||
| <statistics> | <oper-status>up</oper-status> | |||
| <discontinuity-time>2020-12-18T23:59:00Z</discontinuity-time> | <statistics> | |||
| </statistics> | <discontinuity-time | |||
| </interface> | >2020-12-18T23:59:00Z</discontinuity-time> | |||
| <interface> | </statistics> | |||
| <name>eth2</name> | </interface> | |||
| <type>ia:ethernetCsmacd</type> | <interface> | |||
| <oper-status>up</oper-status> | <name>eth2</name> | |||
| <statistics> | <type>ia:ethernetCsmacd</type> | |||
| <discontinuity-time>2020-12-18T23:59:00Z</discontinuity-time> | <oper-status>up</oper-status> | |||
| </statistics> | <statistics> | |||
| </interface> | <discontinuity-time | |||
| <interface> | >2020-12-18T23:59:00Z</discontinuity-time> | |||
| <name>eth3</name> | </statistics> | |||
| <type>ia:ethernetCsmacd</type> | </interface> | |||
| <oper-status>up</oper-status> | <interface> | |||
| <statistics> | <name>eth3</name> | |||
| <discontinuity-time>2020-12-18T23:59:00Z</discontinuity-time> | <type>ia:ethernetCsmacd</type> | |||
| </statistics> | <oper-status>up</oper-status> | |||
| </interface> | <statistics> | |||
| <interface> | <discontinuity-time | |||
| <name>eth4</name> | >2020-12-18T23:59:00Z</discontinuity-time> | |||
| <type>ia:ethernetCsmacd</type> | </statistics> | |||
| <oper-status>up</oper-status> | </interface> | |||
| <statistics> | <interface> | |||
| <discontinuity-time>2020-12-18T23:59:00Z</discontinuity-time> | <name>eth4</name> | |||
| </statistics> | <type>ia:ethernetCsmacd</type> | |||
| </interface> | <oper-status>up</oper-status> | |||
| </interfaces> | <statistics> | |||
| <detnet | <discontinuity-time | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-detnet"> | >2020-12-18T23:59:00Z</discontinuity-time> | |||
| <app-flows> | </statistics> | |||
| <app-flow> | </interface> | |||
| <name>app-1</name> | </interfaces> | |||
| <bidir-congruent>false</bidir-congruent> | <detnet | |||
| <outgoing-service>ssl-1</outgoing-service> | xmlns="urn:ietf:params:xml:ns:yang:ietf-detnet"> | |||
| <traffic-profile>1</traffic-profile> | <app-flows> | |||
| <ingress> | <app-flow> | |||
| <app-flow-status>ready</app-flow-status> | <name>app-1</name> | |||
| <interface>eth0</interface> | <bidir-congruent>false</bidir-congruent> | |||
| <ip-app-flow> | <outgoing-service>ssl-1</outgoing-service> | |||
| <src-ip-prefix>192.0.2.1/32</src-ip-prefix> | <traffic-profile>1</traffic-profile> | |||
| <dest-ip-prefix>192.0.2.8/32</dest-ip-prefix> | <ingress> | |||
| <dscp>6</dscp> | <app-flow-status>ready</app-flow-status> | |||
| </ip-app-flow> | <interface>eth0</interface> | |||
| </ingress> | <ip-app-flow> | |||
| </app-flow> | <src-ip-prefix>192.0.2.1/32</src-ip-prefix> | |||
| <app-flow> | <dest-ip-prefix>192.0.2.8/32</dest-ip-prefix> | |||
| <name>app-2</name> | <dscp>6</dscp> | |||
| <bidir-congruent>false</bidir-congruent> | </ip-app-flow> | |||
| <outgoing-service>ssl-2</outgoing-service> | </ingress> | |||
| <traffic-profile>1</traffic-profile> | </app-flow> | |||
| <ingress> | <app-flow> | |||
| <app-flow-status>ready</app-flow-status> | <name>app-2</name> | |||
| <interface>eth1</interface> | <bidir-congruent>false</bidir-congruent> | |||
| <ip-app-flow> | <outgoing-service>ssl-2</outgoing-service> | |||
| <src-ip-prefix>192.0.2.2/32</src-ip-prefix> | <traffic-profile>1</traffic-profile> | |||
| <dest-ip-prefix>192.0.2.9/32</dest-ip-prefix> | <ingress> | |||
| <dscp>7</dscp> | <app-flow-status>ready</app-flow-status> | |||
| </ip-app-flow> | <interface>eth1</interface> | |||
| </ingress> | <ip-app-flow> | |||
| </app-flow> | <src-ip-prefix>192.0.2.2/32</src-ip-prefix> | |||
| </app-flows> | <dest-ip-prefix>192.0.2.9/32</dest-ip-prefix> | |||
| <traffic-profile> | <dscp>7</dscp> | |||
| <name>1</name> | </ip-app-flow> | |||
| <traffic-requirements> | </ingress> | |||
| <min-bandwidth>100000000</min-bandwidth> | </app-flow> | |||
| <max-latency>100000000</max-latency> | </app-flows> | |||
| <max-latency-variation>200000000</max-latency-variation> | <traffic-profile> | |||
| <max-loss>2</max-loss> | <name>1</name> | |||
| <max-consecutive-loss-tolerance>5</max-consecutive-loss-tolerance> | <traffic-requirements> | |||
| <max-misordering>0</max-misordering> | <min-bandwidth>100000000</min-bandwidth> | |||
| </traffic-requirements> | <max-latency>100000000</max-latency> | |||
| <member-apps>app-1</member-apps> | <max-latency-variation>200000000</max-latency-variation> | |||
| <member-apps>app-2</member-apps> | <max-loss>2</max-loss> | |||
| </traffic-profile> | <max-consecutive-loss-tolerance | |||
| <traffic-profile> | >5</max-consecutive-loss-tolerance> | |||
| <name>2</name> | <max-misordering>0</max-misordering> | |||
| <traffic-requirements> | </traffic-requirements> | |||
| <min-bandwidth>100000000</min-bandwidth> | <member-app>app-1</member-app> | |||
| <max-latency>100000000</max-latency> | <member-app>app-2</member-app> | |||
| <max-latency-variation>200000000</max-latency-variation> | </traffic-profile> | |||
| <max-loss>2</max-loss> | <traffic-profile> | |||
| <max-consecutive-loss-tolerance>5</max-consecutive-loss-tolerance> | <name>2</name> | |||
| <max-misordering>0</max-misordering> | <traffic-requirements> | |||
| </traffic-requirements> | <min-bandwidth>100000000</min-bandwidth> | |||
| <member-services>ssl-1</member-services> | <max-latency>100000000</max-latency> | |||
| <member-services>ssl-2</member-services> | <max-latency-variation>200000000</max-latency-variation> | |||
| </traffic-profile> | <max-loss>2</max-loss> | |||
| <traffic-profile> | <max-consecutive-loss-tolerance | |||
| <name>3</name> | >5</max-consecutive-loss-tolerance> | |||
| <traffic-spec> | <max-misordering>0</max-misordering> | |||
| <interval>5</interval> | </traffic-requirements> | |||
| <max-pkts-per-interval>10</max-pkts-per-interval> | <member-service>ssl-1</member-service> | |||
| <max-payload-size>1500</max-payload-size> | <member-service>ssl-2</member-service> | |||
| </traffic-spec> | </traffic-profile> | |||
| <member-fwd-sublayers>afl-1</member-fwd-sublayers> | <traffic-profile> | |||
| <name>3</name> | ||||
| </traffic-profile> | <traffic-spec> | |||
| <service> | <interval>5</interval> | |||
| <sub-layer> | <max-pkts-per-interval>10</max-pkts-per-interval> | |||
| <name>ssl-1</name> | <max-payload-size>1500</max-payload-size> | |||
| <service-rank>10</service-rank> | </traffic-spec> | |||
| <traffic-profile>2</traffic-profile> | <member-fwd-sublayer>afl-1</member-fwd-sublayer> | |||
| <operation>initiation</operation> | </traffic-profile> | |||
| <service-protection> | <service> | |||
| <protection>none</protection> | <sub-layer> | |||
| <sequence-number-length>long-sn</sequence-number-length> | <name>ssl-1</name> | |||
| </service-protection> | <service-rank>10</service-rank> | |||
| <incoming> | <traffic-profile>2</traffic-profile> | |||
| <app-flow> | <operation>initiation</operation> | |||
| <flow>app-1</flow> | <service-protection> | |||
| </app-flow> | <protection>none</protection> | |||
| </incoming> | <sequence-number-length>long-sn</sequence-number-length> | |||
| <outgoing> | </service-protection> | |||
| <forwarding-sub-layer> | <incoming> | |||
| <service-outgoing> | <app-flow> | |||
| <index>0</index> | <flow>app-1</flow> | |||
| <mpls-label-stack> | </app-flow> | |||
| <entry> | </incoming> | |||
| <id>0</id> | <outgoing> | |||
| <label>100</label> | <forwarding-sub-layer> | |||
| </entry> | <service-outgoing> | |||
| </mpls-label-stack> | <index>0</index> | |||
| <sub-layer>afl-1</sub-layer> | <mpls-label-stack> | |||
| </service-outgoing> | <entry> | |||
| </forwarding-sub-layer> | <id>0</id> | |||
| </outgoing> | <label>100</label> | |||
| </sub-layer> | </entry> | |||
| <sub-layer> | </mpls-label-stack> | |||
| <name>ssl-2</name> | <sub-layer>afl-1</sub-layer> | |||
| <service-rank>10</service-rank> | </service-outgoing> | |||
| <traffic-profile>2</traffic-profile> | </forwarding-sub-layer> | |||
| <operation>initiation</operation> | </outgoing> | |||
| <service-protection> | </sub-layer> | |||
| <protection>none</protection> | <sub-layer> | |||
| <sequence-number-length>long-sn</sequence-number-length> | <name>ssl-2</name> | |||
| </service-protection> | <service-rank>10</service-rank> | |||
| <incoming> | <traffic-profile>2</traffic-profile> | |||
| <app-flow> | <operation>initiation</operation> | |||
| <flow>app-2</flow> | <service-protection> | |||
| </app-flow> | <protection>none</protection> | |||
| </incoming> | <sequence-number-length>long-sn</sequence-number-length> | |||
| <outgoing> | </service-protection> | |||
| <forwarding-sub-layer> | <incoming> | |||
| <service-outgoing> | <app-flow> | |||
| <index>0</index> | <flow>app-2</flow> | |||
| <mpls-label-stack> | </app-flow> | |||
| <entry> | </incoming> | |||
| <id>0</id> | <outgoing> | |||
| <label>103</label> | <forwarding-sub-layer> | |||
| </entry> | <service-outgoing> | |||
| </mpls-label-stack> | <index>0</index> | |||
| <sub-layer>afl-1</sub-layer> | <mpls-label-stack> | |||
| </service-outgoing> | <entry> | |||
| </forwarding-sub-layer> | <id>0</id> | |||
| </outgoing> | <label>103</label> | |||
| </sub-layer> | </entry> | |||
| </service> | </mpls-label-stack> | |||
| <forwarding> | <sub-layer>afl-1</sub-layer> | |||
| <sub-layer> | </service-outgoing> | |||
| <name>afl-1</name> | </forwarding-sub-layer> | |||
| <traffic-profile>3</traffic-profile> | </outgoing> | |||
| <operation>impose-and-forward</operation> | </sub-layer> | |||
| <incoming> | </service> | |||
| <service-sub-layer> | <forwarding> | |||
| <sub-layer>ssl-1</sub-layer> | <sub-layer> | |||
| <sub-layer>ssl-2</sub-layer> | <name>afl-1</name> | |||
| </service-sub-layer> | <traffic-profile>3</traffic-profile> | |||
| </incoming> | <operation>impose-and-forward</operation> | |||
| <outgoing> | <incoming> | |||
| <interface> | <service-sub-layer> | |||
| <outgoing-interface>eth2</outgoing-interface> | <sub-layer>ssl-1</sub-layer> | |||
| <mpls-label-stack> | <sub-layer>ssl-2</sub-layer> | |||
| <entry> | </service-sub-layer> | |||
| <id>0</id> | </incoming> | |||
| <label>10000</label> | <outgoing> | |||
| </entry> | <interface> | |||
| </mpls-label-stack> | <outgoing-interface>eth2</outgoing-interface> | |||
| </interface> | <mpls-label-stack> | |||
| </outgoing> | <entry> | |||
| </sub-layer> | <id>0</id> | |||
| </forwarding> | <label>10000</label> | |||
| </detnet> | </entry> | |||
| </mpls-label-stack> | ||||
| </interface> | ||||
| </outgoing> | ||||
| </sub-layer> | ||||
| </forwarding> | ||||
| </detnet> | ||||
| Figure 6: Example B-1 DetNet XML configuration | Figure 6: Example B-1 DetNet XML configuration | |||
| B.3. Example B-2 JSON Service Aggregation Configuration | B.3. Example B-2 JSON Service Aggregation Configuration | |||
| This illustrates the service sub-layers of DetNet. Flows 1 and 2 are | This illustrates the service sub-layers of DetNet. Flows 1 and 2 are | |||
| aggregated into a service sub-layer of aggregated DetNet flow 1. A | aggregated into a service sub-layer of aggregated DetNet flow 1. A | |||
| diagram illustrating this case is shown and then the corresponding | diagram illustrating this case is shown and then the corresponding | |||
| JSON operational data follows. | JSON operational data follows. | |||
| Please consult the PDF or HTML versions for the Case B-2 Diagram. | Please consult the PDF or HTML versions for the Case B-2 Diagram. | |||
| skipping to change at page 61, line 22 ¶ | skipping to change at page 62, line 18 ¶ | |||
| { | { | |||
| "name": "1", | "name": "1", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 200000000, | "max-latency-variation": 200000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-apps": [ | "member-app": [ | |||
| "app-1", | "app-1", | |||
| "app-2" | "app-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "2", | "name": "2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "100000000", | "min-bandwidth": "100000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 200000000, | "max-latency-variation": 200000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "3", | "name": "3", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 5, | "interval": 5, | |||
| "max-pkts-per-interval": 10, | "max-pkts-per-interval": 10, | |||
| "max-payload-size": 1500 | "max-payload-size": 1500 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1" | "afl-1" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "app-flows": { | "app-flows": { | |||
| "app-flow": [ | "app-flow": [ | |||
| { | { | |||
| "name": "app-1", | "name": "app-1", | |||
| "bidir-congruent": false, | "bidir-congruent": false, | |||
| "outgoing-service": "ssl-1", | "outgoing-service": "ssl-1", | |||
| "traffic-profile": "1", | "traffic-profile": "1", | |||
| "ingress": { | "ingress": { | |||
| "app-flow-status": "ietf-detnet:ready", | "app-flow-status": "ietf-detnet:ready", | |||
| skipping to change at page 67, line 7 ¶ | skipping to change at page 67, line 52 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1", | "afl-1", | |||
| "afl-2" | "afl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2", | "fsl-2", | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4", | "fsl-4", | |||
| "fsl-5", | "fsl-5", | |||
| "fsl-6" | "fsl-6" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| skipping to change at page 75, line 4 ¶ | skipping to change at page 75, line 49 ¶ | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "name": "eth4", | "name": "eth4", | |||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2020-12-18T18:59:00-05:00" | "discontinuity-time": "2020-12-18T18:59:00-05:00" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 10: Example C-1 DetNet JSON Relay Service Aggregation | Figure 10: Example C-1 DetNet JSON 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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1", | "afl-1", | |||
| "afl-2" | "afl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2", | "fsl-2", | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4", | "fsl-4", | |||
| "fsl-5", | "fsl-5", | |||
| "fsl-6" | "fsl-6" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| "traffic-profile": "pf-1", | "traffic-profile": "pf-1", | |||
| "service-protection": { | "service-protection": { | |||
| "protection": "elimination", | "protection": "elimination", | |||
| "sequence-number-length": "long-sn" | "sequence-number-length": "long-sn" | |||
| skipping to change at page 83, line 40 ¶ | skipping to change at page 84, line 37 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1", | "afl-1", | |||
| "afl-2" | "afl-2" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 89, line 42 ¶ | skipping to change at page 90, line 37 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "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 90, line 4 ¶ | skipping to change at page 90, line 48 ¶ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1", | "afl-1", | |||
| "afl-2" | "afl-2" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 96, line 6 ¶ | skipping to change at page 96, line 50 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "200000000", | "min-bandwidth": "200000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "asl-1" | "asl-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-4", | "name": "pf-4", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4" | "fsl-4" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 102, line 46 ¶ | skipping to change at page 103, line 43 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "200000000", | "min-bandwidth": "200000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "asl-1" | "asl-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4" | "fsl-4" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-4", | "name": "pf-4", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 110, line 6 ¶ | skipping to change at page 110, line 50 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "200000000", | "min-bandwidth": "200000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "asl-1" | "asl-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2", | "fsl-2", | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4" | "fsl-4" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-4", | "name": "pf-4", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-5", | "fsl-5", | |||
| "fsl-6" | "fsl-6" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 118, line 18 ¶ | skipping to change at page 119, line 18 ¶ | |||
| { | { | |||
| "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": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "ssl-1", | "ssl-1", | |||
| "ssl-2" | "ssl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-requirements": { | "traffic-requirements": { | |||
| "min-bandwidth": "200000000", | "min-bandwidth": "200000000", | |||
| "max-latency": 100000000, | "max-latency": 100000000, | |||
| "max-latency-variation": 100000000, | "max-latency-variation": 100000000, | |||
| "max-loss": 2, | "max-loss": 2, | |||
| "max-consecutive-loss-tolerance": 5, | "max-consecutive-loss-tolerance": 5, | |||
| "max-misordering": 0 | "max-misordering": 0 | |||
| }, | }, | |||
| "member-services": [ | "member-service": [ | |||
| "asl-1" | "asl-1" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-3", | "name": "pf-3", | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-3", | "fsl-3", | |||
| "fsl-4", | "fsl-4", | |||
| "fsl-5", | "fsl-5", | |||
| "fsl-6" | "fsl-6" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-4", | "name": "pf-4", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "service": { | "service": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "ssl-1", | "name": "ssl-1", | |||
| "service-rank": 10, | "service-rank": 10, | |||
| skipping to change at page 126, line 27 ¶ | skipping to change at page 127, line 27 ¶ | |||
| { | { | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1" | "afl-1" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "forwarding": { | "forwarding": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "fsl-1", | "name": "fsl-1", | |||
| "traffic-profile": "pf-1", | "traffic-profile": "pf-1", | |||
| "operation": "pop-impose-and-forward", | "operation": "pop-impose-and-forward", | |||
| skipping to change at page 130, line 7 ¶ | skipping to change at page 131, line 7 ¶ | |||
| { | { | |||
| "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 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "fsl-1", | "fsl-1", | |||
| "fsl-2" | "fsl-2" | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "name": "pf-2", | "name": "pf-2", | |||
| "traffic-spec": { | "traffic-spec": { | |||
| "interval": 125, | "interval": 125, | |||
| "max-pkts-per-interval": 2, | "max-pkts-per-interval": 2, | |||
| "max-payload-size": 1518 | "max-payload-size": 1518 | |||
| }, | }, | |||
| "member-fwd-sublayers": [ | "member-fwd-sublayer": [ | |||
| "afl-1" | "afl-1" | |||
| ] | ] | |||
| } | } | |||
| ], | ], | |||
| "forwarding": { | "forwarding": { | |||
| "sub-layer": [ | "sub-layer": [ | |||
| { | { | |||
| "name": "fsl-1", | "name": "fsl-1", | |||
| "traffic-profile": "pf-1", | "traffic-profile": "pf-1", | |||
| "operation": "swap-and-forward", | "operation": "swap-and-forward", | |||
| End of changes. 72 change blocks. | ||||
| 706 lines changed or deleted | 745 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||