idnits 2.17.1 draft-ietf-detnet-yang-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 30 instances of too long lines in the document, the longest one being 18 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 396 has weird spacing: '...w index uin...' == Line 410 has weird spacing: '...address ine...' == Line 415 has weird spacing: '...address ine...' == Line 461 has weird spacing: '...w index uin...' == Line 478 has weird spacing: '...address ine...' == (2 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (November 04, 2019) is 1628 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'Network' is mentioned on line 126, but not defined == Unused Reference: 'I-D.finn-detnet-bounded-latency' is defined on line 1690, but no explicit reference was found in the text == Unused Reference: 'I-D.geng-detnet-info-distribution' is defined on line 1737, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-use-cases' is defined on line 1743, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te' is defined on line 1748, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te-topo' is defined on line 1754, but no explicit reference was found in the text == Unused Reference: 'I-D.thubert-tsvwg-detnet-transport' is defined on line 1760, but no explicit reference was found in the text == Unused Reference: 'I-D.varga-detnet-service-model' is defined on line 1765, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1CB' is defined on line 1770, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Q-2014' is defined on line 1776, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbu' is defined on line 1781, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbv' is defined on line 1786, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qcc' is defined on line 1791, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qch' is defined on line 1797, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qci' is defined on line 1803, but no explicit reference was found in the text == Unused Reference: 'RFC3209' is defined on line 1809, but no explicit reference was found in the text == Unused Reference: 'RFC4875' is defined on line 1814, but no explicit reference was found in the text == Unused Reference: 'RFC8342' is defined on line 1821, but no explicit reference was found in the text ** Downref: Normative reference to an Informational draft: draft-finn-detnet-bounded-latency (ref. 'I-D.finn-detnet-bounded-latency') == Outdated reference: A later version (-14) exists of draft-ietf-detnet-flow-information-model-06 ** Downref: Normative reference to an Informational draft: draft-ietf-detnet-flow-information-model (ref. 'I-D.ietf-detnet-flow-information-model') == Outdated reference: A later version (-07) exists of draft-ietf-detnet-ip-03 == Outdated reference: A later version (-13) exists of draft-ietf-detnet-mpls-03 == Outdated reference: A later version (-01) exists of draft-ietf-detnet-topology-yang-00 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-21 Summary: 3 errors (**), 0 flaws (~~), 31 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Geng 3 Internet-Draft M. Chen 4 Intended status: Standards Track Huawei Technologies 5 Expires: May 7, 2020 Y. Ryoo 6 ETRI 7 Z. Li 8 China Mobile 9 R. Rahman 10 Cisco Systems 11 November 04, 2019 13 Deterministic Networking (DetNet) Configuration YANG Model 14 draft-ietf-detnet-yang-04 16 Abstract 18 This document contains the specification for Deterministic Networking 19 flow configuration YANG Model. The model allows for provisioning of 20 end-to-end DetNet service along the path without dependency on any 21 signaling protocol. 23 The YANG module defined in this document conforms to the Network 24 Management Datastore Architecture (NMDA). 26 Requirements Language 28 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 29 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 30 document are to be interpreted as described in RFC 2119 [RFC2119]. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at https://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on May 7, 2020. 49 Copyright Notice 51 Copyright (c) 2019 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (https://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 67 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 4 68 3. DetNet Service Module . . . . . . . . . . . . . . . . . . . . 4 69 3.1. Service Quality . . . . . . . . . . . . . . . . . . . . . 4 70 3.2. Service Endpoints . . . . . . . . . . . . . . . . . . . . 4 71 3.3. Service Encapsulation . . . . . . . . . . . . . . . . . . 5 72 4. DetNet Configuration Module . . . . . . . . . . . . . . . . . 5 73 4.1. DetNet Appliction Flow Configuration Attributes . . . . . 5 74 4.2. DetNet Service Sub-layer Configuration Attributes . . . . 5 75 4.3. DetNet Forwarding Sub-layer Configuration Attributes . . 6 76 4.4. DetNet Sub-network Configurations Attributes . . . . . . 6 77 5. Overview of DetNet YANG . . . . . . . . . . . . . . . . . . . 7 78 5.1. DetNet YANG Considerations . . . . . . . . . . . . . . . 7 79 5.1.1. DetNet Service YANG Considerations . . . . . . . . . 7 80 5.1.2. DetNet Configuration YANG Considerations . . . . . . 7 81 5.2. DetNet YANG Structures . . . . . . . . . . . . . . . . . 8 82 5.2.1. DetNet Service YANG Structure . . . . . . . . . . . . 8 83 5.2.2. DetNet Configuration YANG Structure . . . . . . . . . 8 84 6. DetNet Service YANG Model . . . . . . . . . . . . . . . . . . 11 85 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 11 86 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 35 87 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 88 10. Security Considerations . . . . . . . . . . . . . . . . . . . 36 89 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 36 90 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 91 12.1. Normative References . . . . . . . . . . . . . . . . . . 36 92 12.2. Informative References . . . . . . . . . . . . . . . . . 37 93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 95 1. Introduction 97 DetNet (Deterministic Networking) provides a capability to carry 98 specified unicast or multicast data flows for real-time applications 99 with extremely low packet loss rates and assured maximum end-to-end 100 delivery latency. A description of the general background and 101 concepts of DetNet can be found in [I-D.ietf-detnet-architecture]. 103 This document defines a YANG model for DetNet based on YANG data 104 types and modeling language defined in [RFC6991] and [RFC7950], which 105 includes DetNet service module and DetNet configuration module, and 106 YANG model for topology discovery is defined in 107 [I-D.ietf-detnet-topology-yang]. DetNet service module is designed 108 for describe characteristics of services being provided for 109 application flows over a network, while the DetNet configuration 110 module is designed for DetNet flow path establishment, flow status 111 reporting, and DetNet functions configuration in order to achieve 112 end-to-end bounded latency and zero congestion loss. 114 DetNet Relay Transit Relay DetNet 115 End System Node Node Node End System 116 (T-PE) (S-PE) (LSR) (S-PE) (T-PE) 117 +----------+ +----------+ 118 | Appl. |<------------ End to End Service ----------->| Appl. | 119 +----------+ +---------+ +---------+ +----------+ 120 | Service |<--| Service |-- DetNet flow --| Service |-->| Service | 121 +----------+ +---------+ +----------+ +---------+ +----------+ 122 |Forwarding| |Fwd| |Fwd| |Forwarding| |Fwd| |Fwd| |Forwarding| 123 +-------.--+ +-.-+ +-.-+ +----.---.-+ +-.-+ +-.-+ +---.------+ 124 : Link : / ,-----. \ : Link : / ,-----. \ 125 +........+ +-[ Sub ]-+ +......+ +-[ Sub ]-+ 126 [Network] [Network] 127 `-----' `-----' 129 Figure 1: An End-to-end DetNet-Enabled Network 131 As showed in the picture, in an end-to-end DetNet-enabled network, 132 application flow is carried over a DetNet service and the DetNet 133 service is instantiated as different configuration parameters in 134 different network device along the path. DetNet service is an 135 abstract concept for service provider, and DetNet configuration needs 136 device specific attributes. YANG Models for DetNet service and 137 DetNet configuration are defined in detail respectively in section 3 138 and section 4. 140 Editor's notes: 142 Detnet YANG model and DetNet information model are supposed to keep 143 the same structure and describes the same attributes by different 144 methods. But the design of these two models are still under 145 discussion. The divergence will be settled in the following 146 versions. 148 2. Terminologies 150 This documents uses the terminologies defined in 151 [I-D.ietf-detnet-architecture]. 153 3. DetNet Service Module 155 DetNet Service Module includes service quality attributes, service 156 endpoints attributes and service encapsulation type attributes, which 157 are defined in Section 3.1, 3.2, 3.3 respectively. 159 3.1. Service Quality 161 DetNet service quality includes the following attributes: 163 o Maximum Latency: MaxLatency is the maximum latency from Ingress to 164 Egress(es) for a single packet of the DetNet flow. MaxLatency is 165 specified as an integer number of nanoseconds. 167 o Maximum Latency Variation: MaxLatencyVariation is the difference 168 between the minimum and the maximum end-to-end one-way latency. 169 MaxLatencyVariation is specified as an integer number of 170 nanoseconds. 172 o Maximum Loss: MaxLoss defines the maximum Packet Loss Ratio (PLR) 173 parameter for the DetNet service between the Ingress and 174 Egress(es) of the DetNet domain. 176 o Maximum Consecutive Loss: Maximum Consecutive Loss defines the 177 consecutive packet loss number. 179 o Maximum Misordering: MaxMisordering describes the maximum number 180 of packets that can be received out of order. 182 3.2. Service Endpoints 184 Endpoints attribute defines the starting and termination reference 185 points of the DetNet flow by pointing to the ingress interface/node 186 and egress interface(s)/node(s). 188 3.3. Service Encapsulation 190 Service Encapsulation attribute defines the data plane type of the 191 DetNet service in a DetNet domain, e.g., MPLS, IP. 193 Editor's notes: DetNet service module is just defined in the document 194 and the yang model is still under work. 196 4. DetNet Configuration Module 198 DetNet configuration module includes DetNet App-flow configuration, 199 DetNet Service Sub-layer configuration, and DetNet Forwarding Sub- 200 layer configuration and DetNet sub-network. The corresponding 201 attributes used in different sub-layers are defined in Section 3.1, 202 3.2, 3.3, 3.4 respectively. 204 4.1. DetNet Appliction Flow Configuration Attributes 206 DetNet application flow is responsible for mapping between 207 application flows and DetNet flows at the edge node(egress/ingress 208 node). Where the application flows can be either layer 2 or layer 3 209 flows. To identify a flow at the User Network Interface (UNI), as 210 defined in [I-D.ietf-detnet-flow-information-model], the following 211 flow attributes are introduced: 213 o DetNet L3 Flow Identification, refers to Section 7.1.1 of 214 [I-D.ietf-detnet-flow-information-model] 216 o DetNet L2 Flow Identification, refers to Section 7.1.2 of 217 [I-D.ietf-detnet-flow-information-model] 219 Application flow can also do flow filtering and policing at the 220 ingress to prevent the misbehaviored flows from going into the 221 network, which needs: 223 o Traffic Specification, refers to Section 7.2 of 224 [I-D.ietf-detnet-flow-information-model] 226 4.2. DetNet Service Sub-layer Configuration Attributes 228 DetNet service functions, e.g., DetNet tunnel initialization/ 229 termination and service protection, are provided in DetNet service 230 sub-layer. To support these functions, the following service 231 attributes need to be configured: 233 o DetNet flow identification, refers to Section 8.1.3 of 234 [I-D.ietf-detnet-flow-information-model]. 236 o Service function indication, indicates which service function will 237 be invoked at a DetNet edge, relay node or end station. (DetNet 238 tunnel initialization or termination are default functions in 239 DetNet service layer, so there is no need for explicit 240 indication.) 242 o Flow Rank, refers to Section 8.3 of 243 [I-D.ietf-detnet-flow-information-model]. 245 o Service Rank, refers to Section 16 of 246 [I-D.ietf-detnet-flow-information-model]. 248 o Service Sub-layer, refers to Section 4.5 and Section 4.6 of 249 [I-D.ietf-detnet-mpls] 251 o Forwarding Sub-layer, refers to Section 4.3 of 252 [I-D.ietf-detnet-ip] and Section 4.5 and Section 4.6 of 253 [I-D.ietf-detnet-mpls] 255 4.3. DetNet Forwarding Sub-layer Configuration Attributes 257 As defined in [I-D.ietf-detnet-architecture], DetNet forwarding sub- 258 layer optionally provides congestion protection for DetNet flows over 259 paths provided by the underlying network. Explicit route is another 260 mechanism that is used by DetNet to avoid temporary interruptions 261 caused by the convergence of routing or bridging protocols, and it is 262 also implemented at the DetNet forwarding sub-layer. 264 To support congestion protection and explicit route, the following 265 transport layer related attributes are necessary: 267 o Traffic Specification, refers to Section 7.2 of 268 [I-D.ietf-detnet-flow-information-model]. It may used for 269 bandwidth reservation, flow shaping, filtering and policing. 271 o Explicit path, existing explicit route mechanisms can be reused. 272 For example, if Segment Routing (SR) tunnel is used as the 273 transport tunnel, the configuration is mainly at the ingress node 274 of the transport layer; if the static MPLS tunnel is used as the 275 transport tunnel, the configurations need to be at every transit 276 node along the path; for pure IP based transport tunnel, it's 277 similar to the static MPLS case. 279 4.4. DetNet Sub-network Configurations Attributes 281 TBD 283 5. Overview of DetNet YANG 285 5.1. DetNet YANG Considerations 287 5.1.1. DetNet Service YANG Considerations 289 TBD 291 5.1.2. DetNet Configuration YANG Considerations 293 The picture shows that the general structure of the DetNet YANG 294 Model: 296 +-----------+ 297 |ietf-detnet| 298 +-----+-----+ 299 | 300 +-------------+------+--------+--------------+ 301 | | | | 302 +-----+-----+ +-----+-----+ +-------+------+ +-----+-----+ 303 | App Flows | |service s-l| |forwarding s-l| |sub-network| 304 +-----------+ +-----------+ +--------------+ +-----------+ 306 There are four instances in DetNet YANG Model: App-flow instance, 307 service sub-layer instance, forwarding sub-layer instance and sub- 308 network instance, respectively corresponding to four parts of DetNet 309 functions defined in section 3. In each instance, there are four 310 elements: name, in-segments, out-segments and operations, which 311 means: 313 o Name: indicates the key value of the instance identification. 315 o In-segments: indicates the key value of identification, e.g., 316 Layer 2 App flow identification, Layer 3 App flow identification 317 and DetNet flow identification. 319 o Out-segments: indicates the information of DetNet processing(e.g., 320 DetNet forwarding, DetNet header Encapsulation) and the mapping 321 relationship to the lower sub-layer/sub-network. 323 o Operations: indicates DetNet functions, e.g., DetNet forwarding 324 functions, DetNet Service functions, DetNet Resource Reservation. 326 These elements are different when the technologies used for the 327 specific instance is different. So this structure is abstract, which 328 allows for different technology specifics as defined in different 329 data plane drafts. 331 5.2. DetNet YANG Structures 333 5.2.1. DetNet Service YANG Structure 335 TBD 337 5.2.2. DetNet Configuration YANG Structure 339 +--rw app-flow 340 | +--rw operations 341 | | +--rw sequence-number 342 | | +--rw sequence-number-generation-type? sequence-number-generation-type 343 | | +--rw sequence-number-length? uint8 344 | +--rw in-segments 345 | | +--rw app-flow-type? flow-type-ref 346 | | +--rw source-mac-address? yang:mac-address 347 | | +--rw destination-mac-address? yang:mac-address 348 | | +--rw ethertype? eth:ethertype 349 | | +--rw vlan-id? uint16 350 | | +--rw pcp? uint8 351 | | +--rw src-ipv4-prefix inet:ipv4-prefix 352 | | +--rw dest-ipv4-prefix inet:ipv4-prefix 353 | | +--rw protocol uint8 354 | | +--rw dscp? uint8 355 | | +--rw dscp-bitmask? uint8 356 | | +--rw src-ipv6-prefix inet:ipv6-prefix 357 | | +--rw dest-ipv6-prefix inet:ipv6-prefix 358 | | +--rw next-header uint8 359 | | +--rw traffic-class? uint8 360 | | +--rw traffic-class-bitmask? uint8 361 | | +--rw flow-label? inet:ipv6-flow-label 362 | | +--rw flow-label-flag? boolean 363 | | +--rw lower-source-port? inet:port-number 364 | | +--rw upper-source-port? inet:port-number 365 | | +--rw lower-destination-port? inet:port-number 366 | | +--rw upper-destination-port? inet:port-number 367 | +--rw out-segments 368 | +--rw detnet-service-sub-layer? lower-layer-ref 369 +--rw service-sub-layer 370 | +--rw operations 371 | | +--rw service-operation 372 | | | +--rw service-operation-type? service-operation-ref 373 | | +--rw service-protection 374 | | +--rw service-protection-type? service-protection-type 375 | +--rw in-segments 376 | | +--rw detnet-service-type? flow-type-ref 377 | | +--rw detnet-service-list* [detnet-service-index] 378 | | +--rw detnet-service-index uint8 379 | | +--rw src-ipv4-prefix inet:ipv4-prefix 380 | | +--rw dest-ipv4-prefix inet:ipv4-prefix 381 | | +--rw protocol uint8 382 | | +--rw dscp? uint8 383 | | +--rw dscp-bitmask? uint8 384 | | +--rw src-ipv6-prefix inet:ipv6-prefix 385 | | +--rw dest-ipv6-prefix inet:ipv6-prefix 386 | | +--rw next-header uint8 387 | | +--rw traffic-class? uint8 388 | | +--rw traffic-class-bitmask? uint8 389 | | +--rw flow-label? inet:ipv6-flow-label 390 | | +--rw flow-label-flag? boolean 391 | | +--rw mpls-flow-identification 392 | | +--rw platform-label-flag? boolean 393 | | +--rw non-platform-label-space 394 | | | +--rw incoming-interface? if:interface-ref 395 | | | +--rw non-platform-label-stack* [index] 396 | | | +--rw index uint8 397 | | | +--rw label? rt-type:mpls-label 398 | | | +--rw tc? uint8 399 | | +--rw platform-label-space 400 | | +--rw label? rt-type:mpls-label 401 | | +--rw tc? uint8 402 | +--rw out-segments 403 | +--rw detnet-service-processing-type? flow-type-ref 404 | +--rw detnet-service-encapsulation 405 | +--rw detnet-service-processing-list* [detnet-service-processing-index] 406 | +--rw detnet-service-processing-index uint32 407 | +--rw ip-flow 408 | | +--rw ipv4-flow 409 | | | +--rw src-ipv4-address inet:ipv4-address 410 | | | +--rw dest-ipv4-address inet:ipv4-address 411 | | | +--rw protocol uint8 412 | | | +--rw dscp? uint8 413 | | +--rw ipv6-flow 414 | | | +--rw src-ipv6-address inet:ipv6-address 415 | | | +--rw dest-ipv6-address inet:ipv6-address 416 | | | +--rw next-header uint8 417 | | | +--rw traffic-class? uint8 418 | | | +--rw flow-label? inet:ipv6-flow-label 419 | | +--rw l4-port-header 420 | | +--rw source-port? inet:port-number 421 | | +--rw destination-port? inet:port-number 422 | +--rw mpls-flow 423 | | +--rw detnet-mpls-label-stack* [index] 424 | | +--rw index uint8 425 | | +--rw label? rt-type:mpls-label 426 | | +--rw tc? uint8 427 | | +--rw s-bit? boolean 428 | | +--rw d-cw-encapsulate-flag? boolean 429 | +--rw detnet-forwarding-sub-layer-info 430 | +--rw detnet-forwarding-sub-layer? lower-layer-ref 431 +--rw forwarding-sub-layer 432 | +--rw operations 433 | | +--rw forwarding-operation 434 | | | +--rw forwarding-operation-type? forwarding-operation-ref 435 | | +--rw resource-allocate 436 | | | +--rw interval? uint32 437 | | | +--rw max-packets-per-interval? uint32 438 | | | +--rw max-payload-size? uint32 439 | | | +--rw average-packets-per-interval? uint32 440 | | | +--rw average-payload-size? uint32 441 | | +--rw qos 442 | +--rw in-segments 443 | | +--rw detnet-forwarding-type? flow-type-ref 444 | | +--rw src-ipv4-prefix inet:ipv4-prefix 445 | | +--rw dest-ipv4-prefix inet:ipv4-prefix 446 | | +--rw protocol uint8 447 | | +--rw dscp? uint8 448 | | +--rw dscp-bitmask? uint8 449 | | +--rw src-ipv6-prefix inet:ipv6-prefix 450 | | +--rw dest-ipv6-prefix inet:ipv6-prefix 451 | | +--rw next-header uint8 452 | | +--rw traffic-class? uint8 453 | | +--rw traffic-class-bitmask? uint8 454 | | +--rw flow-label? inet:ipv6-flow-label 455 | | +--rw flow-label-flag? boolean 456 | | +--rw mpls-flow-identification 457 | | +--rw platform-label-flag? boolean 458 | | +--rw non-platform-label-space 459 | | | +--rw incoming-interface? if:interface-ref 460 | | | +--rw non-platform-label-stack* [index] 461 | | | +--rw index uint8 462 | | | +--rw label? rt-type:mpls-label 463 | | | +--rw tc? uint8 464 | | +--rw platform-label-space 465 | | +--rw label? rt-type:mpls-label 466 | | +--rw tc? uint8 467 | +--rw out-segments 468 | +--rw detnet-forwarding-processing-type? flow-type-ref 469 | +--rw natively-detnet-forwarding 470 | | +--rw ipv4-flow 471 | | | +--rw ipv4-next-hop-address? inet:ipv4-address 472 | | +--rw ipv6-flow 473 | | +--rw ipv6-next-hop-address? inet:ipv6-address 474 | +--rw detnet-forwarding-encapsulation 475 | +--rw ip-flow 476 | | +--rw ipv4-flow 477 | | | +--rw src-ipv4-address inet:ipv4-address 478 | | | +--rw dest-ipv4-address inet:ipv4-address 479 | | | +--rw protocol uint8 480 | | | +--rw dscp? uint8 481 | | +--rw ipv6-flow 482 | | | +--rw src-ipv6-address inet:ipv6-address 483 | | | +--rw dest-ipv6-address inet:ipv6-address 484 | | | +--rw next-header uint8 485 | | | +--rw traffic-class? uint8 486 | | | +--rw flow-label? inet:ipv6-flow-label 487 | | +--rw l4-port-header 488 | | +--rw source-port? inet:port-number 489 | | +--rw destination-port? inet:port-number 490 | +--rw mpls-flow 491 | | +--rw detnet-mpls-label-stack* [index] 492 | | +--rw index uint8 493 | | +--rw label? rt-type:mpls-label 494 | | +--rw tc? uint8 495 | | +--rw s-bit? boolean 496 | | +--rw d-cw-encapsulate-flag? boolean 497 | +--rw lower-layer-info 498 | +--rw lower-layer-type? flow-type-ref 499 | +--rw interface 500 | | +--rw outgoing-interface? if:interface-ref 501 | +--rw sub-layer 502 | +--rw sub-layer? lower-layer-ref 504 6. DetNet Service YANG Model 506 TBD 508 7. DetNet Configuration YANG Model 510 file ietf-detnet-config@20190324.yang 511 module ietf-detnet-config { 512 namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config"; 513 prefix "ietf-detnet"; 515 import ietf-yang-types { 516 prefix "yang"; 517 } 519 import ietf-inet-types{ 520 prefix "inet"; 521 } 522 import ietf-ethertypes { 523 prefix "eth"; 524 } 526 import ietf-routing-types { 527 prefix "rt-type"; 528 } 530 import ietf-interfaces { 531 prefix "if"; 532 } 534 organization "IETF DetNet Working Group"; 536 contact 537 "WG Web: 538 WG List: 539 WG Chair: Lou Berger 540 542 Janos Farkas 543 545 Editor: Xuesong Geng 546 548 Editor: Mach Chen 549 551 Editor: Zhenqiang Li 552 554 Editor: Reshad Rahman 555 557 Editor: Yeoncheol Ryoo 558 "; 560 description 561 "This YANG module describes the parameters needed 562 for DetNet flow configuration and flow status reporting"; 564 revision 2019-03-24 { 565 description "initial revision"; 566 reference "RFC XXXX: draft-ietf-detnet-yang-02"; 567 } 569 identity ttl-action { 570 description 571 "Base identity from which all TTL 572 actions are derived"; 573 } 575 identity no-action { 576 base "ttl-action"; 577 description 578 "Do nothing regarding the TTL"; 579 } 581 identity copy-to-inner { 582 base "ttl-action"; 583 description 584 "Copy the TTL of the outer header 585 to the inner header"; 586 } 588 identity decrease-and-copy-to-inner { 589 base "ttl-action"; 590 description 591 "Decrease TTL by one and copy the TTL 592 to the inner header"; 593 } 595 identity config-type { 596 description 597 "Base identity from which all configuration instances are derived"; 598 } 600 identity App-flow { 601 base "config-type"; 602 description 603 "App-flow configuration"; 604 } 606 identity service-sub-layer { 607 base "config-type"; 608 description 609 "A DetNet MPLS or IP service sub-layer configuration"; 610 } 612 identity forwarding-sub-layer { 613 base "config-type"; 614 description 615 "A DetNet MPLS or IP forwarding sub-layer configuration"; 616 } 617 identity tsn-sub-network { 618 base "config-type"; 619 description 620 "A TSN sub-net configuration"; 621 } 623 identity flow-type { 624 description 625 "Base identity from which all flow type are derived"; 626 } 628 identity ipv4 { 629 base "flow-type"; 630 description 631 "An IPv4 flow"; 632 } 634 identity ipv6 { 635 base "flow-type"; 636 description 637 "An IPv6 flow"; 638 } 640 identity mpls { 641 base "flow-type"; 642 description 643 "An MPLS flow"; 644 } 646 identity l2 { 647 base "flow-type"; 648 description 649 "An MPLS flow"; 650 } 652 identity tsn { 653 base "flow-type"; 654 description 655 "An MPLS flow"; 656 } 658 identity service-operation { 659 description 660 "Base identity from which all service operation are derived"; 661 } 663 identity service-initiation { 664 base "service-operation"; 665 description 666 "A DetNet service encapsulates"; 667 } 669 identity service-termination { 670 base "service-operation"; 671 description 672 "A DetNet service decapsulates"; 673 } 675 identity service-relay { 676 base "service-operation"; 677 description 678 "A DetNet service swap"; 679 } 681 identity forwarding-operation { 682 description 683 "Base identity from which all data plane operation are derived"; 684 } 686 identity natively-forward { 687 base "forwarding-operation"; 688 description 689 "A packet natively forward to lower-layer"; 690 } 692 identity impose-and-forward { 693 base "forwarding-operation"; 694 description 695 "Impose a header(MPLS/IP) and forward to lower-layer"; 696 } 698 identity pop-and-forward { 699 base "forwarding-operation"; 700 description 701 "Pop an identified packet header and forward to lower-layer"; 702 } 704 identity pop-impose-and-forward { 705 base "forwarding-operation"; 706 description 707 "Pop an identified packet header, impose a one or more outgoing 708 header and forward to lower-layer "; 709 } 711 identity swap-and-forward { 712 base "forwarding-operation"; 713 description 714 "Swap an identified packet header with outgoing header and forward 715 to lower-layer "; 716 } 718 identity pop-and-lookup { 719 base "forwarding-operation"; 720 description 721 "Pop an identified packet header and perform a lookup"; 722 } 723 identity label-space { 724 description 725 "Base identity from which all label space are derived"; 726 } 728 identity platform-label { 729 base "label-space"; 730 description 731 "label allocated from the platform label space"; 732 } 734 identity non-platform-label { 735 base "label-space"; 736 description 737 "label allocated from the non-platform label space"; 738 } 740 typedef ttl-action-definition { 741 type identityref { 742 base "ttl-action"; 743 } 744 description 745 "TTL action definition"; 746 } 748 typedef config-type-ref { 749 type identityref { 750 base "config-type"; 751 } 752 description 753 "config-type-ref"; 754 } 756 typedef flow-type-ref { 757 type identityref { 758 base "flow-type"; 759 } 760 description 761 "flow-type-ref"; 762 } 764 typedef service-operation-ref{ 765 type identityref { 766 base "service-operation"; 767 } 768 description 769 "service-operation-ref"; 770 } 772 typedef forwarding-operation-ref { 773 type identityref { 774 base "forwarding-operation"; 775 } 776 description 777 "forwarding-operation-ref"; 778 } 780 typedef label-space-ref { 781 type identityref { 782 base "label-space"; 783 } 784 description 785 "label-space-ref"; 786 } 788 typedef lower-layer-ref { 789 type leafref { 790 path "/ietf-detnet:detnet-config/ietf-detnet:detnet-config-list" 791 + "/ietf-detnet:name"; 792 } 793 description 794 "lower-layer-ref"; 795 } 797 typedef service-protection-type { 798 type enumeration { 799 enum none { 800 description 801 "no service protection provide"; 802 } 803 enum replication { 804 description 805 "A Packet Replication Function (PRF) replicates 806 DetNet flow packets and forwards them to one or 807 more next hops in the DetNet domain. The number 808 of packet copies sent to each next hop is a 809 DetNet flow specific parameter at the node doing 810 the replication. PRF can be implemented by an 811 edge node, a relay node, or an end system"; 812 } 813 enum elimination { 814 description 815 "A Packet Elimination Function (PEF) eliminates 816 duplicate copies of packets to prevent excess 817 packets flooding the network or duplicate 818 packets being sent out of the DetNet domain. 819 PEF can be implemented by an edge node, a relay 820 node, or an end system."; 821 } 822 enum ordering { 823 description 824 "A Packet Ordering Function (POF) re-orders 825 packets within a DetNet flow that are received 826 out of order. This function can be implemented 827 by an edge node, a relay node, or an end system."; 828 } 829 enum elimination-ordering { 830 description 831 "A combination of PEF and POF that can be 832 implemented by an edge node, a relay node, or 833 an end system."; 834 } 835 enum elimination-replication { 836 description 837 "A combination of PEF and PRF that can be 838 implemented by an edge node, a relay node, or 839 an end system"; 840 } 841 enum elimination-ordering-replicaiton { 842 description 843 "A combination of PEF, POF and PRF that can be 844 implemented by an edge node, a relay node, or 845 an end system"; 846 } 847 } 848 description 849 "service-protection-type"; 850 } 852 typedef sequence-number-generation-type { 853 type enumeration { 854 enum none { 855 description 856 "No sequence number generation function provide"; 857 } 858 enum copy-from-app-flow { 859 description 860 "Copy the app-flow sequence number to the DetNet-flow"; 861 } 862 enum generate-by-detnet-flow { 863 description 864 "Generate the sequence number by DetNet flow"; 865 } 866 } 867 description 868 "sequence-number-generation-type"; 869 } 871 grouping l4-port-header { 872 description 873 "The TCP/UDP port(source/destination) information"; 874 leaf source-port { 875 type inet:port-number; 876 description 877 "The source port number"; 878 } 879 leaf destination-port { 880 type inet:port-number; 881 description 882 "The destination port number"; 883 } 884 } 886 grouping ipv4-header { 887 description 888 "The IPv4 packet header information"; 889 leaf src-ipv4-address { 890 type inet:ipv4-address; 891 mandatory true; 892 description 893 "The source IP address of the header"; 894 } 895 leaf dest-ipv4-address { 896 type inet:ipv4-address; 897 mandatory true; 898 description 899 "The destination IP address of the header"; 900 } 901 leaf protocol { 902 type uint8; 903 mandatory true; 904 description 905 "The protocol of the header"; 906 } 907 leaf dscp { 908 type uint8; 909 description 910 "The DSCP field of the header"; 911 } 912 } 914 grouping ipv6-header { 915 description 916 "The IPv6 packet header information"; 917 leaf src-ipv6-address { 918 type inet:ipv6-address; 919 mandatory true; 920 description 921 "The source IP address of the header"; 922 } 923 leaf dest-ipv6-address { 924 type inet:ipv6-address; 925 mandatory true; 926 description 927 "The destination IP address of the header"; 928 } 929 leaf next-header { 930 type uint8; 931 mandatory true; 932 description 933 "The next header of the IPv6 header"; 934 } 935 leaf traffic-class { 936 type uint8; 937 description 938 "The traffic class value of the header"; 939 } 940 leaf flow-label { 941 type inet:ipv6-flow-label; 942 description 943 "The flow label value of the header"; 944 } 945 } 947 grouping mpls-header { 948 description 949 "The MPLS packet header information"; 950 leaf label { 951 type rt-type:mpls-label; 952 description 953 "The label value of the MPLS header"; 954 } 955 leaf tc { 956 type uint8; 957 description 958 "The traffic class value of the MPLS header"; 959 } 960 leaf s-bit { 961 type boolean; 962 description 963 "The s-bit value of the MPLS header, 964 which indicates the bottom of the label shack"; 965 } 966 leaf d-cw-encapsulate-flag { 967 type boolean; 968 description 969 "the indication of whether D-CW is encapsulated or not, 970 when the D-CW is encapsulated, the sequence number is 971 determined by sequence generation type"; 972 } 973 } 975 grouping l2-header { 976 description 977 "The Ethernet or TSN packet header information"; 978 leaf source-mac-address { 979 type yang:mac-address; 980 description 981 "The source MAC address value of the ethernet header"; 982 } 983 leaf destination-mac-address { 984 type yang:mac-address; 985 description 986 "The destination MAC address value of the ethernet header"; 987 } 988 leaf ethertype { 989 type eth:ethertype; 990 description 991 "The ethernet packet type value of the ethernet header"; 992 } 993 leaf vlan-id { 994 type uint16; 995 description 996 "The Vlan value of the ethernet header"; 997 } 998 leaf pcp { 999 type uint8; 1000 description 1001 "The priority value of the ethernet header"; 1002 } 1003 } 1005 grouping l4-port-identification { 1006 description 1007 "The TCP/UDP port(source/destination) identification information"; 1008 leaf lower-source-port { 1009 type inet:port-number; 1010 description 1011 "The lower source port number of the source port range"; 1012 } 1013 leaf upper-source-port { 1014 type inet:port-number; 1015 description 1016 "The upper source port number of the source port range"; 1017 } 1018 leaf lower-destination-port { 1019 type inet:port-number; 1020 description 1021 "The lower destination port number or the destination port range"; 1022 } 1023 leaf upper-destination-port { 1024 type inet:port-number; 1025 description 1026 "The upper destination port number of the destination port range"; 1027 } 1028 } 1030 grouping ipv4-flow-identification { 1031 description 1032 "The IPv4 packet header identification information"; 1033 leaf src-ipv4-prefix { 1034 type inet:ipv4-prefix; 1035 mandatory true; 1036 description 1037 "The source IP address of the header"; 1038 } 1039 leaf dest-ipv4-prefix { 1040 type inet:ipv4-prefix; 1041 mandatory true; 1042 description 1043 "The destination IP address of the header"; 1044 } 1045 leaf protocol { 1046 type uint8; 1047 mandatory true; 1048 description 1049 "The protocol of the header"; 1050 } 1051 leaf dscp { 1052 type uint8; 1053 description 1054 "The DSCP field of the header"; 1055 } 1056 leaf dscp-bitmask { 1057 type uint8; 1058 description 1059 "The bitmask value that determines whether to use 1060 the DSCP(IPv4) value for flow identification or not"; 1061 } 1062 } 1064 grouping ipv6-flow-identification { 1065 description 1066 "The IPv6 packet header identification information"; 1067 leaf src-ipv6-prefix { 1068 type inet:ipv6-prefix; 1069 mandatory true; 1070 description 1071 "The source IP address of the header"; 1072 } 1073 leaf dest-ipv6-prefix { 1074 type inet:ipv6-prefix; 1075 mandatory true; 1076 description 1077 "The destination IP address of the header"; 1078 } 1079 leaf next-header { 1080 type uint8; 1081 mandatory true; 1082 description 1083 "The next header of the IPv6 header"; 1084 } 1085 leaf traffic-class { 1086 type uint8; 1087 description 1088 "The traffic class value of the header"; 1089 } 1090 leaf traffic-class-bitmask { 1091 type uint8; 1092 description 1093 "The bitmask value that determines whether to use 1094 the Traffic class(IPv6) value for flow identification or not"; 1095 } 1096 leaf flow-label { 1097 type inet:ipv6-flow-label; 1098 description 1099 "The flow label value of the header"; 1100 } 1101 leaf flow-label-flag { 1102 type boolean; 1103 description 1104 "The flag that determines whether to use 1105 the Flow Label value for flow identification or not"; 1106 } 1107 } 1109 grouping mpls-flow-identification { 1110 description 1111 "The MPLS packet header identification information"; 1112 leaf label { 1113 type rt-type:mpls-label; 1114 description 1115 "The label value of the MPLS header"; 1116 } 1117 leaf tc { 1118 type uint8; 1119 description 1120 "The traffic class value of the MPLS header"; 1121 } 1122 } 1124 grouping l2-flow-identification { 1125 description 1126 "The Ethernet or TSN packet header identification information"; 1127 leaf source-mac-address { 1128 type yang:mac-address; 1129 description 1130 "The source MAC address value of the ethernet header"; 1131 } 1132 leaf destination-mac-address { 1133 type yang:mac-address; 1134 description 1135 "The destination MAC address value of the ethernet header"; 1136 } 1137 leaf ethertype { 1138 type eth:ethertype; 1139 description 1140 "The ethernet packet type value of the ethernet header"; 1141 } 1142 leaf vlan-id { 1143 type uint16; 1144 description 1145 "The Vlan value of the ethernet header"; 1146 } 1147 leaf pcp { 1148 type uint8; 1149 description 1150 "The priority value of the ethernet header"; 1151 } 1152 } 1154 grouping traffic-specification { 1155 description 1156 "traffic-specification specifies how the Source 1157 transmits packets for the flow. This is the 1158 promise/request of the Source to the network. 1159 The network uses this traffic specification 1160 to allocate resources and adjust queue 1161 parameters in network nodes."; 1162 reference 1163 "draft-ietf-detnet-flow-information-model"; 1164 leaf interval { 1165 type uint32; 1166 description 1167 "The period of time in which the traffic 1168 specification cannot be exceeded"; 1169 } 1170 leaf max-packets-per-interval{ 1171 type uint32; 1172 description 1173 "The maximum number of packets that the 1174 source will transmit in one Interval."; 1175 } 1176 leaf max-payload-size{ 1177 type uint32; 1178 description 1179 "The maximum payload size that the source 1180 will transmit."; 1181 } 1182 leaf average-packets-per-interval { 1183 type uint32; 1184 description 1185 "The average number of packets that the 1186 source will transmit in one Interval"; 1187 } 1188 leaf average-payload-size { 1189 type uint32; 1190 description 1191 "The average payload size that the 1192 source will transmit."; 1193 } 1194 } 1196 container detnet-config { 1197 description 1198 "DetNet configurations"; 1199 leaf node-id { 1200 type yang:dotted-quad; 1201 description 1202 "A 32-bit number in the form of a dotted quad that is used by 1203 identifying a DetNet node"; 1204 } 1205 list detnet-config-list { 1206 key "name"; 1207 description 1208 "list of the DetNet configurations"; 1209 leaf name { 1210 type string; 1211 description 1212 "The name to identify the DetNet configuration"; 1213 } 1214 leaf config-type { 1215 type config-type-ref; 1216 description 1217 "The DetNet configuration type such as a App-flow, service 1218 sub-layer, forwarding sub-layer, and TSN sub-network"; 1219 } 1220 container App-flow { 1221 when "../config-type = 'ietf-detnet:App-flow'"; 1222 description 1223 "The DetNet App-flow configuration"; 1224 container operations { 1225 description "operations"; 1226 container sequence-number { 1227 description "The DetNet sequence number operations grouping"; 1228 leaf sequence-number-generation-type { 1229 type sequence-number-generation-type; 1230 description "The DetNet sequence number generation type"; 1231 } 1232 leaf sequence-number-length { 1233 type uint8; 1234 description 1235 "The DetNet sequence number length"; 1236 } 1237 } 1238 } 1239 container in-segments { 1240 description "The App-flow identification information"; 1241 leaf app-flow-type { 1242 type flow-type-ref; 1243 description 1244 "The App-flow type such as a L2, IPv4, and IPv6"; 1245 } 1246 uses l2-flow-identification { 1247 when "app-flow-type = 'ietf-detnet:tsn' or 'ietf-detnet:l2'"; 1248 } 1249 uses ipv4-flow-identification { 1250 when "app-flow-type = 'ietf-detnet:ipv4'"; 1251 } 1252 uses ipv6-flow-identification { 1253 when "app-flow-type = 'ietf-detnet:ipv6'"; 1254 } 1255 uses l4-port-identification { 1256 when "app-flow-type = 'ietf-detnet:ipv6' or 'ietf-detnet:ipv4'"; 1257 or 'ietf-detnet:ipv4'"; 1258 } 1259 } 1260 container out-segments { 1261 description 1262 "The DetNet service information associated with this App-flow"; 1263 leaf detnet-service-sub-layer { 1264 type lower-layer-ref; 1265 description "Specify associated service sub-layer"; 1266 } 1267 } 1268 } 1269 container service-sub-layer { 1270 when "../config-type = 'ietf-detnet:service-sub-layer'"; 1271 description "The DetNet service sub-layer configuration"; 1272 container operations { 1273 description 1274 "The DetNet service sub-layer operations grouping"; 1275 container service-operation { 1276 description "The DetNet service operations grouping"; 1277 leaf service-operation-type { 1278 type service-operation-ref; 1279 description 1280 "The DetNet service operations type such as DetNet 1281 service initiation, termination, and relay"; 1282 } 1283 } 1284 container service-protection { 1285 description 1286 "The DetNet service protection operations grouping"; 1287 leaf service-protection-type { 1288 type service-protection-type; 1289 description 1290 "The DetNet service protection type such as PRF, PEF, PEOF, 1291 PERF, and PEORF"; 1292 } 1293 } 1294 } 1295 container in-segments { 1296 when "../operations/service-operation" 1297 + "/service-operation-type != 'service-initation'"; 1298 description 1299 "DetNet service identification information"; 1300 leaf detnet-service-type { 1301 type flow-type-ref; 1302 description 1303 "incoming DetNet service flow type"; 1304 } 1305 list detnet-service-list { 1306 key "detnet-service-index"; 1307 description 1308 "Incoming DetNet member flows or a compound flow"; 1309 leaf detnet-service-index { 1310 type uint8; 1311 description 1312 "Incoming DetNet service index"; 1313 } 1314 uses ipv4-flow-identification { 1315 when "../detnet-service-type = 'ietf-detnet:ipv4'"; 1316 } 1317 uses ipv6-flow-identification { 1318 when "../detnet-service-type = 'ietf-detnet:ipv6'"; 1319 } 1320 container mpls-flow-identification { 1321 when "../../detnet-service-type = 'ietf-detnet:mpls'"; 1322 description 1323 "MPLS type DetNet service identification"; 1324 leaf label-space { 1325 type label-space-ref; 1326 description 1327 "Indicate the incoming MPLS label is associated with 1328 platform label space or not"; 1329 } 1330 container non-platform-label-space { 1331 when "../label-space = 'ietf-detnet:non-platform-label'"; 1332 description 1333 "MPLS label is associated with non-platform label space, 1334 all of the F-labels and incoming interface information was 1335 used for identification"; 1337 leaf incoming-interface { 1338 type if:interface-ref; 1339 description 1340 "DetNet service incoming interface information"; 1341 } 1342 list non-platform-label-stack { 1343 key "index"; 1344 description 1345 "All of the label information from the outer label 1346 to the current label"; 1347 leaf index { 1348 type uint8; 1349 description 1350 "Index of the labels stack"; 1351 } 1352 uses mpls-flow-identification; 1353 } 1354 } 1355 container platform-label-space { 1356 when "../label-space = 'ietf-detnet:platform-label'"; 1357 description 1358 "MPLS label is associated with platform label space, only 1359 the F-label is used for identification"; 1360 uses mpls-flow-identification; 1361 } 1362 } 1363 } 1364 } 1365 container out-segments { 1366 when "../operations/service-operation" 1367 + "/service-operation-type != 'service-termination'"; 1368 description 1369 "DetNet Service outgoing processing grouping"; 1370 leaf detnet-service-processing-type { 1371 type flow-type-ref; 1372 description 1373 "Outgoing DetNet service flow type"; 1374 } 1375 container detnet-service-encapsulation { 1376 description 1377 "DetNet service encapsulation information"; 1378 list detnet-service-processing-list { 1379 key "detnet-service-processing-index"; 1380 description 1381 "The list of single or multiple outgoing DetNet service(s)"; 1382 leaf detnet-service-processing-index { 1383 type uint32; 1384 description "Outgoing segment entry"; 1386 } 1387 container ip-flow { 1388 when "../../../detnet-service-processing-type =" 1389 + "'ietf-detnet:ipv4' or 'ietf-detnet:ipv6'"; 1390 description 1391 "IP type DetNet flow(s) encapsulation information"; 1392 container ipv4-flow { 1393 when "../../../../detnet-service-processing-type =" 1394 + "'ietf-detnet:ipv4'"; 1395 description 1396 "IPv4 packet header encapsulation information"; 1397 uses ipv4-header; 1398 } 1399 container ipv6-flow { 1400 when "../../../../detnet-service-processing-type =" 1401 + "'ietf-detnet:ipv6'"; 1402 description 1403 "IPv6 packet header encapsulation information"; 1404 uses ipv6-header; 1405 } 1406 container l4-port-header { 1407 description 1408 "TCP/UDP source or destination port number"; 1409 uses l4-port-header; 1410 } 1411 } 1412 container mpls-flow { 1413 when "../../../detnet-service-processing-type =" 1414 + "'ietf-detnet:mpls'"; 1415 description 1416 "MPLS type DetNet flow(s) encapsulation information"; 1417 list detnet-mpls-label-stack { 1418 key "index"; 1419 description 1420 "The list of MPLS labels stack for swap or encapsulation"; 1421 leaf index { 1422 type uint8; 1423 description "Index of the labels stack"; 1424 } 1425 uses mpls-header; 1426 } 1427 } 1428 container detnet-forwarding-sub-layer-info { 1429 description 1430 "The forwarding sub-layer information that associated with 1431 this DetNet service sub-layer"; 1432 leaf detnet-forwarding-sub-layer { 1433 type lower-layer-ref; 1434 description 1435 "Specify associated forwarding sub-layer"; 1436 } 1437 } 1438 } 1439 } 1440 } 1441 } 1442 container forwarding-sub-layer { 1443 when "../config-type = 'ietf-detnet:forwarding-sub-layer'"; 1444 description 1445 "The DetNet forwarding sub-layer configuration"; 1446 container operations { 1447 description 1448 "The DetNet forwarding sub-layer operations grouping"; 1449 container forwarding-operation { 1450 description 1451 "DetNet forwarding function operations grouping"; 1452 leaf forwarding-operation-type { 1453 type forwarding-operation-ref; 1454 description 1455 "DetNet forwarding operation type such as 1456 natively forward, impose and forward, pop and forward, 1457 pop and impose and forward, swap and forward, 1458 and pop and lookup"; 1459 } 1460 } 1461 container resource-allocate { 1462 description 1463 "resource-allocation function operations grouping"; 1464 uses traffic-specification; 1465 } 1466 container qos { 1467 description 1468 "QoS function operations grouping"; 1469 } 1470 } 1471 container in-segments { 1472 description 1473 "DetNet forwarding sub-layer packet identification information"; 1474 leaf detnet-forwarding-type { 1475 type flow-type-ref; 1476 description 1477 "incoming DetNet forwarding packet type"; 1478 } 1479 uses ipv4-flow-identification { 1480 when "detnet-forwardinge-type = 'ietf-detnet:ipv4'"; 1481 } 1482 uses ipv6-flow-identification { 1483 when "detnet-forwarding-type = 'ietf-detnet:ipv6'"; 1484 } 1485 container mpls-flow-identification { 1486 when "../detnet-forwarding-type = 'ietf-detnet:mpls'"; 1487 description 1488 "MPLS type identification information"; 1489 leaf label-space { 1490 type label-space-ref; 1491 description 1492 "Indicate the incoming MPLS label is associated with platform 1493 label space or not"; 1494 } 1495 container non-platform-label-space { 1496 when "../label-space = 'ietf-detnet:non-platform-label'"; 1497 description 1498 "MPLS label is associated with non-platform label space, 1499 all of the F-labels and incoming interface information was 1500 used for identification"; 1501 leaf incoming-interface { 1502 type if:interface-ref; 1503 description 1504 "The information of DetNet forwarding packet incoming 1505 interface"; 1506 } 1507 list non-platform-label-stack { 1508 key "index"; 1509 description 1510 "All of the label information from the outer label to 1511 the current label"; 1512 leaf index { 1513 type uint8; 1514 description 1515 "index number 0 indicate last inner label"; 1516 } 1517 uses mpls-flow-identification; 1518 } 1519 } 1520 container platform-label-space { 1521 when "../label-space = 'ietf-detnet:platform-label'"; 1522 description 1523 "MPLS label is associated with platform label space, only 1524 the F-label is used for identification"; 1525 uses mpls-flow-identification; 1526 } 1527 } 1528 } 1529 container out-segments { 1530 description 1531 "DetNet forwarding sub-layer packet processing information"; 1532 leaf detnet-forwarding-processing-type { 1533 type flow-type-ref; 1534 description 1535 "outgoing DetNet forwarding packet type"; 1536 } 1537 container natively-detnet-forwarding { 1538 when "../../operations/forwarding-operation" 1539 + " /forwarding-operation-type = 'natively-forwarding'"; 1540 description 1541 "Packet forwarding processing information"; 1542 container ipv4-flow { 1543 when "../../detnet-forwarding-processing-type =" 1544 + "'ietf-detnet:ipv4'"; 1545 description 1546 "IPv4 type packet forwarding information"; 1547 leaf ipv4-next-hop-address { 1548 type inet:ipv4-address; 1549 description 1550 "IPv4 type Next hop IP address"; 1551 } 1552 } 1553 container ipv6-flow { 1554 when "../../detnet-forwarding-processing-type =" 1555 + "'ietf-detnet:ipv6'"; 1556 description 1557 "IPv6 type packet forwarding information"; 1558 leaf ipv6-next-hop-address { 1559 type inet:ipv6-address; 1560 description 1561 "IPv6 type Next hop IP address"; 1562 } 1563 } 1564 } 1565 container detnet-forwarding-encapsulation { 1566 when "../../operations/forwarding-operation" 1567 + "/forwarding-operation-type != 'natively-forward'"; 1568 description 1569 "Packet encapsulation information"; 1570 container ip-flow { 1571 when "../../detnet-forwarding-processing-type = " 1572 + "'ietf-detnet:ipv4' or 'ietf-detnet:ipv6'"; 1573 description 1574 "The IP type DetNet flow(s) encapsulation information"; 1575 container ipv4-flow { 1576 when "../../../detnet-forwarding-processing-type = " 1577 + "'ietf-detnet:ipv4'"; 1578 description 1579 "IPv4 packet header encapsulation information"; 1580 uses ipv4-header; 1581 } 1582 container ipv6-flow { 1583 when "../../../detnet-forwarding-processing-type = " 1584 + "'ietf-detnet:ipv6'"; 1585 description 1586 "IPv6 packet header encapsulation information"; 1587 uses ipv6-header; 1588 } 1589 container l4-port-header { 1590 description 1591 "TCP/UDP source or destination port number"; 1592 uses l4-port-header; 1593 } 1594 } 1595 container mpls-flow { 1596 when "../../detnet-forwarding-processing-type = " 1597 + "'ietf-detnet:mpls'"; 1598 description 1599 "MPLS label encapsulation information"; 1600 list detnet-mpls-label-stack { 1601 key "index"; 1602 description 1603 "The list of MPLS labels stack for swap or encapsulation"; 1604 leaf index { 1605 type uint8; 1606 description 1607 "Index of the labels stack"; 1608 } 1609 uses mpls-header; 1610 } 1611 } 1612 container lower-layer-info { 1613 description 1614 "The lower-layer information associated with 1615 this forwarding sub-layer"; 1616 leaf lower-layer-type { 1617 type flow-type-ref; 1618 description 1619 "indicate lower-layer type"; 1620 } 1621 container interface { 1622 when "../lower-layer-type = 'ietf-detnet:l2'"; 1623 description 1624 "indicate the lower-layer is the outgoing interface"; 1625 leaf outgoing-interface { 1626 type if:interface-ref; 1627 description 1628 "Outgoing interface"; 1629 } 1630 } 1631 container sub-layer { 1632 when "../lower-layer-type != 'ietf-detnet:l2'"; 1633 description 1634 "indicate the lower-layer is some of the DetNet sub-layer 1635 or TSN sub-network"; 1636 leaf sub-layer { 1637 type lower-layer-ref; 1638 description 1639 "Specify associated DetNet sub-layer or TSN sub-network"; 1640 } 1641 } 1642 } 1643 } 1644 } 1645 } 1646 container sub-network { 1647 when "../config-type = 'ietf-detnet:tsn-sub-network'"; 1648 description 1649 "sub-network"; 1650 } 1651 } 1652 } 1653 } 1655 1657 8. Open Issues 1659 There are some open issues that are still under discussion: 1661 o The Relationship with 802.1 TSN YANG models is TBD. TSN YANG 1662 models include: P802.1Qcw, which defines TSN YANG for Qbv, Qbu, 1663 and Qci, and P802.1CBcv, which defines YANG for 802.1CB. The 1664 possible problem here is how to avoid possible overlap among yang 1665 models defined in IETF and IEEE. A common YANG model may be 1666 defined in the future to shared by both TSN and DetNet. More 1667 discussion are needed here. 1669 o How to support DetNet OAM is TBD. 1671 These issues will be resolved in the following versions of the draft. 1673 9. IANA Considerations 1675 This document makes no request of IANA. 1677 Note to RFC Editor: this section may be removed on publication as an 1678 RFC. 1680 10. Security Considerations 1682 1684 11. Acknowledgements 1686 12. References 1688 12.1. Normative References 1690 [I-D.finn-detnet-bounded-latency] 1691 Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga, 1692 B., and J. Farkas, "DetNet Bounded Latency", draft-finn- 1693 detnet-bounded-latency-04 (work in progress), June 2019. 1695 [I-D.ietf-detnet-architecture] 1696 Finn, N., Thubert, P., Varga, B., and J. Farkas, 1697 "Deterministic Networking Architecture", draft-ietf- 1698 detnet-architecture-13 (work in progress), May 2019. 1700 [I-D.ietf-detnet-flow-information-model] 1701 Farkas, J., Varga, B., Cummings, R., Jiang, Y., and D. 1702 Fedyk, "DetNet Flow Information Model", draft-ietf-detnet- 1703 flow-information-model-06 (work in progress), October 1704 2019. 1706 [I-D.ietf-detnet-ip] 1707 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A., 1708 Bryant, S., and J. Korhonen, "DetNet Data Plane: IP", 1709 draft-ietf-detnet-ip-03 (work in progress), October 2019. 1711 [I-D.ietf-detnet-mpls] 1712 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A., 1713 Bryant, S., and J. Korhonen, "DetNet Data Plane: MPLS", 1714 draft-ietf-detnet-mpls-03 (work in progress), October 1715 2019. 1717 [I-D.ietf-detnet-topology-yang] 1718 Geng, X., Chen, M., Li, Z., and R. Rahman, "Deterministic 1719 Networking (DetNet) Topology YANG Model", draft-ietf- 1720 detnet-topology-yang-00 (work in progress), January 2019. 1722 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1723 Requirement Levels", BCP 14, RFC 2119, 1724 DOI 10.17487/RFC2119, March 1997, 1725 . 1727 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1728 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1729 . 1731 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1732 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1733 . 1735 12.2. Informative References 1737 [I-D.geng-detnet-info-distribution] 1738 Geng, X., Chen, M., Li, Z., Qin, F., and L. Qiang, "IGP-TE 1739 Extensions for DetNet Information Distribution", draft- 1740 geng-detnet-info-distribution-04 (work in progress), July 1741 2019. 1743 [I-D.ietf-detnet-use-cases] 1744 Grossman, E., "Deterministic Networking Use Cases", draft- 1745 ietf-detnet-use-cases-20 (work in progress), December 1746 2018. 1748 [I-D.ietf-teas-yang-te] 1749 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 1750 "A YANG Data Model for Traffic Engineering Tunnels and 1751 Interfaces", draft-ietf-teas-yang-te-21 (work in 1752 progress), April 2019. 1754 [I-D.ietf-teas-yang-te-topo] 1755 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1756 O. Dios, "YANG Data Model for Traffic Engineering (TE) 1757 Topologies", draft-ietf-teas-yang-te-topo-22 (work in 1758 progress), June 2019. 1760 [I-D.thubert-tsvwg-detnet-transport] 1761 Thubert, P., "A Transport Layer for Deterministic 1762 Networks", draft-thubert-tsvwg-detnet-transport-01 (work 1763 in progress), October 2017. 1765 [I-D.varga-detnet-service-model] 1766 Varga, B. and J. Farkas, "DetNet Service Model", draft- 1767 varga-detnet-service-model-02 (work in progress), May 1768 2017. 1770 [IEEE802.1CB] 1771 IEEE, "IEEE, "Frame Replication and Elimination for 1772 Reliability (IEEE Draft P802.1CB)", 2017, 1773 .", 1774 2016. 1776 [IEEE802.1Q-2014] 1777 "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks", 1778 2014, .", 1779 2014. 1781 [IEEE802.1Qbu] 1782 IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged 1783 Networks - Amendment 26: Frame Preemption", 2016, 1784 .", 2016. 1786 [IEEE802.1Qbv] 1787 "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - 1788 Amendment 25: Enhancements for Scheduled Traffic", 2015, 1789 .", 2016. 1791 [IEEE802.1Qcc] 1792 IEEE, "IEEE, "Stream Reservation Protocol (SRP) 1793 Enhancements and Performance Improvements (IEEE Draft 1794 P802.1Qcc)", 2017, 1795 .". 1797 [IEEE802.1Qch] 1798 IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft 1799 P802.1Qch)", 2017, 1800 .", 1801 2016. 1803 [IEEE802.1Qci] 1804 IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE 1805 Draft P802.1Qci)", 2016, 1806 .", 1807 2016. 1809 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1810 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1811 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1812 . 1814 [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. 1815 Yasukawa, Ed., "Extensions to Resource Reservation 1816 Protocol - Traffic Engineering (RSVP-TE) for Point-to- 1817 Multipoint TE Label Switched Paths (LSPs)", RFC 4875, 1818 DOI 10.17487/RFC4875, May 2007, 1819 . 1821 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1822 and R. Wilton, "Network Management Datastore Architecture 1823 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1824 . 1826 Authors' Addresses 1828 Xuesong Geng 1829 Huawei Technologies 1831 Email: gengxuesong@huawei.com 1833 Mach(Guoyi) Chen 1834 Huawei Technologies 1836 Email: mach.chen@huawei.com 1838 Yeoncheol Ryoo 1839 ETRI 1841 Email: dbduscjf@etri.re.kr 1843 Zhenqiang Li 1844 China Mobile 1846 Email: lizhenqiang@chinamobile.com 1848 Reshad Rahman 1849 Cisco Systems 1851 Email: rrahman@cisco.com