idnits 2.17.1 draft-ietf-detnet-yang-05.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 34 instances of too long lines in the document, the longest one being 144 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 243 has weird spacing: '...er-port inet:...' == Line 244 has weird spacing: '...er-port inet:...' == Line 251 has weird spacing: '...er-port inet:...' == Line 252 has weird spacing: '...er-port inet:...' == Line 350 has weird spacing: '...g-index uin...' == (30 more instances...) -- The document date (March 09, 2020) is 1480 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 1662, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-ip' is defined on line 1672, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-mpls' is defined on line 1677, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-topology-yang' is defined on line 1683, but no explicit reference was found in the text == Unused Reference: 'I-D.geng-detnet-info-distribution' is defined on line 1708, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-detnet-use-cases' is defined on line 1714, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te' is defined on line 1719, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-yang-te-topo' is defined on line 1725, but no explicit reference was found in the text == Unused Reference: 'I-D.thubert-tsvwg-detnet-transport' is defined on line 1731, but no explicit reference was found in the text == Unused Reference: 'I-D.varga-detnet-service-model' is defined on line 1736, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1CB' is defined on line 1741, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Q-2014' is defined on line 1747, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbu' is defined on line 1752, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qbv' is defined on line 1757, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qcc' is defined on line 1762, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qch' is defined on line 1768, but no explicit reference was found in the text == Unused Reference: 'IEEE802.1Qci' is defined on line 1774, but no explicit reference was found in the text == Unused Reference: 'RFC3209' is defined on line 1780, but no explicit reference was found in the text == Unused Reference: 'RFC4875' is defined on line 1785, but no explicit reference was found in the text == Unused Reference: 'RFC8342' is defined on line 1792, 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-07 ** Downref: Normative reference to an Informational draft: draft-ietf-detnet-flow-information-model (ref. 'I-D.ietf-detnet-flow-information-model') == Outdated reference: A later version (-07) exists of draft-ietf-detnet-ip-05 == Outdated reference: A later version (-13) exists of draft-ietf-detnet-mpls-05 == 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-22 Summary: 3 errors (**), 0 flaws (~~), 32 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: September 10, 2020 Y. Ryoo 6 ETRI 7 Z. Li 8 China Mobile 9 R. Rahman 10 Cisco Systems 11 D. Fedyk 12 LabN Consulting, L.L.C. 13 March 09, 2020 15 Deterministic Networking (DetNet) Configuration YANG Model 16 draft-ietf-detnet-yang-05 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 September 10, 2020. 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 . . . . . . . . . . . . 5 75 6. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 18 76 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 35 77 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 78 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 79 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 80 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 81 11.1. Normative References . . . . . . . . . . . . . . . . . . 35 82 11.2. Informative References . . . . . . . . . . . . . . . . . 36 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 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. In each instance, there are four elements: name, in- 181 segments, out-segments and operations, which means: 183 o Name: indicates the key value of the instance identification. 185 o In-segments: indicates the key value of identification, e.g., 186 Layer 2 App flow identification, Layer 3 App flow identification 187 and DetNet flow identification. 189 o Out-segments: indicates the information of DetNet processing(e.g., 190 DetNet forwarding, DetNet header Encapsulation) and the mapping 191 relationship to the lower sub-layer/sub-network. 193 o Operations: indicates DetNet functions, e.g., DetNet forwarding 194 functions, DetNet Service functions, DetNet Resource Reservation. 196 These elements are different when the technologies used for the 197 specific instance is different. So this structure is abstract, which 198 allows for different technology specifics as defined in different 199 data plane drafts. 201 5. DetNet Configuration YANG Structures 203 module: ietf-detnet-config 204 +--rw app-flows 205 | +--rw app-flow* [name] 206 | +--rw name string 207 | +--rw end-points 208 | | +--rw source-endpoint? inet:ip-address 209 | | +--rw destination-endpoints* inet:ip-address 210 | +--rw app-flow-bidir-congruent? boolean 211 | +--rw traffic-requirements 212 | | +--rw min-bandwidth? uint64 213 | | +--rw max-latency? uint32 214 | | +--rw max-latency-variation? uint32 215 | | +--rw max-loss? uint8 216 | | +--rw max-consecutive-loss-tolerance? uint32 217 | | +--rw max-misordering? uint32 218 | +--rw traffic-specification 219 | | +--rw interval? uint32 220 | | +--rw max-packets-per-interval? uint32 221 | | +--rw max-payload-size? uint32 222 | | +--rw average-packets-per-interval? uint32 223 | | +--rw average-payload-size? uint32 224 | +--rw in-segment 225 | | +--rw app-traffic* [interface] 226 | | +--rw interface if:interface-ref 227 | | +--rw (data-flow-type)? 228 | | +--:(tsn-app-flow) 229 | | | +--rw source-mac-address? yang:mac-address 230 | | | +--rw destination-mac-address? yang:mac-address 231 | | | +--rw ethertype? eth:ethertype 232 | | | +--rw vlan-id? uint16 233 | | | +--rw pcp? uint8 234 | | +--:(ip-app-flow) 235 | | | +--rw src-ip-prefix? inet:ip-prefix 236 | | | +--rw dest-ip-prefix? inet:ip-prefix 237 | | | +--rw next-header? uint8 238 | | | +--rw traffic-class? uint8 239 | | | +--rw flow-label? inet:ipv6-flow-label 240 | | | +--rw source-port 241 | | | | +--rw (port-range-or-operator)? 242 | | | | +--:(range) 243 | | | | | +--rw lower-port inet:port-number 244 | | | | | +--rw upper-port inet:port-number 245 | | | | +--:(operator) 246 | | | | +--rw operator? operator 247 | | | | +--rw port inet:port-number 248 | | | +--rw destination-port 249 | | | | +--rw (port-range-or-operator)? 250 | | | | +--:(range) 251 | | | | | +--rw lower-port inet:port-number 252 | | | | | +--rw upper-port inet:port-number 253 | | | | +--:(operator) 254 | | | | +--rw operator? operator 255 | | | | +--rw port inet:port-number 256 | | | +--rw ipsec-spi? ipsec-spi 257 | | +--:(mpls-app-flow) 258 | | +--rw (label-space)? 259 | | +--:(non-platrom-label-space) 260 | | | +--rw mpls-label-stack 261 | | | +--rw entry* [id] 262 | | | +--rw id uint8 263 | | | +--rw label? rt-types:mpls-label 264 | | | +--rw ttl? uint8 265 | | | +--rw traffic-class? uint8 266 | | +--:(platform-label-space) 267 | | +--rw label? rt-types:mpls-label 268 | +--rw out-segment 269 | +--rw (next-hop-options) 270 | +--:(simple-next-hop) 271 | | +--rw (header-type)? 272 | | | +--:(detnet-mpls-header) 273 | | | | +--rw mpls-label-stack 274 | | | | +--rw entry* [id] 275 | | | | +--rw id uint8 276 | | | | +--rw label? rt-types:mpls-label 277 | | | | +--rw ttl? uint8 278 | | | | +--rw traffic-class? uint8 279 | | | +--:(detnet-ip-header) 280 | | | +--rw src-ip-address? inet:ip-address 281 | | | +--rw dest-ip-address? inet:ip-address 282 | | | +--rw next-header? uint8 283 | | | +--rw traffic-class? uint8 284 | | | +--rw flow-label? inet:ipv6-flow-label 285 | | | +--rw source-port? inet:port-number 286 | | | +--rw destination-port? inet:port-number 287 | | +--rw lower-layer* [index] 288 | | +--rw index uint8 289 | | +--rw (lower-layer-type)? 290 | | +--:(service-sub-layer) 291 | | | +--rw service-sub-layer? service-sub-layer-ref 292 | | +--:(forwarding-sub-layer) 293 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 294 | | +--:(sub-network) 295 | | | +--rw sub-network? sub-network-ref 296 | | +--:(interface) 297 | | +--rw outgoing-interface? if:interface-ref 298 | +--:(next-hop-list) 299 | +--rw next-hop-list 300 | +--rw next-hop* [hop-index] 301 | +--rw hop-index uint8 302 | +--rw (header-type)? 303 | | +--:(detnet-mpls-header) 304 | | | +--rw mpls-label-stack 305 | | | +--rw entry* [id] 306 | | | +--rw id uint8 307 | | | +--rw label? rt-types:mpls-label 308 | | | +--rw ttl? uint8 309 | | | +--rw traffic-class? uint8 310 | | +--:(detnet-ip-header) 311 | | +--rw src-ip-address? inet:ip-address 312 | | +--rw dest-ip-address? inet:ip-address 313 | | +--rw next-header? uint8 314 | | +--rw traffic-class? uint8 315 | | +--rw flow-label? inet:ipv6-flow-label 316 | | +--rw source-port? inet:port-number 317 | | +--rw destination-port? inet:port-number 318 | +--rw lower-layer* [index] 319 | +--rw index uint8 320 | +--rw (lower-layer-type)? 321 | +--:(service-sub-layer) 322 | | +--rw service-sub-layer? service-sub-layer-ref 323 | +--:(forwarding-sub-layer) 324 | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 325 | +--:(sub-network) 326 | | +--rw sub-network? sub-network-ref 327 | +--:(interface) 328 | +--rw outgoing-interface? if:interface-ref 329 +--rw service-sub-layer 330 | +--rw service-sub-layer-list* [name] 331 | +--rw name string 332 | +--ro service-id? uint16 333 | +--rw service-rank? uint8 334 | +--rw traffic-requirements 335 | | +--rw min-bandwidth? uint64 336 | | +--rw max-latency? uint32 337 | | +--rw max-latency-variation? uint32 338 | | +--rw max-loss? uint8 339 | | +--rw max-consecutive-loss-tolerance? uint32 340 | | +--rw max-misordering? uint32 341 | +--rw service-portection 342 | | +--rw service-protection-type? service-protection-type 343 | | +--rw sequence-number-length? sequence-number-field 344 | | +--rw sequence-number-window-size? uint32 345 | | +--rw sequence-number-generation? sequence-number-generation-type 346 | +--rw service-operation-type? service-operation-type 347 | +--rw in-segment 348 | | +--rw app-flow* app-flow-ref 349 | | +--rw incoming-detnet-flow* [incoming-index] 350 | | +--rw incoming-index uint8 351 | | +--rw (detnet-flow-type)? 352 | | +--:(ip-detnet-flow) 353 | | | +--rw src-ip-prefix? inet:ip-prefix 354 | | | +--rw dest-ip-prefix? inet:ip-prefix 355 | | | +--rw next-header? uint8 356 | | | +--rw traffic-class? uint8 357 | | | +--rw flow-label? inet:ipv6-flow-label 358 | | | +--rw source-port 359 | | | | +--rw (port-range-or-operator)? 360 | | | | +--:(range) 361 | | | | | +--rw lower-port inet:port-number 362 | | | | | +--rw upper-port inet:port-number 363 | | | | +--:(operator) 364 | | | | +--rw operator? operator 365 | | | | +--rw port inet:port-number 366 | | | +--rw destination-port 367 | | | | +--rw (port-range-or-operator)? 368 | | | | +--:(range) 369 | | | | | +--rw lower-port inet:port-number 370 | | | | | +--rw upper-port inet:port-number 371 | | | | +--:(operator) 372 | | | | +--rw operator? operator 373 | | | | +--rw port inet:port-number 374 | | | +--rw ipsec-spi? ipsec-spi 375 | | +--:(mpls-detnet-flow) 376 | | +--rw (label-space)? 377 | | +--:(non-platrom-label-space) 378 | | | +--rw mpls-label-stack 379 | | | +--rw entry* [id] 380 | | | +--rw id uint8 381 | | | +--rw label? rt-types:mpls-label 382 | | | +--rw ttl? uint8 383 | | | +--rw traffic-class? uint8 384 | | +--:(platform-label-space) 385 | | +--rw label? rt-types:mpls-label 386 | +--rw out-sergment 387 | +--rw (next-hop-options) 388 | | +--:(simple-next-hop) 389 | | | +--rw (header-type)? 390 | | | | +--:(detnet-mpls-header) 391 | | | | | +--rw mpls-label-stack 392 | | | | | +--rw entry* [id] 393 | | | | | +--rw id uint8 394 | | | | | +--rw label? rt-types:mpls-label 395 | | | | | +--rw ttl? uint8 396 | | | | | +--rw traffic-class? uint8 397 | | | | +--:(detnet-ip-header) 398 | | | | +--rw src-ip-address? inet:ip-address 399 | | | | +--rw dest-ip-address? inet:ip-address 400 | | | | +--rw next-header? uint8 401 | | | | +--rw traffic-class? uint8 402 | | | | +--rw flow-label? inet:ipv6-flow-label 403 | | | | +--rw source-port? inet:port-number 404 | | | | +--rw destination-port? inet:port-number 405 | | | +--rw lower-layer* [index] 406 | | | +--rw index uint8 407 | | | +--rw (lower-layer-type)? 408 | | | +--:(service-sub-layer) 409 | | | | +--rw service-sub-layer? service-sub-layer-ref 410 | | | +--:(forwarding-sub-layer) 411 | | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 412 | | | +--:(sub-network) 413 | | | | +--rw sub-network? sub-network-ref 414 | | | +--:(interface) 415 | | | +--rw outgoing-interface? if:interface-ref 416 | | +--:(next-hop-list) 417 | | +--rw next-hop-list 418 | | +--rw next-hop* [hop-index] 419 | | +--rw hop-index uint8 420 | | +--rw (header-type)? 421 | | | +--:(detnet-mpls-header) 422 | | | | +--rw mpls-label-stack 423 | | | | +--rw entry* [id] 424 | | | | +--rw id uint8 425 | | | | +--rw label? rt-types:mpls-label 426 | | | | +--rw ttl? uint8 427 | | | | +--rw traffic-class? uint8 428 | | | +--:(detnet-ip-header) 429 | | | +--rw src-ip-address? inet:ip-address 430 | | | +--rw dest-ip-address? inet:ip-address 431 | | | +--rw next-header? uint8 432 | | | +--rw traffic-class? uint8 433 | | | +--rw flow-label? inet:ipv6-flow-label 434 | | | +--rw source-port? inet:port-number 435 | | | +--rw destination-port? inet:port-number 436 | | +--rw lower-layer* [index] 437 | | +--rw index uint8 438 | | +--rw (lower-layer-type)? 439 | | +--:(service-sub-layer) 440 | | | +--rw service-sub-layer? service-sub-layer-ref 441 | | +--:(forwarding-sub-layer) 442 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 443 | | +--:(sub-network) 444 | | | +--rw sub-network? sub-network-ref 445 | | +--:(interface) 446 | | +--rw outgoing-interface? if:interface-ref 447 | +--rw app-flow* app-flow-ref 448 +--rw forwarding-sub-layer 449 | +--rw forwarding-sub-layer-list* [name] 450 | +--rw name string 451 | +--rw resource-allocation 452 | | +--rw traffic-specification 453 | | +--rw interval? uint32 454 | | +--rw max-packets-per-interval? uint32 455 | | +--rw max-payload-size? uint32 456 | | +--rw average-packets-per-interval? uint32 457 | | +--rw average-payload-size? uint32 458 | +--rw forwarding-operation-type? mpls-operations-type 459 | +--rw in-segment 460 | | +--rw service-sub-layer? service-sub-layer-ref 461 | | +--rw forwarding-traffic* [interface] 462 | | +--rw interface if:interface-ref 463 | | +--rw (detnet-flow-type)? 464 | | +--:(ip-detnet-flow) 465 | | | +--rw src-ip-prefix? inet:ip-prefix 466 | | | +--rw dest-ip-prefix? inet:ip-prefix 467 | | | +--rw next-header? uint8 468 | | | +--rw traffic-class? uint8 469 | | | +--rw flow-label? inet:ipv6-flow-label 470 | | | +--rw source-port 471 | | | | +--rw (port-range-or-operator)? 472 | | | | +--:(range) 473 | | | | | +--rw lower-port inet:port-number 474 | | | | | +--rw upper-port inet:port-number 475 | | | | +--:(operator) 476 | | | | +--rw operator? operator 477 | | | | +--rw port inet:port-number 478 | | | +--rw destination-port 479 | | | | +--rw (port-range-or-operator)? 480 | | | | +--:(range) 481 | | | | | +--rw lower-port inet:port-number 482 | | | | | +--rw upper-port inet:port-number 483 | | | | +--:(operator) 484 | | | | +--rw operator? operator 485 | | | | +--rw port inet:port-number 486 | | | +--rw ipsec-spi? ipsec-spi 487 | | +--:(mpls-detnet-flow) 488 | | +--rw (label-space)? 489 | | +--:(non-platrom-label-space) 490 | | | +--rw mpls-label-stack 491 | | | +--rw entry* [id] 492 | | | +--rw id uint8 493 | | | +--rw label? rt-types:mpls-label 494 | | | +--rw ttl? uint8 495 | | | +--rw traffic-class? uint8 496 | | +--:(platform-label-space) 497 | | +--rw label? rt-types:mpls-label 498 | +--rw out-segment 499 | +--rw (next-hop-options) 500 | | +--:(simple-next-hop) 501 | | | +--rw (header-type)? 502 | | | | +--:(detnet-mpls-header) 503 | | | | | +--rw mpls-label-stack 504 | | | | | +--rw entry* [id] 505 | | | | | +--rw id uint8 506 | | | | | +--rw label? rt-types:mpls-label 507 | | | | | +--rw ttl? uint8 508 | | | | | +--rw traffic-class? uint8 509 | | | | +--:(detnet-ip-header) 510 | | | | +--rw src-ip-address? inet:ip-address 511 | | | | +--rw dest-ip-address? inet:ip-address 512 | | | | +--rw next-header? uint8 513 | | | | +--rw traffic-class? uint8 514 | | | | +--rw flow-label? inet:ipv6-flow-label 515 | | | | +--rw source-port? inet:port-number 516 | | | | +--rw destination-port? inet:port-number 517 | | | +--rw lower-layer* [index] 518 | | | +--rw index uint8 519 | | | +--rw (lower-layer-type)? 520 | | | +--:(service-sub-layer) 521 | | | | +--rw service-sub-layer? service-sub-layer-ref 522 | | | +--:(forwarding-sub-layer) 523 | | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 524 | | | +--:(sub-network) 525 | | | | +--rw sub-network? sub-network-ref 526 | | | +--:(interface) 527 | | | +--rw outgoing-interface? if:interface-ref 528 | | +--:(next-hop-list) 529 | | +--rw next-hop-list 530 | | +--rw next-hop* [hop-index] 531 | | +--rw hop-index uint8 532 | | +--rw (header-type)? 533 | | | +--:(detnet-mpls-header) 534 | | | | +--rw mpls-label-stack 535 | | | | +--rw entry* [id] 536 | | | | +--rw id uint8 537 | | | | +--rw label? rt-types:mpls-label 538 | | | | +--rw ttl? uint8 539 | | | | +--rw traffic-class? uint8 540 | | | +--:(detnet-ip-header) 541 | | | +--rw src-ip-address? inet:ip-address 542 | | | +--rw dest-ip-address? inet:ip-address 543 | | | +--rw next-header? uint8 544 | | | +--rw traffic-class? uint8 545 | | | +--rw flow-label? inet:ipv6-flow-label 546 | | | +--rw source-port? inet:port-number 547 | | | +--rw destination-port? inet:port-number 548 | | +--rw lower-layer* [index] 549 | | +--rw index uint8 550 | | +--rw (lower-layer-type)? 551 | | +--:(service-sub-layer) 552 | | | +--rw service-sub-layer? service-sub-layer-ref 553 | | +--:(forwarding-sub-layer) 554 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 555 | | +--:(sub-network) 556 | | | +--rw sub-network? sub-network-ref 557 | | +--:(interface) 558 | | +--rw outgoing-interface? if:interface-ref 559 | +--rw service-sub-layer? service-sub-layer-ref 560 +--rw sub-network 561 +--rw sub-network-list* [name] 562 +--rw name string 564 grouping ip-header: 565 +--rw src-ip-address? inet:ip-address 566 +--rw dest-ip-address? inet:ip-address 567 +--rw next-header? uint8 568 +--rw traffic-class? uint8 569 +--rw flow-label? inet:ipv6-flow-label 570 +--rw source-port? inet:port-number 571 +--rw destination-port? inet:port-number 572 grouping l2-header: 573 +--rw source-mac-address? yang:mac-address 574 +--rw destination-mac-address? yang:mac-address 575 +--rw ethertype? eth:ethertype 576 +--rw vlan-id? uint16 577 +--rw pcp? uint8 578 grouping destination-ip-port-identification: 579 +--rw destination-port 580 +--rw (port-range-or-operator)? 581 +--:(range) 582 | +--rw lower-port inet:port-number 583 | +--rw upper-port inet:port-number 584 +--:(operator) 585 +--rw operator? operator 586 +--rw port inet:port-number 587 grouping source-ip-port-identification: 588 +--rw source-port 589 +--rw (port-range-or-operator)? 590 +--:(range) 591 | +--rw lower-port inet:port-number 592 | +--rw upper-port inet:port-number 593 +--:(operator) 594 +--rw operator? operator 595 +--rw port inet:port-number 596 grouping ip-flow-identification: 597 +--rw src-ip-prefix? inet:ip-prefix 598 +--rw dest-ip-prefix? inet:ip-prefix 599 +--rw next-header? uint8 600 +--rw traffic-class? uint8 601 +--rw flow-label? inet:ipv6-flow-label 602 +--rw source-port 603 | +--rw (port-range-or-operator)? 604 | +--:(range) 605 | | +--rw lower-port inet:port-number 606 | | +--rw upper-port inet:port-number 607 | +--:(operator) 608 | +--rw operator? operator 609 | +--rw port inet:port-number 610 +--rw destination-port 611 | +--rw (port-range-or-operator)? 612 | +--:(range) 613 | | +--rw lower-port inet:port-number 614 | | +--rw upper-port inet:port-number 615 | +--:(operator) 616 | +--rw operator? operator 617 | +--rw port inet:port-number 618 +--rw ipsec-spi? ipsec-spi 619 grouping mpls-flow-identification: 620 +--rw (label-space)? 621 +--:(non-platrom-label-space) 622 | +--rw mpls-label-stack 623 | +--rw entry* [id] 624 | +--rw id uint8 625 | +--rw label? rt-types:mpls-label 626 | +--rw ttl? uint8 627 | +--rw traffic-class? uint8 628 +--:(platform-label-space) 629 +--rw label? rt-types:mpls-label 630 grouping traffic-specification: 631 +--rw traffic-specification 632 +--rw interval? uint32 633 +--rw max-packets-per-interval? uint32 634 +--rw max-payload-size? uint32 635 +--rw average-packets-per-interval? uint32 636 +--rw average-payload-size? uint32 637 grouping traffic-requirements: 638 +--rw traffic-requirements 639 +--rw min-bandwidth? uint64 640 +--rw max-latency? uint32 641 +--rw max-latency-variation? uint32 642 +--rw max-loss? uint8 643 +--rw max-consecutive-loss-tolerance? uint32 644 +--rw max-misordering? uint32 645 grouping data-flow-spec: 646 +--rw (data-flow-type)? 647 +--:(tsn-app-flow) 648 | +--rw source-mac-address? yang:mac-address 649 | +--rw destination-mac-address? yang:mac-address 650 | +--rw ethertype? eth:ethertype 651 | +--rw vlan-id? uint16 652 | +--rw pcp? uint8 653 +--:(ip-app-flow) 654 | +--rw src-ip-prefix? inet:ip-prefix 655 | +--rw dest-ip-prefix? inet:ip-prefix 656 | +--rw next-header? uint8 657 | +--rw traffic-class? uint8 658 | +--rw flow-label? inet:ipv6-flow-label 659 | +--rw source-port 660 | | +--rw (port-range-or-operator)? 661 | | +--:(range) 662 | | | +--rw lower-port inet:port-number 663 | | | +--rw upper-port inet:port-number 664 | | +--:(operator) 665 | | +--rw operator? operator 666 | | +--rw port inet:port-number 667 | +--rw destination-port 668 | | +--rw (port-range-or-operator)? 669 | | +--:(range) 670 | | | +--rw lower-port inet:port-number 671 | | | +--rw upper-port inet:port-number 672 | | +--:(operator) 673 | | +--rw operator? operator 674 | | +--rw port inet:port-number 675 | +--rw ipsec-spi? ipsec-spi 676 +--:(mpls-app-flow) 677 +--rw (label-space)? 678 +--:(non-platrom-label-space) 679 | +--rw mpls-label-stack 680 | +--rw entry* [id] 681 | +--rw id uint8 682 | +--rw label? rt-types:mpls-label 683 | +--rw ttl? uint8 684 | +--rw traffic-class? uint8 685 +--:(platform-label-space) 686 +--rw label? rt-types:mpls-label 687 grouping detnet-flow-spec: 688 +--rw (detnet-flow-type)? 689 +--:(ip-detnet-flow) 690 | +--rw src-ip-prefix? inet:ip-prefix 691 | +--rw dest-ip-prefix? inet:ip-prefix 692 | +--rw next-header? uint8 693 | +--rw traffic-class? uint8 694 | +--rw flow-label? inet:ipv6-flow-label 695 | +--rw source-port 696 | | +--rw (port-range-or-operator)? 697 | | +--:(range) 698 | | | +--rw lower-port inet:port-number 699 | | | +--rw upper-port inet:port-number 700 | | +--:(operator) 701 | | +--rw operator? operator 702 | | +--rw port inet:port-number 703 | +--rw destination-port 704 | | +--rw (port-range-or-operator)? 705 | | +--:(range) 706 | | | +--rw lower-port inet:port-number 707 | | | +--rw upper-port inet:port-number 708 | | +--:(operator) 709 | | +--rw operator? operator 710 | | +--rw port inet:port-number 711 | +--rw ipsec-spi? ipsec-spi 712 +--:(mpls-detnet-flow) 713 +--rw (label-space)? 714 +--:(non-platrom-label-space) 715 | +--rw mpls-label-stack 716 | +--rw entry* [id] 717 | +--rw id uint8 718 | +--rw label? rt-types:mpls-label 719 | +--rw ttl? uint8 720 | +--rw traffic-class? uint8 721 +--:(platform-label-space) 722 +--rw label? rt-types:mpls-label 723 grouping app-flows-ref: 724 +--rw app-flow* app-flow-ref 725 grouping incoming-detnet-flows: 726 +--rw incoming-detnet-flow* [incoming-index] 727 +--rw incoming-index uint8 728 +--rw (detnet-flow-type)? 729 +--:(ip-detnet-flow) 730 | +--rw src-ip-prefix? inet:ip-prefix 731 | +--rw dest-ip-prefix? inet:ip-prefix 732 | +--rw next-header? uint8 733 | +--rw traffic-class? uint8 734 | +--rw flow-label? inet:ipv6-flow-label 735 | +--rw source-port 736 | | +--rw (port-range-or-operator)? 737 | | +--:(range) 738 | | | +--rw lower-port inet:port-number 739 | | | +--rw upper-port inet:port-number 740 | | +--:(operator) 741 | | +--rw operator? operator 742 | | +--rw port inet:port-number 743 | +--rw destination-port 744 | | +--rw (port-range-or-operator)? 745 | | +--:(range) 746 | | | +--rw lower-port inet:port-number 747 | | | +--rw upper-port inet:port-number 748 | | +--:(operator) 749 | | +--rw operator? operator 750 | | +--rw port inet:port-number 751 | +--rw ipsec-spi? ipsec-spi 752 +--:(mpls-detnet-flow) 753 +--rw (label-space)? 754 +--:(non-platrom-label-space) 755 | +--rw mpls-label-stack 756 | +--rw entry* [id] 757 | +--rw id uint8 758 | +--rw label? rt-types:mpls-label 759 | +--rw ttl? uint8 760 | +--rw traffic-class? uint8 761 +--:(platform-label-space) 762 +--rw label? rt-types:mpls-label 763 grouping detnet-header: 764 +--rw (header-type)? 765 +--:(detnet-mpls-header) 766 | +--rw mpls-label-stack 767 | +--rw entry* [id] 768 | +--rw id uint8 769 | +--rw label? rt-types:mpls-label 770 | +--rw ttl? uint8 771 | +--rw traffic-class? uint8 772 +--:(detnet-ip-header) 773 +--rw src-ip-address? inet:ip-address 774 +--rw dest-ip-address? inet:ip-address 775 +--rw next-header? uint8 776 +--rw traffic-class? uint8 777 +--rw flow-label? inet:ipv6-flow-label 778 +--rw source-port? inet:port-number 779 +--rw destination-port? inet:port-number 780 grouping lower-layer-ref: 781 +--rw (lower-layer-type)? 782 +--:(service-sub-layer) 783 | +--rw service-sub-layer? service-sub-layer-ref 784 +--:(forwarding-sub-layer) 785 | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 786 +--:(sub-network) 787 | +--rw sub-network? sub-network-ref 788 +--:(interface) 789 +--rw outgoing-interface? if:interface-ref 790 grouping detnet-next-hop-content: 791 +--rw (next-hop-options) 792 +--:(simple-next-hop) 793 | +--rw (header-type)? 794 | | +--:(detnet-mpls-header) 795 | | | +--rw mpls-label-stack 796 | | | +--rw entry* [id] 797 | | | +--rw id uint8 798 | | | +--rw label? rt-types:mpls-label 799 | | | +--rw ttl? uint8 800 | | | +--rw traffic-class? uint8 801 | | +--:(detnet-ip-header) 802 | | +--rw src-ip-address? inet:ip-address 803 | | +--rw dest-ip-address? inet:ip-address 804 | | +--rw next-header? uint8 805 | | +--rw traffic-class? uint8 806 | | +--rw flow-label? inet:ipv6-flow-label 807 | | +--rw source-port? inet:port-number 808 | | +--rw destination-port? inet:port-number 809 | +--rw lower-layer* [index] 810 | +--rw index uint8 811 | +--rw (lower-layer-type)? 812 | +--:(service-sub-layer) 813 | | +--rw service-sub-layer? service-sub-layer-ref 814 | +--:(forwarding-sub-layer) 815 | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 816 | +--:(sub-network) 817 | | +--rw sub-network? sub-network-ref 818 | +--:(interface) 819 | +--rw outgoing-interface? if:interface-ref 820 +--:(next-hop-list) 821 +--rw next-hop-list 822 +--rw next-hop* [hop-index] 823 +--rw hop-index uint8 824 +--rw (header-type)? 825 | +--:(detnet-mpls-header) 826 | | +--rw mpls-label-stack 827 | | +--rw entry* [id] 828 | | +--rw id uint8 829 | | +--rw label? rt-types:mpls-label 830 | | +--rw ttl? uint8 831 | | +--rw traffic-class? uint8 832 | +--:(detnet-ip-header) 833 | +--rw src-ip-address? inet:ip-address 834 | +--rw dest-ip-address? inet:ip-address 835 | +--rw next-header? uint8 836 | +--rw traffic-class? uint8 837 | +--rw flow-label? inet:ipv6-flow-label 838 | +--rw source-port? inet:port-number 839 | +--rw destination-port? inet:port-number 840 +--rw lower-layer* [index] 841 +--rw index uint8 842 +--rw (lower-layer-type)? 843 +--:(service-sub-layer) 844 | +--rw service-sub-layer? service-sub-layer-ref 845 +--:(forwarding-sub-layer) 846 | +--rw forwarding-sub-layer? forwarding-sub-layer-ref 847 +--:(sub-network) 848 | +--rw sub-network? sub-network-ref 849 +--:(interface) 850 +--rw outgoing-interface? if:interface-ref 852 6. DetNet Configuration YANG Model 854 module ietf-detnet-config { 855 namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config"; 856 prefix "ietf-detnet"; 858 import ietf-yang-types { 859 prefix "yang"; 860 } 862 import ietf-inet-types{ 863 prefix "inet"; 864 } 865 import ietf-ethertypes { 866 prefix "eth"; 867 } 869 import ietf-routing-types { 870 prefix "rt-types"; 871 } 873 import ietf-routing { 874 prefix "rt"; 875 } 877 import ietf-packet-fields { 878 prefix "packet-fields"; 879 } 880 import ietf-interfaces { 881 prefix "if"; 882 } 884 organization "IETF DetNet Working Group"; 886 contact 887 "WG Web: 888 WG List: 889 WG Chair: Lou Berger 890 892 Janos Farkas 893 895 Editor: Xuesong Geng 896 898 Editor: Mach Chen 899 901 Editor: Zhenqiang Li 902 904 Editor: Reshad Rahman 905 907 Editor: Yeoncheol Ryoo 908 "; 910 description 911 "This YANG module describes the parameters needed 912 for DetNet flow configuration and flow status 913 reporting"; 915 revision 2020-03-04 { 916 description "initial revision"; 917 reference "RFC XXXX: draft-ietf-detnet-yang-02"; 918 } 920 typedef app-flow-ref { 921 type leafref { 922 path "/ietf-detnet:app-flows" 923 + "/ietf-detnet:app-flow" 924 + "/ietf-detnet:name"; 925 } 926 } 927 typedef service-sub-layer-ref { 928 type leafref { 929 path "/ietf-detnet:service-sub-layer" 930 + "/ietf-detnet:service-sub-layer-list" 931 + "/ietf-detnet:name"; 932 } 933 } 935 typedef forwarding-sub-layer-ref { 936 type leafref { 937 path "/ietf-detnet:forwarding-sub-layer" 938 + "/ietf-detnet:forwarding-sub-layer-list" 939 + "/ietf-detnet:name"; 940 } 941 } 943 typedef sub-network-ref { 944 type leafref { 945 path "/ietf-detnet:sub-network" 946 + "/ietf-detnet:sub-network-list" 947 + "/ietf-detnet:name"; 948 } 949 } 951 typedef ipsec-spi { 952 type uint32 { 953 range "1..max"; 954 } 955 description 956 "SPI"; 957 } 959 typedef service-operation-type { 960 type enumeration { 961 enum service-initiation { 962 description 963 "Operation for DetNet service sub-layer encapsulation"; 964 } 965 enum service-termination { 966 description 967 "Operation for DetNet service sub-layer decapsulation"; 968 } 969 enum service-relay { 970 description 971 "Operation for DetNet service sub-layer swap"; 972 } 973 enum non-detnet { 974 description 975 "No operation for DetNet service sub-layer"; 976 } 977 } 978 } 980 typedef mpls-operations-type { 981 type enumeration { 982 enum impose-and-forward { 983 description 984 "Operation impose outgoing label(s) and forward to 985 next-hop"; 986 } 987 enum pop-and-forward { 988 description 989 "Operation pop incoming label and forward to next-hop"; 990 } 991 enum pop-impose-and-forward { 992 description 993 "Operation pop incoming label, impose one or more 994 outgoing label(s) and forward to next-hop"; 995 } 996 enum swap-and-forward { 997 description 998 "Operation swap incoming label, with outgoing label and 999 forward to next-hop"; 1000 } 1001 enum pop-and-lookup { 1002 description 1003 "Operation pop incoming label and perform a lookup"; 1004 } 1005 } 1006 description "MPLS operations types"; 1007 } 1008 typedef service-protection-type { 1009 type enumeration { 1010 enum none { 1011 description 1012 "no service protection provide"; 1013 } 1014 enum replication { 1015 description 1016 "A Packet Replication Function (PRF) replicates 1017 DetNet flow packets and forwards them to one or 1018 more next hops in the DetNet domain. The number 1019 of packet copies sent to each next hop is a 1020 DetNet flow specific parameter at the node doing 1021 the replication. PRF can be implemented by an 1022 edge node, a relay node, or an end system"; 1023 } 1024 enum elimination { 1025 description 1026 "A Packet Elimination Function (PEF) eliminates 1027 duplicate copies of packets to prevent excess 1028 packets flooding the network or duplicate 1029 packets being sent out of the DetNet domain. 1030 PEF can be implemented by an edge node, a relay 1031 node, or an end system."; 1032 } 1033 enum ordering { 1034 description 1035 "A Packet Ordering Function (POF) re-orders 1036 packets within a DetNet flow that are received 1037 out of order. This function can be implemented 1038 by an edge node, a relay node, or an end system."; 1039 } 1040 enum elimination-ordering { 1041 description 1042 "A combination of PEF and POF that can be 1043 implemented by an edge node, a relay node, or 1044 an end system."; 1045 } 1046 enum elimination-replication { 1047 description 1048 "A combination of PEF and PRF that can be 1049 implemented by an edge node, a relay node, or 1050 an end system"; 1051 } 1052 enum elimination-ordering-replicaiton { 1053 description 1054 "A combination of PEF, POF and PRF that can be 1055 implemented by an edge node, a relay node, or 1056 an end system"; 1057 } 1058 } 1059 } 1061 typedef sequence-number-generation-type { 1062 type enumeration { 1063 enum copy-from-app-flow { 1064 description 1065 "Copy the app-flow sequence number to the DetNet-flow"; 1066 } 1067 enum generate-by-detnet-flow { 1068 description 1069 "Generate the sequence number by DetNet flow"; 1070 } 1071 } 1072 } 1074 typedef sequence-number-field { 1075 type enumeration { 1076 enum zero-sn { 1077 description "there is no DetNet sequence number field."; 1078 } 1079 enum short-sn { 1080 description "there is 16bit DetNet sequence number field"; 1081 value 16; 1082 } 1083 enum long-sn { 1084 description "there is 28bit DetNet sequence number field"; 1085 value 28; 1086 } 1087 } 1088 } 1090 grouping ip-header { 1091 description 1092 "The IPv4/IPv6 packet header information"; 1093 leaf src-ip-address { 1094 type inet:ip-address; 1095 description 1096 "The source IP address of the header"; 1097 } 1098 leaf dest-ip-address { 1099 type inet:ip-address; 1100 description 1101 "The destination IP address of the header"; 1102 } 1103 leaf next-header { 1104 type uint8; 1105 description 1106 "The next header of the IPv6 header"; 1107 } 1108 leaf traffic-class { 1109 type uint8; 1110 description 1111 "The traffic class value of the header"; 1112 } 1113 leaf flow-label { 1114 type inet:ipv6-flow-label; 1115 description 1116 "The flow label value of the header"; 1117 } 1118 leaf source-port { 1119 type inet:port-number; 1120 description 1121 "The source port number"; 1122 } 1123 leaf destination-port { 1124 type inet:port-number; 1125 description 1126 "The destination port number"; 1127 } 1128 } 1130 grouping l2-header { 1131 description 1132 "The Ethernet or TSN packet header information"; 1133 leaf source-mac-address { 1134 type yang:mac-address; 1135 description 1136 "The source MAC address value of the ethernet header"; 1137 } 1138 leaf destination-mac-address { 1139 type yang:mac-address; 1140 description 1141 "The destination MAC address value of the ethernet header"; 1142 } 1143 leaf ethertype { 1144 type eth:ethertype; 1145 description 1146 "The ethernet packet type value of the ethernet header"; 1147 } 1148 leaf vlan-id { 1149 type uint16; 1150 description 1151 "The Vlan value of the ethernet header"; 1153 } 1154 leaf pcp { 1155 type uint8; 1156 description 1157 "The priority value of the ethernet header"; 1158 } 1159 } 1160 grouping destination-ip-port-identification { 1161 description 1162 "The TCP/UDP port(source/destination) identification information"; 1163 container destination-port { 1164 uses packet-fields:port-range-or-operator; 1165 } 1166 } 1168 grouping source-ip-port-identification { 1169 description 1170 "The TCP/UDP port(source/destination) identification information"; 1171 container source-port { 1172 uses packet-fields:port-range-or-operator; 1173 } 1174 } 1176 grouping ip-flow-identification { 1177 description 1178 "The IPv4/IPv6 packet header identification information"; 1179 leaf src-ip-prefix { 1180 type inet:ip-prefix; 1181 description 1182 "The source IP address of the header"; 1183 } 1184 leaf dest-ip-prefix { 1185 type inet:ip-prefix; 1186 description 1187 "The destination IP address of the header"; 1188 } 1189 leaf next-header { 1190 type uint8; 1191 description 1192 "The next header of the IPv6 header"; 1193 } 1194 leaf traffic-class { 1195 type uint8; 1196 description 1197 "The traffic class value of the header"; 1198 } 1199 leaf flow-label { 1200 type inet:ipv6-flow-label; 1201 description 1202 "The flow label value of the header"; 1203 } 1204 uses source-ip-port-identification; 1205 uses destination-ip-port-identification; 1206 leaf ipsec-spi { 1207 type ipsec-spi; 1208 description "Security parameter index of SA entry"; 1209 } 1210 } 1212 grouping mpls-flow-identification { 1213 description 1214 "The MPLS packet header identification information"; 1215 choice label-space { 1216 description ""; 1217 case non-platrom-label-space { 1218 uses rt-types:mpls-label-stack; 1219 } 1220 case platform-label-space { 1221 leaf label { 1222 type rt-types:mpls-label; 1223 } 1224 } 1225 } 1226 } 1228 grouping traffic-specification { 1229 container traffic-specification { 1230 description 1231 "traffic-specification specifies how the Source 1232 transmits packets for the flow. This is the 1233 promise/request of the Source to the network. 1234 The network uses this traffic specification 1235 to allocate resources and adjust queue 1236 parameters in network nodes."; 1237 reference 1238 "draft-ietf-detnet-flow-information-model"; 1239 leaf interval { 1240 type uint32; 1241 description 1242 "The period of time in which the traffic 1243 specification cannot be exceeded"; 1244 } 1245 leaf max-packets-per-interval{ 1246 type uint32; 1247 description 1248 "The maximum number of packets that the 1249 source will transmit in one Interval."; 1250 } 1251 leaf max-payload-size{ 1252 type uint32; 1253 description 1254 "The maximum payload size that the source 1255 will transmit."; 1256 } 1257 leaf average-packets-per-interval { 1258 type uint32; 1259 description 1260 "The average number of packets that the 1261 source will transmit in one Interval"; 1262 } 1263 leaf average-payload-size { 1264 type uint32; 1265 description 1266 "The average payload size that the 1267 source will transmit."; 1268 } 1269 } 1270 } 1272 grouping traffic-requirements { 1273 container traffic-requirements { 1274 description 1275 "FlowRequirements: defines the attributes of the App-flow 1276 regarding bandwidth, latency, latency variation, loss, and 1277 misordering tolerance."; 1278 leaf min-bandwidth { 1279 type uint64; 1280 description 1281 "MinBandwidth is the minimum bandwidth that has to be 1282 guaranteed for the DetNet service. MinBandwidth is 1283 specified in octets per second."; 1284 } 1285 leaf max-latency { 1286 type uint32; 1287 description 1288 "MaxLatency is the maximum latency from Ingress to Egress(es) 1289 for a single packet of the DetNet flow. MaxLatency is 1290 specified as an integer number of nanoseconds"; 1291 } 1292 leaf max-latency-variation { 1293 type uint32; 1294 description 1295 "MaxLatencyVariation is the difference between the minimum and 1296 the maximum end-to-end one-way latency. MaxLatencyVariation 1297 is specified as an integer number of nanoseconds."; 1298 } 1299 leaf max-loss { 1300 type uint8; 1301 description 1302 "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter 1303 for the DetNet service between the Ingress and Egress(es) of 1304 the DetNet domain."; 1305 } 1306 leaf max-consecutive-loss-tolerance { 1307 type uint32; 1308 description 1309 "Some applications have special loss requirement, such as 1310 MaxConsecutiveLossTolerance. The maximum consecutive loss 1311 tolerance parameter describes the maximum number of 1312 consecutive packets whose loss can be tolerated. The maximum 1313 consecutive loss tolerance can be measured for example based 1314 on sequence number"; 1315 } 1316 leaf max-misordering { 1317 type uint32; 1318 description 1319 "MaxMisordering describes the tolerable maximum number of 1320 packets that can be received out of order. The maximum 1321 allowed misordering can be measured for example based on 1322 sequence number. The value zero for the maximum allowed 1323 misordering indicates that in order delivery is required, 1324 misordering cannot be tolerated."; 1325 } 1326 } 1327 } 1329 grouping data-flow-spec { 1330 description "app-flow identification"; 1331 choice data-flow-type { 1332 case tsn-app-flow { 1333 uses l2-header; 1334 } 1335 case ip-app-flow { 1336 uses ip-flow-identification; 1337 } 1338 case mpls-app-flow { 1339 uses mpls-flow-identification; 1340 } 1341 } 1342 } 1343 grouping detnet-flow-spec { 1344 description "detnet-flow identificatioin"; 1345 choice detnet-flow-type { 1346 case ip-detnet-flow { 1347 uses ip-flow-identification; 1348 } 1349 case mpls-detnet-flow { 1350 uses mpls-flow-identification; 1351 } 1352 } 1353 } 1355 grouping app-flows-ref { 1356 description "incoming or outgoing app-flow reference group"; 1357 leaf-list app-flow { 1358 type app-flow-ref; 1359 description "List of ingress or egress app-flows"; 1360 } 1361 } 1363 grouping incoming-detnet-flows { 1364 description "incoming detnet member flows identification"; 1365 list incoming-detnet-flow { 1366 key "incoming-index"; 1367 description ""; 1368 leaf incoming-index { 1369 type uint8; 1370 description ""; 1371 } 1372 uses detnet-flow-spec; 1373 } 1374 } 1376 grouping detnet-header { 1377 description "DetNet header info for DetNet encapsulation or forwarding"; 1378 choice header-type { 1379 case detnet-mpls-header { 1380 description 1381 "MPLS label stack for DetNet MPLS encapsulation or forwarding"; 1382 uses rt-types:mpls-label-stack; 1383 } 1384 case detnet-ip-header { 1385 description 1386 "IPv4/IPv6 packet header for DetNet IP encapsulation"; 1387 uses ip-header; 1388 } 1389 } 1390 } 1392 grouping lower-layer-ref { 1393 choice lower-layer-type { 1394 case service-sub-layer { 1395 leaf service-sub-layer { 1396 type service-sub-layer-ref; 1397 } 1398 } 1399 case forwarding-sub-layer { 1400 leaf forwarding-sub-layer { 1401 type forwarding-sub-layer-ref; 1402 } 1403 } 1404 case sub-network { 1405 leaf sub-network { 1406 type sub-network-ref; 1407 } 1408 } 1409 case interface { 1410 leaf outgoing-interface { 1411 type if:interface-ref; 1412 } 1413 } 1414 } 1415 } 1416 grouping detnet-next-hop-content { 1417 description 1418 "Generic parameters of DetNet next hops."; 1419 choice next-hop-options { 1420 mandatory true; 1421 description 1422 "Options for next hops. 1423 It is expected that further cases will be added through 1424 augments from other modules, e.g., for recursive 1425 next hops."; 1426 case simple-next-hop { 1427 description 1428 "This case represents a simple next hop consisting of the 1429 next-hop address and/or outgoing interface. 1430 Modules for address families MUST augment this case with a 1431 leaf containing a next-hop address of that address 1432 family."; 1433 uses detnet-header; 1434 list lower-layer{ 1435 key "index"; 1436 description "lower-layer info"; 1437 leaf index { 1438 type uint8; 1439 } 1440 uses lower-layer-ref; 1442 } 1443 } 1444 case next-hop-list { 1445 container next-hop-list { 1446 description 1447 "Container for multiple next hops."; 1448 list next-hop { 1449 key "hop-index"; 1450 description 1451 "An entry in a next-hop list. 1453 Modules for address families MUST augment this list 1454 with a leaf containing a next-hop address of that 1455 address family."; 1456 leaf hop-index { 1457 type uint8; 1458 description ""; 1459 } 1460 uses detnet-header; 1461 list lower-layer{ 1462 key "index"; 1463 description "lower-layer info"; 1464 leaf index { 1465 type uint8; 1466 } 1467 uses lower-layer-ref; 1468 } 1469 } 1470 } 1471 } 1472 } 1473 } 1475 container app-flows { 1476 description 1477 "The DetNet app-flow configuration"; 1478 list app-flow { 1479 key "name"; 1480 description ""; 1481 leaf name { 1482 type "string"; 1483 description "The name to identify the DetNet app-flow"; 1484 } 1485 container end-points { 1486 leaf source-endpoint { 1487 type inet:ip-address; 1488 description 1489 "The DetNet application endpoint source address"; 1490 } 1491 leaf-list destination-endpoints { 1492 type inet:ip-address; 1493 description 1494 "The DetNet application endpoint destination address list"; 1495 } 1496 } 1497 leaf app-flow-bidir-congruent { 1498 type boolean; 1499 description 1500 "Defines the data path requirement of the App-flow whether it must share the same data path and physical path for both directions through the network, e.g., to provide congruent paths in the two directions."; 1501 } 1502 uses traffic-requirements; 1503 uses traffic-specification; 1504 container in-segment { 1505 description ""; 1506 list app-traffic { 1507 key "interface"; 1508 description ""; 1509 leaf interface { 1510 type if:interface-ref; 1511 description ""; 1512 } 1513 uses data-flow-spec; 1514 } 1515 } 1516 container out-segment { 1517 description 1518 "detnet-flows that must be mapped to received app-flow or route for outgoing app-flow"; 1519 uses detnet-next-hop-content; 1520 } 1521 } 1522 } 1523 container service-sub-layer { 1524 description "The DetNet service sub-layer configuration"; 1525 list service-sub-layer-list { 1526 key "name"; 1527 description ""; 1528 leaf name { 1529 type string; 1530 description "The name of the DetNet service sub-layer"; 1531 } 1532 leaf service-id { 1533 type uint16; 1534 config false; 1535 description 1536 "The DetNet service ID"; 1538 } 1539 leaf service-rank { 1540 type uint8; 1541 description 1542 "The DetNet rank for this service"; 1543 } 1544 uses traffic-requirements; 1545 container service-portection { 1546 leaf service-protection-type { 1547 type service-protection-type; 1548 description 1549 "The DetNet service protection type such as PRF, PEF, PEOF,PERF, and PEORF"; 1550 } 1551 leaf sequence-number-length { 1552 type sequence-number-field; 1553 description "sequence number filed can choice 0 bit, 16bit, 28 bit filed"; 1554 } 1555 leaf sequence-number-window-size { 1556 type uint32; 1557 description "sequence number window size"; 1558 } 1559 leaf sequence-number-generation { 1560 type sequence-number-generation-type; 1561 description "config sequence number source"; 1562 } 1563 } 1564 leaf service-operation-type { 1565 type service-operation-type; 1566 } 1567 container in-segment { 1568 uses app-flows-ref; 1569 uses incoming-detnet-flows; 1570 } 1571 container out-sergment { 1572 uses detnet-next-hop-content; 1573 uses app-flows-ref; 1574 } 1575 } 1576 } 1577 container forwarding-sub-layer { 1578 description "The DetNet forwarding sub-layer configuration"; 1579 list forwarding-sub-layer-list { 1580 key "name"; 1581 description ""; 1582 leaf name { 1583 type string; 1584 description "The name of the DetNet forwarding sub-layer"; 1585 } 1586 container resource-allocation { 1587 uses traffic-specification; 1588 } 1589 leaf forwarding-operation-type { 1590 type mpls-operations-type; 1591 } 1592 container in-segment { 1593 leaf service-sub-layer { 1594 type service-sub-layer-ref; 1595 description ""; 1596 } 1597 list forwarding-traffic { 1598 key "interface"; 1599 description ""; 1600 leaf interface { 1601 type if:interface-ref; 1602 description ""; 1603 } 1604 uses detnet-flow-spec; 1605 } 1606 } 1607 container out-segment { 1608 uses detnet-next-hop-content; 1609 leaf service-sub-layer { 1610 type service-sub-layer-ref; 1611 description ""; 1612 } 1613 } 1614 } 1615 } 1616 container sub-network { 1617 description ""; 1618 list sub-network-list { 1619 key "name"; 1620 description ""; 1621 leaf name { 1622 type string; 1623 description ""; 1624 } 1625 } 1626 } 1627 } 1628 7. Open Issues 1630 There are some open issues that are still under discussion: 1632 o The name of 'in-segment' and 'out-segment' are still under 1633 discussion. These terms are used in YANG model for MPLS, but they 1634 may cause confusion in DetNet. 1636 o Whether application flow should be in service sub-layer is still 1637 under discussion. 1639 o Whether we are supposed to define a new YANG Model for DetNet as 1640 the current draft does, or we should augment the current YANG 1641 Model. 1643 These issues will be resolved in the following versions of the draft. 1645 8. IANA Considerations 1647 This document makes no request of IANA. 1649 Note to RFC Editor: this section may be removed on publication as an 1650 RFC. 1652 9. Security Considerations 1654 1656 10. Acknowledgements 1658 11. References 1660 11.1. Normative References 1662 [I-D.finn-detnet-bounded-latency] 1663 Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga, 1664 B., and J. Farkas, "DetNet Bounded Latency", draft-finn- 1665 detnet-bounded-latency-04 (work in progress), June 2019. 1667 [I-D.ietf-detnet-flow-information-model] 1668 Farkas, J., Varga, B., Cummings, R., Jiang, Y., and D. 1669 Fedyk, "DetNet Flow Information Model", draft-ietf-detnet- 1670 flow-information-model-07 (work in progress), March 2020. 1672 [I-D.ietf-detnet-ip] 1673 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A., 1674 and S. Bryant, "DetNet Data Plane: IP", draft-ietf-detnet- 1675 ip-05 (work in progress), February 2020. 1677 [I-D.ietf-detnet-mpls] 1678 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A., 1679 Bryant, S., and J. Korhonen, "DetNet Data Plane: MPLS", 1680 draft-ietf-detnet-mpls-05 (work in progress), February 1681 2020. 1683 [I-D.ietf-detnet-topology-yang] 1684 Geng, X., Chen, M., Li, Z., and R. Rahman, "Deterministic 1685 Networking (DetNet) Topology YANG Model", draft-ietf- 1686 detnet-topology-yang-00 (work in progress), January 2019. 1688 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1689 Requirement Levels", BCP 14, RFC 2119, 1690 DOI 10.17487/RFC2119, March 1997, 1691 . 1693 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1694 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1695 . 1697 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1698 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1699 . 1701 [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, 1702 "Deterministic Networking Architecture", RFC 8655, 1703 DOI 10.17487/RFC8655, October 2019, 1704 . 1706 11.2. Informative References 1708 [I-D.geng-detnet-info-distribution] 1709 Geng, X., Chen, M., Li, Z., Qin, F., and L. Qiang, "IGP-TE 1710 Extensions for DetNet Information Distribution", draft- 1711 geng-detnet-info-distribution-04 (work in progress), July 1712 2019. 1714 [I-D.ietf-detnet-use-cases] 1715 Grossman, E., "Deterministic Networking Use Cases", draft- 1716 ietf-detnet-use-cases-20 (work in progress), December 1717 2018. 1719 [I-D.ietf-teas-yang-te] 1720 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 1721 "A YANG Data Model for Traffic Engineering Tunnels and 1722 Interfaces", draft-ietf-teas-yang-te-22 (work in 1723 progress), November 2019. 1725 [I-D.ietf-teas-yang-te-topo] 1726 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1727 O. Dios, "YANG Data Model for Traffic Engineering (TE) 1728 Topologies", draft-ietf-teas-yang-te-topo-22 (work in 1729 progress), June 2019. 1731 [I-D.thubert-tsvwg-detnet-transport] 1732 Thubert, P., "A Transport Layer for Deterministic 1733 Networks", draft-thubert-tsvwg-detnet-transport-01 (work 1734 in progress), October 2017. 1736 [I-D.varga-detnet-service-model] 1737 Varga, B. and J. Farkas, "DetNet Service Model", draft- 1738 varga-detnet-service-model-02 (work in progress), May 1739 2017. 1741 [IEEE802.1CB] 1742 IEEE, "IEEE, "Frame Replication and Elimination for 1743 Reliability (IEEE Draft P802.1CB)", 2017, 1744 .", 1745 2016. 1747 [IEEE802.1Q-2014] 1748 "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks", 1749 2014, .", 1750 2014. 1752 [IEEE802.1Qbu] 1753 IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged 1754 Networks - Amendment 26: Frame Preemption", 2016, 1755 .", 2016. 1757 [IEEE802.1Qbv] 1758 "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks - 1759 Amendment 25: Enhancements for Scheduled Traffic", 2015, 1760 .", 2016. 1762 [IEEE802.1Qcc] 1763 IEEE, "IEEE, "Stream Reservation Protocol (SRP) 1764 Enhancements and Performance Improvements (IEEE Draft 1765 P802.1Qcc)", 2017, 1766 .". 1768 [IEEE802.1Qch] 1769 IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft 1770 P802.1Qch)", 2017, 1771 .", 1772 2016. 1774 [IEEE802.1Qci] 1775 IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE 1776 Draft P802.1Qci)", 2016, 1777 .", 1778 2016. 1780 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1781 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1782 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1783 . 1785 [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. 1786 Yasukawa, Ed., "Extensions to Resource Reservation 1787 Protocol - Traffic Engineering (RSVP-TE) for Point-to- 1788 Multipoint TE Label Switched Paths (LSPs)", RFC 4875, 1789 DOI 10.17487/RFC4875, May 2007, 1790 . 1792 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1793 and R. Wilton, "Network Management Datastore Architecture 1794 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1795 . 1797 Authors' Addresses 1799 Xuesong Geng 1800 Huawei Technologies 1802 Email: gengxuesong@huawei.com 1804 Mach(Guoyi) Chen 1805 Huawei Technologies 1807 Email: mach.chen@huawei.com 1809 Yeoncheol Ryoo 1810 ETRI 1812 Email: dbduscjf@etri.re.kr 1814 Zhenqiang Li 1815 China Mobile 1817 Email: lizhenqiang@chinamobile.com 1818 Reshad Rahman 1819 Cisco Systems 1821 Email: rrahman@cisco.com 1823 Don Fedyk 1824 LabN Consulting, L.L.C. 1826 Email: dfedyk@labn.net