idnits 2.17.1 draft-jiang-ccamp-flexe-yang-01.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 == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 8, 2019) is 1754 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) -- Possible downref: Non-RFC (?) normative reference: ref. 'FLEXE' Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Internet Working Group Y. Jiang 2 Internet Draft X. He 3 Intended status: Standards Track Huawei 4 W. Cheng 5 China Mobile 6 J. Wang 7 Y. Han 8 Fiberhome 9 Expires: January 2020 July 8, 2019 11 YANG Data Model for FlexE Interface Management 12 draft-jiang-ccamp-flexe-yang-01 14 Abstract 16 This document defines a YANG data model for the configuration of 17 FlexE 2.0 interface, and its FlexE clients. The YANG module in this 18 document conforms to the Network Management Datastore Architecture 19 (NMDA). 21 Status of this Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at https://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six 32 months and may be updated, replaced, or obsoleted by other documents 33 at any time. It is inappropriate to use Internet-Drafts as 34 reference material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on January 8, 2020. 38 Copyright Notice 40 Copyright (c) 2019 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with 48 respect to this document. Code Components extracted from this 49 document must include Simplified BSD License text as described in 50 Section 4.e of the Trust Legal Provisions and are provided without 51 warranty as described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction ........................................... 2 56 1.1. Conventions used in this document ................... 3 57 1.2. Terminology ......................................... 3 58 2. YANG model hierarchy for FlexE interface ............... 3 59 3. YANG Module for FlexE interface ........................ 6 60 4. YANG Module for FlexE client interface ............... 1 2 61 5. Security Considerations .............................. 1 3 62 6. IANA Considerations .................................. 1 5 63 7. References ........................................... 1 5 64 7.1. Normative References .............................. 1 5 65 7.2. Informative References ............................ 1 6 66 8. Acknowledgments ...................................... 1 6 68 1. Introduction 70 The Flex Ethernet (FlexE) 2.0 Implementation Agreement [FLEXE] 71 defined by the OIF provides the support of a variety of Ethernet MAC 72 rates that may or may not correspond to any existing Ethernet PHY 73 rate. This includes MAC rates that are both greater than (through 74 bonding) and less than (through sub-rate and channelization) the 75 Ethernet PHY rates used to carry FlexE. Besides 100GBASE-R PHYs, 76 FlexE 2.0 further supports the bonding of 200GBASE-R PHYs or 77 400GBASE-R PHYs respectively. 79 In the FlexE, multiple Ethernet PHYs (each PHY can further consist 80 of one or more FlexE Instances) are bonded into a FlexE Group, and 81 the total capacity of the FlexE Group is represented as a collection 82 of slots (e.g., each slot has a granularity of 5Gbps or 25Gbps). 83 Based on their bandwidth needs, FlexE Clients are each mapped into 84 one or more slots in a FlexE group. The FlexE mechanism operates 85 using a calendar consisting of these slots. 87 This calendar is partitioned into sub-calendars for each FlexE 88 instance. For example, the calendar for a FlexE Group composed of n 89 100G PHYs is partitioned into 20n slots (each slot representing 90 5Gbps of bandwidth when the slot granularity is 5Gbps). 92 This document defines a YANG data model for the configuration of a 93 Flex Ethernet interface (i.e., FlexE Group). The data model is 94 augmented based on the generic interfaces data model as defined in 95 [RFC8343], the FlexE attributes are based on the FlexE 2.0 96 Implementation Agreement as specified in [FLEXE]. With the help of 97 this YANG module, the FlexE Groups can be managed just as network 98 interfaces on a network device (e.g., a router or bridge). 100 The YANG module in this document conforms to the Network Management 101 Datastore Architecture (NMDA) [RFC8342]. 103 1.1. Conventions used in this document 105 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 106 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", 107 "MAY", and "OPTIONAL" in this document are to be interpreted as 108 described in BCP 14 [RFC2119] [RFC8174] when, and only when, they 109 appear in all capitals, as shown here. 111 1.2. Terminology 113 Most terminologies used in this document are extracted from [FLEXE]. 115 FlexE: Flex Ethernet 117 FlexE Client: An Ethernet flow based on a MAC data rate that may or 118 may not correspond to any Ethernet PHY rate. 120 FlexE Group: A FlexE Group is composed of from 1 to n Ethernet PHYs. 122 FlexE Instance: A FlexE Instance is a unit of information consisting 123 of 100G of capacity able to carry FlexE Client data, together with 124 its associated overhead. 126 Ethernet PHY: an entity representing Ethernet Physical Coding 127 Sublayer (PCS), Physical Media Attachment (PMA), and Physical Media 128 Dependent (PMD) layers. Each PHY is consisted of one or more FlexE 129 Instance (e.g., a 400GBASE-R PHY has four FlexE Instances) 131 FlexE Calendar: The total capacity of a FlexE Group is represented 132 as a collection of slots. The calendar for a FlexE Group composed 133 of n PHYs is represented in each PHY as an array of slots (e.g., 134 each representing 5Gbps of bandwidth). 136 2. YANG model hierarchy for FlexE interface 138 This section describes the hierarchy of the YANG module for FlexE 139 interface management. 141 Configuration and status of FlexE interface information include: 143 - flexe-group specifies a management interface for configuration of 144 a FlexE group. 146 - flexe-phy-list specifies a list of PHYs in a Flex Group. 148 - flexe-client-list specifies a list of FlexE client, each client is 149 mapped to some slots in this FlexE group. flexe-client-status 150 indicates whether there is any fault in any mapped slot for this 151 client. 153 The readers are assumed to be familiar with FlexE 2.0, as all FlexE 154 terminologies are described in details in [FLEXE]. 156 In order to simplify the YANG module of the FlexE interface and to 157 follow the YANG style of terminology, neither sub-calendar nor 158 calendar in FlexE are modelled explicitly. However, a calendar-slot- 159 list per PHY is modeled which represents all the slots in a PHY 160 (i.e., all sub-calendars of the FlexE instances in this PHY), and 161 calendar is actually a conglomerate of all the slots in calendar 162 slot lists for all FlexE PHYs of this FlexE Group. 164 A simplified YANG tree diagram [RFC8340] representing the data model 165 is typically used by YANG modules. This document uses the same tree 166 diagram syntax as described in [RFC8340]. 168 module: ietf-flexe 169 augment /if:interfaces/if:interface: 170 +--rw flexe-group 171 +--rw group-number? uint32 172 +--rw slot-granularity? slot-granularity-enumeration 173 +--rw flexe-phy-type? flexe-phy-enumeration 174 +--rw flexe-phy-list* [phy-number] 175 | +--rw phy-number uint8 176 | +--rw flexe-phy-if? if:interface-ref 177 | +--ro phy-status? uint8 178 | +--rw calendar-slot-list* [slot-id] 179 | +--rw slot-id uint8 180 | +--rw flexe-slot-status? slot-status-enumeration 181 +--rw flexe-client-list* [client-id] 182 | +--rw client-id uint16 183 | +--rw flexe-client-if? if:interface-ref 184 | +--rw mapped-slot-list* [mapped-slot-id] 185 | | +--rw mapped-slot-id uint8 186 | | +--rw mapped-phy-number? uint8 187 | +--ro flexe-client-status? uint8 188 +--ro flexe-group-status? uint8 190 A tree diagram of the module for FlexE client interface is depicted 191 as the following: 192 module: ietf-interfaces-flexe-client 193 augment /if:interfaces/if:interface: 194 +--rw flexe-client 195 +--ro mac-address 196 +--rw group-number? uint32 198 3. YANG Module for FlexE interface 200 This module imports iana-if-type [RFC7224] and ietf-interfaces 201 [RFC8343]. 203 file "ietf-flexe@2019-07-05.yang" 204 module ietf-flexe { 205 yang-version 1.1; 206 namespace "urn:ietf:params:xml:ns:yang:ietf-flexe"; 207 prefix "flexe"; 209 import iana-if-type { 210 prefix ianaift; 211 } 212 import ietf-interfaces { 213 prefix if; 214 reference 215 "RFC8343: A YANG Data Model for Interface Management"; 216 } 218 organization "IETF CCAMP Working Group"; 219 contact 220 "WG Web: http://tools.ietf.org/wg/ccamp/ 221 WG List: 222 Author: Yuanlong Jiang 223 224 Author: Xiang He 225 226 Author: Weiqiang Cheng 227 "; 228 description 229 "This YANG module defines a data model for the configuration 230 of FlexE interface."; 232 revision "2019-07-05" { 233 description "Initial version"; 234 reference 235 "draft-jiang-ccamp-flexe-yang-01: YANG Data Model for FlexE 236 Interface Management "; 237 } 239 identity flexEthernet { 240 base ianaift:iana-interface-type; 241 description 242 "Flex Ethernet."; 243 } 244 typedef slot-granularity-enumeration { 245 type enumeration { 246 enum slot-5g { 247 value 1; 248 description 249 "5Gbps per slot."; 250 } 251 enum slot-25g { 252 value 2; 253 description 254 "25Gbps per slot."; 255 } 256 enum slot-others { 257 value 254; 258 description 259 "Other type of granularities per slot."; 260 } 261 } 262 description 263 "The bandwidth granularity of a slot. Options for this 264 enumeration are specified by the OIF standard, currently only 265 5G and 25G are defined."; 266 reference 267 "OIF Flex 2.0: Section 6.7"; 268 } 270 typedef slot-status-enumeration { 271 type enumeration { 272 enum unavailable { 273 value 1; 274 description 275 "slot is unavailable for FlexE client."; 276 } 277 enum unused { 278 value 2; 279 description 280 "slot is unused."; 281 } 282 enum used { 283 value 3; 284 description 285 "slot is used."; 286 } 287 } 288 description 289 "The status of a slot. Options for this enumeration are 290 specified by the OIF standard, 'used' is implicit."; 292 reference 293 "OIF Flex 2.0: Section 7.3.4 and Section 7.6"; 294 } 296 typedef flexe-phy-enumeration { 297 type enumeration { 298 enum 'PHY-100GBASE-R' { 299 value 1; 300 description 301 "100GBASE-R PHY, as defined in FlexE 1.0."; 302 } 303 enum 'PHY-200GBASE-R' { 304 value 2; 305 description 306 "200GBASE-R PHY, as defined in FlexE 2.0."; 307 } 308 enum 'PHY-400GBASE-R' { 309 value 3; 310 description 311 "400GBASE-R PHY, as defined in FlexE 2.0."; 312 } 313 } 315 description 316 "The current type of PHYs bonded in a FlexE Group. Values for 317 this enumeration are specified by the OIF standard."; 318 reference 319 "OIF Flex 2.0: Section 5.2.1.5"; 320 } 322 augment "/if:interfaces/if:interface" { 324 when "if:type = 'ianaift:flexEthernet'" { 325 description "Applies to Flex bonded Ethernet interfaces"; 326 } 328 description 329 "Augment interface model with OIF Flex Ethernet interface 330 specific configuration nodes. Each flexEthernet interface 331 represents a FlexE Group configured in a device."; 333 container flexe-group { 334 description 335 "The struct containing all FlexE related configuration 336 (see OIF FlexE 2.0 Section 6.1). 338 Note that max number of FlexE groups in a network is 63."; 340 leaf group-number { 341 type uint32 { 342 range "1..1048574"; 343 } 344 description 345 "FlexE Group Number as defined in Section 7.3.6 of FlexE 346 2.0."; 347 } 349 leaf slot-granularity { 350 type slot-granularity-enumeration; 351 default "slot-5g"; 352 description 353 "The granularity of a slot in a FlexE group."; 354 } 355 leaf flexe-phy-type { 356 type flexe-phy-enumeration; 357 default "PHY-100GBASE-R"; 358 description 359 "The type of PHYs bonded in a FlexE Group."; 360 } 362 list flexe-phy-list { 364 key "phy-number"; 365 description 366 "List of PHYs bonded in a FlexE group per FlexE 2.0."; 368 leaf phy-number { 369 type uint8 { 370 range "1 .. 254"; 371 } 372 description 373 "PHY number of a FlexE PHY. 374 If PHY type is 100GBASE-R, phy-number is [1,254]. 375 If PHY type is 200GBASE-R, phy-number is [1,126]. 376 If PHY type is 400GBASE-R, phy-number is [1, 62]."; 377 } 379 leaf flexe-phy-if { 380 type if:interface-ref; 381 description 382 "Reference to a Flexe PHY interface."; 384 } 385 leaf phy-status { 386 type uint8; 387 config false; 388 description 389 "Fault status for a FlexE PHY. Status includes: 390 OK, Local Fault, Remote Fault and etc."; 391 } 393 list calendar-slot-list { 394 key "slot-id"; 395 leaf slot-id { 396 type uint8; 397 description 398 "slot id of a slot in an instance."; 399 } 400 description 401 "List of slots in a FlexE PHY. Max elements of 402 slot-list for a FlexE PHY is dependent on the PHY 403 bandwidth (X)G and the slot granularity (Y)G, i.e., 404 X/Y. For example, for a 400GBASE-R PHY: 405 If slot-granularity=slot-5g, max-elements is 80. 406 If slot-granularity=slot-25g, max-elements is 16."; 408 leaf flexe-slot-status { 409 type slot-status-enumeration; 410 default unused; 411 description 412 "Slot status of a slot in an instance."; 413 } 414 } //calendar-slot-list 415 } //flexe-phy-list 417 list flexe-client-list { 419 key "client-id"; 420 description 421 "List of FlexE clients in a FlexE Group."; 422 leaf client-id { 423 type uint16; 424 description 425 "FlexE client ID as defined in FlexE IA."; 426 } 427 leaf flexe-client-if { 428 type if:interface-ref; 429 description 430 "The type of a flexe client interface must be 431 'flexeClient'."; 432 } 434 list mapped-slot-list { 435 key "mapped-slot-id"; 436 description 437 "List of mapped-slots for a FlexE client."; 438 leaf mapped-slot-id { 439 type uint8; 440 description 441 "Slot id of a slot in an instance for a client."; 442 } 443 leaf mapped-phy-number { 444 type uint8; 445 description 446 "PHY number of a slot for a client."; 447 } 449 } // mapped-slot-list 451 leaf flexe-client-status { 452 type uint8; 453 config false; 454 description 455 "Fault status for a client indicated in its mapped 456 slots. If any slot is in fault, the client status 457 is indicated in fault. Status includes: 458 OK, Local Fault, Remote Fault and etc."; 459 } 461 } //flexe-client-list 462 leaf flexe-group-status { 463 type uint8; 464 config false; 465 description 466 "Fault status for a FlexE Group. If any PHY is in fault, 467 the FlexE Group status is indicated in fault. Status 468 includes: 469 OK, Local Fault, Remote Fault and etc."; 470 } 471 } //flexe-group 472 } //augment 473 } 475 477 4. YANG Module for FlexE client interface 479 The following YANG data module augments the interface container 480 defined in RFC 8343 for FlexE client interfacs. 482 file "ietf-interfaces-flexe-client@2019-07-05.yang" 483 module ietf-interfaces-flexe-client { 484 yang-version 1.1; 486 namespace 487 "urn:ietf:params:xml:ns:yang:ietf-interfaces-flexe-client"; 489 prefix flexcl; 491 import ietf-interfaces { 492 prefix if; 493 } 495 import ietf-yang-types { 496 prefix yang; 497 } 499 import iana-if-type { 500 prefix ianaift; 501 } 503 organization "IETF CCAMP Working Group"; 504 contact 505 "WG Web: http://tools.ietf.org/wg/ccamp/ 506 WG List: 507 Author: Yuanlong Jiang 508 509 Author: Xiang He 510 511 Author: Weiqiang Cheng 512 "; 514 description 515 "This module contains YANG definitions for configuration of 516 'FlexE client' interfaces. FlexE Client is defined in 517 OIF Flexible Ethernet 2.0 Implementation Aggreament."; 519 revision 2019-07-05 { 520 description "Initial revision"; 521 reference 522 "Internet draft: draft-jiang-ccamp-flexe-yang-01"; 523 } 525 identity flexeClient { 526 base ianaift:iana-interface-type; 527 description 528 "FlexE Client."; 529 } 531 /* 532 * Configuration parameters for FlexE client interfaces. 533 */ 534 augment "/if:interfaces/if:interface" { 535 when "derived-from-or-self(if:type, 'ianaift:flexeClient')" { 536 description "Applies to FlexE client interfaces"; 537 } 538 description 539 "Augment the interface model with parameters for 540 FlexE client interfaces"; 542 container flexe-client { 543 description 544 "Contains parameters for FlexE client interfaces 545 which expose an Ethernet MAC layer."; 546 leaf mac-address { 547 type yang:mac-address; 548 config false; 549 description 550 "The MAC address of the FlexE client."; 551 } 552 leaf group-number { 553 type uint32 { 554 range "1..1048574"; 555 } 556 description 557 "FlexE Group Number of the FlexE group binding this 558 client."; 559 } 560 // statistics can further be defined for the MAC layer 561 } 562 } 563 } 564 566 5. Security Considerations 567 The YANG module specified in this document defines a schema for data 568 that is designed to be accessed via network management protocols 569 such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF 570 layer is the secure transport layer, and the mandatory-to-implement 571 secure transport is Secure Shell (SSH) [RFC6242]. The lowest 572 RESTCONF layer is HTTPS, and the mandatory-to-implement secure 573 transport is TLS [RFC8446]. 575 The NETCONF access control model [RFC8341] provides the means to 576 restrict access for particular NETCONF or RESTCONF users to a 577 preconfigured subset of all available NETCONF or RESTCONF protocol 578 operations and content. 580 There are a number of data nodes defined in this YANG module are 581 writable, and the involved subtrees that are sensitive include: 583 /flexe/flexe-group/flexe-phy-list specifies a list of FlexE PHYs. 585 /flexe/flexe-group/flexe-client-list specifies a list of FlexE 586 Client, and each client is mapped to some slots in a FlexE PHY. 588 Write operations (e.g., edit-config) to these data nodes without 589 proper protection can have a negative effect on network operations. 590 Specifically, an inappropriate configuration of them may cause an 591 interrupt of a client flow or even break down of a whole FlexE 592 interface. 594 6. IANA Considerations 596 It is proposed that IANA register the following URI in the "IETF XML 597 registry" [RFC3688]: 598 URI: urn:ietf:params:xml:ns:yang:ietf-flexe 599 Registrant Contact: The IESG 600 XML: N/A; the requested URI is an XML namespace 602 It is proposed that IANA register the following YANG module in the 603 "YANG Module Names" registry: 604 Name: ietf-flexe 605 Namespace: urn:ietf:params:xml:ns:yang:ietf-flexe 606 Prefix: flexe 607 Reference: this document 609 It is proposed that IANA register a new IANAifType TBD for 610 the interface type of Flex Ethernet in the "IANA Interface Type 611 YANG Module" [RFC7224]. 612 It is proposed that IANA register a new IANAifType TBD for 613 the interface type of Flex client in the "IANA Interface Type 614 YANG Module" [RFC7224]. 616 7. References 618 7.1. Normative References 620 [FLEXE] OIF, "Flex Ethernet 2.0 Implementation Agreement", FlexE 621 2.0, June 2018 623 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 624 Requirement Levels", BCP 14, RFC 2119, March 1997 626 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, 627 January 2004 629 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and Bierman, 630 A., "Network Configuration Protocol (NETCONF)", RFC 6241, 631 June 2011 633 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 634 Shell (SSH)", RFC 6242, June 2011 636 [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", RFC 7224, 637 May 2014 639 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 640 Protocol", RFC 8040, January 2017 642 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 643 2119 Key Words", BCP 14, RFC 8174, May 2017 645 [RFC8341] Bierman, A. and Bjorklund, M., "Network Configuration 646 Protocol (NETCONF) Access Control Model", RFC 8341, 647 March 2018 649 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 650 and R. Wilton, "Network Management Datastore 651 Architecture (NMDA)", RFC 8342, March 2018 653 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 654 Management", RFC 8343, March 2018 656 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 657 Version 1.3", RFC 8446, August 2018 659 7.2. Informative References 661 [RFC8340] Bjorklund, M., and Berger, L., "YANG Tree Diagrams", RFC 662 8340, March 2018 664 8. Acknowledgments 666 The authors would like to thank Yongjian Hu, Zitao Wang and 667 Zhongjian Zhang for discussions on YANG. 669 Authors' Addresses 671 Yuanlong Jiang 672 Huawei Technologies Co., Ltd. 673 Bantian, Longgang district 674 Shenzhen 518129, China 675 Email: jiangyuanlong@huawei.com 677 Xiang He 678 Huawei Technologies Co., Ltd. 679 Huawei Campus, No. 156 Beiqing Rd. 680 Beijing 100095 681 Email: hexiang9@huawei.com 683 Weiqiang Cheng 684 China Mobile 685 No.32 Xuanwumen West Street 686 Beijing 100053, China 687 Email: chengweiqiang@chinamobile.com 689 Junfang Wang 690 Fiberhome 691 Email: wjf@fiberhome.com 693 Yalei Han 694 Fiberhome 695 Email: ylhan@fiberhome.com