idnits 2.17.1 draft-ietf-detnet-yang-07.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 43 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 227 has weird spacing: '...er-port inet:...' == Line 228 has weird spacing: '...er-port inet:...' == Line 235 has weird spacing: '...er-port inet:...' == Line 236 has weird spacing: '...er-port inet:...' == Line 325 has weird spacing: '...er-port inet:...' == (25 more instances...) -- The document date (July 13, 2020) is 1381 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) == Unused Reference: 'I-D.finn-detnet-bounded-latency' is defined on line 1774, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-ip' is defined on line 1784, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-mpls' is defined on line 1789, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-topology-yang' is defined on line 1794, but no explicit reference was found in the text == Unused Reference: 'I-D.geng-detnet-info-distribution' is defined on line 1819, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-use-cases' is defined on line 1825, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te' is defined on line 1830, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te-topo' is defined on line 1836, but no explicit reference was found in the text == Unused Reference: 'I-D.thubert-tsvwg-detnet-transport' is defined on line 1842, but no explicit reference was found in the text == Unused Reference: 'I-D.varga-detnet-service-model' is defined on line 1847, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1CB' is defined on line 1852, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Q-2014' is defined on line 1858, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbu' is defined on line 1863, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbv' is defined on line 1868, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qcc' is defined on line 1873, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qch' is defined on line 1879, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qci' is defined on line 1885, but no explicit reference was found in the text == Unused Reference: 'RFC3209' is defined on line 1891, but no explicit reference was found in the text == Unused Reference: 'RFC4875' is defined on line 1896, but no explicit reference was found in the text == Unused Reference: 'RFC8342' is defined on line 1903, 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-10 ** 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 (-13) exists of draft-ietf-detnet-mpls-07 == 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-23 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: January 14, 2021 Y. Ryoo 6 ETRI 7 D. Fedyk 8 LabN Consulting, L.L.C. 9 Z. Li 10 China Mobile 11 R. Rahman 12 Cisco Systems 13 July 13, 2020 15 Deterministic Networking (DetNet) Configuration YANG Model 16 draft-ietf-detnet-yang-07 18 Abstract 20 This document contains the specification for Deterministic Networking 21 flow configuration YANG Model. The model allows for provisioning of 22 end-to-end DetNet service along the path without dependency on any 23 signaling protocol. 25 The YANG module defined in this document conforms to the Network 26 Management Datastore Architecture (NMDA). 28 Requirements Language 30 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 31 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 32 document are to be interpreted as described in RFC 2119 [RFC2119]. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at https://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on January 14, 2021. 50 Copyright Notice 52 Copyright (c) 2020 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (https://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3 69 3. DetNet Configuration Module . . . . . . . . . . . . . . . . . 3 70 3.1. DetNet Appliction Flow Configuration Attributes . . . . . 3 71 3.2. DetNet Service Sub-layer Configuration Attributes . . . . 3 72 3.3. DetNet Forwarding Sub-layer Configuration Attributes . . 3 73 4. DetNet YANG Structure Considerations . . . . . . . . . . . . 4 74 5. DetNet Configuration YANG Structures . . . . . . . . . . . . 4 75 6. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 16 76 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 37 77 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 78 9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 79 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37 80 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 81 11.1. Normative References . . . . . . . . . . . . . . . . . . 38 82 11.2. Informative References . . . . . . . . . . . . . . . . . 39 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 85 1. Introduction 87 DetNet (Deterministic Networking) provides a capability to carry 88 specified unicast or multicast data flows for real-time applications 89 with extremely low packet loss rates and assured maximum end-to-end 90 delivery latency. A description of the general background and 91 concepts of DetNet can be found in [RFC8655]. 93 This document defines a YANG model for DetNet based on YANG data 94 types and modeling language defined in [RFC6991] and [RFC7950]. 95 DetNet service, which is designed for describing the characteristics 96 of services being provided for application flows over a network, and 97 DetNet configuration, which is designed for DetNet flow path 98 establishment, flow status reporting, and DetNet functions 99 configuration in order to achieve end-to-end bounded latency and zero 100 congestion loss, are both included in this document. 102 2. Terminologies 104 This documents uses the terminologies defined in [RFC8655]. 106 3. DetNet Configuration Module 108 DetNet configuration module includes DetNet App-flow configuration, 109 DetNet Service Sub-layer configuration, and DetNet Forwarding Sub- 110 layer configuration. The corresponding attributes used in different 111 sub-layers are defined in Section 3.1, 3.2, 3.3 respectively. 113 3.1. DetNet Appliction Flow Configuration Attributes 115 DetNet application flow is responsible for mapping between 116 application flows and DetNet flows at the edge node(egress/ingress 117 node). Where the application flows can be either layer 2 or layer 3 118 flows. To map a flow at the User Network Interface (UNI), the 119 corresponding attributes are defined in 120 [I-D.ietf-detnet-flow-information-model]. 122 3.2. DetNet Service Sub-layer Configuration Attributes 124 DetNet service functions, e.g., DetNet tunnel initialization/ 125 termination and service protection, are provided in DetNet service 126 sub-layer. To support these functions, the following service 127 attributes need to be configured: 129 o DetNet flow identification 131 o Service function indication, indicates which service function will 132 be invoked at a DetNet edge, relay node or end station. (DetNet 133 tunnel initialization or termination are default functions in 134 DetNet service layer, so there is no need for explicit 135 indication). The corresponding arguments for service functions 136 also needs to be defined. 138 3.3. DetNet Forwarding Sub-layer Configuration Attributes 140 As defined in [RFC8655], DetNet forwarding sub-layer optionally 141 provides congestion protection for DetNet flows over paths provided 142 by the underlying network. Explicit route is another mechanism that 143 is used by DetNet to avoid temporary interruptions caused by the 144 convergence of routing or bridging protocols, and it is also 145 implemented at the DetNet forwarding sub-layer. 147 To support congestion protection and explicit route, the following 148 transport layer related attributes are necessary: 150 o Traffic Specification, refers to Section 7.2 of 151 [I-D.ietf-detnet-flow-information-model]. It may used for 152 resource reservation, flow shaping, filtering and policing. 154 o Explicit path, existing explicit route mechanisms can be reused. 155 For example, if Segment Routing (SR) tunnel is used as the 156 transport tunnel, the configuration is mainly at the ingress node 157 of the transport layer; if the static MPLS tunnel is used as the 158 transport tunnel, the configurations need to be at every transit 159 node along the path; for pure IP based transport tunnel, it's 160 similar to the static MPLS case. 162 4. DetNet YANG Structure Considerations 164 The picture shows that the general structure of the DetNet YANG 165 Model: 167 +-----------+ 168 |ietf-detnet| 169 +-----+-----+ 170 | 171 +-------------+---------------+ 172 | | | 173 +-----+-----+ +-----+-----+ +-------+------+ 174 | App Flows | |service s-l| |forwarding s-l| 175 +-----------+ +-----------+ +--------------+ 177 There are three instances in DetNet YANG Model: App-flow instance, 178 service sub-layer instance and forwarding sub-layer instance, 179 respectively corresponding to four parts of DetNet functions defined 180 in section 3. 182 5. DetNet Configuration YANG Structures 184 module: ietf-detnet-config 185 module: ietf-detnet-config 186 +--rw detnet 187 +--rw app-flows 188 | +--rw app-flow* [name] 189 | +--rw name string 190 | +--ro app-id? uint16 191 | +--rw app-flow-bidir-congruent? boolean 192 | +--rw outgoing-service? service-sub-layer-ref 193 | +--rw incoming-service? service-sub-layer-ref 194 | +--rw traffic-requirements 195 | | +--rw min-bandwidth? uint64 196 | | +--rw max-latency? uint32 197 | | +--rw max-latency-variation? uint32 198 | | +--rw max-loss? uint8 199 | | +--rw max-consecutive-loss-tolerance? uint32 200 | | +--rw max-misordering? uint32 201 | +--rw traffic-specification 202 | | +--rw interval? uint32 203 | | +--rw max-packets-per-interval? uint32 204 | | +--rw max-payload-size? uint32 205 | | +--rw average-packets-per-interval? uint32 206 | | +--rw average-payload-size? uint32 207 | +--rw ingress 208 | | +--rw name? string 209 | | +--ro app-flow-status? identityref 210 | | +--rw interface? if:interface-ref 211 | | +--rw (data-flow-type)? 212 | | +--:(tsn-app-flow) 213 | | | +--rw source-mac-address? yang:mac-address 214 | | | +--rw destination-mac-address? yang:mac-address 215 | | | +--rw ethertype? eth:ethertype 216 | | | +--rw vlan-id? uint16 217 | | | +--rw pcp? uint8 218 | | +--:(ip-app-flow) 219 | | | +--rw src-ip-prefix? inet:ip-prefix 220 | | | +--rw dest-ip-prefix? inet:ip-prefix 221 | | | +--rw next-header? uint8 222 | | | +--rw traffic-class? uint8 223 | | | +--rw flow-label? inet:ipv6-flow-label 224 | | | +--rw source-port 225 | | | | +--rw (port-range-or-operator)? 226 | | | | +--:(range) 227 | | | | | +--rw lower-port inet:port-number 228 | | | | | +--rw upper-port inet:port-number 229 | | | | +--:(operator) 230 | | | | +--rw operator? operator 231 | | | | +--rw port inet:port-number 232 | | | +--rw destination-port 233 | | | | +--rw (port-range-or-operator)? 234 | | | | +--:(range) 235 | | | | | +--rw lower-port inet:port-number 236 | | | | | +--rw upper-port inet:port-number 237 | | | | +--:(operator) 238 | | | | +--rw operator? operator 239 | | | | +--rw port inet:port-number 240 | | | +--rw ipsec-spi? ipsec-spi 241 | | +--:(mpls-app-flow) 242 | | +--rw (label-space)? 243 | | +--:(context-label-space) 244 | | | +--rw mpls-label-stack 245 | | | +--rw entry* [id] 246 | | | +--rw id uint8 247 | | | +--rw label? rt-types:mpls-label 248 | | | +--rw ttl? uint8 249 | | | +--rw traffic-class? uint8 250 | | +--:(platform-label-space) 251 | | +--rw label? rt-types:mpls-label 252 | +--rw egress 253 | +--rw name? string 254 | +--rw (application-type)? 255 | +--:(ethernet) 256 | | +--rw ethernet 257 | | +--rw ethernet-place-holder? string 258 | +--:(ip-mpls) 259 | +--rw ip-mpls 260 | +--rw (next-hop-options) 261 | +--:(simple-next-hop) 262 | | +--rw outgoing-interface? if:interface-ref 263 | | +--rw (flow-type)? 264 | | +--:(ip) 265 | | | +--rw next-hop-address? inet:ip-address 266 | | +--:(mpls) 267 | | +--rw mpls-label-stack 268 | | +--rw entry* [id] 269 | | +--rw id uint8 270 | | +--rw label? rt-types:mpls-label 271 | | +--rw ttl? uint8 272 | | +--rw traffic-class? uint8 273 | +--:(next-hop-list) 274 | +--rw next-hop-list 275 | +--rw next-hop* [hop-index] 276 | +--rw hop-index uint8 277 | +--rw outgoing-interface? if:interface-ref 278 | +--rw (flow-type)? 279 | +--:(ip) 280 | | +--rw next-hop-address? inet:ip-address 281 | +--:(mpls) 282 | +--rw mpls-label-stack 283 | +--rw entry* [id] 284 | +--rw id uint8 285 | +--rw label? rt-types:mpls-label 286 | +--rw ttl? uint8 287 | +--rw traffic-class? uint8 288 +--rw service-sub-layer 289 | +--rw service-sub-layer-list* [name] 290 | +--rw name string 291 | +--ro service-id? uint16 292 | +--rw service-rank? uint8 293 | +--rw traffic-requirements 294 | | +--rw min-bandwidth? uint64 295 | | +--rw max-latency? uint32 296 | | +--rw max-latency-variation? uint32 297 | | +--rw max-loss? uint8 298 | | +--rw max-consecutive-loss-tolerance? uint32 299 | | +--rw max-misordering? uint32 300 | +--rw traffic-specification 301 | | +--rw interval? uint32 302 | | +--rw max-packets-per-interval? uint32 303 | | +--rw max-payload-size? uint32 304 | | +--rw average-packets-per-interval? uint32 305 | | +--rw average-payload-size? uint32 306 | +--rw service-protection 307 | | +--rw service-protection-type? service-protection-type 308 | | +--rw sequence-number-length? sequence-number-field 309 | +--rw service-operation-type? service-operation-type 310 | +--rw incoming 311 | | +--rw (incoming-options) 312 | | +--:(ingress-proxy) 313 | | | +--rw app-flow* app-flow-ref 314 | | +--:(detnet-service-identification) 315 | | +--rw (detnet-flow-type)? 316 | | +--:(ip-detnet-flow) 317 | | | +--rw src-ip-prefix? inet:ip-prefix 318 | | | +--rw dest-ip-prefix? inet:ip-prefix 319 | | | +--rw next-header? uint8 320 | | | +--rw traffic-class? uint8 321 | | | +--rw flow-label? inet:ipv6-flow-label 322 | | | +--rw source-port 323 | | | | +--rw (port-range-or-operator)? 324 | | | | +--:(range) 325 | | | | | +--rw lower-port inet:port-number 326 | | | | | +--rw upper-port inet:port-number 327 | | | | +--:(operator) 328 | | | | +--rw operator? operator 329 | | | | +--rw port inet:port-number 330 | | | +--rw destination-port 331 | | | | +--rw (port-range-or-operator)? 332 | | | | +--:(range) 333 | | | | | +--rw lower-port inet:port-number 334 | | | | | +--rw upper-port inet:port-number 335 | | | | +--:(operator) 336 | | | | +--rw operator? operator 337 | | | | +--rw port inet:port-number 338 | | | +--rw ipsec-spi? ipsec-spi 339 | | +--:(mpls-detnet-flow) 340 | | +--rw (label-space)? 341 | | +--:(context-label-space) 342 | | | +--rw mpls-label-stack 343 | | | +--rw entry* [id] 344 | | | +--rw id uint8 345 | | | +--rw label? rt-types:mpls-label 346 | | | +--rw ttl? uint8 347 | | | +--rw traffic-class? uint8 348 | | +--:(platform-label-space) 349 | | +--rw label? rt-types:mpls-label 350 | +--rw outgoing 351 | +--rw (outgoing-options) 352 | +--:(egress-proxy) 353 | | +--rw app-flow* app-flow-ref 354 | +--:(detnet-service-outgoing) 355 | +--rw service-outgoing-list* [service-outgoing-index] 356 | +--rw service-outgoing-index uint8 357 | +--rw (header-type)? 358 | | +--:(detnet-mpls-header) 359 | | | +--rw mpls-label-stack 360 | | | +--rw entry* [id] 361 | | | +--rw id uint8 362 | | | +--rw label? rt-types:mpls-label 363 | | | +--rw ttl? uint8 364 | | | +--rw traffic-class? uint8 365 | | +--:(detnet-ip-header) 366 | | +--rw src-ip-address? inet:ip-address 367 | | +--rw dest-ip-address? inet:ip-address 368 | | +--rw next-header? uint8 369 | | +--rw traffic-class? uint8 370 | | +--rw flow-label? inet:ipv6-flow-label 371 | | +--rw source-port? inet:port-number 372 | | +--rw destination-port? inet:port-number 373 | +--rw next-layer* [index] 374 | +--rw index uint8 375 | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 376 +--rw forwarding-sub-layer 377 | +--rw forwarding-sub-layer-list* [name] 378 | +--rw name string 379 | +--ro forwarding-id? uint16 380 | +--rw traffic-requirements 381 | | +--rw min-bandwidth? uint64 382 | | +--rw max-latency? uint32 383 | | +--rw max-latency-variation? uint32 384 | | +--rw max-loss? uint8 385 | | +--rw max-consecutive-loss-tolerance? uint32 386 | | +--rw max-misordering? uint32 387 | +--rw traffic-specification 388 | | +--rw interval? uint32 389 | | +--rw max-packets-per-interval? uint32 390 | | +--rw max-payload-size? uint32 391 | | +--rw average-packets-per-interval? uint32 392 | | +--rw average-payload-size? uint32 393 | +--rw forwarding-operation-type? forwarding-operations-type 394 | +--rw incoming 395 | | +--rw (incoming-options) 396 | | +--:(detnet-service-forwarding) 397 | | | +--rw service-sub-layer* service-sub-layer-ref 398 | | +--:(detnet-forwarding-identification) 399 | | +--rw interface? if:interface-ref 400 | | +--rw (detnet-flow-type)? 401 | | +--:(ip-detnet-flow) 402 | | | +--rw src-ip-prefix? inet:ip-prefix 403 | | | +--rw dest-ip-prefix? inet:ip-prefix 404 | | | +--rw next-header? uint8 405 | | | +--rw traffic-class? uint8 406 | | | +--rw flow-label? inet:ipv6-flow-label 407 | | | +--rw source-port 408 | | | | +--rw (port-range-or-operator)? 409 | | | | +--:(range) 410 | | | | | +--rw lower-port inet:port-number 411 | | | | | +--rw upper-port inet:port-number 412 | | | | +--:(operator) 413 | | | | +--rw operator? operator 414 | | | | +--rw port inet:port-number 415 | | | +--rw destination-port 416 | | | | +--rw (port-range-or-operator)? 417 | | | | +--:(range) 418 | | | | | +--rw lower-port inet:port-number 419 | | | | | +--rw upper-port inet:port-number 420 | | | | +--:(operator) 421 | | | | +--rw operator? operator 422 | | | | +--rw port inet:port-number 423 | | | +--rw ipsec-spi? ipsec-spi 424 | | +--:(mpls-detnet-flow) 425 | | +--rw (label-space)? 426 | | +--:(context-label-space) 427 | | | +--rw mpls-label-stack 428 | | | +--rw entry* [id] 429 | | | +--rw id uint8 430 | | | +--rw label? rt-types:mpls-label 431 | | | +--rw ttl? uint8 432 | | | +--rw traffic-class? uint8 433 | | +--:(platform-label-space) 434 | | +--rw label? rt-types:mpls-label 435 | +--rw outgoing 436 | +--rw (outgoing-options) 437 | +--:(detnet-service-operation) 438 | | +--rw service-sub-layer* service-sub-layer-ref 439 | +--:(detnet-forwarding-outgoing) 440 | +--rw (next-hop-options) 441 | +--:(simple-next-hop) 442 | | +--rw outgoing-interface? if:interface-ref 443 | | +--rw (flow-type)? 444 | | +--:(ip) 445 | | | +--rw (operation-type)? 446 | | | +--:(ip-forwarding) 447 | | | | +--rw next-hop-address? inet:ip-address 448 | | | +--:(mpls-over-ip-encapsulation) 449 | | | +--rw src-ip-address? inet:ip-address 450 | | | +--rw dest-ip-address? inet:ip-address 451 | | | +--rw next-header? uint8 452 | | | +--rw traffic-class? uint8 453 | | | +--rw flow-label? inet:ipv6-flow-label 454 | | | +--rw source-port? inet:port-number 455 | | | +--rw destination-port? inet:port-number 456 | | +--:(mpls) 457 | | +--rw mpls-label-stack 458 | | +--rw entry* [id] 459 | | +--rw id uint8 460 | | +--rw label? rt-types:mpls-label 461 | | +--rw ttl? uint8 462 | | +--rw traffic-class? uint8 463 | +--:(next-hop-list) 464 | +--rw next-hop-list 465 | +--rw next-hop* [hop-index] 466 | +--rw hop-index uint8 467 | +--rw outgoing-interface? if:interface-ref 468 | +--rw (flow-type)? 469 | +--:(ip) 470 | | +--rw (operation-type)? 471 | | +--:(ip-forwarding) 472 | | | +--rw next-hop-address? inet:ip-address 473 | | +--:(mpls-over-ip-encapsulation) 474 | | +--rw src-ip-address? inet:ip-address 475 | | +--rw dest-ip-address? inet:ip-address 476 | | +--rw next-header? uint8 477 | | +--rw traffic-class? uint8 478 | | +--rw flow-label? inet:ipv6-flow-label 479 | | +--rw source-port? inet:port-number 480 | | +--rw destination-port? inet:port-number 481 | +--:(mpls) 482 | +--rw mpls-label-stack 483 | +--rw entry* [id] 484 | +--rw id uint8 485 | +--rw label? rt-types:mpls-label 486 | +--rw ttl? uint8 487 | +--rw traffic-class? uint8 488 +--rw sub-network 489 +--rw sub-network-list* [name] 490 +--rw name string 492 grouping ip-header: 493 +--rw src-ip-address? inet:ip-address 494 +--rw dest-ip-address? inet:ip-address 495 +--rw next-header? uint8 496 +--rw traffic-class? uint8 497 +--rw flow-label? inet:ipv6-flow-label 498 +--rw source-port? inet:port-number 499 +--rw destination-port? inet:port-number 500 grouping l2-header: 501 +--rw source-mac-address? yang:mac-address 502 +--rw destination-mac-address? yang:mac-address 503 +--rw ethertype? eth:ethertype 504 +--rw vlan-id? uint16 505 +--rw pcp? uint8 506 grouping destination-ip-port-identification: 507 +--rw destination-port 508 +--rw (port-range-or-operator)? 509 +--:(range) 510 | +--rw lower-port inet:port-number 511 | +--rw upper-port inet:port-number 512 +--:(operator) 513 +--rw operator? operator 514 +--rw port inet:port-number 515 grouping source-ip-port-identification: 516 +--rw source-port 517 +--rw (port-range-or-operator)? 518 +--:(range) 519 | +--rw lower-port inet:port-number 520 | +--rw upper-port inet:port-number 521 +--:(operator) 522 +--rw operator? operator 523 +--rw port inet:port-number 524 grouping ip-flow-identification: 525 +--rw src-ip-prefix? inet:ip-prefix 526 +--rw dest-ip-prefix? inet:ip-prefix 527 +--rw next-header? uint8 528 +--rw traffic-class? uint8 529 +--rw flow-label? inet:ipv6-flow-label 530 +--rw source-port 531 | +--rw (port-range-or-operator)? 532 | +--:(range) 533 | | +--rw lower-port inet:port-number 534 | | +--rw upper-port inet:port-number 535 | +--:(operator) 536 | +--rw operator? operator 537 | +--rw port inet:port-number 538 +--rw destination-port 539 | +--rw (port-range-or-operator)? 540 | +--:(range) 541 | | +--rw lower-port inet:port-number 542 | | +--rw upper-port inet:port-number 543 | +--:(operator) 544 | +--rw operator? operator 545 | +--rw port inet:port-number 546 +--rw ipsec-spi? ipsec-spi 547 grouping mpls-flow-identification: 548 +--rw (label-space)? 549 +--:(context-label-space) 550 | +--rw mpls-label-stack 551 | +--rw entry* [id] 552 | +--rw id uint8 553 | +--rw label? rt-types:mpls-label 554 | +--rw ttl? uint8 555 | +--rw traffic-class? uint8 556 +--:(platform-label-space) 557 +--rw label? rt-types:mpls-label 558 grouping traffic-specification: 559 +--rw traffic-specification 560 +--rw interval? uint32 561 +--rw max-packets-per-interval? uint32 562 +--rw max-payload-size? uint32 563 +--rw average-packets-per-interval? uint32 564 +--rw average-payload-size? uint32 565 grouping traffic-requirements: 566 +--rw traffic-requirements 567 +--rw min-bandwidth? uint64 568 +--rw max-latency? uint32 569 +--rw max-latency-variation? uint32 570 +--rw max-loss? uint8 571 +--rw max-consecutive-loss-tolerance? uint32 572 +--rw max-misordering? uint32 573 grouping data-flow-spec: 574 +--rw (data-flow-type)? 575 +--:(tsn-app-flow) 576 | +--rw source-mac-address? yang:mac-address 577 | +--rw destination-mac-address? yang:mac-address 578 | +--rw ethertype? eth:ethertype 579 | +--rw vlan-id? uint16 580 | +--rw pcp? uint8 581 +--:(ip-app-flow) 582 | +--rw src-ip-prefix? inet:ip-prefix 583 | +--rw dest-ip-prefix? inet:ip-prefix 584 | +--rw next-header? uint8 585 | +--rw traffic-class? uint8 586 | +--rw flow-label? inet:ipv6-flow-label 587 | +--rw source-port 588 | | +--rw (port-range-or-operator)? 589 | | +--:(range) 590 | | | +--rw lower-port inet:port-number 591 | | | +--rw upper-port inet:port-number 592 | | +--:(operator) 593 | | +--rw operator? operator 594 | | +--rw port inet:port-number 595 | +--rw destination-port 596 | | +--rw (port-range-or-operator)? 597 | | +--:(range) 598 | | | +--rw lower-port inet:port-number 599 | | | +--rw upper-port inet:port-number 600 | | +--:(operator) 601 | | +--rw operator? operator 602 | | +--rw port inet:port-number 603 | +--rw ipsec-spi? ipsec-spi 604 +--:(mpls-app-flow) 605 +--rw (label-space)? 606 +--:(context-label-space) 607 | +--rw mpls-label-stack 608 | +--rw entry* [id] 609 | +--rw id uint8 610 | +--rw label? rt-types:mpls-label 611 | +--rw ttl? uint8 612 | +--rw traffic-class? uint8 613 +--:(platform-label-space) 614 +--rw label? rt-types:mpls-label 615 grouping detnet-flow-spec: 616 +--rw (detnet-flow-type)? 617 +--:(ip-detnet-flow) 618 | +--rw src-ip-prefix? inet:ip-prefix 619 | +--rw dest-ip-prefix? inet:ip-prefix 620 | +--rw next-header? uint8 621 | +--rw traffic-class? uint8 622 | +--rw flow-label? inet:ipv6-flow-label 623 | +--rw source-port 624 | | +--rw (port-range-or-operator)? 625 | | +--:(range) 626 | | | +--rw lower-port inet:port-number 627 | | | +--rw upper-port inet:port-number 628 | | +--:(operator) 629 | | +--rw operator? operator 630 | | +--rw port inet:port-number 631 | +--rw destination-port 632 | | +--rw (port-range-or-operator)? 633 | | +--:(range) 634 | | | +--rw lower-port inet:port-number 635 | | | +--rw upper-port inet:port-number 636 | | +--:(operator) 637 | | +--rw operator? operator 638 | | +--rw port inet:port-number 639 | +--rw ipsec-spi? ipsec-spi 640 +--:(mpls-detnet-flow) 641 +--rw (label-space)? 642 +--:(context-label-space) 643 | +--rw mpls-label-stack 644 | +--rw entry* [id] 645 | +--rw id uint8 646 | +--rw label? rt-types:mpls-label 647 | +--rw ttl? uint8 648 | +--rw traffic-class? uint8 649 +--:(platform-label-space) 650 +--rw label? rt-types:mpls-label 651 grouping app-flows-ref: 652 +--rw app-flow* app-flow-ref 653 grouping service-sub-layer-ref: 654 +--rw service-sub-layer* service-sub-layer-ref 655 grouping forwarding-sub-layer-ref: 656 +--rw forwarding-sub-layer* forwarding-sub-layer-ref 657 grouping detnet-header: 658 +--rw (header-type)? 659 +--:(detnet-mpls-header) 660 | +--rw mpls-label-stack 661 | +--rw entry* [id] 662 | +--rw id uint8 663 | +--rw label? rt-types:mpls-label 664 | +--rw ttl? uint8 665 | +--rw traffic-class? uint8 666 +--:(detnet-ip-header) 667 +--rw src-ip-address? inet:ip-address 668 +--rw dest-ip-address? inet:ip-address 669 +--rw next-header? uint8 670 +--rw traffic-class? uint8 671 +--rw flow-label? inet:ipv6-flow-label 672 +--rw source-port? inet:port-number 673 +--rw destination-port? inet:port-number 674 grouping detnet-app-next-hop-content: 675 +--rw (next-hop-options) 676 +--:(simple-next-hop) 677 | +--rw outgoing-interface? if:interface-ref 678 | +--rw (flow-type)? 679 | +--:(ip) 680 | | +--rw next-hop-address? inet:ip-address 681 | +--:(mpls) 682 | +--rw mpls-label-stack 683 | +--rw entry* [id] 684 | +--rw id uint8 685 | +--rw label? rt-types:mpls-label 686 | +--rw ttl? uint8 687 | +--rw traffic-class? uint8 688 +--:(next-hop-list) 689 +--rw next-hop-list 690 +--rw next-hop* [hop-index] 691 +--rw hop-index uint8 692 +--rw outgoing-interface? if:interface-ref 693 +--rw (flow-type)? 694 +--:(ip) 695 | +--rw next-hop-address? inet:ip-address 696 +--:(mpls) 697 +--rw mpls-label-stack 698 +--rw entry* [id] 699 +--rw id uint8 700 +--rw label? rt-types:mpls-label 701 +--rw ttl? uint8 702 +--rw traffic-class? uint8 703 grouping detnet-forwarding-next-hop-content: 704 +--rw (next-hop-options) 705 +--:(simple-next-hop) 706 | +--rw outgoing-interface? if:interface-ref 707 | +--rw (flow-type)? 708 | +--:(ip) 709 | | +--rw (operation-type)? 710 | | +--:(ip-forwarding) 711 | | | +--rw next-hop-address? inet:ip-address 712 | | +--:(mpls-over-ip-encapsulation) 713 | | +--rw src-ip-address? inet:ip-address 714 | | +--rw dest-ip-address? inet:ip-address 715 | | +--rw next-header? uint8 716 | | +--rw traffic-class? uint8 717 | | +--rw flow-label? inet:ipv6-flow-label 718 | | +--rw source-port? inet:port-number 719 | | +--rw destination-port? inet:port-number 720 | +--:(mpls) 721 | +--rw mpls-label-stack 722 | +--rw entry* [id] 723 | +--rw id uint8 724 | +--rw label? rt-types:mpls-label 725 | +--rw ttl? uint8 726 | +--rw traffic-class? uint8 727 +--:(next-hop-list) 728 +--rw next-hop-list 729 +--rw next-hop* [hop-index] 730 +--rw hop-index uint8 731 +--rw outgoing-interface? if:interface-ref 732 +--rw (flow-type)? 733 +--:(ip) 734 | +--rw (operation-type)? 735 | +--:(ip-forwarding) 736 | | +--rw next-hop-address? inet:ip-address 737 | +--:(mpls-over-ip-encapsulation) 738 | +--rw src-ip-address? inet:ip-address 739 | +--rw dest-ip-address? inet:ip-address 740 | +--rw next-header? uint8 741 | +--rw traffic-class? uint8 742 | +--rw flow-label? inet:ipv6-flow-label 743 | +--rw source-port? inet:port-number 744 | +--rw destination-port? inet:port-number 745 +--:(mpls) 746 +--rw mpls-label-stack 747 +--rw entry* [id] 748 +--rw id uint8 749 +--rw label? rt-types:mpls-label 750 +--rw ttl? uint8 751 +--rw traffic-class? uint8 753 6. DetNet Configuration YANG Model 755 756 module ietf-detnet-config { 757 namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config"; 758 prefix "ietf-detnet"; 760 import ietf-yang-types { 761 prefix "yang"; 762 } 764 import ietf-inet-types{ 765 prefix "inet"; 766 } 767 import ietf-ethertypes { 768 prefix "eth"; 769 } 771 import ietf-routing-types { 772 prefix "rt-types"; 773 } 775 import ietf-packet-fields { 776 prefix "packet-fields"; 777 } 778 import ietf-interfaces { 779 prefix "if"; 780 } 782 organization "IETF DetNet Working Group"; 784 contact 785 "WG Web: 786 WG List: 787 WG Chair: Lou Berger 788 790 Janos Farkas 791 793 Editor: Xuesong Geng 794 796 Editor: Mach Chen 797 799 Editor: Yeoncheol Ryoo 800 "; 802 Editor: Don Fedyk 803 "; 805 Editor: Zhenqiang Li 806 808 Editor: Reshad Rahman 809 811 description 812 "This YANG module describes the parameters needed 813 for DetNet flow configuration and flow status 815 reporting"; 817 revision 2020-07-13 { 818 description "initial revision"; 819 reference "RFC XXXX: draft-ietf-detnet-yang-02"; 820 } 822 typedef app-flow-ref { 823 type leafref { 824 path "/ietf-detnet:detnet" 825 + "/ietf-detnet:app-flows" 826 + "/ietf-detnet:app-flow" 827 + "/ietf-detnet:name"; 828 } 829 } 831 typedef service-sub-layer-ref { 832 type leafref { 833 path "/ietf-detnet:detnet" 834 + "/ietf-detnet:service-sub-layer" 835 + "/ietf-detnet:service-sub-layer-list" 836 + "/ietf-detnet:name"; 837 } 838 } 840 typedef forwarding-sub-layer-ref { 841 type leafref { 842 path "/ietf-detnet:detnet" 843 + "/ietf-detnet:forwarding-sub-layer" 844 + "/ietf-detnet:forwarding-sub-layer-list" 845 + "/ietf-detnet:name"; 846 } 847 } 849 typedef sub-network-ref { 850 type leafref { 851 path "/ietf-detnet:detnet" 852 + "/ietf-detnet:sub-network" 853 + "/ietf-detnet:sub-network-list" 854 + "/ietf-detnet:name"; 855 } 856 } 858 typedef ipsec-spi { 859 type uint32 { 860 range "1..max"; 861 } 862 description 863 "SPI"; 864 } 866 typedef service-operation-type { 867 type enumeration { 868 enum service-initiation { 869 description 870 "Operation for DetNet service sub-layer encapsulation"; 871 } 872 enum service-termination { 873 description 874 "Operation for DetNet service sub-layer decapsulation"; 875 } 876 enum service-relay { 877 description 878 "Operation for DetNet service sub-layer swap"; 879 } 880 enum non-detnet { 881 description 882 "No operation for DetNet service sub-layer"; 883 } 884 } 885 } 887 typedef forwarding-operations-type { 888 type enumeration { 889 enum forward { 890 description 891 "Operation forward to next-hop"; 892 } 893 enum impose-and-forward { 894 description 895 "Operation impose outgoing label(s) and forward to 896 next-hop"; 897 } 898 enum pop-and-forward { 899 description 900 "Operation pop incoming label and forward to next-hop"; 901 } 902 enum pop-impose-and-forward { 903 description 904 "Operation pop incoming label, impose one or more 905 outgoing label(s) and forward to next-hop"; 906 } 907 enum swap-and-forward { 908 description 909 "Operation swap incoming label, with outgoing label and 910 forward to next-hop"; 912 } 913 enum pop-and-lookup { 914 description 915 "Operation pop incoming label and perform a lookup"; 916 } 917 } 918 description "MPLS operations types"; 919 } 920 typedef service-protection-type { 921 type enumeration { 922 enum none { 923 description 924 "no service protection provide"; 925 } 926 enum replication { 927 description 928 "A Packet Replication Function (PRF) replicates 929 DetNet flow packets and forwards them to one or 930 more next hops in the DetNet domain. The number 931 of packet copies sent to each next hop is a 932 DetNet flow specific parameter at the node doing 933 the replication. PRF can be implemented by an 934 edge node, a relay node, or an end system"; 935 } 936 enum elimination { 937 description 938 "A Packet Elimination Function (PEF) eliminates 939 duplicate copies of packets to prevent excess 940 packets flooding the network or duplicate 941 packets being sent out of the DetNet domain. 942 PEF can be implemented by an edge node, a relay 943 node, or an end system."; 944 } 945 enum ordering { 946 description 947 "A Packet Ordering Function (POF) re-orders 948 packets within a DetNet flow that are received 949 out of order. This function can be implemented 950 by an edge node, a relay node, or an end system."; 951 } 952 enum elimination-ordering { 953 description 954 "A combination of PEF and POF that can be 955 implemented by an edge node, a relay node, or 956 an end system."; 957 } 958 enum elimination-replication { 959 description 960 "A combination of PEF and PRF that can be 961 implemented by an edge node, a relay node, or 962 an end system"; 963 } 964 enum elimination-ordering-replicaiton { 965 description 966 "A combination of PEF, POF and PRF that can be 967 implemented by an edge node, a relay node, or 968 an end system"; 969 } 970 } 971 } 973 typedef sequence-number-generation-type { 974 type enumeration { 975 enum copy-from-app-flow { 976 description 977 "Copy the app-flow sequence number to the DetNet-flow"; 978 } 979 enum generate-by-detnet-flow { 980 description 981 "Generate the sequence number by DetNet flow"; 982 } 983 } 984 } 986 typedef sequence-number-field { 987 type enumeration { 988 enum zero-sn { 989 description "there is no DetNet sequence number field."; 990 } 991 enum short-sn { 992 description "there is 16bit DetNet sequence number field"; 993 value 16; 994 } 995 enum long-sn { 996 description "there is 28bit DetNet sequence number field"; 997 value 28; 998 } 999 } 1000 } 1002 identity status { 1003 description 1004 "Base identity from which all application-status 1005 actions are derived"; 1006 } 1007 identity none { 1008 base "status"; 1009 description 1010 "Application no ingress/egress"; 1011 reference 1012 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 1013 } 1015 identity ready { 1016 base "status"; 1017 description 1018 "Application ingress/egress ready"; 1019 reference 1020 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 1021 } 1023 identity failed { 1024 base "status"; 1025 description 1026 "Application ingres/egresss failed"; 1027 reference 1028 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 1029 } 1031 identity out-of-service { 1032 base "status"; 1033 description 1034 "Application Administratively blocked"; 1035 reference 1036 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 1037 } 1039 identity partial-failed { 1040 base "status"; 1041 description 1042 "Application One or more Egress ready, and one or more Egress 1043 failed. The DetNet flow can be used if the Ingress is 1044 Ready."; 1045 reference 1046 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 1047 } 1049 grouping ip-header { 1050 description 1051 "The IPv4/IPv6 packet header information"; 1052 leaf src-ip-address { 1053 type inet:ip-address; 1054 description 1055 "The source IP address of the header"; 1056 } 1057 leaf dest-ip-address { 1058 type inet:ip-address; 1059 description 1060 "The destination IP address of the header"; 1061 } 1062 leaf next-header { 1063 type uint8; 1064 description 1065 "The next header of the IPv6 header"; 1066 } 1067 leaf traffic-class { 1068 type uint8; 1069 description 1070 "The traffic class value of the header"; 1071 } 1072 leaf flow-label { 1073 type inet:ipv6-flow-label; 1074 description 1075 "The flow label value of the header"; 1076 } 1077 leaf source-port { 1078 type inet:port-number; 1079 description 1080 "The source port number"; 1081 } 1082 leaf destination-port { 1083 type inet:port-number; 1084 description 1085 "The destination port number"; 1086 } 1087 } 1089 grouping l2-header { 1090 description 1091 "The Ethernet or TSN packet header information"; 1092 leaf source-mac-address { 1093 type yang:mac-address; 1094 description 1095 "The source MAC address value of the ethernet header"; 1096 } 1097 leaf destination-mac-address { 1098 type yang:mac-address; 1099 description 1100 "The destination MAC address value of the ethernet header"; 1101 } 1102 leaf ethertype { 1103 type eth:ethertype; 1104 description 1105 "The ethernet packet type value of the ethernet header"; 1106 } 1107 leaf vlan-id { 1108 type uint16; 1109 description 1110 "The Vlan value of the ethernet header"; 1111 } 1112 leaf pcp { 1113 type uint8; 1114 description 1115 "The priority value of the ethernet header"; 1116 } 1117 } 1118 grouping destination-ip-port-identification { 1119 description 1120 "The TCP/UDP port(source/destination) identification information"; 1121 container destination-port { 1122 uses packet-fields:port-range-or-operator; 1123 } 1124 } 1126 grouping source-ip-port-identification { 1127 description 1128 "The TCP/UDP port(source/destination) identification information"; 1129 container source-port { 1130 uses packet-fields:port-range-or-operator; 1131 } 1132 } 1134 grouping ip-flow-identification { 1135 description 1136 "The IPv4/IPv6 packet header identification information"; 1137 leaf src-ip-prefix { 1138 type inet:ip-prefix; 1139 description 1140 "The source IP address of the header"; 1141 } 1142 leaf dest-ip-prefix { 1143 type inet:ip-prefix; 1144 description 1145 "The destination IP address of the header"; 1146 } 1147 leaf next-header { 1148 type uint8; 1149 description 1150 "The next header of the IPv6 header"; 1151 } 1152 leaf traffic-class { 1153 type uint8; 1154 description 1155 "The traffic class value of the header"; 1156 } 1157 leaf flow-label { 1158 type inet:ipv6-flow-label; 1159 description 1160 "The flow label value of the header"; 1161 } 1162 uses source-ip-port-identification; 1163 uses destination-ip-port-identification; 1164 leaf ipsec-spi { 1165 type ipsec-spi; 1166 description "Security parameter index of SA entry"; 1167 } 1168 } 1170 grouping mpls-flow-identification { 1171 description 1172 "The MPLS packet header identification information"; 1173 choice label-space { 1174 description ""; 1175 case context-label-space { 1176 uses rt-types:mpls-label-stack; 1177 } 1178 case platform-label-space { 1179 leaf label { 1180 type rt-types:mpls-label; 1181 } 1182 } 1183 } 1184 } 1186 grouping traffic-specification { 1187 container traffic-specification { 1188 description 1189 "traffic-specification specifies how the Source 1190 transmits packets for the flow. This is the 1191 promise/request of the Source to the network. 1192 The network uses this traffic specification 1193 to allocate resources and adjust queue 1194 parameters in network nodes."; 1195 reference 1196 "draft-ietf-detnet-flow-information-model"; 1197 leaf interval { 1198 type uint32; 1199 description 1200 "The period of time in which the traffic 1201 specification cannot be exceeded"; 1202 } 1203 leaf max-packets-per-interval{ 1204 type uint32; 1205 description 1206 "The maximum number of packets that the 1207 source will transmit in one Interval."; 1208 } 1209 leaf max-payload-size{ 1210 type uint32; 1211 description 1212 "The maximum payload size that the source 1213 will transmit."; 1214 } 1215 leaf average-packets-per-interval { 1216 type uint32; 1217 description 1218 "The average number of packets that the 1219 source will transmit in one Interval"; 1220 } 1221 leaf average-payload-size { 1222 type uint32; 1223 description 1224 "The average payload size that the 1225 source will transmit."; 1226 } 1227 } 1228 } 1230 grouping traffic-requirements { 1231 container traffic-requirements { 1232 description 1233 "FlowRequirements: defines the attributes of the App-flow 1234 regarding bandwidth, latency, latency variation, loss, and 1235 misordering tolerance."; 1236 leaf min-bandwidth { 1237 type uint64; 1238 description 1239 "MinBandwidth is the minimum bandwidth that has to be 1240 guaranteed for the DetNet service. MinBandwidth is 1241 specified in octets per second."; 1242 } 1243 leaf max-latency { 1244 type uint32; 1245 description 1246 "MaxLatency is the maximum latency from Ingress to Egress(es) 1247 for a single packet of the DetNet flow. MaxLatency is 1248 specified as an integer number of nanoseconds"; 1249 } 1250 leaf max-latency-variation { 1251 type uint32; 1252 description 1253 "MaxLatencyVariation is the difference between the minimum and 1254 the maximum end-to-end one-way latency. MaxLatencyVariation 1255 is specified as an integer number of nanoseconds."; 1256 } 1257 leaf max-loss { 1258 type uint8; 1259 description 1260 "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter 1261 for the DetNet service between the Ingress and Egress(es) of 1262 the DetNet domain."; 1263 } 1264 leaf max-consecutive-loss-tolerance { 1265 type uint32; 1266 description 1267 "Some applications have special loss requirement, such as 1268 MaxConsecutiveLossTolerance. The maximum consecutive loss 1269 tolerance parameter describes the maximum number of 1270 consecutive packets whose loss can be tolerated. The maximum 1271 consecutive loss tolerance can be measured for example based 1272 on sequence number"; 1273 } 1274 leaf max-misordering { 1275 type uint32; 1276 description 1277 "MaxMisordering describes the tolerable maximum number of 1278 packets that can be received out of order. The maximum 1279 allowed misordering can be measured for example based on 1280 sequence number. The value zero for the maximum allowed 1281 misordering indicates that in order delivery is required, 1282 misordering cannot be tolerated."; 1283 } 1284 } 1285 } 1287 grouping data-flow-spec { 1288 description "app-flow identification"; 1289 choice data-flow-type { 1290 case tsn-app-flow { 1291 uses l2-header; 1292 } 1293 case ip-app-flow { 1294 uses ip-flow-identification; 1295 } 1296 case mpls-app-flow { 1297 uses mpls-flow-identification; 1298 } 1299 } 1300 } 1301 grouping detnet-flow-spec { 1302 description "detnet-flow identificatioin"; 1303 choice detnet-flow-type { 1304 case ip-detnet-flow { 1305 uses ip-flow-identification; 1306 } 1307 case mpls-detnet-flow { 1308 uses mpls-flow-identification; 1309 } 1310 } 1311 } 1313 grouping app-flows-ref { 1314 description "incoming or outgoing app-flow reference group"; 1315 leaf-list app-flow { 1316 type app-flow-ref; 1317 description "List of ingress or egress app-flows"; 1318 } 1319 } 1321 grouping service-sub-layer-ref { 1322 description "incoming or outgoing service sub-layer reference group"; 1323 leaf-list service-sub-layer { 1324 type service-sub-layer-ref; 1325 description 1326 "List of incoming or outgoing service sub-layer 1327 that has to aggregate or disaggregate"; 1328 } 1329 } 1331 grouping forwarding-sub-layer-ref { 1332 description "incoming or outgoing forwarding sub-layer reference group"; 1333 leaf-list forwarding-sub-layer { 1334 type forwarding-sub-layer-ref; 1335 description 1336 "List of incoming or outgoing forwarding sub-layer 1337 that has to aggregate or disaggregate"; 1338 } 1339 } 1341 grouping detnet-header { 1342 description "DetNet header info for DetNet encapsulation or swap"; 1343 choice header-type { 1344 case detnet-mpls-header { 1345 description 1346 "MPLS label stack for DetNet MPLS encapsulation or forwarding"; 1347 uses rt-types:mpls-label-stack; 1348 } 1349 case detnet-ip-header { 1350 description 1351 "IPv4/IPv6 packet header for DetNet IP encapsulation"; 1352 uses ip-header; 1353 } 1354 } 1355 } 1357 grouping detnet-app-next-hop-content { 1358 description 1359 "Generic parameters of DetNet next hops."; 1360 choice next-hop-options { 1361 mandatory true; 1362 description 1363 "Options for next hops. 1364 It is expected that further cases will be added through 1365 augments from other modules, e.g., for recursive 1366 next hops."; 1367 case simple-next-hop { 1368 description 1369 "This case represents a simple next hop consisting of the 1370 next-hop address and/or outgoing interface. 1371 Modules for address families MUST augment this case with a 1372 leaf containing a next-hop address of that address 1373 family."; 1374 leaf outgoing-interface { 1375 type if:interface-ref; 1376 } 1377 choice flow-type { 1378 case ip { 1379 leaf next-hop-address { 1380 type inet:ip-address; 1381 } 1382 } 1383 case mpls { 1384 uses rt-types:mpls-label-stack; 1385 } 1386 } 1387 } 1388 case next-hop-list { 1389 container next-hop-list { 1390 description 1391 "Container for multiple next hops."; 1392 list next-hop { 1393 key "hop-index"; 1394 description 1395 "An entry in a next-hop list. 1397 Modules for address families MUST augment this list 1398 with a leaf containing a next-hop address of that 1399 address family."; 1400 leaf hop-index { 1401 type uint8; 1402 description ""; 1403 } 1404 leaf outgoing-interface { 1405 type if:interface-ref; 1406 } 1407 choice flow-type { 1408 case ip { 1409 leaf next-hop-address { 1410 type inet:ip-address; 1411 } 1412 } 1413 case mpls { 1414 uses rt-types:mpls-label-stack; 1415 } 1416 } 1417 } 1418 } 1419 } 1420 } 1421 } 1423 grouping detnet-forwarding-next-hop-content { 1424 description 1425 "Generic parameters of DetNet next hops."; 1426 choice next-hop-options { 1427 mandatory true; 1428 description 1429 "Options for next hops. 1430 It is expected that further cases will be added through 1431 augments from other modules, e.g., for recursive 1432 next hops."; 1433 case simple-next-hop { 1434 description 1435 "This case represents a simple next hop consisting of the 1436 next-hop address and/or outgoing interface. 1437 Modules for address families MUST augment this case with a 1438 leaf containing a next-hop address of that address 1439 family."; 1440 leaf outgoing-interface { 1441 type if:interface-ref; 1442 } 1443 choice flow-type { 1444 case ip { 1445 choice operation-type { 1446 case ip-forwarding { 1447 leaf next-hop-address { 1448 type inet:ip-address; 1449 } 1450 } 1451 case mpls-over-ip-encapsulation { 1452 uses ip-header; 1453 } 1454 } 1455 } 1456 case mpls { 1457 uses rt-types:mpls-label-stack; 1458 } 1459 } 1460 } 1461 case next-hop-list { 1462 container next-hop-list { 1463 description 1464 "Container for multiple next hops."; 1465 list next-hop { 1466 key "hop-index"; 1467 description 1468 "An entry in a next-hop list. 1470 Modules for address families MUST augment this list 1471 with a leaf containing a next-hop address of that 1472 address family."; 1473 leaf hop-index { 1474 type uint8; 1475 description ""; 1476 } 1477 leaf outgoing-interface { 1478 type if:interface-ref; 1479 } 1480 choice flow-type { 1481 case ip { 1482 choice operation-type { 1483 case ip-forwarding { 1484 leaf next-hop-address { 1485 type inet:ip-address; 1487 } 1488 } 1489 case mpls-over-ip-encapsulation { 1490 uses ip-header; 1491 } 1492 } 1493 } 1494 case mpls { 1495 uses rt-types:mpls-label-stack; 1496 } 1497 } 1498 } 1499 } 1500 } 1501 } 1502 } 1503 container detnet { 1504 container app-flows { 1505 description 1506 "The DetNet app-flow configuration"; 1507 list app-flow { 1508 key "name"; 1509 description ""; 1510 leaf name { 1511 type "string"; 1512 description "The name to identify the DetNet app-flow"; 1513 } 1514 leaf app-id { 1515 type uint16; 1516 config false; 1517 description 1518 "The DetNet Application ID"; 1519 } 1520 leaf app-flow-bidir-congruent { 1521 type boolean; 1522 description 1523 "Defines the data path requirement of the App-flow whether 1524 it must share the same data path and physical path 1525 for both directions through the network, 1526 e.g., to provide congruent paths in the two directions."; 1527 } 1528 leaf outgoing-service { 1529 type service-sub-layer-ref; 1530 //config false; 1531 description "Binding to this applications outgoing 1532 service"; 1533 } 1534 leaf incoming-service { 1535 type service-sub-layer-ref; 1536 //config false; 1537 description "Binding to this applications incoming 1538 service"; 1539 } 1540 uses traffic-requirements; 1541 uses traffic-specification; 1542 container ingress { 1543 // key "name"; This should be a list for aggregation 1544 description 1545 "Ingress DetNet application flows or a compound flow"; 1546 leaf name { 1547 type string; 1548 description 1549 "Ingress DetNet application"; 1550 } 1551 leaf app-flow-status { 1552 type identityref { 1553 base status; 1554 } 1555 config false; 1556 description "Status of ingress application flow"; 1557 } 1558 leaf interface { 1559 type if:interface-ref; 1560 } 1561 uses data-flow-spec; 1562 } //End of app-ingress 1563 container egress { 1564 description "Route's next-hop attribute."; 1565 // key "name"; This should be a list for aggregation 1566 leaf name { 1567 type string; 1568 description 1569 "Egress DetNet application"; 1570 } 1571 choice application-type { 1572 container ethernet { 1573 leaf ethernet-place-holder { 1574 type string; 1575 description "Place holder for matching ethernet"; 1576 } 1577 } 1578 container ip-mpls { 1579 uses detnet-app-next-hop-content; 1580 } 1581 } 1582 } 1584 } 1585 } 1586 container service-sub-layer { 1587 description "The DetNet service sub-layer configuration"; 1588 list service-sub-layer-list { 1589 key "name"; 1590 description ""; 1591 leaf name { 1592 type string; 1593 description "The name of the DetNet service sub-layer"; 1594 } 1595 leaf service-id { 1596 type uint16; 1597 config false; 1598 description 1599 "The DetNet service ID"; 1600 } 1601 leaf service-rank { 1602 type uint8; 1603 description 1604 "The DetNet rank for this service"; 1605 } 1606 uses traffic-requirements; 1607 uses traffic-specification; 1608 container service-protection { 1609 leaf service-protection-type { 1610 type service-protection-type; 1611 description 1612 "The DetNet service protection type 1613 such as PRF, PEF, PEOF,PERF, and PEORF"; 1614 } 1615 leaf sequence-number-length { 1616 type sequence-number-field; 1617 description 1618 "sequence number filed can choice 0 bit, 16bit, 28 bit filed"; 1619 } 1620 } 1621 leaf service-operation-type { 1622 type service-operation-type; 1623 } 1624 container incoming { 1625 description 1626 "The DetNet service sub-layer incoming configuration."; 1627 choice incoming-options { 1628 mandatory true; 1629 description 1630 ""; 1631 case ingress-proxy { 1632 uses app-flows-ref; 1633 } 1634 case detnet-service-identification { 1635 uses detnet-flow-spec; 1636 } 1637 } 1638 } 1639 container outgoing { 1640 description 1641 "The DetNet service sub-layer outgoing configuration."; 1642 choice outgoing-options { 1643 mandatory true; 1644 description 1645 ""; 1646 case egress-proxy { 1647 uses app-flows-ref; 1648 } 1649 case detnet-service-outgoing { 1650 //uses detnet-service-next-hop-content; 1651 list service-outgoing-list { 1652 key "service-outgoing-index"; 1653 leaf service-outgoing-index { 1654 type uint8; 1655 } 1656 uses detnet-header; 1657 list next-layer{ 1658 key "index"; 1659 description "lower-layer info"; 1660 leaf index { 1661 type uint8; 1662 } 1663 leaf forwarding-sub-layer { 1664 type forwarding-sub-layer-ref; 1665 } 1666 } 1667 } 1668 } 1669 } 1670 } 1671 } 1672 } 1673 container forwarding-sub-layer { 1674 description "The DetNet forwarding sub-layer configuration"; 1675 list forwarding-sub-layer-list { 1676 key "name"; 1677 description ""; 1678 leaf name { 1679 type string; 1680 description "The name of the DetNet forwarding sub-layer"; 1681 } 1682 leaf forwarding-id { 1683 type uint16; 1684 config false; 1685 description 1686 "The DetNet forwarding ID"; 1687 } 1688 uses traffic-requirements; 1689 uses traffic-specification; 1690 leaf forwarding-operation-type { 1691 type forwarding-operations-type; 1692 } 1693 container incoming { 1694 description 1695 "The DetNet forwarding sub-layer incoming configuration."; 1697 choice incoming-options { 1698 mandatory true; 1699 description 1700 ""; 1701 case detnet-service-forwarding { 1702 uses service-sub-layer-ref; 1703 } 1704 case detnet-forwarding-identification { 1705 leaf interface { 1706 type if:interface-ref; 1707 description ""; 1708 } 1709 uses detnet-flow-spec; 1710 } 1711 } 1712 } 1713 container outgoing { 1714 description 1715 "The DetNet forwarding sub-layer outbound configuration."; 1716 choice outgoing-options { 1717 mandatory true; 1718 description 1719 ""; 1720 case detnet-service-operation { 1721 uses service-sub-layer-ref; 1722 } 1723 case detnet-forwarding-outgoing { 1724 uses detnet-forwarding-next-hop-content; 1725 } 1726 } 1727 } 1729 } 1730 } 1731 container sub-network { 1732 description ""; 1733 list sub-network-list { 1734 key "name"; 1735 description ""; 1736 leaf name { 1737 type string; 1738 description ""; 1739 } 1740 } 1741 } 1742 } 1743 } 1744 1746 7. Open Issues 1748 There are some open issues that are still under discussion: 1750 o Aggregation. 1752 o Going along the the updated data plane model. 1754 o Terminologies. 1756 These issues will be resolved in the following versions of the draft. 1758 8. IANA Considerations 1760 This document makes no request of IANA. 1762 Note to RFC Editor: this section may be removed on publication as an 1763 RFC. 1765 9. Security Considerations 1767 1769 10. Acknowledgements 1771 11. References 1772 11.1. Normative References 1774 [I-D.finn-detnet-bounded-latency] 1775 Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga, 1776 B., and J. Farkas, "DetNet Bounded Latency", draft-finn- 1777 detnet-bounded-latency-04 (work in progress), June 2019. 1779 [I-D.ietf-detnet-flow-information-model] 1780 Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D. 1781 Fedyk, "DetNet Flow Information Model", draft-ietf-detnet- 1782 flow-information-model-10 (work in progress), May 2020. 1784 [I-D.ietf-detnet-ip] 1785 Varga, B., Farkas, J., Berger, L., Fedyk, D., and S. 1786 Bryant, "DetNet Data Plane: IP", draft-ietf-detnet-ip-07 1787 (work in progress), July 2020. 1789 [I-D.ietf-detnet-mpls] 1790 Varga, B., Farkas, J., Berger, L., Malis, A., Bryant, S., 1791 and J. Korhonen, "DetNet Data Plane: MPLS", draft-ietf- 1792 detnet-mpls-07 (work in progress), June 2020. 1794 [I-D.ietf-detnet-topology-yang] 1795 Geng, X., Chen, M., Li, Z., and R. Rahman, "Deterministic 1796 Networking (DetNet) Topology YANG Model", draft-ietf- 1797 detnet-topology-yang-00 (work in progress), January 2019. 1799 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1800 Requirement Levels", BCP 14, RFC 2119, 1801 DOI 10.17487/RFC2119, March 1997, 1802 . 1804 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1805 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1806 . 1808 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1809 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1810 . 1812 [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, 1813 "Deterministic Networking Architecture", RFC 8655, 1814 DOI 10.17487/RFC8655, October 2019, 1815 . 1817 11.2. Informative References 1819 [I-D.geng-detnet-info-distribution] 1820 Geng, X., Chen, M., Li, Z., Qin, F., and L. Qiang, "IGP-TE 1821 Extensions for DetNet Information Distribution", draft- 1822 geng-detnet-info-distribution-04 (work in progress), July 1823 2019. 1825 [I-D.ietf-detnet-use-cases] 1826 Grossman, E., "Deterministic Networking Use Cases", draft- 1827 ietf-detnet-use-cases-20 (work in progress), December 1828 2018. 1830 [I-D.ietf-teas-yang-te] 1831 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 1832 "A YANG Data Model for Traffic Engineering Tunnels and 1833 Interfaces", draft-ietf-teas-yang-te-23 (work in 1834 progress), March 2020. 1836 [I-D.ietf-teas-yang-te-topo] 1837 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1838 O. Dios, "YANG Data Model for Traffic Engineering (TE) 1839 Topologies", draft-ietf-teas-yang-te-topo-22 (work in 1840 progress), June 2019. 1842 [I-D.thubert-tsvwg-detnet-transport] 1843 Thubert, P., "A Transport Layer for Deterministic 1844 Networks", draft-thubert-tsvwg-detnet-transport-01 (work 1845 in progress), October 2017. 1847 [I-D.varga-detnet-service-model] 1848 Varga, B. and J. Farkas, "DetNet Service Model", draft- 1849 varga-detnet-service-model-02 (work in progress), May 1850 2017. 1852 [IEEE802.1CB] 1853 IEEE, "IEEE, "Frame Replication and Elimination for 1854 Reliability (IEEE Draft P802.1CB)", 2017, 1855 .", 1856 2016. 1858 [IEEE802.1Q-2014] 1859 "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks", 1860 2014, .", 1861 2014. 1863 [IEEE802.1Qbu] 1864 IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged 1865 Networks - Amendment 26: Frame Preemption", 2016, 1866 .", 2016. 1868 [IEEE802.1Qbv] 1869 "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - 1870 Amendment 25: Enhancements for Scheduled Traffic", 2015, 1871 .", 2016. 1873 [IEEE802.1Qcc] 1874 IEEE, "IEEE, "Stream Reservation Protocol (SRP) 1875 Enhancements and Performance Improvements (IEEE Draft 1876 P802.1Qcc)", 2017, 1877 .". 1879 [IEEE802.1Qch] 1880 IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft 1881 P802.1Qch)", 2017, 1882 .", 1883 2016. 1885 [IEEE802.1Qci] 1886 IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE 1887 Draft P802.1Qci)", 2016, 1888 .", 1889 2016. 1891 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1892 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1893 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1894 . 1896 [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. 1897 Yasukawa, Ed., "Extensions to Resource Reservation 1898 Protocol - Traffic Engineering (RSVP-TE) for Point-to- 1899 Multipoint TE Label Switched Paths (LSPs)", RFC 4875, 1900 DOI 10.17487/RFC4875, May 2007, 1901 . 1903 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1904 and R. Wilton, "Network Management Datastore Architecture 1905 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1906 . 1908 Authors' Addresses 1910 Xuesong Geng 1911 Huawei Technologies 1913 Email: gengxuesong@huawei.com 1915 Mach(Guoyi) Chen 1916 Huawei Technologies 1918 Email: mach.chen@huawei.com 1920 Yeoncheol Ryoo 1921 ETRI 1923 Email: dbduscjf@etri.re.kr 1925 Don Fedyk 1926 LabN Consulting, L.L.C. 1928 Email: dfedyk@labn.net 1930 Zhenqiang Li 1931 China Mobile 1933 Email: lizhenqiang@chinamobile.com 1935 Reshad Rahman 1936 Cisco Systems 1938 Email: rrahman@cisco.com