idnits 2.17.1 draft-ietf-detnet-yang-08.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 285 has weird spacing: '...er-port ine...' == Line 286 has weird spacing: '...er-port ine...' == Line 293 has weird spacing: '...er-port ine...' == Line 294 has weird spacing: '...er-port ine...' == Line 358 has weird spacing: '...up-name agg...' == (9 more instances...) -- The document date (October 12, 2020) is 1291 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) == Outdated reference: A later version (-14) exists of draft-ietf-detnet-flow-information-model-10 Summary: 0 errors (**), 0 flaws (~~), 8 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: April 15, 2021 Y. Ryoo 6 ETRI 7 D. Fedyk 8 LabN Consulting, L.L.C. 9 R. Rahman 10 Cisco Systems 11 Z. Li 12 China Mobile 13 October 12, 2020 15 Deterministic Networking (DetNet) Configuration YANG Model 16 draft-ietf-detnet-yang-08 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 April 15, 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 Flow Aggregation . . . . . . . . . . . . . . . . . . . 4 74 5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5 75 6. DetNet Configuration YANG Structures . . . . . . . . . . . . 5 76 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 14 77 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 41 78 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 79 10. Security Considerations . . . . . . . . . . . . . . . . . . . 41 80 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 41 81 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 82 12.1. Normative References . . . . . . . . . . . . . . . . . . 41 83 12.2. Informative References . . . . . . . . . . . . . . . . . 42 84 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 86 1. Introduction 88 DetNet (Deterministic Networking) provides a capability to carry 89 specified unicast or multicast data flows for real-time applications 90 with extremely low packet loss rates and assured maximum end-to-end 91 delivery latency. A description of the general background and 92 concepts of DetNet can be found in [RFC8655]. 94 This document defines a YANG model for DetNet based on YANG data 95 types and modeling language defined in [RFC6991] and [RFC7950]. 97 DetNet service, which is designed for describing the characteristics 98 of services being provided for application flows over a network, and 99 DetNet configuration, which is designed for DetNet flow path 100 establishment, flow status reporting, and DetNet functions 101 configuration in order to achieve end-to-end bounded latency and zero 102 congestion loss, are both included in this document. 104 2. Terminologies 106 This documents uses the terminologies defined in [RFC8655]. 108 3. DetNet Configuration Module 110 DetNet configuration module includes DetNet App-flow configuration, 111 DetNet Service Sub-layer configuration, and DetNet Forwarding Sub- 112 layer configuration. The corresponding attributes used in different 113 sub-layers are defined in Section 3.1, 3.2, 3.3 respectively. 115 3.1. DetNet Appliction Flow Configuration Attributes 117 DetNet application flow is responsible for mapping between 118 application flows and DetNet flows at the edge node(egress/ingress 119 node). Where the application flows can be either layer 2 or layer 3 120 flows. To map a flow at the User Network Interface (UNI), the 121 corresponding attributes are defined in 122 [I-D.ietf-detnet-flow-information-model]. 124 3.2. DetNet Service Sub-layer Configuration Attributes 126 DetNet service functions, e.g., DetNet tunnel initialization/ 127 termination and service protection, are provided in DetNet service 128 sub-layer. To support these functions, the following service 129 attributes need to be configured: 131 o DetNet flow identification 133 o Service function indication, indicates which service function will 134 be invoked at a DetNet edge, relay node or end station. (DetNet 135 tunnel initialization or termination are default functions in 136 DetNet service layer, so there is no need for explicit 137 indication). The corresponding arguments for service functions 138 also needs to be defined. 140 3.3. DetNet Forwarding Sub-layer Configuration Attributes 142 As defined in [RFC8655], DetNet forwarding sub-layer optionally 143 provides congestion protection for DetNet flows over paths provided 144 by the underlying network. Explicit route is another mechanism that 145 is used by DetNet to avoid temporary interruptions caused by the 146 convergence of routing or bridging protocols, and it is also 147 implemented at the DetNet forwarding sub-layer. 149 To support congestion protection and explicit route, the following 150 transport layer related attributes are necessary: 152 o Traffic Specification, refers to Section 7.2 of 153 [I-D.ietf-detnet-flow-information-model]. It may used for 154 resource reservation, flow shaping, filtering and policing. 156 o Explicit path, existing explicit route mechanisms can be reused. 157 For example, if Segment Routing (SR) tunnel is used as the 158 transport tunnel, the configuration is mainly at the ingress node 159 of the transport layer; if the static MPLS tunnel is used as the 160 transport tunnel, the configurations need to be at every transit 161 node along the path; for pure IP based transport tunnel, it's 162 similar to the static MPLS case. 164 4. DetNet Flow Aggregation 166 DetNet provides the capability of flow aggregation to improve 167 scaleability of DetNet data, management and control planes. 168 Aggregated flows can be viewed by the some DetNet nodes as individual 169 DetNet flows. When aggregating DetNet flows, the flows should be 170 compatible: if bandwidth reservations are used, the reservation 171 should be a reasonable representation of the individual reservations; 172 if maximum delay bounds are used, the system should ensure that the 173 aggregate does not exceed the delay bounds of the individual flows. 175 The DetNet YANG model defined in this document supports DetNet flow 176 aggregation with the following functions: 178 o Aggregation flow encapsulation/decapsulation/identification 180 o Mapping individual DetNet flows to an aggregated flow 182 o Changing traffic specification parameters for aggregated flow 184 The following cases of DetNet aggregation are supported: 186 o aggregate data flows into an application which is then mapped to a 187 service sub-layer at the ingress node. Note the data flows may be 188 other DetNet flows. 190 o map each DetNet application to a single service sub-layer and 191 allowing the aggregation of multiple applications at the ingress 192 node, and vice versa for de-aggregation. A classifier may be 193 required to de-aggregate the respective applications. 195 o map each DetNet application uniquely to a single service sub-layer 196 where those sub-layers may be encapsulated as a single service 197 sub-layer and hence aggregating the applications at the ingress 198 node, and vice versa for de-aggregation. In this case, the 199 service sub-layer identifier may be sufficient to identify the 200 application. A classifier may be required to de-aggregate the 201 service sub-layers. 203 o aggregate DetNet service sub-layers into an aggregated flow by 204 using the same forwarding sub-layer at ingress node or relay node, 205 and vice versa for de-aggregation. 207 o aggregate DetNet flows with different forwarding sub-layer into an 208 aggregated flow by using the same forwarding sub-layer at transit 209 node, and vice versa for de-aggregation. 211 Traffic requirements and traffic specification may be tracked for 212 individual or aggregate flows but reserving resources and tracking 213 the services in the aggregated flow is out of scope. 215 5. DetNet YANG Structure Considerations 217 The picture shows that the general structure of the DetNet YANG 218 Model: 220 +-----------+ 221 |ietf-detnet| 222 +-----+-----+ 223 | 224 +-------------+---------------+ 225 | | | 226 +-----+-----+ +-----+-----+ +-------+------+ 227 | App Flows | |service s-l| |forwarding s-l| 228 +-----------+ +-----------+ +--------------+ 230 There are three instances in DetNet YANG Model: App-flow instance, 231 service sub-layer instance and forwarding sub-layer instance, 232 respectively corresponding to four parts of DetNet functions defined 233 in section 3. 235 6. DetNet Configuration YANG Structures 237 module: ietf-detnet-config 238 +--rw detnet 239 +--rw traffic-profile* [profile-number] 240 | +--rw profile-number uint16 241 | +--rw traffic-requirements 242 | | +--rw min-bandwidth? uint64 243 | | +--rw max-latency? uint32 244 | | +--rw max-latency-variation? uint32 245 | | +--rw max-loss? uint8 246 | | +--rw max-consecutive-loss-tolerance? uint32 247 | | +--rw max-misordering? uint32 248 | +--rw traffic-specification 249 | | +--rw interval? uint32 250 | | +--rw max-packets-per-interval? uint32 251 | | +--rw max-payload-size? uint32 252 | | +--rw average-packets-per-interval? uint32 253 | | +--rw average-payload-size? uint32 254 | +--ro member-applications* app-flow-ref 255 | +--ro member-services* service-sub-layer-ref 256 | +--ro member-groups* aggregation-grp-ref 257 | +--ro member-forwarding-sublayers* forwarding-sub-layer-ref 258 +--rw app-flows 259 | +--rw app-flow* [name] 260 | +--rw name string 261 | +--rw app-flow-bidir-congruent? boolean 262 | +--ro outgoing-service? service-sub-layer-ref 263 | +--ro incoming-service? service-sub-layer-ref 264 | +--rw traffic-profile? traffic-profile-ref 265 | +--rw ingress 266 | | +--rw name? string 267 | | +--ro app-flow-status? identityref 268 | | +--rw interface? if:interface-ref 269 | | +--rw (data-flow-type)? 270 | | +--:(tsn-app-flow) 271 | | | +--rw source-mac-address? yang:mac-address 272 | | | +--rw destination-mac-address? yang:mac-address 273 | | | +--rw ethertype? eth:ethertype 274 | | | +--rw vlan-id? uint16 275 | | | +--rw pcp? uint8 276 | | +--:(ip-app-flow) 277 | | | +--rw src-ip-prefix? inet:ip-prefix 278 | | | +--rw dest-ip-prefix? inet:ip-prefix 279 | | | +--rw next-header? uint8 280 | | | +--rw traffic-class? uint8 281 | | | +--rw flow-label? inet:ipv6-flow-label 282 | | | +--rw source-port 283 | | | | +--rw (port-range-or-operator)? 284 | | | | +--:(range) 285 | | | | | +--rw lower-port inet:port-number 286 | | | | | +--rw upper-port inet:port-number 287 | | | | +--:(operator) 288 | | | | +--rw operator? packet-fields:operator 289 | | | | +--rw port inet:port-number 290 | | | +--rw destination-port 291 | | | | +--rw (port-range-or-operator)? 292 | | | | +--:(range) 293 | | | | | +--rw lower-port inet:port-number 294 | | | | | +--rw upper-port inet:port-number 295 | | | | +--:(operator) 296 | | | | +--rw operator? packet-fields:operator 297 | | | | +--rw port inet:port-number 298 | | | +--rw ipsec-spi? ipsec-spi 299 | | +--:(mpls-app-flow) 300 | | +--rw (label-space)? 301 | | +--:(context-label-space) 302 | | | +--rw mpls-label-stack 303 | | | +--rw entry* [id] 304 | | | +--rw id uint8 305 | | | +--rw label? 306 | | | | rt-types:mpls-label 307 | | | +--rw ttl? uint8 308 | | | +--rw traffic-class? uint8 309 | | +--:(platform-label-space) 310 | | +--rw label? rt-types:mpls-label 311 | +--rw egress 312 | +--rw name? string 313 | +--rw (application-type)? 314 | +--:(ethernet) 315 | | +--rw ethernet 316 | | +--rw ethernet-place-holder? string 317 | +--:(ip-mpls) 318 | +--rw ip-mpls 319 | +--rw (next-hop-options) 320 | +--:(simple-next-hop) 321 | | +--rw outgoing-interface? 322 | | | if:interface-ref 323 | | +--rw (flow-type)? 324 | | +--:(ip) 325 | | | +--rw next-hop-address? 326 | | | inet:ip-address 327 | | +--:(mpls) 328 | | +--rw mpls-label-stack 329 | | +--rw entry* [id] 330 | | +--rw id uint8 331 | | +--rw label? 332 | | | rt-types:mpls-label 333 | | +--rw ttl? uint8 334 | | +--rw traffic-class? uint8 335 | +--:(next-hop-list) 336 | +--rw next-hop-list 337 | +--rw next-hop* [hop-index] 338 | +--rw hop-index uint8 339 | +--rw outgoing-interface? 340 | | if:interface-ref 341 | +--rw (flow-type)? 342 | +--:(ip) 343 | | +--rw next-hop-address? 344 | | inet:ip-address 345 | +--:(mpls) 346 | +--rw mpls-label-stack 347 | +--rw entry* [id] 348 | +--rw id 349 | | uint8 350 | +--rw label? 351 | | rt-types: 352 | | mpls-label 353 | +--rw ttl? 354 | | uint8 355 | +--rw traffic-class? 356 | uint8 357 +--rw service-aggregation-group* [group-name] 358 | +--rw group-name aggregation-group 359 | +--rw outgoing 360 | | +--rw traffic-profile? traffic-profile-ref 361 | | +--rw service-protection 362 | | | +--rw service-protection-type? service-protection-type 363 | | | +--rw sequence-number-length? sequence-number-field 364 | | +--rw aggregation-header 365 | | | +--rw mpls-label-stack 366 | | | +--rw entry* [id] 367 | | | +--rw id uint8 368 | | | +--rw label? rt-types:mpls-label 369 | | | +--rw ttl? uint8 370 | | | +--rw traffic-class? uint8 371 | | +--ro services* service-sub-layer-ref 372 | +--rw incoming 373 | +--rw aggregation-header 374 | | +--rw mpls-label-stack 375 | | +--rw entry* [id] 376 | | +--rw id uint8 377 | | +--rw label? rt-types:mpls-label 378 | | +--rw ttl? uint8 379 | | +--rw traffic-class? uint8 380 | +--ro services* service-sub-layer-ref 381 +--rw service-sub-layer 382 | +--rw service-sub-layer-list* [name] 383 | +--rw name string 384 | +--rw service-rank? uint8 385 | +--rw (service-type) 386 | | +--:(non-grouped) 387 | | | +--rw non-grouped 388 | | | +--rw traffic-profile? traffic-profile-ref 389 | | | +--rw service-operation-type? 390 | | | service-operation-type 391 | | +--:(grouped) 392 | | +--rw grouped 393 | | +--rw group-ref? aggregation-grp-ref 394 | +--rw service-protection 395 | | +--rw service-protection-type? service-protection-type 396 | | +--rw sequence-number-length? sequence-number-field 397 | +--rw service-operation-type? service-operation-type 398 | +--rw incoming 399 | | +--rw (incoming-options) 400 | | +--:(ingress-application) 401 | | | +--rw app-flow* app-flow-ref 402 | | +--:(detnet-service-identification) 403 | | | +--rw (detnet-flow-type)? 404 | | | +--:(ip-detnet-flow) 405 | | | | +--rw src-ip-prefix? inet:ip-prefix 406 | | | | +--rw dest-ip-prefix? inet:ip-prefix 407 | | | | +--rw next-header? uint8 408 | | | | +--rw traffic-class? uint8 409 | | | | +--rw flow-label? inet:ipv6-flow-label 410 | | | | +--rw source-port 411 | | | | | +--rw (port-range-or-operator)? 412 | | | | | +--:(range) 413 | | | | | | +--rw lower-port inet:port-number 414 | | | | | | +--rw upper-port inet:port-number 415 | | | | | +--:(operator) 416 | | | | | +--rw operator? 417 | | | | | | packet-fields:operator 418 | | | | | +--rw port inet:port-number 419 | | | | +--rw destination-port 420 | | | | | +--rw (port-range-or-operator)? 421 | | | | | +--:(range) 422 | | | | | | +--rw lower-port inet:port-number 423 | | | | | | +--rw upper-port inet:port-number 424 | | | | | +--:(operator) 425 | | | | | +--rw operator? 426 | | | | | | packet-fields:operator 427 | | | | | +--rw port inet:port-number 428 | | | | +--rw ipsec-spi? ipsec-spi 429 | | | +--:(mpls-detnet-flow) 430 | | | +--rw (label-space)? 431 | | | +--:(context-label-space) 432 | | | | +--rw mpls-label-stack 433 | | | | +--rw entry* [id] 434 | | | | +--rw id uint8 435 | | | | +--rw label? 436 | | | | | rt-types:mpls-label 437 | | | | +--rw ttl? uint8 438 | | | | +--rw traffic-class? uint8 439 | | | +--:(platform-label-space) 440 | | | +--rw label? rt-types:mpls-label 441 | | +--:(aggregated-service) 442 | | | +--rw service-sub-layer* service-sub-layer-ref 443 | | +--:(aggregated-forwarding) 444 | | +--rw forwarding-sub-layer* 445 | | forwarding-sub-layer-ref 446 | +--rw outgoing 447 | +--rw (outgoing-options) 448 | +--:(detnet-service-outgoing) 449 | | +--rw service-outgoing-list* 450 | | [service-outgoing-index] 451 | | +--rw service-outgoing-index uint8 452 | | +--rw (header-type)? 453 | | | +--:(detnet-mpls-header) 454 | | | | +--rw mpls-label-stack 455 | | | | +--rw entry* [id] 456 | | | | +--rw id uint8 457 | | | | +--rw label? 458 | | | | | rt-types:mpls-label 459 | | | | +--rw ttl? uint8 460 | | | | +--rw traffic-class? uint8 461 | | | +--:(detnet-ip-header) 462 | | | +--rw src-ip-address? inet:ip-address 463 | | | +--rw dest-ip-address? inet:ip-address 464 | | | +--rw next-header? uint8 465 | | | +--rw traffic-class? uint8 466 | | | +--rw flow-label? 467 | | | | inet:ipv6-flow-label 468 | | | +--rw source-port? inet:port-number 469 | | | +--rw destination-port? inet:port-number 470 | | +--rw next-layer* [index] 471 | | +--rw index uint8 472 | | +--rw forwarding-sub-layer? 473 | | forwarding-sub-layer-ref 474 | +--:(detnet-service-aggregation) 475 | | +--rw aggregation-service-sub-layer? 476 | | | service-sub-layer-ref 477 | | +--rw service-label 478 | | +--rw mpls-label-stack 479 | | +--rw entry* [id] 480 | | +--rw id uint8 481 | | +--rw label? rt-types:mpls-label 482 | | +--rw ttl? uint8 483 | | +--rw traffic-class? uint8 484 | +--:(egress-proxy) 485 | | +--rw app-flow* app-flow-ref 486 | +--:(detnet-service-operation) 487 | | +--rw service-sub-layer* service-sub-layer-ref 488 | +--:(detnet-forwarding-operation) 489 | +--rw forwarding-sub-layer* 490 | forwarding-sub-layer-ref 491 +--rw forwarding-sub-layer 492 +--rw forwarding-sub-layer-list* [name] 493 +--rw name string 494 +--rw traffic-profile? traffic-profile-ref 495 +--rw forwarding-operation-type? forwarding-operations-type 496 +--rw incoming 497 | +--rw (incoming-options) 498 | +--:(detnet-service-forwarding) 499 | | +--ro service-sub-layer* service-sub-layer-ref 500 | +--:(detnet-forwarding-identification) 501 | | +--rw interface? if:interface-ref 502 | | +--rw (detnet-flow-type)? 503 | | +--:(ip-detnet-flow) 504 | | | +--rw src-ip-prefix? inet:ip-prefix 505 | | | +--rw dest-ip-prefix? inet:ip-prefix 506 | | | +--rw next-header? uint8 507 | | | +--rw traffic-class? uint8 508 | | | +--rw flow-label? inet:ipv6-flow-label 509 | | | +--rw source-port 510 | | | | +--rw (port-range-or-operator)? 511 | | | | +--:(range) 512 | | | | | +--rw lower-port inet:port-number 513 | | | | | +--rw upper-port inet:port-number 514 | | | | +--:(operator) 515 | | | | +--rw operator? 516 | | | | | packet-fields:operator 517 | | | | +--rw port inet:port-number 518 | | | +--rw destination-port 519 | | | | +--rw (port-range-or-operator)? 520 | | | | +--:(range) 521 | | | | | +--rw lower-port inet:port-number 522 | | | | | +--rw upper-port inet:port-number 523 | | | | +--:(operator) 524 | | | | +--rw operator? 525 | | | | | packet-fields:operator 526 | | | | +--rw port inet:port-number 527 | | | +--rw ipsec-spi? ipsec-spi 528 | | +--:(mpls-detnet-flow) 529 | | +--rw (label-space)? 530 | | +--:(context-label-space) 531 | | | +--rw mpls-label-stack 532 | | | +--rw entry* [id] 533 | | | +--rw id uint8 534 | | | +--rw label? 535 | | | | rt-types:mpls-label 536 | | | +--rw ttl? uint8 537 | | | +--rw traffic-class? uint8 538 | | +--:(platform-label-space) 539 | | +--rw label? rt-types:mpls-label 540 | +--:(aggregated-forwarding) 541 | +--rw forwarding-sub-layer* 542 | forwarding-sub-layer-ref 543 +--rw outgoing 544 +--rw (outgoing-options) 545 +--:(detnet-forwarding-outgoing) 546 | +--rw (next-hop-options) 547 | +--:(simple-next-hop) 548 | | +--rw outgoing-interface? if:interface-ref 549 | | +--rw (flow-type)? 550 | | +--:(ip) 551 | | | +--rw (operation-type)? 552 | | | +--:(ip-forwarding) 553 | | | | +--rw next-hop-address? 554 | | | | inet:ip-address 555 | | | +--:(mpls-over-ip-encapsulation) 556 | | | +--rw src-ip-address? 557 | | | | inet:ip-address 558 | | | +--rw dest-ip-address? 559 | | | | inet:ip-address 560 | | | +--rw next-header? uint8 561 | | | +--rw traffic-class? uint8 562 | | | +--rw flow-label? 563 | | | | inet:ipv6-flow-label 564 | | | +--rw source-port? 565 | | | | inet:port-number 566 | | | +--rw destination-port? 567 | | | inet:port-number 568 | | +--:(mpls) 569 | | +--rw mpls-label-stack 570 | | +--rw entry* [id] 571 | | +--rw id uint8 572 | | +--rw label? 573 | | | rt-types:mpls-label 574 | | +--rw ttl? uint8 575 | | +--rw traffic-class? uint8 576 | +--:(next-hop-list) 577 | +--rw next-hop-list 578 | +--rw next-hop* [hop-index] 579 | +--rw hop-index uint8 580 | +--rw outgoing-interface? 581 | | if:interface-ref 582 | +--rw (flow-type)? 583 | +--:(ip) 584 | | +--rw (operation-type)? 585 | | +--:(ip-forwarding) 586 | | | +--rw next-hop-address? 587 | | | inet:ip-address 588 | | +--:(mpls-over-ip- 589 | | | encapsulation) 590 | | +--rw src-ip-address? 591 | | | inet:ip-address 592 | | +--rw dest-ip-address? 593 | | | inet:ip-address 594 | | +--rw next-header? 595 | | | uint8 596 | | +--rw traffic-class? 597 | | | uint8 598 | | +--rw flow-label? 599 | | | inet:ipv6-flow-label 600 | | +--rw source-port? 601 | | | inet:port-number 602 | | +--rw destination-port? 603 | | inet:port-number 604 | +--:(mpls) 605 | +--rw mpls-label-stack 606 | +--rw entry* [id] 607 | +--rw id uint8 608 | +--rw label? 609 | | rt-types:mpls-label 610 | +--rw ttl? uint8 611 | +--rw traffic-class? uint8 612 +--:(detnet-service-aggregation) 613 | +--rw aggregation-service-sub-layer? 614 | | service-sub-layer-ref 615 | +--rw optional-forwarding-label 616 | +--rw mpls-label-stack 617 | +--rw entry* [id] 618 | +--rw id uint8 619 | +--rw label? rt-types:mpls-label 620 | +--rw ttl? uint8 621 | +--rw traffic-class? uint8 622 +--:(detnet-forwarding-aggregation) 623 | +--rw aggregation-forwarding-sub-layer? 624 | | forwarding-sub-layer-ref 625 | +--rw forwarding-label 626 | +--rw mpls-label-stack 627 | +--rw entry* [id] 628 | +--rw id uint8 629 | +--rw label? rt-types:mpls-label 630 | +--rw ttl? uint8 631 | +--rw traffic-class? uint8 632 +--:(detnet-service-operation) 633 | +--rw service-sub-layer* service-sub-layer-ref 634 +--:(detnet-forwarding-operation) 635 +--rw forwarding-sub-layer* 636 forwarding-sub-layer-ref 638 7. DetNet Configuration YANG Model 640 641 module ietf-detnet-config { 642 namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config"; 643 prefix "ietf-detnet"; 645 import ietf-yang-types { 646 prefix "yang"; 647 } 649 import ietf-inet-types{ 650 prefix "inet"; 651 } 653 import ietf-ethertypes { 654 prefix "eth"; 655 } 657 import ietf-routing-types { 658 prefix "rt-types"; 659 } 661 import ietf-packet-fields { 662 prefix "packet-fields"; 663 } 664 import ietf-interfaces { 665 prefix "if"; 666 } 668 organization 669 "IETF DetNet Working Group"; 671 contact 672 "WG Web: 673 WG List: 674 WG Chair: Lou Berger 675 677 Janos Farkas 678 680 Editor: Xuesong Geng 681 683 Editor: Mach Chen 684 686 Editor: Yeoncheol Ryoo 687 689 Editor: Don Fedyk 690 ; 692 Editor: Reshad Rahman 693 695 Editor: Zhenqiang Li 696 "; 698 description 699 "This YANG module describes the parameters needed 700 for DetNet flow configuration and flow status 701 reporting"; 703 revision 2020-03-04 { 704 description 705 "initial revision"; 706 reference 707 "RFC XXXX: draft-ietf-detnet-yang-02"; 708 } 710 identity status { 711 description 712 "Base identity from which all application-status 713 actions are derived"; 714 } 716 identity none { 717 base status; 718 description 719 "Application no ingress/egress"; 721 reference 722 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 723 } 725 identity ready { 726 base status; 727 description 728 "Application ingress/egress ready"; 729 reference 730 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 731 } 733 identity failed { 734 base status; 735 description 736 "Application ingres/egresss failed"; 737 reference 738 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 739 } 741 identity out-of-service { 742 base status; 743 description 744 "Application Administratively blocked"; 745 reference 746 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 747 } 749 identity partial-failed { 750 base status; 751 description 752 "Application One or more Egress ready, and one or more Egress 753 failed. The DetNet flow can be used if the Ingress is 754 Ready."; 755 reference 756 "draft-ietf-detnet-flow-information-model-06 Section 5.8"; 757 } 759 typedef app-flow-ref { 760 type leafref { 761 path "/ietf-detnet:detnet" 762 + "/ietf-detnet:app-flows" 763 + "/ietf-detnet:app-flow" 764 + "/ietf-detnet:name"; 765 } 766 } 768 typedef service-sub-layer-ref { 769 type leafref { 770 path "/ietf-detnet:detnet" 771 + "/ietf-detnet:service-sub-layer" 772 + "/ietf-detnet:service-sub-layer-list" 773 + "/ietf-detnet:name"; 774 } 775 } 777 typedef forwarding-sub-layer-ref { 778 type leafref { 779 path "/ietf-detnet:detnet" 780 + "/ietf-detnet:forwarding-sub-layer" 781 + "/ietf-detnet:forwarding-sub-layer-list" 782 + "/ietf-detnet:name"; 783 } 784 } 786 typedef aggregation-grp-ref { 787 type leafref { 788 path "/ietf-detnet:detnet" 789 + "/ietf-detnet:service-aggregation-group" 790 + "/ietf-detnet:group-name"; 791 } 792 } 794 typedef traffic-profile-ref { 795 type leafref { 796 path "/ietf-detnet:detnet" 797 + "/ietf-detnet:traffic-profile" 798 + "/ietf-detnet:profile-number"; 799 } 800 } 802 typedef ipsec-spi { 803 type uint32 { 804 range "1..max"; 805 } 806 description 807 "SPI"; 808 } 810 typedef service-operation-type { 811 type enumeration { 812 enum service-initiation { 813 description 814 "Operation for DetNet service sub-layer encapsulation"; 815 } 816 enum service-termination { 817 description 818 "Operation for DetNet service sub-layer decapsulation"; 819 } 820 enum service-relay { 821 description 822 "Operation for DetNet service sub-layer swap"; 823 } 824 enum non-detnet { 825 description 826 "No operation for DetNet service sub-layer"; 827 } 828 } 829 } 831 typedef forwarding-operations-type { 832 type enumeration { 833 enum forward { 834 description 835 "Operation forward to next-hop"; 836 } 837 enum impose-and-forward { 838 description 839 "Operation impose outgoing label(s) and forward to 840 next-hop"; 841 } 842 enum pop-and-forward { 843 description 844 "Operation pop incoming label and forward to next-hop"; 845 } 846 enum pop-impose-and-forward { 847 description 848 "Operation pop incoming label, impose one or more 849 outgoing label(s) and forward to next-hop"; 850 } 851 enum swap-and-forward { 852 description 853 "Operation swap incoming label, with outgoing label and 854 forward to next-hop"; 855 } 856 enum pop-and-lookup { 857 description 858 "Operation pop incoming label and perform a lookup"; 859 } 860 } 861 description 862 "MPLS operations types"; 863 } 864 typedef service-protection-type { 865 type enumeration { 866 enum none { 867 description 868 "no service protection provide"; 869 } 870 enum replication { 871 description 872 "A Packet Replication Function (PRF) replicates 873 DetNet flow packets and forwards them to one or 874 more next hops in the DetNet domain. The number 875 of packet copies sent to each next hop is a 876 DetNet flow specific parameter at the node doing 877 the replication. PRF can be implemented by an 878 edge node, a relay node, or an end system"; 879 } 880 enum elimination { 881 description 882 "A Packet Elimination Function (PEF) eliminates 883 duplicate copies of packets to prevent excess 884 packets flooding the network or duplicate 885 packets being sent out of the DetNet domain. 886 PEF can be implemented by an edge node, a relay 887 node, or an end system."; 888 } 889 enum ordering { 890 description 891 "A Packet Ordering Function (POF) re-orders 892 packets within a DetNet flow that are received 893 out of order. This function can be implemented 894 by an edge node, a relay node, or an end system."; 895 } 896 enum elimination-ordering { 897 description 898 "A combination of PEF and POF that can be 899 implemented by an edge node, a relay node, or 900 an end system."; 901 } 902 enum elimination-replication { 903 description 904 "A combination of PEF and PRF that can be 905 implemented by an edge node, a relay node, or 906 an end system"; 907 } 908 enum elimination-ordering-replicaiton { 909 description 910 "A combination of PEF, POF and PRF that can be 911 implemented by an edge node, a relay node, or 912 an end system"; 913 } 914 } 915 } 917 typedef sequence-number-generation-type { 918 type enumeration { 919 enum copy-from-app-flow { 920 description 921 "Copy the app-flow sequence number to the DetNet-flow"; 922 } 923 enum generate-by-detnet-flow { 924 description 925 "Generate the sequence number by DetNet flow"; 926 } 927 } 928 } 930 typedef sequence-number-field { 931 type enumeration { 932 enum zero-sn { 933 description 934 "there is no DetNet sequence number field."; 935 } 936 enum short-sn { 937 value 16; 938 description 939 "there is 16bit DetNet sequence number field"; 940 } 941 enum long-sn { 942 value 28; 943 description 944 "there is 28bit DetNet sequence number field"; 945 } 946 } 947 } 949 typedef aggregation-group { 950 type string; 951 description 952 "The name of the aggregation group"; 953 } 955 grouping ip-header { 956 description 957 "The IPv4/IPv6 packet header information"; 958 leaf src-ip-address { 959 type inet:ip-address; 960 description 961 "The source IP address of the header"; 962 } 964 leaf dest-ip-address { 965 type inet:ip-address; 966 description 967 "The destination IP address of the header"; 968 } 970 leaf next-header { 971 type uint8; 972 description 973 "The next header of the IPv6 header"; 974 } 976 leaf traffic-class { 977 type uint8; 978 description 979 "The traffic class value of the header"; 980 } 982 leaf flow-label { 983 type inet:ipv6-flow-label; 984 description 985 "The flow label value of the header"; 986 } 988 leaf source-port { 989 type inet:port-number; 990 description 991 "The source port number"; 992 } 994 leaf destination-port { 995 type inet:port-number; 996 description 997 "The destination port number"; 998 } 999 } 1001 grouping l2-header { 1002 description 1003 "The Ethernet or TSN packet header information"; 1004 leaf source-mac-address { 1005 type yang:mac-address; 1006 description 1007 "The source MAC address value of the ethernet header"; 1009 } 1011 leaf destination-mac-address { 1012 type yang:mac-address; 1013 description 1014 "The destination MAC address value of the ethernet header"; 1015 } 1017 leaf ethertype { 1018 type eth:ethertype; 1019 description 1020 "The ethernet packet type value of the ethernet header"; 1021 } 1023 leaf vlan-id { 1024 type uint16; 1025 description 1026 "The Vlan value of the ethernet header"; 1027 } 1029 leaf pcp { 1030 type uint8; 1031 description 1032 "The priority value of the ethernet header"; 1033 } 1034 } 1036 grouping destination-ip-port-identification { 1037 description 1038 "The TCP/UDP port(source/destination) identification information"; 1039 container destination-port { 1040 uses packet-fields:port-range-or-operator; 1041 } 1042 } 1044 grouping source-ip-port-identification { 1045 description 1046 "The TCP/UDP port(source/destination) identification information"; 1047 container source-port { 1048 uses packet-fields:port-range-or-operator; 1049 } 1050 } 1052 grouping ip-flow-identification { 1053 description 1054 "The IPv4/IPv6 packet header identification information"; 1055 leaf src-ip-prefix { 1056 type inet:ip-prefix; 1057 description 1058 "The source IP address of the header"; 1059 } 1061 leaf dest-ip-prefix { 1062 type inet:ip-prefix; 1063 description 1064 "The destination IP address of the header"; 1065 } 1067 leaf next-header { 1068 type uint8; 1069 description 1070 "The next header of the IPv6 header"; 1071 } 1073 leaf traffic-class { 1074 type uint8; 1075 description 1076 "The traffic class value of the header"; 1077 } 1079 leaf flow-label { 1080 type inet:ipv6-flow-label; 1081 description 1082 "The flow label value of the header"; 1083 } 1085 uses source-ip-port-identification; 1087 uses destination-ip-port-identification; 1089 leaf ipsec-spi { 1090 type ipsec-spi; 1091 description 1092 "Security parameter index of SA entry"; 1093 } 1094 } 1096 grouping mpls-flow-identification { 1097 description 1098 "The MPLS packet header identification information"; 1099 choice label-space { 1100 description 1101 ""; 1102 case context-label-space { 1103 uses rt-types:mpls-label-stack; 1104 } 1105 case platform-label-space { 1106 leaf label { 1107 type rt-types:mpls-label; 1108 } 1109 } 1110 } 1111 } 1113 grouping traffic-specification { 1114 container traffic-specification { 1115 description 1116 "traffic-specification specifies how the Source 1117 transmits packets for the flow. This is the 1118 promise/request of the Source to the network. 1119 The network uses this traffic specification 1120 to allocate resources and adjust queue 1121 parameters in network nodes."; 1122 reference 1123 "draft-ietf-detnet-flow-information-model"; 1124 leaf interval { 1125 type uint32; 1126 description 1127 "The period of time in which the traffic 1128 specification cannot be exceeded"; 1129 } 1131 leaf max-packets-per-interval { 1132 type uint32; 1133 description 1134 "The maximum number of packets that the 1135 source will transmit in one Interval."; 1136 } 1138 leaf max-payload-size { 1139 type uint32; 1140 description 1141 "The maximum payload size that the source 1142 will transmit."; 1143 } 1145 leaf average-packets-per-interval { 1146 type uint32; 1147 description 1148 "The average number of packets that the 1149 source will transmit in one Interval"; 1150 } 1152 leaf average-payload-size { 1153 type uint32; 1154 description 1155 "The average payload size that the 1156 source will transmit."; 1157 } 1158 } 1159 } 1161 grouping traffic-requirements { 1162 container traffic-requirements { 1163 description 1164 "FlowRequirements: defines the attributes of the App-flow 1165 regarding bandwidth, latency, latency variation, loss, and 1166 misordering tolerance."; 1167 leaf min-bandwidth { 1168 type uint64; 1169 description 1170 "MinBandwidth is the minimum bandwidth that has to be 1171 guaranteed for the DetNet service. MinBandwidth is 1172 specified in octets per second."; 1173 } 1175 leaf max-latency { 1176 type uint32; 1177 description 1178 "MaxLatency is the maximum latency from Ingress to Egress(es) 1179 for a single packet of the DetNet flow. MaxLatency is 1180 specified as an integer number of nanoseconds"; 1181 } 1183 leaf max-latency-variation { 1184 type uint32; 1185 description 1186 "MaxLatencyVariation is the difference between the minimum and 1187 the maximum end-to-end one-way latency. MaxLatencyVariation 1188 is specified as an integer number of nanoseconds."; 1189 } 1191 leaf max-loss { 1192 type uint8; 1193 description 1194 "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter 1195 for the DetNet service between the Ingress and Egress(es) of 1196 the DetNet domain."; 1197 } 1199 leaf max-consecutive-loss-tolerance { 1200 type uint32; 1201 description 1202 "Some applications have special loss requirement, such as 1203 MaxConsecutiveLossTolerance. The maximum consecutive loss 1204 tolerance parameter describes the maximum number of 1205 consecutive packets whose loss can be tolerated. The maximum 1206 consecutive loss tolerance can be measured for example based 1207 on sequence number"; 1208 } 1210 leaf max-misordering { 1211 type uint32; 1212 description 1213 "MaxMisordering describes the tolerable maximum number of 1214 packets that can be received out of order. The maximum 1215 allowed misordering can be measured for example based on 1216 sequence number. The value zero for the maximum allowed 1217 misordering indicates that in order delivery is required, 1218 misordering cannot be tolerated."; 1219 } 1220 } 1221 } 1223 grouping data-flow-spec { 1224 description 1225 "app-flow identification"; 1226 choice data-flow-type { 1227 case tsn-app-flow { 1228 uses l2-header; 1229 } 1231 case ip-app-flow { 1232 uses ip-flow-identification; 1233 } 1235 case mpls-app-flow { 1236 uses mpls-flow-identification; 1237 } 1238 } 1239 } 1241 grouping detnet-flow-spec { 1242 description 1243 "detnet-flow identification"; 1244 choice detnet-flow-type { 1245 case ip-detnet-flow { 1246 uses ip-flow-identification; 1247 } 1248 case mpls-detnet-flow { 1249 uses mpls-flow-identification; 1250 } 1251 } 1252 } 1254 grouping app-flows-ref { 1255 description 1256 "incoming or outgoing app-flow reference group"; 1257 leaf-list app-flow { 1258 type app-flow-ref; 1259 description 1260 "List of ingress or egress app-flows"; 1261 } 1262 } 1264 grouping service-sub-layer-ref { 1265 description 1266 "incoming or outgoing service sub-layer reference group"; 1267 leaf-list service-sub-layer { 1268 type service-sub-layer-ref; 1269 description 1270 "List of incoming or outgoing service sub-layer 1271 that has to aggregate or disaggregate"; 1272 } 1273 } 1275 grouping forwarding-sub-layer-ref { 1276 description 1277 "incoming or outgoing forwarding sub-layer reference group"; 1278 leaf-list forwarding-sub-layer { 1279 type forwarding-sub-layer-ref; 1280 description 1281 "List of incoming or outgoing forwarding sub-layer 1282 that has to aggregate or disaggregate"; 1283 } 1284 } 1286 grouping detnet-header { 1287 description 1288 "DetNet header info for DetNet encapsulation or swap"; 1289 choice header-type {: 1290 case detnet-mpls-header { 1291 description 1292 "MPLS label stack for DetNet MPLS encapsulation 1293 for forwarding"; 1294 uses rt-types:mpls-label-stack; 1295 } 1296 case detnet-ip-header { 1297 description 1298 "IPv4/IPv6 packet header for DetNet IP encapsulation"; 1299 uses ip-header; 1300 } 1301 } 1302 } 1304 grouping aggregation-header { 1305 description 1306 "DetNet aggregation header DetNet encapsulation"; 1307 container aggregation-header { 1308 description 1309 "MPLS label stack for DetNet MPLS encapsulation or 1310 forwarding"; 1311 uses rt-types:mpls-label-stack; 1312 } 1313 } 1315 grouping detnet-app-next-hop-content { 1316 description 1317 "Generic parameters of DetNet next hops."; 1318 choice next-hop-options { 1319 mandatory true; 1320 description 1321 "Options for next hops. 1322 It is expected that further cases will be added through 1323 augments from other modules, e.g., for recursive 1324 next hops."; 1325 case simple-next-hop { 1326 description 1327 "This case represents a simple next hop consisting of the 1328 next-hop address and/or outgoing interface. 1329 Modules for address families MUST augment this case with a 1330 leaf containing a next-hop address of that address 1331 family."; 1332 leaf outgoing-interface { 1333 type if:interface-ref; 1334 } 1336 choice flow-type { 1337 case ip { 1338 leaf next-hop-address { 1339 type inet:ip-address; 1340 } 1341 } 1343 case mpls { 1344 uses rt-types:mpls-label-stack; 1345 } 1346 } 1347 } 1349 case next-hop-list { 1350 container next-hop-list { 1351 description 1352 "Container for multiple next hops."; 1353 list next-hop { 1354 key "hop-index"; 1355 description 1356 "An entry in a next-hop list. 1357 Modules for address families MUST augment this list 1358 with a leaf containing a next-hop address of that 1359 address family."; 1360 leaf hop-index { 1361 type uint8; 1362 description 1363 ""; 1364 } 1366 leaf outgoing-interface { 1367 type if:interface-ref; 1368 } 1370 choice flow-type { 1371 case ip { 1372 leaf next-hop-address { 1373 type inet:ip-address; 1374 } 1375 } 1377 case mpls { 1378 uses rt-types:mpls-label-stack; 1379 } 1380 } 1381 } 1382 } 1383 } 1384 } 1385 } 1387 grouping detnet-forwarding-next-hop-content { 1388 description 1389 "Generic parameters of DetNet next hops."; 1390 choice next-hop-options { 1391 mandatory true; 1392 description 1393 "Options for next hops. 1394 It is expected that further cases will be added through 1395 augments from other modules, e.g., for recursive 1396 next hops."; 1397 case simple-next-hop { 1398 description 1399 "This case represents a simple next hop consisting of the 1400 next-hop address and/or outgoing interface. 1401 Modules for address families MUST augment this case with a 1402 leaf containing a next-hop address of that address 1403 family."; 1404 leaf outgoing-interface { 1405 type if:interface-ref; 1406 } 1408 choice flow-type { 1409 case ip { 1410 choice operation-type { 1411 case ip-forwarding { 1412 leaf next-hop-address { 1413 type inet:ip-address; 1414 } 1415 } 1417 case mpls-over-ip-encapsulation { 1418 uses ip-header; 1419 } 1420 } 1421 } 1423 case mpls { 1424 uses rt-types:mpls-label-stack; 1425 } 1426 } 1427 } 1429 case next-hop-list { 1430 container next-hop-list { 1431 description 1432 "Container for multiple next hops."; 1433 list next-hop { 1434 key "hop-index"; 1435 description 1436 "An entry in a next-hop list. 1438 Modules for address families MUST augment this list 1439 with a leaf containing a next-hop address of that 1440 address family."; 1441 leaf hop-index { 1442 type uint8; 1443 description 1444 ""; 1445 } 1447 leaf outgoing-interface { 1448 type if:interface-ref; 1449 } 1451 choice flow-type { 1452 case ip { 1453 choice operation-type { 1454 case ip-forwarding { 1455 leaf next-hop-address { 1456 type inet:ip-address; 1457 } 1458 } 1460 case mpls-over-ip-encapsulation { 1461 uses ip-header; 1462 } 1463 } 1464 } 1466 case mpls { 1467 uses rt-types:mpls-label-stack; 1468 } 1469 } 1470 } 1471 } 1472 } 1473 } 1474 } 1476 container detnet { 1477 list traffic-profile { 1478 key "profile-number"; 1479 description 1480 "A traffic profile"; 1481 leaf profile-number { 1482 type uint16; 1483 description 1484 "An Aggregation group ID. Zero means the service is not 1485 part of a group"; 1486 } 1487 uses traffic-requirements; 1489 uses traffic-specification; 1491 leaf-list member-applications { 1492 type app-flow-ref; 1493 config false; 1494 description 1495 "Applicaions attached to this profile"; 1496 } 1498 leaf-list member-services { 1499 type service-sub-layer-ref; 1500 config false; 1501 description 1502 "Services attached to this profile"; 1503 } 1505 leaf-list member-groups { 1506 type aggregation-grp-ref; 1507 config false; 1508 description 1509 "Groups attached to this profile"; 1510 } 1512 leaf-list member-forwarding-sublayers { 1513 type forwarding-sub-layer-ref; 1514 config false; 1515 description 1516 "Forwarding sub-layer attached to this profile"; 1517 } 1518 } 1520 container app-flows { 1521 description 1522 "The DetNet app-flow configuration"; 1523 list app-flow { 1524 key "name"; 1525 description 1526 ""; 1527 leaf name { 1528 type "string"; 1529 description 1530 "The name to identify the DetNet app-flow"; 1531 } 1533 leaf app-flow-bidir-congruent { 1534 type boolean; 1535 description 1536 "Defines the data path requirement of the App-flow whether 1537 it must share the same data path and physical path 1538 for both directions through the network, 1539 e.g., to provide congruent paths in the two directions."; 1540 } 1542 leaf outgoing-service { 1543 type service-sub-layer-ref; 1544 config false; 1545 description 1546 "Binding to this applications outgoing 1547 service"; 1548 } 1550 leaf incoming-service { 1551 type service-sub-layer-ref; 1552 config false; 1553 description 1554 "Binding to this applications incoming 1555 service"; 1556 } 1558 leaf traffic-profile { 1559 type traffic-profile-ref; 1560 description 1561 "The Traffic Profile for this group"; 1562 } 1564 container ingress { 1565 // key "name"; This should be a list for aggregation 1566 description 1567 "Ingress DetNet application flows or a compound flow"; 1568 leaf name { 1569 type string; 1570 description 1571 "Ingress DetNet application"; 1572 } 1574 leaf app-flow-status { 1575 type identityref { 1576 base status; 1577 } 1578 config false; 1579 description 1580 "Status of ingress application flow"; 1581 } 1582 leaf interface { 1583 type if:interface-ref; 1584 } 1586 uses data-flow-spec; 1587 } //End of app-ingress 1589 container egress { 1590 description 1591 "Route's next-hop attribute."; 1592 // key "name"; This should be a list for aggregation 1593 leaf name { 1594 type string; 1595 description 1596 "Egress DetNet application"; 1597 } 1599 choice application-type { 1600 container ethernet { 1601 leaf ethernet-place-holder { 1602 type string; 1603 description 1604 "Place holder for matching ethernet"; 1605 } 1606 } 1608 container ip-mpls { 1609 uses detnet-app-next-hop-content; 1610 } 1611 } 1612 } 1613 } 1614 } 1616 list service-aggregation-group { 1617 key "group-name"; 1618 description 1619 "A group of services"; 1620 leaf group-name { 1621 type aggregation-group; 1622 description 1623 "An Aggregation group name. Empty means the service is not 1624 part of a group"; 1625 } 1627 container outgoing { 1628 leaf traffic-profile { 1629 type traffic-profile-ref; 1630 description 1631 "The Traffic Profile for this group"; 1632 } 1634 container service-protection { 1635 leaf service-protection-type { 1636 type service-protection-type; 1637 description 1638 "The DetNet service protection type such as PRF, PEF, 1639 PEOF,PERF, and PEORF"; 1640 } 1642 leaf sequence-number-length { 1643 type sequence-number-field; 1644 description 1645 "Sequence number filed can choice 0 bit, 16bit, 28 bit 1646 filed"; 1647 } 1648 } 1650 uses aggregation-header; 1652 leaf-list services { 1653 type service-sub-layer-ref; 1654 config false; 1655 description 1656 "List of registered services"; 1657 } 1658 } 1660 container incoming { 1661 uses aggregation-header; 1663 leaf-list services { 1664 type service-sub-layer-ref; 1665 config false; 1666 description 1667 "List of registered services"; 1668 } 1669 } 1670 } 1672 container service-sub-layer { 1673 description 1674 "The DetNet service sub-layer configuration"; 1675 list service-sub-layer-list { 1676 key "name"; 1677 description 1678 ""; 1679 leaf name { 1680 type string; 1681 description 1682 "The name of the DetNet service sub-layer"; 1683 } 1685 leaf service-rank { 1686 type uint8; 1687 description 1688 "The DetNet rank for this service"; 1689 } 1691 choice service-type { 1692 mandatory true; 1693 container non-grouped { 1694 leaf traffic-profile { 1695 type traffic-profile-ref; 1696 description 1697 "The Traffic Profile for this service"; 1698 } 1700 leaf service-operation-type { 1701 type service-operation-type; 1702 } 1703 } 1705 container grouped { 1706 leaf group-ref { 1707 type aggregation-grp-ref; 1708 description 1709 "The aggregation group this service belongs to"; 1710 } 1711 } 1712 } 1714 container service-protection { 1715 leaf service-protection-type { 1716 type service-protection-type; 1717 description 1718 "The DetNet service protection type such as PRF, PEF, 1719 PEOF,PERF, and PEORF"; 1720 } 1722 leaf sequence-number-length { 1723 type sequence-number-field; 1724 description 1725 "Sequence number field can choice 0 bit, 16bit, 28 bit 1726 filed"; 1727 } 1728 } 1730 leaf service-operation-type { 1731 type service-operation-type; 1732 } 1734 container incoming { 1735 description 1736 "The DetNet service sub-layer incoming configuration."; 1737 choice incoming-options { 1738 mandatory true; 1739 description 1740 ""; 1741 case ingress-application { 1742 uses app-flows-ref; 1743 } 1745 case detnet-service-identification { 1746 uses detnet-flow-spec; 1747 } 1749 case aggregated-service { 1750 uses service-sub-layer-ref; 1751 } 1753 case aggregated-forwarding { 1754 uses forwarding-sub-layer-ref; 1755 } 1756 } 1757 } 1759 container outgoing { 1760 description 1761 "The DetNet service sub-layer outgoing configuration."; 1762 choice outgoing-options { 1763 mandatory true; 1764 description 1765 ""; 1766 case detnet-service-outgoing { 1767 //uses detnet-service-next-hop-content; 1768 list service-outgoing-list { 1769 key "service-outgoing-index"; 1770 leaf service-outgoing-index { 1771 type uint8; 1772 } 1773 uses detnet-header; 1775 list next-layer { 1776 key "index"; 1777 description 1778 "lower-layer info"; 1779 leaf index { 1780 type uint8; 1781 } 1783 leaf forwarding-sub-layer { 1784 type forwarding-sub-layer-ref; 1785 } 1786 } 1787 } 1788 } 1790 case detnet-service-aggregation { 1791 leaf aggregation-service-sub-layer { 1792 type service-sub-layer-ref; 1793 } 1795 container service-label { 1796 uses rt-types:mpls-label-stack; 1797 } 1798 } 1800 case egress-proxy { 1801 uses app-flows-ref; 1802 } 1804 case detnet-service-operation { 1805 uses service-sub-layer-ref; 1806 } 1808 case detnet-forwarding-operation { 1809 uses forwarding-sub-layer-ref; 1810 } 1811 } 1812 } 1813 } 1814 } 1816 container forwarding-sub-layer { 1817 description 1818 "The DetNet forwarding sub-layer configuration"; 1819 list forwarding-sub-layer-list { 1820 key "name"; 1821 description 1822 ""; 1823 leaf name { 1824 type string; 1825 description 1826 "The name of the DetNet forwarding sub-layer"; 1827 } 1829 leaf traffic-profile { 1830 type traffic-profile-ref; 1831 description 1832 "The Traffic Profile for this group"; 1833 } 1835 leaf forwarding-operation-type { 1836 type forwarding-operations-type; 1837 } 1839 container incoming { 1840 description 1841 "The DetNet forwarding sub-layer incoming configuration."; 1842 choice incoming-options { 1843 mandatory true; 1844 description 1845 ""; 1846 case detnet-service-forwarding { 1847 leaf-list service-sub-layer { 1848 type service-sub-layer-ref; 1849 config false; 1850 description 1851 ""; 1852 } 1853 } 1855 case detnet-forwarding-identification { 1856 leaf interface { 1857 type if:interface-ref; 1858 description 1859 ""; 1860 } 1862 uses detnet-flow-spec; 1863 } 1865 case aggregated-forwarding { 1866 uses forwarding-sub-layer-ref; 1867 } 1868 } 1870 } 1872 container outgoing { 1873 description 1874 "The DetNet forwarding sub-layer outbound configuration."; 1875 choice outgoing-options { 1876 mandatory true; 1877 description 1878 ""; 1879 case detnet-forwarding-outgoing { 1880 uses detnet-forwarding-next-hop-content; 1881 } 1883 case detnet-service-aggregation { 1884 leaf aggregation-service-sub-layer { 1885 type service-sub-layer-ref; 1886 } 1888 container optional-forwarding-label { 1889 uses rt-types:mpls-label-stack; 1890 } 1891 } 1893 case detnet-forwarding-aggregation { 1894 leaf aggregation-forwarding-sub-layer { 1895 type forwarding-sub-layer-ref; 1896 } 1898 container forwarding-label { 1899 uses rt-types:mpls-label-stack; 1900 } 1901 } 1903 case detnet-service-operation { 1904 uses service-sub-layer-ref; 1905 } 1907 case detnet-forwarding-operation { 1908 uses forwarding-sub-layer-ref; 1909 } 1910 } 1911 } 1912 } 1913 } 1914 } 1915 } 1916 1917 8. Open Issues 1919 There are some open issues that are still under discussion: 1921 o Aggregation. 1923 o Going along the the updated data plane model. 1925 o Terminologies. 1927 These issues will be resolved in the following versions of the draft. 1929 9. IANA Considerations 1931 This document makes no request of IANA. 1933 Note to RFC Editor: this section may be removed on publication as an 1934 RFC. 1936 10. Security Considerations 1938 1940 11. Acknowledgements 1942 12. References 1944 12.1. Normative References 1946 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1947 Requirement Levels", BCP 14, RFC 2119, 1948 DOI 10.17487/RFC2119, March 1997, 1949 . 1951 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1952 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1953 . 1955 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1956 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1957 . 1959 [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, 1960 "Deterministic Networking Architecture", RFC 8655, 1961 DOI 10.17487/RFC8655, October 2019, 1962 . 1964 12.2. Informative References 1966 [I-D.ietf-detnet-flow-information-model] 1967 Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D. 1968 Fedyk, "DetNet Flow Information Model", draft-ietf-detnet- 1969 flow-information-model-10 (work in progress), May 2020. 1971 Authors' Addresses 1973 Xuesong Geng 1974 Huawei Technologies 1976 Email: gengxuesong@huawei.com 1978 Mach(Guoyi) Chen 1979 Huawei Technologies 1981 Email: mach.chen@huawei.com 1983 Yeoncheol Ryoo 1984 ETRI 1986 Email: dbduscjf@etri.re.kr 1988 Don Fedyk 1989 LabN Consulting, L.L.C. 1991 Email: dfedyk@labn.net 1993 Reshad Rahman 1994 Cisco Systems 1996 Email: rrahman@cisco.com 1998 Zhenqiang Li 1999 China Mobile 2001 Email: lizhenqiang@chinamobile.com