| < draft-ietf-detnet-yang-01.txt | draft-ietf-detnet-yang-02.txt > | |||
|---|---|---|---|---|
| Network Working Group X. Geng | Network Working Group X. Geng | |||
| Internet-Draft M. Chen | Internet-Draft M. Chen | |||
| Intended status: Standards Track Huawei Technologies | Intended status: Standards Track Huawei Technologies | |||
| Expires: July 18, 2019 Z. Li | Expires: September 27, 2019 Z. Li | |||
| China Mobile | China Mobile | |||
| R. Rahman | R. Rahman | |||
| Cisco Systems | Cisco Systems | |||
| January 14, 2019 | March 26, 2019 | |||
| Deterministic Networking (DetNet) Configuration YANG Model | Deterministic Networking (DetNet) Configuration YANG Model | |||
| draft-ietf-detnet-yang-01 | draft-ietf-detnet-yang-02 | |||
| Abstract | Abstract | |||
| This document contains the specification for Deterministic Networking | This document contains the specification for Deterministic Networking | |||
| flow configuration YANG Model. The model allows for provisioning of | flow configuration YANG Model. The model allows for provisioning of | |||
| end-to-end DetNet service along the path without dependency on any | end-to-end DetNet service along the path without dependency on any | |||
| signaling protocol. | signaling protocol. | |||
| The YANG module defined in this document conforms to the Network | The YANG module defined in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA). | Management Datastore Architecture (NMDA). | |||
| 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 July 18, 2019. | This Internet-Draft will expire on September 27, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. DetNet Configuration Model . . . . . . . . . . . . . . . . . 4 | 3. DetNet Configuration Model . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. DetNet Service Proxy Configuration Attributes . . . . . . 4 | 3.1. DetNet Service Proxy Configuration Attributes . . . . . . 4 | |||
| 3.2. DetNet Service Layer Configuration Attributes . . . . . . 5 | 3.2. DetNet Service Layer Configuration Attributes . . . . . . 5 | |||
| 3.3. DetNet Transport Layer Configuration Attributes . . . . . 7 | 3.3. DetNet Transport Layer Configuration Attributes . . . . . 8 | |||
| 4. DetNet Configuration YANG Structure . . . . . . . . . . . . . 8 | 4. DetNet Configuration YANG Structure . . . . . . . . . . . . . 9 | |||
| 5. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 14 | 5. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 17 | |||
| 6. DetNet Configuration Model Classification . . . . . . . . . . 31 | 6. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 6.1. Fully Distributed Configuration Model . . . . . . . . . . 31 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 6.2. Fully Centralized Configuration Model . . . . . . . . . . 31 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 43 | |||
| 6.3. Hybrid Configuration Model . . . . . . . . . . . . . . . 32 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 43 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | 10.2. Informative References . . . . . . . . . . . . . . . . . 44 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 34 | ||||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 35 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
| 1. Introduction | 1. Introduction | |||
| Deterministic Networking (DetNet) [I-D.ietf-detnet-architecture] is | Deterministic Networking (DetNet) [I-D.ietf-detnet-architecture] is | |||
| defined to provide high-quality network service with extremely low | defined to provide high-quality network service with extremely low | |||
| packet loss rate, bounded low latency and jitter. | packet loss rate, bounded low latency and jitter. | |||
| DetNet flow information is defined | DetNet flow information is defined | |||
| in[I-D.ietf-detnet-flow-information-model], and the DetNet models are | in[I-D.ietf-detnet-flow-information-model], and the DetNet models are | |||
| categorized as: | categorized as: | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| DetNet service proxy can also do flow filtering and policing at the | DetNet service proxy can also do flow filtering and policing at the | |||
| ingress to prevent the misbehaviored flows from going into the | ingress to prevent the misbehaviored flows from going into the | |||
| network, which needs: | network, which needs: | |||
| o Traffic Specification, refers to Section 7.2 of | o Traffic Specification, refers to Section 7.2 of | |||
| [I-D.ietf-detnet-flow-information-model] | [I-D.ietf-detnet-flow-information-model] | |||
| The YANG module structure is shown below: | The YANG module structure is shown below: | |||
| +--rw client-flow* [flow-id] | | +--rw client-flow* [flow-id] | |||
| | +--rw flow-id uint32 | | | +--rw flow-id uint32 | |||
| | +--rw (flow-type)? | | | +--rw flow-rank? boolean | |||
| | | +--:(l2-flow-identfication) | | | +--rw (flow-type)? | |||
| | | | +--rw source-mac-address? yang:mac-address | | | | +--:(l2-flow) | |||
| | | | +--rw destination-mac-address? yang:mac-address | | | | | +--rw source-mac-address? yang:mac-address | |||
| | | | +--rw ethertype? eth:ethertype | | | | | +--rw destination-mac-address? yang:mac-address | |||
| | | | +--rw vlan-id? uint16 | | | | | +--rw ethertype? eth:ethertype | |||
| | | | +--rw pcp | | | | | +--rw vlan-id? uint16 | |||
| | | +--:(l3-flow-identification) | | | | | +--rw pcp | |||
| | | +--rw (ip-flow-type)? | | | | +--:(l3-flow) | |||
| | | | +--:(ipv4) | | | | +--rw (ip-flow-type)? | |||
| | | | | +--rw src-ipv4-address? inet:ipv4-address | | | | | +--:(ipv4) | |||
| | | | | +--rw dest-ipv4-address? inet:ipv4-address | | | | | | +--rw src-ipv4-address? inet:ipv4-address | |||
| | | | | +--rw dscp? uint8 | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | |||
| | | | +--:(ipv6) | | | | | | +--rw dscp? uint8 | |||
| | | | +--rw src-ipv6-address? inet:ipv6-address | | | | | +--:(ipv6) | |||
| | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | | +--rw src-ipv6-address? inet:ipv6-address | |||
| | | | +--rw traffic-class? uint8 | | | | | +--rw dest-ipv6-address? inet:ipv6-address | |||
| | | | +--rw flow-label? inet:ipv6-flow-label | | | | | +--rw traffic-class? uint8 | |||
| | | +--rw source-port? inet:port-number | | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | +--rw destination-port? inet:port-number | | | | +--rw source-port? inet:port-number | |||
| | | +--rw protocol? uint8 | | | | +--rw destination-port? inet:port-number | |||
| | +--rw traffic-specification | | | | +--rw protocol? uint8 | |||
| | +--rw interval? uint32 | | | +--rw traffic-specification | |||
| | +--rw max-packets-per-interval? uint32 | | | +--rw interval? uint32 | |||
| | +--rw max-payload-size? uint32 | | | +--rw max-packets-per-interval? uint32 | |||
| | +--rw average-packets-per-interval? uint32 | | | +--rw max-payload-size? uint32 | |||
| | +--rw average-payload-size? uint32 | | | +--rw average-packets-per-interval? uint32 | |||
| | | +--rw average-payload-size? uint32 | ||||
| | +--rw service-function? service-function-type | ||||
| | +--rw sequence-number-generation-type? sequence-number-generation | ||||
| | +--rw sequence-number-length? uint8 | ||||
| 3.2. DetNet Service Layer Configuration Attributes | 3.2. DetNet Service Layer Configuration Attributes | |||
| DetNet service functions, e.g., DetNet tunnel initialization/ | DetNet service functions, e.g., DetNet tunnel initialization/ | |||
| termination and service protection, are provided in DetNet service | termination and service protection, are provided in DetNet service | |||
| layer. To support these functions, the following service attributes | layer. To support these functions, the following service attributes | |||
| need to be configured: | need to be configured: | |||
| o DetNet flow identification, refers to Section 7.1.3 of | o DetNet flow identification, refers to Section 7.1.3 of | |||
| [I-D.ietf-detnet-flow-information-model]. | [I-D.ietf-detnet-flow-information-model]. | |||
| skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 29 ¶ | |||
| o Service encapsulation, refers to Section 6.2 of | o Service encapsulation, refers to Section 6.2 of | |||
| [I-D.ietf-detnet-dp-sol-mpls] | [I-D.ietf-detnet-dp-sol-mpls] | |||
| o Transport encapsulation, refers to Section 6.2 of | o Transport encapsulation, refers to Section 6.2 of | |||
| [I-D.ietf-detnet-dp-sol-mpls]and Section 3 of | [I-D.ietf-detnet-dp-sol-mpls]and Section 3 of | |||
| [I-D.ietf-detnet-dp-sol-ip] | [I-D.ietf-detnet-dp-sol-ip] | |||
| The YANG module structure is shown below: | The YANG module structure is shown below: | |||
| | +--rw relay-node | +--:(relay-node) {detnet-mpls-dp-sol}? | |||
| | +--rw name? string | | +--rw relay-node | |||
| | +--rw flow-rank | | +--rw name? string | |||
| | +--rw service-rank | | +--rw service-rank | |||
| | +--rw in-segment* [in-segment-id] | | +--rw in-segment* [in-segment-id] | |||
| | | +--rw in-segment-id uint32 | | | +--rw in-segment-id uint32 | |||
| | | +--rw (flow-type)? | | | +--rw (flow-type)? | |||
| | | | +--:(IP) | | | | +--:(IP) | |||
| | | | | +--rw (ip-flow-type)? | | | | | +--rw (ip-flow-type)? | |||
| | | | | | +--:(ipv4) | | | | | | +--:(ipv4) | |||
| | | | | | | +--rw src-ipv4-address? inet:ipv4-address | | | | | | | +--rw src-ipv4-address? inet:ipv4-address | |||
| | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | |||
| | | | | | | +--rw dscp? uint8 | | | | | | | +--rw dscp? uint8 | |||
| | | | | | +--:(ipv6) | | | | | | +--:(ipv6) | |||
| | | | | | +--rw src-ipv6-address? inet:ipv6-address | | | | | | +--rw src-ipv6-address? inet:ipv6-address | |||
| | | | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | | | +--rw dest-ipv6-address? inet:ipv6-address | |||
| | | | | | +--rw traffic-class? uint8 | | | | | | +--rw traffic-class? uint8 | |||
| | | | | | +--rw flow-label? inet:ipv6-flow-label | | | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | | | +--rw source-port? inet:port-number | | | | | +--rw source-port? inet:port-number | |||
| | | | | +--rw destination-port? inet:port-number | | | | | +--rw destination-port? inet:port-number | |||
| | | | | +--rw protocol? uint8 | | | | | +--rw protocol? uint8 | |||
| | | | +--:(MPLS) | | | | +--:(MPLS) | |||
| | | | +--rw service-label uint32 | | | | +--rw service-label uint32 | |||
| | | +--rw service-function? service-function-type | | | +--rw service-function? service-function-type | |||
| | +--rw out-segment* [out-segment-id] | | +--rw out-segment* [out-segment-id] | |||
| | +--rw out-segment-id uint32 | | +--rw out-segment-id uint32 | |||
| | +--rw detnet-service-encapsulation | | +--rw detnet-service-encapsulation | |||
| | | +--rw service-label uint32 | | | +--rw service-label uint32 | |||
| | | +--rw control-word uint32 | | | +--rw control-word? uint32 | |||
| | +--rw detnet-transport-encapsulation | | +--rw detnet-transport-encapsulation | |||
| | +--rw (tunnel-type)? | | +--rw (tunnel-type)? | |||
| | | +--:(IPv4) | | | +--:(IPv4) {ipv4-tunnel}? | |||
| | | | +--rw ipv4-encaplustion | | | | +--rw ipv4-encapsulation | |||
| | | | +--rw src-ipv4-address inet:ipv4-address | | | | +--rw src-ipv4-address inet:ipv4-address | |||
| | | | +--rw dest-ipv4-address inet:ipv4-address | | | | +--rw dest-ipv4-address inet:ipv4-address | |||
| | | | +--rw protocol uint8 | | | | +--rw protocol uint8 | |||
| | | | +--rw ttl? uint8 | | | | +--rw ttl? uint8 | |||
| | | | +--rw dscp? uint8 | | | | +--rw dscp? uint8 | |||
| | | +--:(IPv6) | | | +--:(IPv6) {ipv6-tunnel}? | |||
| | | | +--rw ipv6-encaplustion | | | | +--rw ipv6-encapsulation | |||
| | | | +--rw src-ipv6-address inet:ipv6-address | | | | +--rw src-ipv6-address inet:ipv6-address | |||
| | | | +--rw dest-ipv6-address inet:ipv6-address | | | | +--rw dest-ipv6-address inet:ipv6-address | |||
| | | | +--rw next-header uint8 | | | | +--rw next-header uint8 | |||
| | | | +--rw traffic-class? uint8 | | | | +--rw traffic-class? uint8 | |||
| | | | +--rw flow-label? inet:ipv6-flow-label | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | | +--rw hop-limit? uint8 | | | | +--rw hop-limit? uint8 | |||
| | | +--:(MPLS) | | | +--:(MPLS) {mpls-tunnel}? | |||
| | | +--rw mpls-encaplustion | | | | +--rw mpls-encapsulation | |||
| | | +--rw label-operations* [label-oper-id] | | | | +--rw label-operations* [label-oper-id] | |||
| | | +--rw label-oper-id uint32 | | | | +--rw label-oper-id uint32 | |||
| | | +--rw (label-actions)? | | | | +--rw (label-actions)? | |||
| | | +--:(label-push) | | | | +--:(label-push) | |||
| | | | +--rw label-push | | | | | +--rw label-push | |||
| | | | +--rw label uint32 | | | | | +--rw label uint32 | |||
| | | | +--rw s-bit? boolean | | | | | +--rw s-bit? boolean | |||
| | | | +--rw tc-value? uint8 | | | | | +--rw tc-value? uint8 | |||
| | | | +--rw ttl-value? uint8 | | | | | +--rw ttl-value? uint8 | |||
| | | +--:(label-swap) | | | | +--:(label-swap) | |||
| | | +--rw label-swap | | | | +--rw label-swap | |||
| | | +--rw out-label uint32 | | | | +--rw out-label uint32 | |||
| | | +--rw ttl-action? ttl-action-definition | | | | +--rw ttl-action? ttl-action-definition | |||
| | +--rw interval? uint32 | | | +--:(MPLS-over-UDP) {mpls-over-udp-tunnel}? | |||
| | +--rw max-packets-per-interval? uint32 | | | +--rw mpls-over-udp-encaplustion | |||
| | +--rw max-payload-size? uint32 | | | +--rw label-operations* [label-oper-id] | |||
| | +--rw average-packets-per-interval? uint32 | | | | +--rw label-oper-id uint32 | |||
| | +--rw average-payload-size? uint32 | | | | +--rw (label-actions)? | |||
| | | | +--:(label-push) | ||||
| | | | | +--rw label-push | ||||
| | | | | +--rw label uint32 | ||||
| | | | | +--rw s-bit? boolean | ||||
| | | | | +--rw tc-value? uint8 | ||||
| | | | | +--rw ttl-value? uint8 | ||||
| | | | +--:(label-swap) | ||||
| | | | +--rw label-swap | ||||
| | | | +--rw out-label uint32 | ||||
| | | | +--rw ttl-action? ttl-action-definition | ||||
| | | +--rw source-port? inet:port-number | ||||
| | | +--rw destination-port? inet:port-number | ||||
| | | +--rw (address-family)? | ||||
| | | +--:(IPv4) | ||||
| | | | +--rw src-ipv4-address inet:ipv4-address | ||||
| | | | +--rw dest-ipv4-address inet:ipv4-address | ||||
| | | | +--rw protocol uint8 | ||||
| | | | +--rw ttl? uint8 | ||||
| | | | +--rw dscp? uint8 | ||||
| | | +--:(IPv6) | ||||
| | | +--rw src-ipv6-address inet:ipv6-address | ||||
| | | +--rw dest-ipv6-address inet:ipv6-address | ||||
| | | +--rw next-header uint8 | ||||
| | | +--rw traffic-class? uint8 | ||||
| | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | +--rw hop-limit? uint8 | ||||
| 3.3. DetNet Transport Layer Configuration Attributes | 3.3. DetNet Transport Layer Configuration Attributes | |||
| As defined in [I-D.ietf-detnet-architecture], DetNet transport layer | As defined in [I-D.ietf-detnet-architecture], DetNet transport layer | |||
| optionally provides congestion protection for DetNet flows over paths | optionally provides congestion protection for DetNet flows over paths | |||
| provided by the underlying network. Explicit route is another | provided by the underlying network. Explicit route is another | |||
| mechanism that is used by DetNet to avoid temporary interruptions | mechanism that is used by DetNet to avoid temporary interruptions | |||
| caused by the convergence of routing or bridging protocols, and it is | caused by the convergence of routing or bridging protocols, and it is | |||
| also implemented at the DetNet transport layer. | also implemented at the DetNet transport layer. | |||
| skipping to change at page 8, line 22 ¶ | skipping to change at page 9, line 5 ¶ | |||
| o Explicit path, existing explicit route mechanisms can be reused. | o Explicit path, existing explicit route mechanisms can be reused. | |||
| For example, if Segment Routing (SR) tunnel is used as the | For example, if Segment Routing (SR) tunnel is used as the | |||
| transport tunnel, the configuration is mainly at the ingress node | transport tunnel, the configuration is mainly at the ingress node | |||
| of the transport layer; if the static MPLS tunnel is used as the | of the transport layer; if the static MPLS tunnel is used as the | |||
| transport tunnel, the configurations need to be at every transit | transport tunnel, the configurations need to be at every transit | |||
| node along the path; for pure IP based transport tunnel, it's | node along the path; for pure IP based transport tunnel, it's | |||
| similar to the static MPLS case. | similar to the static MPLS case. | |||
| The YANG module structure is shown below: | The YANG module structure is shown below: | |||
| | +--rw transit-node | +--:(transit-node) | |||
| | +--rw interval? uint32 | | +--rw transit-node | |||
| | +--rw max-packets-per-interval? uint32 | | +--rw interval? uint32 | |||
| | +--rw max-payload-size? uint32 | | +--rw max-packets-per-interval? uint32 | |||
| | +--rw average-packets-per-interval? uint32 | | +--rw max-payload-size? uint32 | |||
| | +--rw average-payload-size? uint32 | | +--rw average-packets-per-interval? uint32 | |||
| | +--rw average-payload-size? uint32 | ||||
| The parameters for DetNet transport QoS are defined in Section 5. | The parameters for DetNet transport QoS are defined in Section 5. | |||
| 4. DetNet Configuration YANG Structure | 4. DetNet Configuration YANG Structure | |||
| module: ietf-detnet-flow-config | module: ietf-detnet-flow-config | |||
| +--rw detnet-flow | +--rw detnet-flow | |||
| +--rw (detnet-node-role)? | +--rw (detnet-node-role)? | |||
| +--:(transit-node) | +--:(transit-node) | |||
| | +--rw transit-node | | +--rw transit-node | |||
| | +--rw interval? uint32 | | +--rw interval? uint32 | |||
| | +--rw max-packets-per-interval? uint32 | | +--rw max-packets-per-interval? uint32 | |||
| | +--rw max-payload-size? uint32 | | +--rw max-payload-size? uint32 | |||
| | +--rw average-packets-per-interval? uint32 | | +--rw average-packets-per-interval? uint32 | |||
| | +--rw average-payload-size? uint32 | | +--rw average-payload-size? uint32 | |||
| +--:(relay-node) | +--:(relay-node) {detnet-mpls-dp-sol}? | |||
| | +--rw relay-node | | +--rw relay-node | |||
| | +--rw name? string | | +--rw name? string | |||
| | +--rw flow-rank | | +--rw service-rank | |||
| | +--rw service-rank | | +--rw in-segment* [in-segment-id] | |||
| | +--rw in-segment* [in-segment-id] | | | +--rw in-segment-id uint32 | |||
| | | +--rw in-segment-id uint32 | ||||
| | | +--rw (flow-type)? | ||||
| | | | +--:(IP) | ||||
| | | | | +--rw (ip-flow-type)? | ||||
| | | | | | +--:(ipv4) | ||||
| | | | | | | +--rw src-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dscp? uint8 | ||||
| | | | | | +--:(ipv6) | ||||
| | | | | | +--rw src-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw dest-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw traffic-class? uint8 | ||||
| | | | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | | +--rw source-port? inet:port-number | ||||
| | | | | +--rw destination-port? inet:port-number | ||||
| | | | | +--rw protocol? uint8 | ||||
| | | | +--:(MPLS) | ||||
| | | | +--rw service-label uint32 | ||||
| | | +--rw service-function? service-function-type | ||||
| | +--rw out-segment* [out-segment-id] | ||||
| | +--rw out-segment-id uint32 | ||||
| | +--rw detnet-service-encapsulation | ||||
| | | +--rw service-label uint32 | ||||
| | | +--rw control-word uint32 | ||||
| | +--rw detnet-transport-encapsulation | ||||
| | +--rw (tunnel-type)? | ||||
| | | +--:(IPv4) | ||||
| | | | +--rw ipv4-encaplustion | ||||
| | | | +--rw src-ipv4-address inet:ipv4-address | ||||
| | | | +--rw dest-ipv4-address inet:ipv4-address | ||||
| | | | +--rw protocol uint8 | ||||
| | | | +--rw ttl? uint8 | ||||
| | | | +--rw dscp? uint8 | ||||
| | | +--:(IPv6) | ||||
| | | | +--rw ipv6-encaplustion | ||||
| | | | +--rw src-ipv6-address inet:ipv6-address | ||||
| | | | +--rw dest-ipv6-address inet:ipv6-address | ||||
| | | | +--rw next-header uint8 | ||||
| | | | +--rw traffic-class? uint8 | ||||
| | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | +--rw hop-limit? uint8 | ||||
| | | +--:(MPLS) | ||||
| | | +--rw mpls-encaplustion | ||||
| | | +--rw label-operations* [label-oper-id] | ||||
| | | +--rw label-oper-id uint32 | ||||
| | | +--rw (label-actions)? | ||||
| | | +--:(label-push) | ||||
| | | | +--rw label-push | ||||
| | | | +--rw label uint32 | ||||
| | | | +--rw s-bit? boolean | ||||
| | | | +--rw tc-value? uint8 | ||||
| | | | +--rw ttl-value? uint8 | ||||
| | | +--:(label-swap) | ||||
| | | +--rw label-swap | ||||
| | | +--rw out-label uint32 | ||||
| | | +--rw ttl-action? ttl-action-definition | ||||
| | +--rw interval? uint32 | ||||
| | +--rw max-packets-per-interval? uint32 | ||||
| | +--rw max-payload-size? uint32 | ||||
| | +--rw average-packets-per-interval? uint32 | ||||
| | +--rw average-payload-size? uint32 | ||||
| +--:(edge-node) | ||||
| | +--rw edge-node | ||||
| | +--rw client-flow* [flow-id] | ||||
| | | +--rw flow-id uint32 | ||||
| | | +--rw (flow-type)? | | | +--rw (flow-type)? | |||
| | | | +--:(l2-flow-identfication) | | | | +--:(IP) | |||
| | | | | +--rw source-mac-address? yang:mac-address | | | | | +--rw (ip-flow-type)? | |||
| | | | | +--rw destination-mac-address? yang:mac-address | | | | | | +--:(ipv4) | |||
| | | | | +--rw ethertype? eth:ethertype | | | | | | | +--rw src-ipv4-address? inet:ipv4-address | |||
| | | | | +--rw vlan-id? uint16 | | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | |||
| | | | | +--rw pcp | | | | | | | +--rw dscp? uint8 | |||
| | | | +--:(l3-flow-identification) | | | | | | +--:(ipv6) | |||
| | | | +--rw (ip-flow-type)? | | | | | | +--rw src-ipv6-address? inet:ipv6-address | |||
| | | | | +--:(ipv4) | | | | | | +--rw dest-ipv6-address? inet:ipv6-address | |||
| | | | | | +--rw src-ipv4-address? inet:ipv4-address | | | | | | +--rw traffic-class? uint8 | |||
| | | | | | +--rw dest-ipv4-address? inet:ipv4-address | | | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | | | | +--rw dscp? uint8 | | | | | +--rw source-port? inet:port-number | |||
| | | | | +--:(ipv6) | | | | | +--rw destination-port? inet:port-number | |||
| | | | | +--rw src-ipv6-address? inet:ipv6-address | | | | | +--rw protocol? uint8 | |||
| | | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | +--:(MPLS) | |||
| | | | | +--rw traffic-class? uint8 | | | | +--rw service-label uint32 | |||
| | | | | +--rw flow-label? inet:ipv6-flow-label | | | +--rw service-function? service-function-type | |||
| | | | +--rw source-port? inet:port-number | | +--rw out-segment* [out-segment-id] | |||
| | | | +--rw destination-port? inet:port-number | | +--rw out-segment-id uint32 | |||
| | | | +--rw protocol? uint8 | | +--rw detnet-service-encapsulation | |||
| | | +--rw traffic-specification | | | +--rw service-label uint32 | |||
| | | +--rw interval? uint32 | | | +--rw control-word? uint32 | |||
| | | +--rw max-packets-per-interval? uint32 | | +--rw detnet-transport-encapsulation | |||
| | | +--rw max-payload-size? uint32 | | +--rw (tunnel-type)? | |||
| | | +--rw average-packets-per-interval? uint32 | | | +--:(IPv4) {ipv4-tunnel}? | |||
| | | +--rw average-payload-size? uint32 | | | | +--rw ipv4-encapsulation | |||
| | +--rw detnet-service-instance | | | | +--rw src-ipv4-address inet:ipv4-address | |||
| | +--rw name? string | | | | +--rw dest-ipv4-address inet:ipv4-address | |||
| | +--rw flow-rank | | | | +--rw protocol uint8 | |||
| | +--rw service-rank | | | | +--rw ttl? uint8 | |||
| | +--rw in-segment* [in-segment-id] | | | | +--rw dscp? uint8 | |||
| | | +--rw in-segment-id uint32 | | | +--:(IPv6) {ipv6-tunnel}? | |||
| | | +--rw (flow-type)? | | | | +--rw ipv6-encapsulation | |||
| | | | +--:(IP) | | | | +--rw src-ipv6-address inet:ipv6-address | |||
| | | | | +--rw (ip-flow-type)? | | | | +--rw dest-ipv6-address inet:ipv6-address | |||
| | | | | | +--:(ipv4) | | | | +--rw next-header uint8 | |||
| | | | | | | +--rw src-ipv4-address? inet:ipv4-address | | | | +--rw traffic-class? uint8 | |||
| | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | | | | | +--rw dscp? uint8 | | | | +--rw hop-limit? uint8 | |||
| | | | | | +--:(ipv6) | | | +--:(MPLS) {mpls-tunnel}? | |||
| | | | | | +--rw src-ipv6-address? inet:ipv6-address | | | | +--rw mpls-encapsulation | |||
| | | | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | +--rw label-operations* [label-oper-id] | |||
| | | | | | +--rw traffic-class? uint8 | | | | +--rw label-oper-id uint32 | |||
| | | | | | +--rw flow-label? inet:ipv6-flow-label | | | | +--rw (label-actions)? | |||
| | | | | +--rw source-port? inet:port-number | | | | +--:(label-push) | |||
| | | | | +--rw destination-port? inet:port-number | | | | | +--rw label-push | |||
| | | | | +--rw protocol? uint8 | | | | | +--rw label uint32 | |||
| | | | +--:(MPLS) | | | | | +--rw s-bit? boolean | |||
| | | | +--rw service-label uint32 | | | | | +--rw tc-value? uint8 | |||
| | | +--rw service-function? service-function-type | | | | | +--rw ttl-value? uint8 | |||
| | +--rw out-segment* [out-segment-id] | | | | +--:(label-swap) | |||
| | +--rw out-segment-id uint32 | | | | +--rw label-swap | |||
| | +--rw detnet-service-encapsulation | | | | +--rw out-label uint32 | |||
| | | +--rw service-label uint32 | | | | +--rw ttl-action? ttl-action-definition | |||
| | | +--rw control-word uint32 | | | +--:(MPLS-over-UDP) {mpls-over-udp-tunnel}? | |||
| | +--rw detnet-transport-encapsulation | | | +--rw mpls-over-udp-encaplustion | |||
| | +--rw (tunnel-type)? | | | +--rw label-operations* [label-oper-id] | |||
| | | +--:(IPv4) | | | | +--rw label-oper-id uint32 | |||
| | | | +--rw ipv4-encaplustion | | | | +--rw (label-actions)? | |||
| | | | +--rw src-ipv4-address inet:ipv4-address | | | | +--:(label-push) | |||
| | | | +--rw dest-ipv4-address inet:ipv4-address | | | | | +--rw label-push | |||
| | | | +--rw protocol uint8 | | | | | +--rw label uint32 | |||
| | | | +--rw ttl? uint8 | | | | | +--rw s-bit? boolean | |||
| | | | +--rw dscp? uint8 | | | | | +--rw tc-value? uint8 | |||
| | | +--:(IPv6) | | | | | +--rw ttl-value? uint8 | |||
| | | | +--rw ipv6-encaplustion | | | | +--:(label-swap) | |||
| | | | +--rw src-ipv6-address inet:ipv6-address | | | | +--rw label-swap | |||
| | | | +--rw dest-ipv6-address inet:ipv6-address | | | | +--rw out-label uint32 | |||
| | | | +--rw next-header uint8 | | | | +--rw ttl-action? ttl-action-definition | |||
| | | | +--rw traffic-class? uint8 | | | +--rw source-port? inet:port-number | |||
| | | | +--rw flow-label? inet:ipv6-flow-label | | | +--rw destination-port? inet:port-number | |||
| | | | +--rw hop-limit? uint8 | | | +--rw (address-family)? | |||
| | | +--:(MPLS) | | | +--:(IPv4) | |||
| | | +--rw mpls-encaplustion | | | | +--rw src-ipv4-address inet:ipv4-address | |||
| | | +--rw label-operations* [label-oper-id] | | | | +--rw dest-ipv4-address inet:ipv4-address | |||
| | | +--rw label-oper-id uint32 | | | | +--rw protocol uint8 | |||
| | | +--rw (label-actions)? | | | | +--rw ttl? uint8 | |||
| | | +--:(label-push) | | | | +--rw dscp? uint8 | |||
| | | | +--rw label-push | | | +--:(IPv6) | |||
| | | | +--rw label uint32 | | | +--rw src-ipv6-address inet:ipv6-address | |||
| | | | +--rw s-bit? boolean | | | +--rw dest-ipv6-address inet:ipv6-address | |||
| | | | +--rw tc-value? uint8 | | | +--rw next-header uint8 | |||
| | | | +--rw ttl-value? uint8 | | | +--rw traffic-class? uint8 | |||
| | | +--:(label-swap) | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | | +--rw label-swap | | | +--rw hop-limit? uint8 | |||
| | | +--rw out-label uint32 | | +--rw interval? uint32 | |||
| | | +--rw ttl-action? ttl-action-definition | | +--rw max-packets-per-interval? uint32 | |||
| | +--rw interval? uint32 | | +--rw max-payload-size? uint32 | |||
| | +--rw max-packets-per-interval? uint32 | | +--rw average-packets-per-interval? uint32 | |||
| | +--rw max-payload-size? uint32 | | +--rw average-payload-size? uint32 | |||
| | +--rw average-packets-per-interval? uint32 | +--:(edge-node) {detnet-mpls-dp-sol}? | |||
| | +--rw average-payload-size? uint32 | | +--rw edge-node | |||
| | +--rw (edge-node-type)? | ||||
| | +--:(ingress-node) | ||||
| | | +--rw client-flow* [flow-id] | ||||
| | | | +--rw flow-id uint32 | ||||
| | | | +--rw flow-rank? boolean | ||||
| | | | +--rw (flow-type)? | ||||
| | | | | +--:(l2-flow) | ||||
| | | | | | +--rw source-mac-address? yang:mac-address | ||||
| | | | | | +--rw destination-mac-address? yang:mac-address | ||||
| | | | | | +--rw ethertype? eth:ethertype | ||||
| | | | | | +--rw vlan-id? uint16 | ||||
| | | | | | +--rw pcp | ||||
| | | | | +--:(l3-flow) | ||||
| | | | | +--rw (ip-flow-type)? | ||||
| | | | | | +--:(ipv4) | ||||
| | | | | | | +--rw src-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dscp? uint8 | ||||
| | | | | | +--:(ipv6) | ||||
| | | | | | +--rw src-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw dest-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw traffic-class? uint8 | ||||
| | | | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | | +--rw source-port? inet:port-number | ||||
| | | | | +--rw destination-port? inet:port-number | ||||
| | | | | +--rw protocol? uint8 | ||||
| | | | +--rw traffic-specification | ||||
| | | | +--rw interval? uint32 | ||||
| | | | +--rw max-packets-per-interval? uint32 | ||||
| | | | +--rw max-payload-size? uint32 | ||||
| | | | +--rw average-packets-per-interval? uint32 | ||||
| | | | +--rw average-payload-size? uint32 | ||||
| | | +--rw service-function? service-function-type | ||||
| | | +--rw sequence-number-generation-type? sequence-number-generation | ||||
| | | +--rw sequence-number-length? uint8 | ||||
| | | +--rw out-segment* [out-segment-id] | ||||
| | | +--rw out-segment-id uint32 | ||||
| | | +--rw detnet-service-encapsulation | ||||
| | | | +--rw service-label uint32 | ||||
| | | | +--rw control-word? uint32 | ||||
| | | +--rw detnet-transport-encapsulation | ||||
| | | +--rw (tunnel-type)? | ||||
| | | | +--:(IPv4) {ipv4-tunnel}? | ||||
| | | | | +--rw ipv4-encapsulation | ||||
| | | | | +--rw src-ipv4-address inet:ipv4-address | ||||
| | | | | +--rw dest-ipv4-address inet:ipv4-address | ||||
| | | | | +--rw protocol uint8 | ||||
| | | | | +--rw ttl? uint8 | ||||
| | | | | +--rw dscp? uint8 | ||||
| | | | +--:(IPv6) {ipv6-tunnel}? | ||||
| | | | | +--rw ipv6-encapsulation | ||||
| | | | | +--rw src-ipv6-address inet:ipv6-address | ||||
| | | | | +--rw dest-ipv6-address inet:ipv6-address | ||||
| | | | | +--rw next-header uint8 | ||||
| | | | | +--rw traffic-class? uint8 | ||||
| | | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | | +--rw hop-limit? uint8 | ||||
| | | | +--:(MPLS) {mpls-tunnel}? | ||||
| | | | | +--rw mpls-encapsulation | ||||
| | | | | +--rw label-operations* [label-oper-id] | ||||
| | | | | +--rw label-oper-id uint32 | ||||
| | | | | +--rw (label-actions)? | ||||
| | | | | +--:(label-push) | ||||
| | | | | | +--rw label-push | ||||
| | | | | | +--rw label uint32 | ||||
| | | | | | +--rw s-bit? boolean | ||||
| | | | | | +--rw tc-value? uint8 | ||||
| | | | | | +--rw ttl-value? uint8 | ||||
| | | | | +--:(label-swap) | ||||
| | | | | +--rw label-swap | ||||
| | | | | +--rw out-label uint32 | ||||
| | | | | +--rw ttl-action? ttl-action-definition | ||||
| | | | +--:(MPLS-over-UDP) {mpls-over-udp-tunnel}? | ||||
| | | | +--rw mpls-over-udp-encaplustion | ||||
| | | | +--rw label-operations* [label-oper-id] | ||||
| | | | | +--rw label-oper-id uint32 | ||||
| | | | | +--rw (label-actions)? | ||||
| | | | | +--:(label-push) | ||||
| | | | | | +--rw label-push | ||||
| | | | | | +--rw label uint32 | ||||
| | | | | | +--rw s-bit? boolean | ||||
| | | | | | +--rw tc-value? uint8 | ||||
| | | | | | +--rw ttl-value? uint8 | ||||
| | | | | +--:(label-swap) | ||||
| | | | | +--rw label-swap | ||||
| | | | | +--rw out-label uint32 | ||||
| | | | | +--rw ttl-action? ttl-action-definition | ||||
| | | | +--rw source-port? inet:port-number | ||||
| | | | +--rw destination-port? inet:port-number | ||||
| | | | +--rw (address-family)? | ||||
| | | | +--:(IPv4) | ||||
| | | | | +--rw src-ipv4-address inet:ipv4-address | ||||
| | | | | +--rw dest-ipv4-address inet:ipv4-address | ||||
| | | | | +--rw protocol uint8 | ||||
| | | | | +--rw ttl? uint8 | ||||
| | | | | +--rw dscp? uint8 | ||||
| | | | +--:(IPv6) | ||||
| | | | +--rw src-ipv6-address inet:ipv6-address | ||||
| | | | +--rw dest-ipv6-address inet:ipv6-address | ||||
| | | | +--rw next-header uint8 | ||||
| | | | +--rw traffic-class? uint8 | ||||
| | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | +--rw hop-limit? uint8 | ||||
| | | +--rw interval? uint32 | ||||
| | | +--rw max-packets-per-interval? uint32 | ||||
| | | +--rw max-payload-size? uint32 | ||||
| | | +--rw average-packets-per-interval? uint32 | ||||
| | | +--rw average-payload-size? uint32 | ||||
| | +--:(egress-node) | ||||
| | +--rw in-segment* [in-segment-id] | ||||
| | | +--rw in-segment-id uint32 | ||||
| | | +--rw (flow-type)? | ||||
| | | | +--:(IP) | ||||
| | | | | +--rw (ip-flow-type)? | ||||
| | | | | | +--:(ipv4) | ||||
| | | | | | | +--rw src-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | ||||
| | | | | | | +--rw dscp? uint8 | ||||
| | | | | | +--:(ipv6) | ||||
| | | | | | +--rw src-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw dest-ipv6-address? inet:ipv6-address | ||||
| | | | | | +--rw traffic-class? uint8 | ||||
| | | | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | | +--rw source-port? inet:port-number | ||||
| | | | | +--rw destination-port? inet:port-number | ||||
| | | | | +--rw protocol? uint8 | ||||
| | | | +--:(MPLS) | ||||
| | | | +--rw service-label uint32 | ||||
| | | +--rw service-function? service-function-type | ||||
| | +--rw (tunnel-type)? | ||||
| | | +--:(ipv4) {ipv4-tunnel}? | ||||
| | | | +--rw ipv4-decap | ||||
| | | | +--rw ipv4-decap tunnel-decap-action-def | ||||
| | | | +--rw ttl-action? ttl-action-def | ||||
| | | +--:(ipv6) {ipv6-tunnel}? | ||||
| | | | +--rw ipv6-decap | ||||
| | | | +--rw ipv6-decap tunnel-decap-action-def | ||||
| | | | +--rw hop-limit-action? hop-limit-action-def | ||||
| | | +--:(mpls) {mpls-tunnel}? | ||||
| | | +--rw label-pop | ||||
| | | +--rw label-pop mpls-label-action-def | ||||
| | | +--rw ttl-action? ttl-action-def | ||||
| | +--rw label-pop mpls-label-action-def | ||||
| | +--rw ttl-action? ttl-action-def | ||||
| +--:(end-station) | +--:(end-station) | |||
| +--rw end-station | +--rw end-station | |||
| +--rw client-flow* [flow-id] | +--rw (edge-node-type)? | |||
| | +--rw flow-id uint32 | +--:(ingress-node) | |||
| | +--rw (flow-type)? | | +--rw client-flow* [flow-id] | |||
| | | +--:(l2-flow-identfication) | | | +--rw flow-id uint32 | |||
| | | | +--rw source-mac-address? yang:mac-address | | | +--rw flow-rank? boolean | |||
| | | | +--rw destination-mac-address? yang:mac-address | | | +--rw (flow-type)? | |||
| | | | +--rw ethertype? eth:ethertype | | | | +--:(l2-flow) | |||
| | | | +--rw vlan-id? uint16 | | | | | +--rw source-mac-address? yang:mac-address | |||
| | | | +--rw pcp | | | | | +--rw destination-mac-address? yang:mac-address | |||
| | | +--:(l3-flow-identification) | | | | | +--rw ethertype? eth:ethertype | |||
| | | +--rw (ip-flow-type)? | | | | | +--rw vlan-id? uint16 | |||
| | | | +--:(ipv4) | | | | | +--rw pcp | |||
| | | | | +--rw src-ipv4-address? inet:ipv4-address | | | | +--:(l3-flow) | |||
| | | | | +--rw dest-ipv4-address? inet:ipv4-address | | | | +--rw (ip-flow-type)? | |||
| | | | | +--rw dscp? uint8 | | | | | +--:(ipv4) | |||
| | | | +--:(ipv6) | | | | | | +--rw src-ipv4-address? inet:ipv4-address | |||
| | | | +--rw src-ipv6-address? inet:ipv6-address | | | | | | +--rw dest-ipv4-address? inet:ipv4-address | |||
| | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | | | +--rw dscp? uint8 | |||
| | | | +--rw traffic-class? uint8 | | | | | +--:(ipv6) | |||
| | | | +--rw flow-label? inet:ipv6-flow-label | | | | | +--rw src-ipv6-address? inet:ipv6-address | |||
| | | +--rw source-port? inet:port-number | | | | | +--rw dest-ipv6-address? inet:ipv6-address | |||
| | | +--rw destination-port? inet:port-number | | | | | +--rw traffic-class? uint8 | |||
| | | +--rw protocol? uint8 | | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | +--rw traffic-specification | | | | +--rw source-port? inet:port-number | |||
| | +--rw interval? uint32 | | | | +--rw destination-port? inet:port-number | |||
| | +--rw max-packets-per-interval? uint32 | | | | +--rw protocol? uint8 | |||
| | +--rw max-payload-size? uint32 | | | +--rw traffic-specification | |||
| | +--rw average-packets-per-interval? uint32 | | | +--rw interval? uint32 | |||
| | +--rw average-payload-size? uint32 | | | +--rw max-packets-per-interval? uint32 | |||
| +--rw detnet-service-instance | | | +--rw max-payload-size? uint32 | |||
| +--rw name? string | | | +--rw average-packets-per-interval? uint32 | |||
| +--rw flow-rank | | | +--rw average-payload-size? uint32 | |||
| +--rw service-rank | | +--rw service-function? service-function-type | |||
| +--rw in-segment* [in-segment-id] | | +--rw sequence-number-generation-type? sequence-number-generation | |||
| | +--rw in-segment-id uint32 | | +--rw sequence-number-length? uint8 | |||
| | +--rw (flow-type)? | | +--rw out-segment* [out-segment-id] | |||
| | | +--:(IP) | | +--rw out-segment-id uint32 | |||
| | | | +--rw (ip-flow-type)? | | +--rw detnet-service-encapsulation | |||
| | | | | +--:(ipv4) | | | +--rw service-label uint32 | |||
| | | | | | +--rw src-ipv4-address? inet:ipv4-address | | | +--rw control-word? uint32 | |||
| | | | | | +--rw dest-ipv4-address? inet:ipv4-address | | +--rw detnet-transport-encapsulation | |||
| | | | | | +--rw dscp? uint8 | | +--rw (tunnel-type)? | |||
| | | | | +--:(ipv6) | | | +--:(IPv4) {ipv4-tunnel}? | |||
| | | | | +--rw src-ipv6-address? inet:ipv6-address | | | | +--rw ipv4-encapsulation | |||
| | | | | +--rw dest-ipv6-address? inet:ipv6-address | | | | +--rw src-ipv4-address inet:ipv4-address | |||
| | | | | +--rw traffic-class? uint8 | | | | +--rw dest-ipv4-address inet:ipv4-address | |||
| | | | | +--rw flow-label? inet:ipv6-flow-label | | | | +--rw protocol uint8 | |||
| | | | +--rw source-port? inet:port-number | | | | +--rw ttl? uint8 | |||
| | | | +--rw destination-port? inet:port-number | | | | +--rw dscp? uint8 | |||
| | | | +--rw protocol? uint8 | | | +--:(IPv6) {ipv6-tunnel}? | |||
| | | +--:(MPLS) | | | | +--rw ipv6-encapsulation | |||
| | | +--rw service-label uint32 | | | | +--rw src-ipv6-address inet:ipv6-address | |||
| | +--rw service-function? service-function-type | | | | +--rw dest-ipv6-address inet:ipv6-address | |||
| +--rw out-segment* [out-segment-id] | | | | +--rw next-header uint8 | |||
| +--rw out-segment-id uint32 | | | | +--rw traffic-class? uint8 | |||
| +--rw detnet-service-encapsulation | | | | +--rw flow-label? inet:ipv6-flow-label | |||
| | +--rw service-label uint32 | | | | +--rw hop-limit? uint8 | |||
| | +--rw control-word uint32 | | | +--:(MPLS) {mpls-tunnel}? | |||
| +--rw detnet-transport-encapsulation | | | | +--rw mpls-encapsulation | |||
| +--rw (tunnel-type)? | | | | +--rw label-operations* [label-oper-id] | |||
| | +--:(IPv4) | | | | +--rw label-oper-id uint32 | |||
| | | +--rw ipv4-encaplustion | | | | +--rw (label-actions)? | |||
| | | +--rw src-ipv4-address inet:ipv4-address | | | | +--:(label-push) | |||
| | | +--rw dest-ipv4-address inet:ipv4-address | | | | | +--rw label-push | |||
| | | +--rw protocol uint8 | | | | | +--rw label uint32 | |||
| | | +--rw ttl? uint8 | | | | | +--rw s-bit? boolean | |||
| | | +--rw dscp? uint8 | | | | | +--rw tc-value? uint8 | |||
| | +--:(IPv6) | | | | | +--rw ttl-value? uint8 | |||
| | | +--rw ipv6-encaplustion | | | | +--:(label-swap) | |||
| | | +--rw src-ipv6-address inet:ipv6-address | | | | +--rw label-swap | |||
| | | +--rw dest-ipv6-address inet:ipv6-address | | | | +--rw out-label uint32 | |||
| | | +--rw next-header uint8 | | | | +--rw ttl-action? ttl-action-definition | |||
| | | +--rw traffic-class? uint8 | | | +--:(MPLS-over-UDP) {mpls-over-udp-tunnel}? | |||
| | | +--rw flow-label? inet:ipv6-flow-label | | | +--rw mpls-over-udp-encaplustion | |||
| | | +--rw hop-limit? uint8 | | | +--rw label-operations* [label-oper-id] | |||
| | +--:(MPLS) | | | | +--rw label-oper-id uint32 | |||
| | +--rw mpls-encaplustion | | | | +--rw (label-actions)? | |||
| | +--rw label-operations* [label-oper-id] | | | | +--:(label-push) | |||
| | +--rw label-oper-id uint32 | | | | | +--rw label-push | |||
| | +--rw (label-actions)? | | | | | +--rw label uint32 | |||
| | +--:(label-push) | | | | | +--rw s-bit? boolean | |||
| | | +--rw label-push | | | | | +--rw tc-value? uint8 | |||
| | | +--rw label uint32 | | | | | +--rw ttl-value? uint8 | |||
| | | +--rw s-bit? boolean | | | | +--:(label-swap) | |||
| | | +--rw tc-value? uint8 | | | | +--rw label-swap | |||
| | | +--rw ttl-value? uint8 | | | | +--rw out-label uint32 | |||
| | +--:(label-swap) | | | | +--rw ttl-action? ttl-action-definition | |||
| | +--rw label-swap | | | +--rw source-port? inet:port-number | |||
| | +--rw out-label uint32 | | | +--rw destination-port? inet:port-number | |||
| | +--rw ttl-action? ttl-action-definition | | | +--rw (address-family)? | |||
| +--rw interval? uint32 | | | +--:(IPv4) | |||
| +--rw max-packets-per-interval? uint32 | | | | +--rw src-ipv4-address inet:ipv4-address | |||
| +--rw max-payload-size? uint32 | | | | +--rw dest-ipv4-address inet:ipv4-address | |||
| +--rw average-packets-per-interval? uint32 | | | | +--rw protocol uint8 | |||
| +--rw average-payload-size? uint32 | | | | +--rw ttl? uint8 | |||
| | | | +--rw dscp? uint8 | ||||
| | | +--:(IPv6) | ||||
| | | +--rw src-ipv6-address inet:ipv6-address | ||||
| | | +--rw dest-ipv6-address inet:ipv6-address | ||||
| | | +--rw next-header uint8 | ||||
| | | +--rw traffic-class? uint8 | ||||
| | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | +--rw hop-limit? uint8 | ||||
| | +--rw interval? uint32 | ||||
| | +--rw max-packets-per-interval? uint32 | ||||
| | +--rw max-payload-size? uint32 | ||||
| | +--rw average-packets-per-interval? uint32 | ||||
| | +--rw average-payload-size? uint32 | ||||
| +--:(egress-node) | ||||
| +--rw in-segment* [in-segment-id] | ||||
| | +--rw in-segment-id uint32 | ||||
| | +--rw (flow-type)? | ||||
| | | +--:(IP) | ||||
| | | | +--rw (ip-flow-type)? | ||||
| | | | | +--:(ipv4) | ||||
| | | | | | +--rw src-ipv4-address? inet:ipv4-address | ||||
| | | | | | +--rw dest-ipv4-address? inet:ipv4-address | ||||
| | | | | | +--rw dscp? uint8 | ||||
| | | | | +--:(ipv6) | ||||
| | | | | +--rw src-ipv6-address? inet:ipv6-address | ||||
| | | | | +--rw dest-ipv6-address? inet:ipv6-address | ||||
| | | | | +--rw traffic-class? uint8 | ||||
| | | | | +--rw flow-label? inet:ipv6-flow-label | ||||
| | | | +--rw source-port? inet:port-number | ||||
| | | | +--rw destination-port? inet:port-number | ||||
| | | | +--rw protocol? uint8 | ||||
| | | +--:(MPLS) | ||||
| | | +--rw service-label uint32 | ||||
| | +--rw service-function? service-function-type | ||||
| +--rw (tunnel-type)? | ||||
| | +--:(ipv4) {ipv4-tunnel}? | ||||
| | | +--rw ipv4-decap | ||||
| | | +--rw ipv4-decap tunnel-decap-action-def | ||||
| | | +--rw ttl-action? ttl-action-def | ||||
| | +--:(ipv6) {ipv6-tunnel}? | ||||
| | | +--rw ipv6-decap | ||||
| | | +--rw ipv6-decap tunnel-decap-action-def | ||||
| | | +--rw hop-limit-action? hop-limit-action-def | ||||
| | +--:(mpls) {mpls-tunnel}? | ||||
| | +--rw label-pop | ||||
| | +--rw label-pop mpls-label-action-def | ||||
| | +--rw ttl-action? ttl-action-def | ||||
| +--rw label-pop mpls-label-action-def | ||||
| +--rw ttl-action? ttl-action-def | ||||
| 5. DetNet Configuration YANG Model | 5. DetNet Configuration YANG Model | |||
| <CODE BEGINS> file "ietf-detnet-config@20190114.yang" | <CODE BEGINS> file "ietf-detnet@20190321.yang" | |||
| module ietf-detnet-config { | module ietf-detnet{ | |||
| yang-version 1.1; | namespace "urn:ietf:params:xml:ns:yang:ietf-detnet"; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-flow-config"; | //yang-version 1.1; | |||
| prefix "detnet-flow"; | prefix "detnet-flow"; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix "yang"; | |||
| } | } | |||
| import ietf-interfaces { | ||||
| prefix "if"; | ||||
| } | ||||
| import ietf-inet-types{ | import ietf-inet-types{ | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| import ietf-ethertypes { | /* import ietf-ethertypes { | |||
| prefix "eth"; | prefix "eth"; | |||
| }*/ | ||||
| import ietf-routing-types { | ||||
| prefix "rt-types"; | ||||
| } | } | |||
| organization "IETF DetNet Working Group"; | organization "IETF DetNet Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/detnet/> | "WG Web: <http://tools.ietf.org/wg/detnet/> | |||
| WG List: <mailto: detnet@ietf.org> | WG List: <mailto: detnet@ietf.org> | |||
| WG Chair: Lou Berger | WG Chair: Lou Berger | |||
| <mailto:lberger@labn.net> | <mailto:lberger@labn.net> | |||
| skipping to change at page 15, line 13 ¶ | skipping to change at page 18, line 38 ¶ | |||
| <mailto:mach.chen@huawei.com> | <mailto:mach.chen@huawei.com> | |||
| Editor: Zhenqiang Li | Editor: Zhenqiang Li | |||
| <lizhenqiang@chinamobile.com> | <lizhenqiang@chinamobile.com> | |||
| Editor: Reshad Rahman | Editor: Reshad Rahman | |||
| <rrahman@cisco.com>"; | <rrahman@cisco.com>"; | |||
| description | description | |||
| "This YANG module describes the parameters needed | "This YANG module describes the parameters needed | |||
| for DetNet flow configuration and flow status | for DetNet flow configuration and flow status | |||
| reporting."; | reporting."; | |||
| revision "2018-09-10" { | revision "2018-09-10" { | |||
| description "initial revision"; | description "initial revision"; | |||
| reference "RFC XXXX: draft-geng-detnet-config-yang-05"; | reference "RFC XXXX: draft-geng-detnet-config-yang-05"; | |||
| } | } | |||
| feature ipv4-tunnel { | ||||
| description | ||||
| "This feature means that a node support | ||||
| IPv4 tunnel encapsulation capability."; | ||||
| } | ||||
| feature ipv6-tunnel { | ||||
| description | ||||
| "This feature means that a node support | ||||
| IPv6 tunnel encapsulation capability."; | ||||
| } | ||||
| feature mpls-tunnel { | ||||
| description | ||||
| "This feature means that a node support | ||||
| MPLS tunnel encapsulation capability."; | ||||
| } | ||||
| feature mpls-over-udp-tunnel { | ||||
| description | ||||
| "This feature means that a node supports | ||||
| MPLS over UDP tunnel encapsulation | ||||
| capability."; | ||||
| } | ||||
| feature detnet-mpls-dp-sol { | ||||
| description | ||||
| "This feature means that MPLS data plane | ||||
| solution is supported."; | ||||
| } | ||||
| identity detnet-node-role { | identity detnet-node-role { | |||
| description | description | |||
| "base detnet-node-role"; | "base detnet-node-role"; | |||
| } | } | |||
| identity end-station { | identity end-station { | |||
| base detnet-node-role; | base detnet-node-role; | |||
| description | description | |||
| "Commonly called a 'host' in IETF documents, | "Commonly called a 'host' in IETF documents, | |||
| and an 'end station' is IEEE 802 documents. | and an 'end station' is IEEE 802 documents. | |||
| skipping to change at page 16, line 27 ¶ | skipping to change at page 20, line 35 ¶ | |||
| description | description | |||
| "A node operating at the DetNet transport layer, | "A node operating at the DetNet transport layer, | |||
| that utilizes link layer and/or network layer | that utilizes link layer and/or network layer | |||
| switching across multiple links and/or | switching across multiple links and/or | |||
| sub-networks to provide paths for DetNet | sub-networks to provide paths for DetNet | |||
| service layer functions. Optionally provides | service layer functions. Optionally provides | |||
| congestion protection over those paths. An MPLS | congestion protection over those paths. An MPLS | |||
| LSR is an example of a DetNet transit node."; | LSR is an example of a DetNet transit node."; | |||
| } | } | |||
| identity tunnel-decap-action { | ||||
| description | ||||
| "Base identify from which all tunnel decap | ||||
| actions are derived. | ||||
| Tunnel decap actions include: | ||||
| ipv4-decap - to decap an IPv4 tunnel, | ||||
| ipv6-decap - to decap an IPv6 tunnel."; | ||||
| } | ||||
| identity ipv4-decap { | ||||
| base "tunnel-decap-action"; | ||||
| description | ||||
| "IPv4 tunnel decap."; | ||||
| } | ||||
| identity ipv6-decap { | ||||
| base "tunnel-decap-action"; | ||||
| description | ||||
| "IPv4 tunnel decap."; | ||||
| } | ||||
| typedef tunnel-decap-action-def { | ||||
| type identityref { | ||||
| base "tunnel-decap-action"; | ||||
| } | ||||
| description | ||||
| "Tunnel decap def."; | ||||
| } | ||||
| identity ttl-action { | identity ttl-action { | |||
| description | description | |||
| "Base identity from which all TTL | "Base identity from which all TTL | |||
| actions are derived."; | actions are derived."; | |||
| } | } | |||
| identity no-action { | identity no-action { | |||
| base "ttl-action"; | base "ttl-action"; | |||
| description | description | |||
| "Do nothing regarding the TTL."; | "Do nothing regarding the TTL."; | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at page 21, line 41 ¶ | |||
| "Copy the TTL of the outer header | "Copy the TTL of the outer header | |||
| to the inner header."; | to the inner header."; | |||
| } | } | |||
| identity decrease-and-copy-to-inner { | identity decrease-and-copy-to-inner { | |||
| base "ttl-action"; | base "ttl-action"; | |||
| description | description | |||
| "Decrease TTL by one and copy the TTL | "Decrease TTL by one and copy the TTL | |||
| to the inner header."; | to the inner header."; | |||
| } | } | |||
| typedef ttl-action-definition { | ||||
| typedef ttl-action-def { | ||||
| type identityref { | type identityref { | |||
| base "ttl-action"; | base "ttl-action"; | |||
| } | } | |||
| description | description | |||
| "TTL action definition."; | "TTL action definition."; | |||
| } | } | |||
| identity hop-limit-action { | ||||
| description | ||||
| "Base identity from which all hop limit | ||||
| actions are derived."; | ||||
| } | ||||
| typedef hop-limit-action-def { | ||||
| type identityref { | ||||
| base "hop-limit-action"; | ||||
| } | ||||
| description | ||||
| "hop limit action definition."; | ||||
| } | ||||
| identity mpls-label-action { | ||||
| description | ||||
| "Base identity from which all MPLS label | ||||
| operations are derived. | ||||
| The MPLS label stack operations include: | ||||
| push - to add a new label to a label stack, | ||||
| pop - to pop the top label from a label stack, | ||||
| swap - to exchange the top label of a label | ||||
| stack with new label."; | ||||
| } | ||||
| identity label-push { | ||||
| base "mpls-label-action"; | ||||
| description | ||||
| "MPLS label stack operation: push."; | ||||
| } | ||||
| identity label-pop { | ||||
| base "mpls-label-action"; | ||||
| description | ||||
| "MPLS label stack operation: pop."; | ||||
| } | ||||
| identity label-swap { | ||||
| base "mpls-label-action"; | ||||
| description | ||||
| "MPLS label stack operation: swap."; | ||||
| } | ||||
| typedef mpls-label-action-def { | ||||
| type identityref { | ||||
| base "mpls-label-action"; | ||||
| } | ||||
| description | ||||
| "MPLS label action definition."; | ||||
| } | ||||
| identity detnet-transport-layer { | identity detnet-transport-layer { | |||
| description | description | |||
| "The layer that optionally provides congestion | "The layer that optionally provides congestion | |||
| protection for DetNet flows over paths provided | protection for DetNet flows over paths provided | |||
| by the underlying network."; | by the underlying network."; | |||
| } | } | |||
| identity detnet-service-layer { | identity detnet-service-layer { | |||
| description | description | |||
| "The layer at which service protection is | "The layer at which service protection is | |||
| provided, either packet sequencing, replication, | provided, either packet sequencing, replication, | |||
| and elimination or packet encoding"; | and elimination or packet encoding"; | |||
| } | } | |||
| typedef service-function-type { | typedef service-function-type { | |||
| type enumeration { | type enumeration { | |||
| enum null { | ||||
| description | ||||
| "No service function is enabled."; | ||||
| } | ||||
| enum replication { | enum replication { | |||
| description | description | |||
| "A Packet Replication Function (PRF) replicates | "A Packet Replication Function (PRF) replicates | |||
| DetNet flow packets and forwards them to one or | DetNet flow packets and forwards them to one or | |||
| more next hops in the DetNet domain. The number | more next hops in the DetNet domain. The number | |||
| of packet copies sent to each next hop is a | of packet copies sent to each next hop is a | |||
| DetNet flow specific parameter at the node doing | DetNet flow specific parameter at the node doing | |||
| the replication. PRF can be implemented by an | the replication. PRF can be implemented by an | |||
| edge node, a relay node, or an end system"; | edge node, a relay node, or an end system"; | |||
| } | } | |||
| skipping to change at page 18, line 30 ¶ | skipping to change at page 24, line 26 ¶ | |||
| "A combination of PEF, POF and PRF that can be | "A combination of PEF, POF and PRF that can be | |||
| implemented by an edge node, a relay node, or | implemented by an edge node, a relay node, or | |||
| an end system"; | an end system"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "DetNet service function and function combination | "DetNet service function and function combination | |||
| types."; | types."; | |||
| } | } | |||
| typedef sequence-number-generation { | ||||
| type enumeration { | ||||
| enum "copy-from-app-flow" { | ||||
| description | ||||
| "DetNet flow sequence number is copied | ||||
| from application flow."; | ||||
| } | ||||
| enum "generated-by-edge-node" { | ||||
| description | ||||
| "DetNet flow sequence number is generated | ||||
| by DetNet edge node."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "DetNet sequence number generation types."; | ||||
| } | ||||
| grouping detnet-sequence-number { | ||||
| description | ||||
| "DetNet sequence number."; | ||||
| leaf sequence-number-generation-type { | ||||
| type sequence-number-generation; | ||||
| description | ||||
| "The way on how sequence number is generated."; | ||||
| } | ||||
| leaf sequence-number-length { | ||||
| type uint8; | ||||
| description | ||||
| "DetNet sequence number length."; | ||||
| } | ||||
| } | ||||
| grouping detnet-transport-identifier { | ||||
| description | ||||
| "DetNet transport identifier"; | ||||
| } | ||||
| grouping detnet-transport-qos { | grouping detnet-transport-qos { | |||
| //Editor notes: this will be defined in a separate | ||||
| // YANG model (detnet-transport-qos). | ||||
| // More inputs and discussions are needed here. | ||||
| description | description | |||
| "DetNet transport tunnel QoS attributes."; | "DetNet transport tunnel QoS attributes."; | |||
| uses traffic-specification; | uses traffic-specification; | |||
| } | } | |||
| grouping ipv4-header { | grouping ipv4-header { | |||
| description | description | |||
| "The IPv4 header encapsulation information."; | "The IPv4 header encapsulation information."; | |||
| leaf src-ipv4-address { | leaf src-ipv4-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| skipping to change at page 21, line 21 ¶ | skipping to change at page 28, line 9 ¶ | |||
| container label-swap { | container label-swap { | |||
| description | description | |||
| "Label swap operation."; | "Label swap operation."; | |||
| leaf out-label { | leaf out-label { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The out MPLS label."; | "The out MPLS label."; | |||
| } | } | |||
| leaf ttl-action { | leaf ttl-action { | |||
| type ttl-action-definition; | type ttl-action-def; | |||
| description | description | |||
| "The label ttl actions: | "The label ttl actions: | |||
| - No-action, or | - No-action, or | |||
| - Copy to inner label,or | - Copy to inner label,or | |||
| - Decrease (the in label) by 1 and | - Decrease (the in label) by 1 and | |||
| copy to the out label."; | copy to the out label."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping mpls-detnet-header { | grouping mpls-detnet-header { | |||
| description | description | |||
| "The MPLS DetNet encapsulation header information."; | "The MPLS DetNet encapsulation header information."; | |||
| leaf service-label { | leaf service-label { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The service label."; | "The service label of the DetNet header."; | |||
| } | } | |||
| leaf control-word { | leaf control-word { | |||
| type uint32; | type uint32; | |||
| mandatory true; | ||||
| description | description | |||
| "The control word of the DetNet header."; | "The control word of the DetNet header."; | |||
| } | } | |||
| } | } | |||
| grouping transport-tunnel-encap{ | ||||
| grouping udp-header { | ||||
| description | ||||
| "UDP header."; | ||||
| leaf source-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The source port number."; | ||||
| } | ||||
| leaf destination-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The destination port number."; | ||||
| } | ||||
| } | ||||
| grouping transport-tunnel-encap { | ||||
| description | description | |||
| "Defines the transport tunnel encapsulation | "Defines the transport tunnel encapsulation | |||
| header."; | header."; | |||
| choice tunnel-type { | choice tunnel-type { | |||
| description | description | |||
| "Tunnel type includes: IPv4, IPv6, MPLS."; | "Tunnel type includes: IPv4, IPv6, MPLS, | |||
| MPLS over UDP tunnels."; | ||||
| case IPv4 { | case IPv4 { | |||
| if-feature ipv4-tunnel; | ||||
| description | description | |||
| "IPv4 tunnel."; | "IPv4 tunnel."; | |||
| container ipv4-encapsulation { | container ipv4-encapsulation { | |||
| description | description | |||
| "IPv4 encapsulation."; | "IPv4 encapsulation."; | |||
| uses ipv4-header; | uses ipv4-header; | |||
| } | } | |||
| } | } | |||
| case IPv6 { | case IPv6 { | |||
| if-feature ipv6-tunnel; | ||||
| description | description | |||
| "IPv6 tunnel."; | "IPv6 tunnel."; | |||
| container ipv6-encapsulation { | container ipv6-encapsulation { | |||
| description | description | |||
| "IPv6 encapsulation."; | "IPv6 encapsulation."; | |||
| uses ipv6-header; | uses ipv6-header; | |||
| } | } | |||
| } | } | |||
| case MPLS { | case MPLS { | |||
| if-feature mpls-tunnel; | ||||
| description | description | |||
| "MPLS tunnel."; | "MPLS tunnel."; | |||
| container mpls-encapsulation { | container mpls-encapsulation { | |||
| description | description | |||
| "MPLS encapsulation."; | "MPLS encapsulation."; | |||
| uses mpls-header; | uses mpls-header; | |||
| } | } | |||
| } | } | |||
| case MPLS-over-UDP { | ||||
| if-feature mpls-over-udp-tunnel; | ||||
| description | ||||
| "MPLS over UDP tunnel."; | ||||
| container mpls-over-udp-encaplustion { | ||||
| description | ||||
| "MPLS over udp encapsulation."; | ||||
| uses mpls-header; | ||||
| uses udp-header; | ||||
| choice address-family { | ||||
| description | ||||
| "According to IP address family(IPv4 and IPv6) | ||||
| to apply corresponding IP header."; | ||||
| case IPv4 { | ||||
| description | ||||
| "IPv4 address family."; | ||||
| uses ipv4-header; | ||||
| } | ||||
| case IPv6 { | ||||
| description | ||||
| "IPv6 address family."; | ||||
| uses ipv6-header; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping transport-tunnel-decap { | ||||
| description | ||||
| "Tunnel decapsulation inforamtion."; | ||||
| choice tunnel-type { | ||||
| description | ||||
| "Nexthop tunnel type options."; | ||||
| case ipv4 { | ||||
| if-feature ipv4-tunnel; | ||||
| container ipv4-decap { | ||||
| description | ||||
| "IPv4 decap."; | ||||
| leaf ipv4-decap { | ||||
| type tunnel-decap-action-def; | ||||
| mandatory true; | ||||
| description | ||||
| "IPv4 decap operations."; | ||||
| } | ||||
| leaf ttl-action { | ||||
| type ttl-action-def; | ||||
| description | ||||
| "The ttl actions: | ||||
| no-action or copy to inner header."; | ||||
| } | ||||
| } | ||||
| } | ||||
| case ipv6 { | ||||
| if-feature ipv6-tunnel; | ||||
| container ipv6-decap { | ||||
| description | ||||
| "IPv6 decap."; | ||||
| leaf ipv6-decap { | ||||
| type tunnel-decap-action-def; | ||||
| mandatory true; | ||||
| description | ||||
| "IPv6 decap operations."; | ||||
| } | ||||
| leaf hop-limit-action { | ||||
| type hop-limit-action-def; | ||||
| description | ||||
| "The hop limit actions: | ||||
| no-action or copy to inner header."; | ||||
| } | ||||
| } | ||||
| } | ||||
| case mpls { | ||||
| if-feature mpls-tunnel; | ||||
| container label-pop { | ||||
| description | ||||
| "MPLS decap."; | ||||
| leaf label-pop { | ||||
| type mpls-label-action-def; | ||||
| mandatory true; | ||||
| description | ||||
| "Pop a label from the label stack."; | ||||
| } | ||||
| leaf ttl-action { | ||||
| type ttl-action-def; | ||||
| description | ||||
| "The label ttl actions: | ||||
| no-action or copy to inner label/header."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | } | |||
| } | } | |||
| grouping detnet-transport-instance { | grouping detnet-transport-instance { | |||
| description | description | |||
| "An instance of the DetNet transport layer, which | "An instance of the DetNet transport layer, which | |||
| depends on the specific data plane that is used | depends on the specific data plane that is used | |||
| as the underlay tunnel."; | as the underlay tunnel."; | |||
| uses transport-tunnel-encap; | uses transport-tunnel-encap; | |||
| uses detnet-transport-qos; | uses detnet-transport-qos; | |||
| } | ||||
| grouping ipv6-flow-identification { | ||||
| description | ||||
| "IPv6 flow identification."; | ||||
| leaf src-ipv6-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "The source IP address of the header."; | ||||
| } | ||||
| leaf dest-ipv6-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "The destination IP address of the header."; | ||||
| } | ||||
| leaf traffic-class { | ||||
| type uint8; | ||||
| description | ||||
| "The traffic class value of the header."; | ||||
| } | ||||
| leaf flow-label { | ||||
| type inet:ipv6-flow-label; | ||||
| description | ||||
| "The flow label of the header."; | ||||
| } | ||||
| leaf source-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The source port number."; | ||||
| } | ||||
| leaf destination-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The destination port number."; | ||||
| } | ||||
| leaf protocol { | ||||
| type uint8; | ||||
| description | ||||
| "The protocol id of the header."; | ||||
| } | ||||
| } | ||||
| grouping ipv4-flow-identification { | ||||
| description | ||||
| "IPv4 flow identification."; | ||||
| leaf src-ipv4-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "The source IP address of the header of | ||||
| a DetNet flow."; | ||||
| } | ||||
| leaf dest-ipv4-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "The destination IP address of the header | ||||
| of a DetNet flow."; | ||||
| } | ||||
| leaf dscp { | ||||
| type uint8; | ||||
| description | ||||
| "The DSCP field of the header of a DetNet flow.."; | ||||
| } | ||||
| leaf source-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The source port number."; | ||||
| } | ||||
| leaf destination-port { | ||||
| type inet:port-number; | ||||
| description | ||||
| "The destination port number."; | ||||
| } | ||||
| leaf protocol { | ||||
| type uint8; | ||||
| description | ||||
| "The protocol id of the header of a DetNet flow.."; | ||||
| } | ||||
| } | } | |||
| grouping ip-flow-identification { | grouping ip-flow-identification { | |||
| description | description | |||
| "IP flow identification."; | "IP flow identification."; | |||
| choice ip-flow-type { | choice ip-flow-type { | |||
| description | description | |||
| "IP flow types: IPv4, IPv6."; | "IP flow types: IPv4, IPv6."; | |||
| case ipv4 { | case ipv4 { | |||
| description | description | |||
| skipping to change at page 24, line 19 ¶ | skipping to change at page 35, line 4 ¶ | |||
| leaf destination-port { | leaf destination-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The destination port number."; | "The destination port number."; | |||
| } | } | |||
| leaf protocol { | leaf protocol { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The protocol id of the header."; | "The protocol id of the header."; | |||
| } | } | |||
| } | } | |||
| grouping l3-flow-identification { | grouping l3-flow-identification { | |||
| description | description | |||
| "Layer 3 flow identification in the DetNet | "Layer 3 flow identification in a DetNet | |||
| domain."; | domain."; | |||
| choice flow-type { | choice flow-type { | |||
| description | description | |||
| "L3 DetNet flow types: IP and MPLS."; | "L3 DetNet flow types: IP and MPLS."; | |||
| case IP { | case IP { | |||
| description | description | |||
| "IP (IPv4 or IPv6) flow identification."; | "IP (IPv4 or IPv6) flow identification."; | |||
| uses ip-flow-identification; | uses ip-flow-identification; | |||
| } | } | |||
| case MPLS { | case MPLS { | |||
| description | description | |||
| "MPLS flow identification."; | "MPLS flow identification."; | |||
| leaf service-label { | leaf service-label { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The service label."; | "The service label of a DetNet flow."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } //l3-flow-identification | } //l3-flow-identification | |||
| grouping in-segments { | grouping in-segments { | |||
| description | description | |||
| "From a receiving node point of view, In-segments | "From a receiving node point of view, In-segments | |||
| are a set of instances of a DetNet flow at the | are a set of instances of a DetNet flow at the | |||
| receiving node. This occurs when Packet Replication | receiving node. This occurs when Packet Replication | |||
| skipping to change at page 26, line 18 ¶ | skipping to change at page 36, line 50 ¶ | |||
| container detnet-transport-encapsulation { | container detnet-transport-encapsulation { | |||
| description | description | |||
| "Each out-segment corresponds to a | "Each out-segment corresponds to a | |||
| transport instance."; | transport instance."; | |||
| uses detnet-transport-instance; | uses detnet-transport-instance; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-service-instance{ | grouping detnet-service-instance { | |||
| description | description | |||
| "An end-2-end DetNet service is consisted of | "An end-2-end DetNet service is consisted of | |||
| multiple segments. The concept of segment is | multiple segments. The concept of segment is | |||
| similar to PW segment. For DetNet, since the | similar to PW segment. For DetNet, since the | |||
| existing of PREOF, there could be three cases: | existing of PREOF, there could be three cases: | |||
| 1 - One in-segment maps to multiple | 1 - One in-segment maps to multiple | |||
| out-segments, when implement PRF; | out-segments, when implement PRF; | |||
| 2 - Multiple in-segments map to one | 2 - Multiple in-segments map to one | |||
| out-segment, when implement PEF; | out-segment, when implement PEF; | |||
| 3 - Multiple in-segments map to multiple | 3 - Multiple in-segments map to multiple | |||
| out-segments, when implement a combination | out-segments, when implement a combination | |||
| of PEF and PRF."; | of PEF and PRF."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the service instance. This MUST | "The name of the service instance. This MUST | |||
| be unique across all service instances in | be unique across all service instances in | |||
| a given network device."; | a given network device."; | |||
| } | } | |||
| container flow-rank{ | ||||
| description | leaf service-rank { | |||
| "TBD based on the data plane solution."; | type boolean; | |||
| } | ||||
| container service-rank{ | ||||
| description | description | |||
| "TBD based on the data plane solution."; | "Service rank is used by the network to decide | |||
| which services can and cannot exist when network | ||||
| resources reach their limit. Rank is used to help | ||||
| to determine which services can be dropped (i.e., | ||||
| removed from node configuration) if a port of a | ||||
| node becomes oversubscribed (e.g., due to network | ||||
| reconfiguration). The true value is more important | ||||
| than the false value (i.e., services with false | ||||
| are dropped first)."; | ||||
| reference | ||||
| "draft-ietf-detnet-flow-information-model"; | ||||
| } | } | |||
| uses in-segments; | uses in-segments; | |||
| uses out-segments; | uses out-segments; | |||
| } | } | |||
| grouping l2-flow-identification-at-uni { | grouping l2-flow-identification-at-uni { | |||
| description | description | |||
| "Layer 2 flow identification at UNI."; | "Layer 2 flow identification at UNI."; | |||
| leaf source-mac-address { | leaf source-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| skipping to change at page 27, line 19 ¶ | skipping to change at page 38, line 11 ¶ | |||
| "The source MAC address used for | "The source MAC address used for | |||
| flow identification."; | flow identification."; | |||
| } | } | |||
| leaf destination-mac-address { | leaf destination-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The destination MAC address used for | "The destination MAC address used for | |||
| flow identification."; | flow identification."; | |||
| } | } | |||
| leaf ethertype { | /* leaf ethertype { | |||
| type eth:ethertype; | type eth:ethertype; | |||
| description | description | |||
| "The Ethernet Type (or Length) value represented | "The Ethernet Type (or Length) value represented | |||
| in the canonical order defined by IEEE 802. | in the canonical order defined by IEEE 802. | |||
| The canonical representation uses lowercase | The canonical representation uses lowercase | |||
| characters."; | characters."; | |||
| reference | reference | |||
| "IEEE 802-2014 Clause 9.2"; | "IEEE 802-2014 Clause 9.2"; | |||
| } | } | |||
| */ | ||||
| leaf vlan-id { | leaf vlan-id { | |||
| type uint16 { | type uint16 { | |||
| range "1..4094"; | range "1..4094"; | |||
| } | } | |||
| description | description | |||
| "Vlan Identifier used for L2 flow identification."; | "Vlan Identifier used for L2 flow identification."; | |||
| } | } | |||
| container pcp { | container pcp { | |||
| //Todo | //Todo | |||
| skipping to change at page 28, line 19 ¶ | skipping to change at page 39, line 12 ¶ | |||
| parameters in network nodes."; | parameters in network nodes."; | |||
| reference | reference | |||
| "draft-ietf-detnet-flow-information-model"; | "draft-ietf-detnet-flow-information-model"; | |||
| leaf interval { | leaf interval { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The period of time in which the traffic | "The period of time in which the traffic | |||
| specification cannot be exceeded"; | specification cannot be exceeded"; | |||
| } | } | |||
| leaf max-packets-per-interval{ | leaf max-packets-per-interval { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of packets that the | "The maximum number of packets that the | |||
| source will transmit in one Interval."; | source will transmit in one Interval."; | |||
| } | } | |||
| leaf max-payload-size{ | leaf max-payload-size { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum payload size that the source | "The maximum payload size that the source | |||
| will transmit."; | will transmit."; | |||
| } | } | |||
| leaf average-packets-per-interval { | leaf average-packets-per-interval { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The average number of packets that the | "The average number of packets that the | |||
| source will transmit in one Interval"; | source will transmit in one Interval"; | |||
| skipping to change at page 29, line 11 ¶ | skipping to change at page 40, line 4 ¶ | |||
| client flows map to a DetNet service instance."; | client flows map to a DetNet service instance."; | |||
| list client-flow { | list client-flow { | |||
| key "flow-id"; | key "flow-id"; | |||
| description | description | |||
| "A list of client flows."; | "A list of client flows."; | |||
| leaf flow-id { | leaf flow-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Flow identifier that is unique in a network | "Flow identifier that is unique in a network | |||
| device for client flow identification"; | device for client flow identification"; | |||
| } | } | |||
| choice flow-type{ | leaf flow-rank { | |||
| type boolean; | ||||
| description | ||||
| "Flow rank is used by the network | ||||
| to decide which flows can and cannot exist | ||||
| when network resources reach their limit. | ||||
| Rank is used to help to determine which flows | ||||
| can be dropped (i.e., removed from node | ||||
| configuration) if a port of a node becomes | ||||
| oversubscribed (e.g., due to network | ||||
| reconfiguration). The true value is more | ||||
| important than the false value (i.e., flows | ||||
| with false are dropped first)."; | ||||
| reference | ||||
| "draft-ietf-detnet-flow-information-model"; | ||||
| } | ||||
| choice flow-type { | ||||
| description | description | |||
| "Client flow type: layer 2 flow, layer 3 | "Client flow type: layer 2 flow, layer 3 | |||
| flow."; | flow."; | |||
| case l2-flow-identfication { | case l2-flow { | |||
| description | description | |||
| "Ethernet flow identification."; | "Ethernet flow identification."; | |||
| uses l2-flow-identification-at-uni; | uses l2-flow-identification-at-uni; | |||
| } | } | |||
| case l3-flow-identification { | case l3-flow { | |||
| description | description | |||
| "layer 3 flow identification, including | "Layer 3 flow identification, including | |||
| IPv4,IPv6 and MPLS."; | IPv4,IPv6 and MPLS."; | |||
| uses l3-flow-identification-at-uni; | uses l3-flow-identification-at-uni; | |||
| } | } | |||
| } | } | |||
| container traffic-specification { | container traffic-specification { | |||
| description | description | |||
| "The traffic specification of the client flow."; | "The traffic specification of the client flow."; | |||
| uses traffic-specification; | uses traffic-specification; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-service-decap { | ||||
| description | ||||
| "DetNet service decapsulation inforamtion."; | ||||
| leaf service-label-pop { | ||||
| type mpls-label-action-def; | ||||
| mandatory true; | ||||
| description | ||||
| "Pop the DetNet service label."; | ||||
| } | ||||
| leaf ttl-action { | ||||
| type ttl-action-def; | ||||
| description | ||||
| "The label ttl actions: | ||||
| no-action or copy to inner label/header."; | ||||
| } | ||||
| } | ||||
| grouping detnet-service-proxy-instance { | grouping detnet-service-proxy-instance { | |||
| description | description | |||
| "Maps between App-flows and DetNet flows"; | "Mapping between App-flows and DetNet flows."; | |||
| uses client-flows-at-uni; | ||||
| container detnet-service-instance { | choice edge-node-type { | |||
| description | description | |||
| "A DetNet service instance."; | "There are two types of edge node: ingress node and | |||
| uses detnet-service-instance; | egress node"; | |||
| case ingress-node { | ||||
| uses client-flows-at-uni; | ||||
| leaf service-function { | ||||
| type service-function-type; | ||||
| description | ||||
| "DetNet service function indication."; | ||||
| } | ||||
| uses detnet-sequence-number; | ||||
| uses out-segments; | ||||
| } | ||||
| case egress-node { | ||||
| uses in-segments; | ||||
| uses transport-tunnel-decap; | ||||
| uses detnet-service-decap; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| container detnet-flow{ | container detnet-flow { | |||
| description | description | |||
| "DetNet flow configuration and status reporting."; | "DetNet flow configuration and status reporting."; | |||
| choice detnet-node-role{ | choice detnet-node-role{ | |||
| description | description | |||
| "Depends on the role of a node to configure | "Depends on the role of a node to configure | |||
| corresponding flow parameters."; | corresponding flow parameters."; | |||
| case transit-node { | ||||
| case transit-node{ | ||||
| description | description | |||
| "DetNet flow configuration parameters for | "DetNet flow configuration parameters for | |||
| transit nodes."; | transit nodes."; | |||
| container transit-node { | container transit-node { | |||
| description | description | |||
| "transit node container."; | "Transit node container."; | |||
| uses detnet-transport-qos; | uses detnet-transport-qos; | |||
| } | } | |||
| } | } | |||
| case relay-node{ | case relay-node { | |||
| if-feature detnet-mpls-dp-sol; | ||||
| description | description | |||
| "DetNet flow configuration parameters for | "DetNet flow configuration parameters for | |||
| relay nodes."; | relay nodes."; | |||
| container relay-node { | container relay-node { | |||
| description | description | |||
| "Relay node container."; | "Relay node container."; | |||
| uses detnet-service-instance; | uses detnet-service-instance; | |||
| } | } | |||
| } | } | |||
| case edge-node{ | case edge-node { | |||
| if-feature detnet-mpls-dp-sol; | ||||
| description | description | |||
| "DetNet flow configuration parameters for | "DetNet flow configuration parameters for | |||
| edge nodes."; | edge nodes."; | |||
| container edge-node { | container edge-node { | |||
| description | description | |||
| "Edge node container."; | "Edge node container."; | |||
| uses detnet-service-proxy-instance; | uses detnet-service-proxy-instance; | |||
| } | } | |||
| } | } | |||
| case end-station { | case end-station { | |||
| skipping to change at page 31, line 5 ¶ | skipping to change at page 42, line 46 ¶ | |||
| description | description | |||
| "End station container."; | "End station container."; | |||
| uses detnet-service-proxy-instance; | uses detnet-service-proxy-instance; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 6. DetNet Configuration Model Classification | 6. Open Issues | |||
| This section defines three classes of DetNet configuration model: | ||||
| fully distributed configuration model, fully centralized | ||||
| configuration model, hybrid configuration model, based on different | ||||
| network architectures, showing how configuration information | ||||
| exchanges between various entities in the network. | ||||
| 6.1. Fully Distributed Configuration Model | ||||
| In a fully distributed configuration model, UNI information is | ||||
| transmitted over DetNet UNI protocol from the user side to the | ||||
| network side; then UNI information and network configuration | ||||
| information propagate in the network over distributed control plane | ||||
| protocol. For example: | ||||
| 1) IGP collects topology information and DetNet capabilities of | ||||
| network([I-D.geng-detnet-info-distribution]); | ||||
| 2) Control Plane of the Edge Node(Ingress) receives a flow | ||||
| establishment request from UNI and calculates a/some valid path(s); | ||||
| 3) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with | ||||
| explicit route. After receiving the PATH message, the other Edge | ||||
| Node(Egress) sends a Resv message with distributed label and resource | ||||
| reservation request. | ||||
| Current distributed control plane protocol,e.g., RSVP-TE[RFC3209], | ||||
| SRP[IEEE802.1Qcc], can only reserve bandwidth along the path, while | ||||
| the configuration of a fine-grained schedule, e.g.,Time Aware | ||||
| Shaping(TAS) defined in [IEEE802.1Qbv], is not supported. | ||||
| The fully distributed configuration model is not covered by this | ||||
| draft. It should be discussed in the future DetNet control plane | ||||
| work. | ||||
| 6.2. Fully Centralized Configuration Model | ||||
| In the fully centralized configuration model, UNI information is | ||||
| transmitted from Centralized User Configuration (CUC) to Centralized | ||||
| Network Configuration(CNC). Configurations of routers for DetNet | ||||
| flows are performed by CNC with network management protocol. For | ||||
| example: | ||||
| 1) CNC collects topology information and DetNet capability of network | ||||
| through Netconf; | ||||
| 2) CNC receives a flow establishment request from UNI and calculates | ||||
| a/some valid path(s); | ||||
| 3) CNC configures the devices along the path for flow transmission. | ||||
| 6.3. Hybrid Configuration Model | ||||
| In the hybrid configuration model, controller and control plane | ||||
| protocols work together to offer DetNet service, and there are a lot | ||||
| of possible combinations. For example: | ||||
| 1) CNC collects topology information and DetNet capability of network | ||||
| through IGP/BGP-LS; | ||||
| 2) CNC receives a flow establishment request from UNI and calculates | ||||
| a/some valid path(s); | ||||
| 3) Based on the calculation result, CNC distributes flow path | ||||
| information to Edge Node(Ingress) and other information(e.g. | ||||
| replication/elimination) to the relevant nodes. | ||||
| 4) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with | ||||
| explicit route. After receiving the PATH message, the other Edge | ||||
| Node(Egress) sends a Resv message with distributed label and resource | ||||
| reservation request. | ||||
| or | ||||
| 1) Controller collects topology information and DetNet capability of | ||||
| network through IGP/BGP-LS; | ||||
| 2) Control Plane of Edge Node(Ingress) receives a flow establishment | ||||
| request from UNI; | ||||
| 3) Edge Node(Ingress) sends the path establishment request to CNC | ||||
| through PCEP; | ||||
| 4) After Calculation, CNC sends back the path information of the flow | ||||
| to the Edge Node(Ingress) through PCEP; | ||||
| 5) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with | ||||
| explicit route. After receiving the PATH message, the other Edge | ||||
| Node(Egress) sends a Resv message with distributed label and resource | ||||
| reservation request. | ||||
| There are also other variations that can be included in the hybrid | ||||
| model. This draft can not coverer all the control plane data needed | ||||
| in hybrid configuration models. Every solution has there own | ||||
| mechanism and corresponding parameters to make it work. | ||||
| Editor's Note: | ||||
| 1. There are a lot of optional DetNet configuration models, and | ||||
| different scenario in different use case can choose one of them based | ||||
| on its conditions. Maybe next step of the work is to pick up one or | ||||
| more typical scenarios and give a practical solution. | ||||
| 2. [IEEE802.1Qcc] also defines three TSN configuration models: | ||||
| fully-centralized model, fully-distributed model, centralized Network | ||||
| / distributed User Model. This section defines the configuration | ||||
| model roughly the same, to keep the design of L2 and L3 in the same | ||||
| structure. Hybrid configuration model is slightly different from the | ||||
| 'centralized Network / distributed User Model'. The hybrid | ||||
| configuration model intends to contain more variations. | ||||
| 7. Open Issues | ||||
| There are some open issues that are still under discussion: | There are some open issues that are still under discussion: | |||
| o The Relationship with 802.1 TSN YANG models is TBD. TSN YANG | o The Relationship with 802.1 TSN YANG models is TBD. TSN YANG | |||
| models include: P802.1Qcw, which defines TSN YANG for Qbv, Qbu, | models include: P802.1Qcw, which defines TSN YANG for Qbv, Qbu, | |||
| and Qci, and P802.1CBcv, which defines YANG for 802.1CB. The | and Qci, and P802.1CBcv, which defines YANG for 802.1CB. The | |||
| possible problem here is how to avoid possible overlap among yang | possible problem here is how to avoid possible overlap among yang | |||
| models defined in IETF and IEEE. A common YANG model may be | models defined in IETF and IEEE. A common YANG model may be | |||
| defined in the future to shared by both TSN and DetNet. More | defined in the future to shared by both TSN and DetNet. More | |||
| discussion are needed here. | discussion are needed here. | |||
| o How to support DetNet OAM is TBD. | o How to support DetNet OAM is TBD. | |||
| These issues will be resolved in the following versions of the draft. | These issues will be resolved in the following versions of the draft. | |||
| 8. IANA Considerations | 7. IANA Considerations | |||
| This document makes no request of IANA. | This document makes no request of IANA. | |||
| Note to RFC Editor: this section may be removed on publication as an | Note to RFC Editor: this section may be removed on publication as an | |||
| RFC. | RFC. | |||
| 9. Security Considerations | 8. Security Considerations | |||
| <TBD> | <TBD> | |||
| 10. Acknowledgements | 9. Acknowledgements | |||
| 11. References | 10. References | |||
| 11.1. Normative References | 10.1. Normative References | |||
| [I-D.finn-detnet-bounded-latency] | [I-D.finn-detnet-bounded-latency] | |||
| Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga, | Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga, | |||
| B., and J. Farkas, "DetNet Bounded Latency", draft-finn- | B., and J. Farkas, "DetNet Bounded Latency", draft-finn- | |||
| detnet-bounded-latency-02 (work in progress), October | detnet-bounded-latency-03 (work in progress), March 2019. | |||
| 2018. | ||||
| [I-D.ietf-detnet-architecture] | [I-D.ietf-detnet-architecture] | |||
| Finn, N., Thubert, P., Varga, B., and J. Farkas, | Finn, N., Thubert, P., Varga, B., and J. Farkas, | |||
| "Deterministic Networking Architecture", draft-ietf- | "Deterministic Networking Architecture", draft-ietf- | |||
| detnet-architecture-10 (work in progress), December 2018. | detnet-architecture-12 (work in progress), March 2019. | |||
| [I-D.ietf-detnet-dp-sol-ip] | [I-D.ietf-detnet-dp-sol-ip] | |||
| Korhonen, J. and B. Varga, "DetNet IP Data Plane | Korhonen, J. and B. Varga, "DetNet IP Data Plane | |||
| Encapsulation", draft-ietf-detnet-dp-sol-ip-01 (work in | Encapsulation", draft-ietf-detnet-dp-sol-ip-02 (work in | |||
| progress), October 2018. | progress), March 2019. | |||
| [I-D.ietf-detnet-dp-sol-mpls] | [I-D.ietf-detnet-dp-sol-mpls] | |||
| Korhonen, J. and B. Varga, "DetNet MPLS Data Plane | Korhonen, J. and B. Varga, "DetNet MPLS Data Plane | |||
| Encapsulation", draft-ietf-detnet-dp-sol-mpls-01 (work in | Encapsulation", draft-ietf-detnet-dp-sol-mpls-02 (work in | |||
| progress), October 2018. | progress), March 2019. | |||
| [I-D.ietf-detnet-flow-information-model] | [I-D.ietf-detnet-flow-information-model] | |||
| Farkas, J., Varga, B., Cummings, R., Jiang, Y., and Y. | Farkas, J., Varga, B., Cummings, R., and Y. Jiang, "DetNet | |||
| Zha, "DetNet Flow Information Model", draft-ietf-detnet- | Flow Information Model", draft-ietf-detnet-flow- | |||
| flow-information-model-02 (work in progress), October | information-model-03 (work in progress), March 2019. | |||
| 2018. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| 11.2. Informative References | 10.2. Informative References | |||
| [I-D.geng-detnet-info-distribution] | [I-D.geng-detnet-info-distribution] | |||
| Geng, X., Chen, M., and Z. Li, "IGP-TE Extensions for | Geng, X., Chen, M., and Z. Li, "IGP-TE Extensions for | |||
| DetNet Information Distribution", draft-geng-detnet-info- | DetNet Information Distribution", draft-geng-detnet-info- | |||
| distribution-03 (work in progress), October 2018. | distribution-03 (work in progress), October 2018. | |||
| [I-D.ietf-detnet-use-cases] | [I-D.ietf-detnet-use-cases] | |||
| Grossman, E., "Deterministic Networking Use Cases", draft- | Grossman, E., "Deterministic Networking Use Cases", draft- | |||
| ietf-detnet-use-cases-20 (work in progress), December | ietf-detnet-use-cases-20 (work in progress), December | |||
| 2018. | 2018. | |||
| [I-D.ietf-teas-yang-te] | [I-D.ietf-teas-yang-te] | |||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, | |||
| I. Bryskin, "A YANG Data Model for Traffic Engineering | "A YANG Data Model for Traffic Engineering Tunnels and | |||
| Tunnels and Interfaces", draft-ietf-teas-yang-te-17 (work | Interfaces", draft-ietf-teas-yang-te-19 (work in | |||
| in progress), October 2018. | progress), February 2019. | |||
| [I-D.ietf-teas-yang-te-topo] | [I-D.ietf-teas-yang-te-topo] | |||
| Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and | Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and | |||
| O. Dios, "YANG Data Model for Traffic Engineering (TE) | O. Dios, "YANG Data Model for Traffic Engineering (TE) | |||
| Topologies", draft-ietf-teas-yang-te-topo-18 (work in | Topologies", draft-ietf-teas-yang-te-topo-19 (work in | |||
| progress), June 2018. | progress), February 2019. | |||
| [I-D.thubert-tsvwg-detnet-transport] | [I-D.thubert-tsvwg-detnet-transport] | |||
| Thubert, P., "A Transport Layer for Deterministic | Thubert, P., "A Transport Layer for Deterministic | |||
| Networks", draft-thubert-tsvwg-detnet-transport-01 (work | Networks", draft-thubert-tsvwg-detnet-transport-01 (work | |||
| in progress), October 2017. | in progress), October 2017. | |||
| [I-D.varga-detnet-service-model] | [I-D.varga-detnet-service-model] | |||
| Varga, B. and J. Farkas, "DetNet Service Model", draft- | Varga, B. and J. Farkas, "DetNet Service Model", draft- | |||
| varga-detnet-service-model-02 (work in progress), May | varga-detnet-service-model-02 (work in progress), May | |||
| 2017. | 2017. | |||
| [IEEE802.1CB] | [IEEE802.1CB] | |||
| "IEEE, "Frame Replication and Elimination for Reliability | IEEE, "IEEE, "Frame Replication and Elimination for | |||
| (IEEE Draft P802.1CB)", 2017, | Reliability (IEEE Draft P802.1CB)", 2017, | |||
| <http://www.ieee802.org/1/files/private/cb-drafts/>.", | <http://www.ieee802.org/1/files/private/cb-drafts/>.", | |||
| 2016. | 2016. | |||
| [IEEE802.1Q-2014] | [IEEE802.1Q-2014] | |||
| "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks", | "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks", | |||
| 2014, <http://ieeexplore.ieee.org/document/6991462/>.", | 2014, <http://ieeexplore.ieee.org/document/6991462/>.", | |||
| 2014. | 2014. | |||
| [IEEE802.1Qbu] | [IEEE802.1Qbu] | |||
| "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - | IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged | |||
| Amendment 26: Frame Preemption", 2016, | Networks - Amendment 26: Frame Preemption", 2016, | |||
| <http://ieeexplore.ieee.org/document/7553415/>.", 2016. | <http://ieeexplore.ieee.org/document/7553415/>.", 2016. | |||
| [IEEE802.1Qbv] | [IEEE802.1Qbv] | |||
| "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - | "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - | |||
| Amendment 25: Enhancements for Scheduled Traffic", 2015, | Amendment 25: Enhancements for Scheduled Traffic", 2015, | |||
| <http://ieeexplore.ieee.org/document/7572858/>.", 2016. | <http://ieeexplore.ieee.org/document/7572858/>.", 2016. | |||
| [IEEE802.1Qcc] | [IEEE802.1Qcc] | |||
| "IEEE, "Stream Reservation Protocol (SRP) Enhancements and | IEEE, "IEEE, "Stream Reservation Protocol (SRP) | |||
| Performance Improvements (IEEE Draft P802.1Qcc)", 2017, | Enhancements and Performance Improvements (IEEE Draft | |||
| P802.1Qcc)", 2017, | ||||
| <http://www.ieee802.org/1/files/private/cc-drafts/>.". | <http://www.ieee802.org/1/files/private/cc-drafts/>.". | |||
| [IEEE802.1Qch] | [IEEE802.1Qch] | |||
| "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft | IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft | |||
| P802.1Qch)", 2017, | P802.1Qch)", 2017, | |||
| <http://www.ieee802.org/1/files/private/ch-drafts/>.", | <http://www.ieee802.org/1/files/private/ch-drafts/>.", | |||
| 2016. | 2016. | |||
| [IEEE802.1Qci] | [IEEE802.1Qci] | |||
| "IEEE, "Per-Stream Filtering and Policing (IEEE Draft | IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE | |||
| P802.1Qci)", 2016, | Draft P802.1Qci)", 2016, | |||
| <http://www.ieee802.org/1/files/private/ci-drafts/>.", | <http://www.ieee802.org/1/files/private/ci-drafts/>.", | |||
| 2016. | 2016. | |||
| [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | |||
| and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | |||
| Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | |||
| <https://www.rfc-editor.org/info/rfc3209>. | <https://www.rfc-editor.org/info/rfc3209>. | |||
| [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. | [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. | |||
| Yasukawa, Ed., "Extensions to Resource Reservation | Yasukawa, Ed., "Extensions to Resource Reservation | |||
| End of changes. 77 change blocks. | ||||
| 572 lines changed or deleted | 1030 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/ | ||||