| < draft-ietf-detnet-yang-10.txt | draft-ietf-detnet-yang-11.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: August 22, 2021 Y. Ryoo | Expires: August 23, 2021 Y. Ryoo | |||
| ETRI | ETRI | |||
| D. Fedyk | D. Fedyk | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| R. Rahman | R. Rahman | |||
| Individual | Individual | |||
| Z. Li | Z. Li | |||
| China Mobile | China Mobile | |||
| February 18, 2021 | February 19, 2021 | |||
| Deterministic Networking (DetNet) YANG Model | Deterministic Networking (DetNet) YANG Model | |||
| draft-ietf-detnet-yang-10 | draft-ietf-detnet-yang-11 | |||
| Abstract | Abstract | |||
| This document contains the specification for the Deterministic | This document contains the specification for the Deterministic | |||
| Networking YANG Model for configuration and operational data for | Networking YANG Model for configuration and operational data for | |||
| DetNet Flows. The model allows for provisioning of end-to-end DetNet | DetNet Flows. The model allows for provisioning of end-to-end DetNet | |||
| service along the path without dependency on any signaling protocol. | service along the path without dependency on any signaling protocol. | |||
| It also specifies operational status for flows. | It also specifies operational status for flows. | |||
| The YANG module defined in this document conforms to the Network | The YANG module defined in this document conforms to the Network | |||
| skipping to change at page 2, line 4 ¶ | skipping to change at page 2, line 4 ¶ | |||
| 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 August 22, 2021. | This Internet-Draft will expire on August 23, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | 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 | |||
| skipping to change at page 2, line 33 ¶ | skipping to change at page 2, line 33 ¶ | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3 | 3. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3.1. DetNet Application Flow YANG Attributes . . . . . . . . . 3 | 3.1. DetNet Application Flow YANG Attributes . . . . . . . . . 3 | |||
| 3.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 3 | 3.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 3 | |||
| 3.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 4 | 3.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 4 | |||
| 4. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 4 | 4. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5 | 5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5 | |||
| 6. DetNet Configuration YANG Structures . . . . . . . . . . . . 6 | 6. DetNet Configuration YANG Structures . . . . . . . . . . . . 6 | |||
| 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 15 | 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 15 | |||
| 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 44 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 42 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 44 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 42 | 12.2. Informative References . . . . . . . . . . . . . . . . . 45 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 42 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| A.1. Example JSON Configuration/Operational . . . . . . . . . 43 | A.1. Example JSON Configuration/Operational . . . . . . . . . 45 | |||
| A.2. Example XML Config: Aggregation using a Forwarding | A.2. Example XML Config: Aggregation using a Forwarding | |||
| Sublayer . . . . . . . . . . . . . . . . . . . . . . . . 47 | Sublayer . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| A.3. Example JSON Service Aggregation Configuration . . . . . 51 | A.3. Example JSON Service Aggregation Configuration . . . . . 54 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 1. Introduction | 1. Introduction | |||
| DetNet (Deterministic Networking) provides a capability to carry | DetNet (Deterministic Networking) provides a capability to carry | |||
| specified unicast or multicast data flows for real-time applications | specified unicast or multicast data flows for real-time applications | |||
| with extremely low packet loss rates and assured maximum end-to-end | with extremely low packet loss rates and assured maximum end-to-end | |||
| delivery latency. A description of the general background and | delivery latency. A description of the general background and | |||
| concepts of DetNet can be found in [RFC8655]. | concepts of DetNet can be found in [RFC8655]. | |||
| This document defines a YANG model for DetNet based on YANG data | This document defines a YANG model for DetNet based on YANG data | |||
| skipping to change at page 16, line 33 ¶ | skipping to change at page 16, line 33 ¶ | |||
| <mailto:reshad@yahoo.com> | <mailto:reshad@yahoo.com> | |||
| Editor: Mach Chen | Editor: Mach Chen | |||
| <mailto:mach.chen@huawei.com> | <mailto:mach.chen@huawei.com> | |||
| Editor: Zhenqiang Li | Editor: Zhenqiang Li | |||
| <mailto:lizhenqiang@chinamobile.com>"; | <mailto:lizhenqiang@chinamobile.com>"; | |||
| description | description | |||
| "This YANG module describes the parameters needed | "This YANG module describes the parameters needed | |||
| for DetNet flow configuration and flow status | for DetNet flow configuration and flow status | |||
| reporting."; | reporting. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject to | ||||
| the license terms contained in, the Simplified BSD License set | ||||
| forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX | ||||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | ||||
| for full legal notices. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here. "; | ||||
| revision 2021-02-17 { | revision 2021-02-17 { | |||
| description | description | |||
| "initial revision"; | "initial revision"; | |||
| reference | reference | |||
| "RFC XXXX: draft-ietf-detnet-yang-10"; | "RFC XXXX: draft-ietf-detnet-yang-10"; | |||
| } | } | |||
| identity app-status { | identity app-status { | |||
| description | description | |||
| skipping to change at page 17, line 51 ¶ | skipping to change at page 18, line 24 ¶ | |||
| "draft-ietf-detnet-flow-information-model Section 5.8"; | "draft-ietf-detnet-flow-information-model Section 5.8"; | |||
| } | } | |||
| typedef app-flow-ref { | typedef app-flow-ref { | |||
| type leafref { | type leafref { | |||
| path "/ietf-detnet:detnet" | path "/ietf-detnet:detnet" | |||
| + "/ietf-detnet:app-flows" | + "/ietf-detnet:app-flows" | |||
| + "/ietf-detnet:app-flow" | + "/ietf-detnet:app-flow" | |||
| + "/ietf-detnet:name"; | + "/ietf-detnet:name"; | |||
| } | } | |||
| description | ||||
| "This is an Application Reference."; | ||||
| } | } | |||
| typedef service-sub-layer-ref { | typedef service-sub-layer-ref { | |||
| type leafref { | type leafref { | |||
| path "/ietf-detnet:detnet" | path "/ietf-detnet:detnet" | |||
| + "/ietf-detnet:service-sub-layer" | + "/ietf-detnet:service-sub-layer" | |||
| + "/ietf-detnet:service-sub-layer-list" | + "/ietf-detnet:service-sub-layer-list" | |||
| + "/ietf-detnet:name"; | + "/ietf-detnet:name"; | |||
| } | } | |||
| description | ||||
| "This is a Service sub-layer Reference."; | ||||
| } | } | |||
| typedef forwarding-sub-layer-ref { | typedef forwarding-sub-layer-ref { | |||
| type leafref { | type leafref { | |||
| path "/ietf-detnet:detnet" | path "/ietf-detnet:detnet" | |||
| + "/ietf-detnet:forwarding-sub-layer" | + "/ietf-detnet:forwarding-sub-layer" | |||
| + "/ietf-detnet:forwarding-sub-layer-list" | + "/ietf-detnet:forwarding-sub-layer-list" | |||
| + "/ietf-detnet:name"; | + "/ietf-detnet:name"; | |||
| } | } | |||
| description | ||||
| "This is a Forwarding sub-layer Reference."; | ||||
| } | } | |||
| typedef traffic-profile-ref { | typedef traffic-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/ietf-detnet:detnet" | path "/ietf-detnet:detnet" | |||
| + "/ietf-detnet:traffic-profile" | + "/ietf-detnet:traffic-profile" | |||
| + "/ietf-detnet:profile-name"; | + "/ietf-detnet:profile-name"; | |||
| } | } | |||
| description | ||||
| "This is a Traffic Profile Reference."; | ||||
| } | } | |||
| typedef ipsec-spi { | typedef ipsec-spi { | |||
| type uint32 { | type uint32 { | |||
| range "1..max"; | range "1..max"; | |||
| } | } | |||
| description | description | |||
| "IPsec Security Parameters Index."; | "IPsec Security Parameters Index."; | |||
| reference | reference | |||
| "IETF RFC 6071"; | "IETF RFC 6071"; | |||
| } | } | |||
| typedef service-operation-type { | typedef service-operation-type { | |||
| type enumeration { | type enumeration { | |||
| enum service-initiation { | enum service-initiation { | |||
| description | description | |||
| "This is an initiating service sub-layer encapsulation. "; | "This is an initiating service sub-layer encapsulation."; | |||
| } | } | |||
| enum service-termination { | enum service-termination { | |||
| description | description | |||
| "Operation for DetNet service sub-layer decapsulation."; | "Operation for DetNet service sub-layer decapsulation."; | |||
| } | } | |||
| enum service-relay { | enum service-relay { | |||
| description | description | |||
| "Operation for DetNet service sub-layer swap."; | "Operation for DetNet service sub-layer swap."; | |||
| } | } | |||
| enum non-detnet { | enum non-detnet { | |||
| skipping to change at page 19, line 33 ¶ | skipping to change at page 20, line 15 ¶ | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base | " A YANG Data Model for MPLS Base | |||
| draft-ietf-mpls-base-yang."; | draft-ietf-mpls-base-yang."; | |||
| } | } | |||
| enum pop-and-forward { | enum pop-and-forward { | |||
| description | description | |||
| "This operation pops the incoming label and forwards to | "This operation pops the incoming label and forwards to | |||
| the next-hop."; | the next-hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base | " A YANG Data Model for MPLS Base | |||
| draft-ietf-mpls-base-yang"; | draft-ietf-mpls-base-yang."; | |||
| } | } | |||
| enum pop-impose-and-forward { | enum pop-impose-and-forward { | |||
| description | description | |||
| "This operation pops the incoming label, imposes one or | "This operation pops the incoming label, imposes one or | |||
| more outgoing label(s) and forwards to the next-hop."; | more outgoing label(s) and forwards to the next-hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base | " A YANG Data Model for MPLS Base | |||
| draft-ietf-mpls-base-yang."; | draft-ietf-mpls-base-yang."; | |||
| } | } | |||
| enum swap-and-forward { | enum swap-and-forward { | |||
| description | description | |||
| "This operation swaps incoming label, with an outgoing | "This operation swaps incoming label, with an outgoing | |||
| label and forwards to the next-hop."; | label and forwards to the next-hop."; | |||
| reference | reference | |||
| " A YANG Data Model for MPLS Base | " A YANG Data Model for MPLS Base | |||
| draft-ietf-mpls-base-yang"; | draft-ietf-mpls-base-yang."; | |||
| } | } | |||
| enum forward { | enum forward { | |||
| description | description | |||
| "This operation forward to next-hop."; | "This operation forward to next-hop."; | |||
| } | } | |||
| enum pop-and-lookup { | enum pop-and-lookup { | |||
| description | description | |||
| "This operation pops incoming label and performs a | "This operation pops incoming label and performs a | |||
| lookup."; | lookup."; | |||
| } | } | |||
| skipping to change at page 21, line 17 ¶ | skipping to change at page 21, line 47 ¶ | |||
| description | description | |||
| "A combination of PEF and PRF that can be implemented by | "A combination of PEF and PRF that can be implemented by | |||
| an edge node, a relay node, or an end system."; | an edge node, a relay node, or an end system."; | |||
| } | } | |||
| enum elimination-ordering-replicaiton { | enum elimination-ordering-replicaiton { | |||
| description | description | |||
| "A combination of PEF, POF and PRF that can be implemented | "A combination of PEF, POF and PRF that can be implemented | |||
| by an edge node, a relay node, or an end system."; | by an edge node, a relay node, or an end system."; | |||
| } | } | |||
| } | } | |||
| description | ||||
| "This typedef describes the service protection types."; | ||||
| } | } | |||
| typedef sequence-number-generation-type { | typedef sequence-number-generation-type { | |||
| type enumeration { | type enumeration { | |||
| enum copy-from-app-flow { | enum copy-from-app-flow { | |||
| description | description | |||
| "This type means copy the app-flow sequence number to the | "This type means copy the app-flow sequence number to the | |||
| DetNet-flow."; | DetNet-flow."; | |||
| } | } | |||
| enum generate-by-detnet-flow { | enum generate-by-detnet-flow { | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 22, line 36 ¶ | |||
| enum short-sn { | enum short-sn { | |||
| value 16; | value 16; | |||
| description | description | |||
| "A 16-bit DetNet sequence number field is used."; | "A 16-bit DetNet sequence number field is used."; | |||
| } | } | |||
| enum long-sn { | enum long-sn { | |||
| value 28; | value 28; | |||
| description | description | |||
| "A 28-bit DetNet sequence number field is used."; | "A 28-bit DetNet sequence number field is used."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This type captures the sequence number behavior."; | "This type captures the sequence number behavior."; | |||
| } | } | |||
| grouping ip-header { | grouping ip-header { | |||
| description | description | |||
| "This grouping captures the IPv4/IPv6 packet header | "This grouping captures the IPv4/IPv6 packet header | |||
| information. it is modeled after existing fields"; | information. it is modeled after existing fields."; | |||
| leaf src-ip-address { | leaf src-ip-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "The source IP address in the header."; | "The source IP address in the header."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf dest-ip-address { | leaf dest-ip-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| skipping to change at page 23, line 7 ¶ | skipping to change at page 23, line 39 ¶ | |||
| leaf flow-label { | leaf flow-label { | |||
| type inet:ipv6-flow-label; | type inet:ipv6-flow-label; | |||
| description | description | |||
| "The flow label value of the header.IPV6 only."; | "The flow label value of the header.IPV6 only."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf source-port { | leaf source-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The source port number"; | "The source port number."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf destination-port { | leaf destination-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The destination port number."; | "The destination port number."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| skipping to change at page 23, line 19 ¶ | skipping to change at page 24, line 4 ¶ | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf destination-port { | leaf destination-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The destination port number."; | "The destination port number."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| } | } | |||
| grouping l2-header { | grouping l2-header { | |||
| description | description | |||
| "The Ethernet or TSN packet header information"; | "The Ethernet or TSN packet header information."; | |||
| leaf source-mac-address { | leaf source-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The source MAC address value of the Ethernet header."; | "The source MAC address value of the Ethernet header."; | |||
| } | } | |||
| leaf destination-mac-address { | leaf destination-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The destination MAC address value of the Ethernet header."; | "The destination MAC address value of the Ethernet header."; | |||
| } | } | |||
| skipping to change at page 24, line 4 ¶ | skipping to change at page 24, line 36 ¶ | |||
| reference | reference | |||
| "IEEE 802.1Qcx-2020."; | "IEEE 802.1Qcx-2020."; | |||
| } | } | |||
| leaf pcp { | leaf pcp { | |||
| type dot1q-types:priority-type; | type dot1q-types:priority-type; | |||
| description | description | |||
| "The priority value of the Ethernet header."; | "The priority value of the Ethernet header."; | |||
| reference | reference | |||
| "IEEE 802.1Qcx-2020."; | "IEEE 802.1Qcx-2020."; | |||
| } | } | |||
| } | } | |||
| grouping destination-ip-port-id { | grouping destination-ip-port-id { | |||
| description | description | |||
| "The TCP/UDP port(source/destination) identification | "The TCP/UDP port(source/destination) identification | |||
| information."; | information."; | |||
| container destination-port { | container destination-port { | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| description | ||||
| "This grouping captures the destination port fields."; | ||||
| } | } | |||
| } | } | |||
| grouping source-ip-port-id { | grouping source-ip-port-id { | |||
| description | description | |||
| "The TCP/UDP port(source/destination) identification | "The TCP/UDP port(source/destination) identification | |||
| information."; | information."; | |||
| container source-port { | container source-port { | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| description | ||||
| "This grouping captures the source port fields."; | ||||
| } | } | |||
| } | } | |||
| grouping ip-flow-id { | grouping ip-flow-id { | |||
| description | description | |||
| "The IPv4/IPv6 packet header identification information."; | "The IPv4/IPv6 packet header identification information."; | |||
| leaf src-ip-prefix { | leaf src-ip-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "The source IP prefix"; | "The source IP prefix."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf dest-ip-prefix { | leaf dest-ip-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "The destination IP prefix"; | "The destination IP prefix."; | |||
| reference | reference | |||
| "RFC 6021 Common YANG Data Types"; | "RFC 6021 Common YANG Data Types"; | |||
| } | } | |||
| leaf protocol-next-header { | leaf protocol-next-header { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Internet Protocol number. Refers to the protocol of the | "Internet Protocol number. Refers to the protocol of the | |||
| payload. In IPv6, this field is known as 'next-header', and | payload. In IPv6, this field is known as 'next-header', and | |||
| if extension headers are present, the protocol is present in | if extension headers are present, the protocol is present in | |||
| the 'upper-layer' header."; | the 'upper-layer' header."; | |||
| skipping to change at page 25, line 42 ¶ | skipping to change at page 26, line 30 ¶ | |||
| "The MPLS packet header identification information."; | "The MPLS packet header identification information."; | |||
| choice label-space { | choice label-space { | |||
| description | description | |||
| "Designates the label space being used."; | "Designates the label space being used."; | |||
| case context-label-space { | case context-label-space { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| case platform-label-space { | case platform-label-space { | |||
| leaf label { | leaf label { | |||
| type rt-types:mpls-label; | type rt-types:mpls-label; | |||
| description | ||||
| "This is the case for Platform label space."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping data-flow-spec { | grouping data-flow-spec { | |||
| description | description | |||
| "app-flow identification"; | "app-flow identification."; | |||
| choice data-flow-type { | choice data-flow-type { | |||
| description | ||||
| "The Application flow type choices."; | ||||
| container tsn-app-flow { | container tsn-app-flow { | |||
| uses l2-header; | uses l2-header; | |||
| description | ||||
| "The L2 header for application."; | ||||
| } | } | |||
| container ip-app-flow { | container ip-app-flow { | |||
| uses ip-flow-id; | uses ip-flow-id; | |||
| description | ||||
| "The IP header for application."; | ||||
| } | } | |||
| container mpls-app-flow { | container mpls-app-flow { | |||
| uses mpls-flow-id; | uses mpls-flow-id; | |||
| description | ||||
| "The MPLS header for application."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping detnet-flow-spec { | grouping detnet-flow-spec { | |||
| description | description | |||
| "detnet-flow identification."; | "detnet-flow identification."; | |||
| choice detnet-flow-type { | choice detnet-flow-type { | |||
| description | ||||
| "The Detnet flow type choices."; | ||||
| case ip-detnet-flow { | case ip-detnet-flow { | |||
| uses ip-flow-id; | uses ip-flow-id; | |||
| } | } | |||
| case mpls-detnet-flow { | case mpls-detnet-flow { | |||
| uses mpls-flow-id; | uses mpls-flow-id; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping app-flows-group { | grouping app-flows-group { | |||
| skipping to change at page 27, line 17 ¶ | skipping to change at page 28, line 17 ¶ | |||
| description | description | |||
| "List of incoming or outgoing forwarding sub-layers that | "List of incoming or outgoing forwarding sub-layers that | |||
| have to aggregate or disaggregate."; | have to aggregate or disaggregate."; | |||
| } | } | |||
| } | } | |||
| grouping detnet-header { | grouping detnet-header { | |||
| description | description | |||
| "DetNet header info for DetNet encapsulation or swap."; | "DetNet header info for DetNet encapsulation or swap."; | |||
| choice header-type { | choice header-type { | |||
| description | ||||
| "The choice of DetNet header type."; | ||||
| case detnet-mpls-header { | case detnet-mpls-header { | |||
| description | description | |||
| "MPLS label stack for DetNet MPLS encapsulation or | "MPLS label stack for DetNet MPLS encapsulation or | |||
| forwarding."; | forwarding."; | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| case detnet-ip-header { | case detnet-ip-header { | |||
| description | description | |||
| "IPv4/IPv6 packet header for DetNet IP encapsulation."; | "IPv4/IPv6 packet header for DetNet IP encapsulation."; | |||
| uses ip-header; | uses ip-header; | |||
| skipping to change at page 27, line 50 ¶ | skipping to change at page 28, line 52 ¶ | |||
| next hops."; | next hops."; | |||
| case simple-next-hop { | case simple-next-hop { | |||
| description | description | |||
| "This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of the | |||
| next-hop address and/or outgoing interface. | next-hop address and/or outgoing interface. | |||
| Modules for address families MUST augment this case with a | Modules for address families MUST augment this case with a | |||
| leaf containing a next-hop address of that address | leaf containing a next-hop address of that address | |||
| family."; | family."; | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | ||||
| "The outgoing interface, if this is a whole interface."; | ||||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | ||||
| "The flow type choices."; | ||||
| case ip { | case ip { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | ||||
| "The IP next hop case."; | ||||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| description | ||||
| "The MPLS Label stack next hop case."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| case next-hop-list { | case next-hop-list { | |||
| description | description | |||
| "Container for multiple next hops."; | "Container for multiple next hops."; | |||
| list next-hop { | list next-hop { | |||
| key "hop-index"; | key "hop-index"; | |||
| description | description | |||
| "An entry in a next-hop list. Modules for address | "An entry in a next-hop list. Modules for address | |||
| skipping to change at page 28, line 36 ¶ | skipping to change at page 29, line 46 ¶ | |||
| reference the next-hop entry in the next-hop list. | reference the next-hop entry in the next-hop list. | |||
| The value of this index has no semantic meaning other | The value of this index has no semantic meaning other | |||
| than for referencing the entry."; | than for referencing the entry."; | |||
| } | } | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | ||||
| "The flow types supported."; | ||||
| case ip { | case ip { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | ||||
| "This is the IP flow type next hop."; | ||||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| skipping to change at page 29, line 21 ¶ | skipping to change at page 30, line 35 ¶ | |||
| next hops."; | next hops."; | |||
| case simple-next-hop { | case simple-next-hop { | |||
| description | description | |||
| "This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of the | |||
| next-hop address and/or outgoing interface. | next-hop address and/or outgoing interface. | |||
| Modules for address families MUST augment this case with a | Modules for address families MUST augment this case with a | |||
| leaf containing a next-hop address of that address | leaf containing a next-hop address of that address | |||
| family."; | family."; | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | ||||
| "This is the interface as an outgoing type."; | ||||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | ||||
| "These are the flow type next hop choices."; | ||||
| case ip { | case ip { | |||
| choice operation-type { | choice operation-type { | |||
| description | ||||
| "This is the IP forwarding operation choices."; | ||||
| case ip-forwarding { | case ip-forwarding { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | ||||
| "This is an IP address as a next hop."; | ||||
| } | } | |||
| } | } | |||
| case mpls-over-ip-encapsulation { | case mpls-over-ip-encapsulation { | |||
| uses ip-header; | uses ip-header; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| skipping to change at page 30, line 8 ¶ | skipping to change at page 31, line 30 ¶ | |||
| "An entry in a next-hop list. Modules for address | "An entry in a next-hop list. Modules for address | |||
| families MUST augment this list with a leaf containing a | families MUST augment this list with a leaf containing a | |||
| next-hop address of that address family."; | next-hop address of that address family."; | |||
| leaf hop-index { | leaf hop-index { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The value of the index for a hop."; | "The value of the index for a hop."; | |||
| } | } | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | ||||
| "This is a whole interface as the next hop."; | ||||
| } | } | |||
| choice flow-type { | choice flow-type { | |||
| description | ||||
| "These are the flow type next hop choices."; | ||||
| case ip { | case ip { | |||
| choice operation-type { | choice operation-type { | |||
| description | ||||
| "These are the next hop choices."; | ||||
| case ip-forwarding { | case ip-forwarding { | |||
| leaf next-hop-address { | leaf next-hop-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | ||||
| "This is an IP address as a next hop."; | ||||
| } | } | |||
| } | } | |||
| case mpls-over-ip-encapsulation { | case mpls-over-ip-encapsulation { | |||
| uses ip-header; | uses ip-header; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case mpls { | case mpls { | |||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container detnet { | container detnet { | |||
| description | ||||
| "The top level DetNet container. This contains | ||||
| applications, service sub-layers and forwarding sub-layers | ||||
| as well as the traffic profiles."; | ||||
| list traffic-profile { | list traffic-profile { | |||
| key "profile-name"; | key "profile-name"; | |||
| description | description | |||
| "A traffic profile."; | "A traffic profile."; | |||
| leaf profile-name { | leaf profile-name { | |||
| type string; | type string; | |||
| description | description | |||
| "An Aggregation group ID. Zero means the service is not | "An Aggregation group ID. Zero means the service is not | |||
| part of a group."; | part of a group."; | |||
| } | } | |||
| skipping to change at page 34, line 43 ¶ | skipping to change at page 36, line 30 ¶ | |||
| "Status of ingress application flow."; | "Status of ingress application flow."; | |||
| reference | reference | |||
| "draft-ietf-detnet-flow-information-model Sections | "draft-ietf-detnet-flow-information-model Sections | |||
| 4.1, 5.8"; | 4.1, 5.8"; | |||
| } | } | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Interface is used for any service type where a whole | "Interface is used for any service type where a whole | |||
| interface is mapped to the applications. It may be | interface is mapped to the applications. It may be | |||
| further filtered by type"; | further filtered by type."; | |||
| } | } | |||
| uses data-flow-spec; | uses data-flow-spec; | |||
| } //End of app-ingress | } //End of app-ingress | |||
| container egress { | container egress { | |||
| description | description | |||
| "Route's next-hop attribute."; | "Route's next-hop attribute."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "Egress DetNet application."; | "Egress DetNet application."; | |||
| } | } | |||
| choice application-type { | choice application-type { | |||
| description | ||||
| "This is the application type choices."; | ||||
| container ethernet { | container ethernet { | |||
| description | ||||
| "This is TSN unaware traffic that maps to an | ||||
| interface."; | ||||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | ||||
| "This is an Ethernet or TSN interfaces."; | ||||
| } | } | |||
| description | ||||
| "TSN unaware maps to an interface."; | ||||
| } | } | |||
| container ip-mpls { | container ip-mpls { | |||
| description | ||||
| "This is IP or MPLS DetNet application types."; | ||||
| uses detnet-app-next-hop-content; | uses detnet-app-next-hop-content; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "The DetNet service sub-layer configuration."; | "The DetNet service sub-layer configuration."; | |||
| list service-sub-layer-list { | list service-sub-layer-list { | |||
| skipping to change at page 35, line 47 ¶ | skipping to change at page 37, line 41 ¶ | |||
| "The DetNet rank for this service."; | "The DetNet rank for this service."; | |||
| reference | reference | |||
| "draft-ietf-detnet-flow-information-model Section 5.7."; | "draft-ietf-detnet-flow-information-model Section 5.7."; | |||
| } | } | |||
| leaf traffic-profile { | leaf traffic-profile { | |||
| type traffic-profile-ref; | type traffic-profile-ref; | |||
| description | description | |||
| "The Traffic Profile for this service."; | "The Traffic Profile for this service."; | |||
| } | } | |||
| container service-protection { | container service-protection { | |||
| description | ||||
| "This is the service protection type an sequence number | ||||
| options."; | ||||
| leaf service-protection-type { | leaf service-protection-type { | |||
| type service-protection-type; | type service-protection-type; | |||
| description | description | |||
| "The DetNet service protection type such as PRF, PEF, | "The DetNet service protection type such as PRF, PEF, | |||
| PEOF,PERF, and PEORF."; | PEOF,PERF, and PEORF."; | |||
| reference | reference | |||
| "draft-ietf-detnet-data-plane-framework Section 4.3"; | "draft-ietf-detnet-data-plane-framework Section 4.3"; | |||
| } | } | |||
| leaf sequence-number-length { | leaf sequence-number-length { | |||
| type sequence-number-field; | type sequence-number-field; | |||
| description | description | |||
| "Sequence number field length can be one of 0 (none), | "Sequence number field length can be one of 0 (none), | |||
| 16-bits or 28-bits."; | 16-bits or 28-bits."; | |||
| } | } | |||
| } | } | |||
| leaf service-operation-type { | leaf service-operation-type { | |||
| type service-operation-type; | type service-operation-type; | |||
| description | ||||
| "This is the service operation type for this service | ||||
| sub-layer;"; | ||||
| } | } | |||
| container incoming-type { | container incoming-type { | |||
| description | description | |||
| "The DetNet service sub-layer incoming configuration."; | "The DetNet service sub-layer incoming configuration."; | |||
| choice incoming-type { | choice incoming-type { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A service sub-layer may have App flows or other | "A service sub-layer may have App flows or other | |||
| service sub-layers."; | service sub-layers."; | |||
| container app-flow { | container app-flow { | |||
| skipping to change at page 37, line 39 ¶ | skipping to change at page 39, line 38 ¶ | |||
| forwarding. The service sub-layer swaps the service | forwarding. The service sub-layer swaps the service | |||
| label when the operation type is service-relay."; | label when the operation type is service-relay."; | |||
| list service-outgoing-list { | list service-outgoing-list { | |||
| key "service-outgoing-index"; | key "service-outgoing-index"; | |||
| description | description | |||
| "List of the outgoing service | "List of the outgoing service | |||
| that separately for each node | that separately for each node | |||
| where services will be eliminated."; | where services will be eliminated."; | |||
| leaf service-outgoing-index { | leaf service-outgoing-index { | |||
| type uint8; | type uint8; | |||
| description | ||||
| "This index allows a list of multiple outgoing | ||||
| forwarding sub-layers"; | ||||
| } | } | |||
| uses detnet-header; | uses detnet-header; | |||
| uses forwarding-sub-layer-group; | uses forwarding-sub-layer-group; | |||
| } | } | |||
| } | } | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "This service sub-layer is sent to the service | "This service sub-layer is sent to the service | |||
| sub-layers of the lower layer for service-to-service | sub-layers of the lower layer for service-to-service | |||
| aggregation at the ingress node or relay node. The | aggregation at the ingress node or relay node. The | |||
| skipping to change at page 38, line 12 ¶ | skipping to change at page 40, line 14 ¶ | |||
| Control-Word and S-label when the operation type is | Control-Word and S-label when the operation type is | |||
| service-initiation, and swaps the S-label when the | service-initiation, and swaps the S-label when the | |||
| operation type is service-relay."; | operation type is service-relay."; | |||
| leaf aggregation-service-sub-layer { | leaf aggregation-service-sub-layer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| description | description | |||
| "reference point of the service-sub-layer | "reference point of the service-sub-layer | |||
| at which this service will be aggregated."; | at which this service will be aggregated."; | |||
| } | } | |||
| container service-label { | container service-label { | |||
| description | ||||
| "This is the MPLS service sub-layer label."; | ||||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container app-flow { | container app-flow { | |||
| description | description | |||
| "This service sub-layer is sent to the app-flow of | "This service sub-layer is sent to the app-flow of | |||
| the upper layer for egress proxy at the egress node, | the upper layer for egress proxy at the egress node, | |||
| and decapsulates the DetNet Control-Word and S-label | and decapsulates the DetNet Control-Word and S-label | |||
| for individual DetNet service. This outgoing type | for individual DetNet service. This outgoing type | |||
| only can be chosen when the operation type is | only can be chosen when the operation type is | |||
| skipping to change at page 39, line 22 ¶ | skipping to change at page 41, line 27 ¶ | |||
| description | description | |||
| "The name of the DetNet forwarding sub-layer."; | "The name of the DetNet forwarding sub-layer."; | |||
| } | } | |||
| leaf traffic-profile { | leaf traffic-profile { | |||
| type traffic-profile-ref; | type traffic-profile-ref; | |||
| description | description | |||
| "The Traffic Profile for this group."; | "The Traffic Profile for this group."; | |||
| } | } | |||
| leaf forwarding-operation-type { | leaf forwarding-operation-type { | |||
| type forwarding-operations-type; | type forwarding-operations-type; | |||
| description | ||||
| "This is the forwarding operation types | ||||
| impose-and-forward, pop-and-forward, | ||||
| pop-impose-and-forward, forward, pop-and-lookup."; | ||||
| } | } | |||
| container incoming-type { | container incoming-type { | |||
| description | description | |||
| "The DetNet forwarding sub-layer incoming configuration."; | "The DetNet forwarding sub-layer incoming configuration."; | |||
| choice incoming-type { | choice incoming-type { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Cases of incoming types."; | "Cases of incoming types."; | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| skipping to change at page 40, line 40 ¶ | skipping to change at page 42, line 48 ¶ | |||
| uses detnet-forwarding-next-hop-content; | uses detnet-forwarding-next-hop-content; | |||
| } | } | |||
| container service-aggregation { | container service-aggregation { | |||
| description | description | |||
| "This forwarding sub-layer is sent to the service | "This forwarding sub-layer is sent to the service | |||
| sub-layers of the lower layer for | sub-layers of the lower layer for | |||
| forwarding-to-service aggregation at the ingress | forwarding-to-service aggregation at the ingress | |||
| node or relay node."; | node or relay node."; | |||
| leaf aggregation-service-sub-layer { | leaf aggregation-service-sub-layer { | |||
| type service-sub-layer-ref; | type service-sub-layer-ref; | |||
| description | ||||
| "This is reference to the service sub-layer."; | ||||
| } | } | |||
| container optional-forwarding-label { | container optional-forwarding-label { | |||
| description | ||||
| "This is the optional forwarding label for service | ||||
| aggregation."; | ||||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container forwarding-sub-layer { | container forwarding-sub-layer { | |||
| description | description | |||
| "This forwarding sub-layer is sent to the forwarding | "This forwarding sub-layer is sent to the forwarding | |||
| sub-layers of the lower layer for | sub-layers of the lower layer for | |||
| forwarding-to-forwarding aggregation at the ingress | forwarding-to-forwarding aggregation at the ingress | |||
| node or relay node or transit node."; | node or relay node or transit node."; | |||
| leaf aggregation-forwarding-sub-layer { | leaf aggregation-forwarding-sub-layer { | |||
| type forwarding-sub-layer-ref; | type forwarding-sub-layer-ref; | |||
| description | ||||
| "This is reference to the forwarding sub-layer."; | ||||
| } | } | |||
| container forwarding-label { | container forwarding-label { | |||
| description | ||||
| "This is the forwarding label for forwarding | ||||
| sub-layer aggregation."; | ||||
| uses rt-types:mpls-label-stack; | uses rt-types:mpls-label-stack; | |||
| } | } | |||
| } | } | |||
| container service-sub-layer { | container service-sub-layer { | |||
| description | description | |||
| "This forwarding sub-layer is sent to the service | "This forwarding sub-layer is sent to the service | |||
| sub-layer of the upper layer and decapsulate the | sub-layer of the upper layer and decapsulate the | |||
| F-label for DetNet service or service-to-forwarding | F-label for DetNet service or service-to-forwarding | |||
| disaggregation at the relay node or egress node. | disaggregation at the relay node or egress node. | |||
| This outgoing type only can be chosen when the | This outgoing type only can be chosen when the | |||
| End of changes. 65 change blocks. | ||||
| 34 lines changed or deleted | 144 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/ | ||||