idnits 2.17.00 (12 Aug 2021) /tmp/idnits55201/draft-hu-spring-srv6-yang-00.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 2 instances of too long lines in the document, the longest one being 7 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 139 has weird spacing: '...terface str...' == Line 143 has weird spacing: '...athName str...' == Line 217 has weird spacing: '...terface str...' == Line 241 has weird spacing: '...athName str...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 25, 2017) is 1662 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'SRH' is mentioned on line 159, but not defined == Missing Reference: 'RFC7855' is mentioned on line 162, but not defined == Unused Reference: 'I-D.filsfils-spring-srv6-network-programming' is defined on line 570, but no explicit reference was found in the text == Unused Reference: 'RFC3973' is defined on line 586, but no explicit reference was found in the text == Unused Reference: 'RFC4601' is defined on line 591, but no explicit reference was found in the text == Unused Reference: 'RFC4607' is defined on line 597, but no explicit reference was found in the text == Unused Reference: 'RFC4608' is defined on line 601, but no explicit reference was found in the text == Unused Reference: 'RFC4610' is defined on line 606, but no explicit reference was found in the text == Unused Reference: 'RFC5015' is defined on line 611, but no explicit reference was found in the text == Unused Reference: 'RFC5059' is defined on line 616, but no explicit reference was found in the text == Outdated reference: A later version (-07) exists of draft-filsfils-spring-srv6-network-programming-01 == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 ** Downref: Normative reference to an Experimental RFC: RFC 3973 ** Obsolete normative reference: RFC 4601 (Obsoleted by RFC 7761) Summary: 3 errors (**), 0 flaws (~~), 18 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Z. Hu 3 Internet-Draft Z. Li 4 Intended status: Standards Track Huawei 5 Expires: April 28, 2018 S. Matsushima 6 K. Horiba 7 Softbank 8 October 25, 2017 10 YANG Data Model for SRv6 11 draft-hu-spring-srv6-yang-00 13 Abstract 15 This document defines a YANG data model that can be used to configure 16 and manage SRv6 18 Requirements Language 20 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 21 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 22 document are to be interpreted as described in RFC 2119 [RFC2119]. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on April 28, 2018. 41 Copyright Notice 43 Copyright (c) 2017 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 60 3. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 61 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 62 3.2. SRv6 Configuration . . . . . . . . . . . . . . . . . . . 4 63 3.3. SRv6 Explicit-path Configuration . . . . . . . . . . . . 6 64 4. SRv6 VPN YANG . . . . . . . . . . . . . . . . . . . . . . . . 7 65 5. Yang Module . . . . . . . . . . . . . . . . . . . . . . . . . 7 66 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 67 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 68 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 69 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 70 9.1. Normative References . . . . . . . . . . . . . . . . . . 13 71 9.2. Informative References . . . . . . . . . . . . . . . . . 15 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 74 1. Introduction 76 YANG[RFC6020] is a data definition language that was introduced to 77 define the contents of a conceptual data store that allows networked 78 devices to be managed using NETCONF[RFC6241]. YANG is proving 79 relevant beyond its initial confines, as bindings to other 80 interfaces(e.g. REST) and encoding other than XML (e.g. JSON) are 81 being defined. Furthermore, YANG data models can be used as the 82 basis of implementation for other interface, such as CLI and 83 Programmatic APIs. 85 2. Terminology 87 o SR: Segment Routing 89 o SID: Segment ID 91 o SRv6: Segment Routing IPv6 data plane 93 o SRH:Segment Routing Header 95 3. Design of Data Model 97 3.1. Overview 99 This module augments the "/rt:routing:" with a segment-routing-ipv6 100 container. This container defines the configuration and operation 101 state parameters related to segment-routing-ipv6. 103 The YANG module includes : 105 o segment-routing-ipv6-global-enable:Enable global SRv6 capability. 107 o segment-routing-ipv6-traffic-engineer-enable:Enable SRv6 traffic 108 engineering capability. 110 o srv6-node-capability:the ability to encapsulate or handle SRv6 111 headers. 113 o my-local-sid-table:this table contains all the local SRv6 segments 114 explicitly instantiated at the node. 116 module: ietf-segment-routing-ipv6 117 augment /rt:routing: 118 +--rw segment-routing-ipv6 119 +--rw srv6-enable? boolean 120 +--rw traffic-engineering-enable? boolean 121 +--rw srv6-node-capabilities 122 | +--rw encap-capability? boolean 123 | +--rw maximum-sl? uint8 124 | +--rw maximum-end-pop-srh? uint8 125 | +--rw maximum-insert-srh? uint8 126 | +--rw maximum-encap-srh? uint8 127 | +--rw maximum-end-d-srh? uint8 128 +--rw myLocalSidTable 129 | +--ro srhEndSidForwTables 130 | | +--ro srhEndSidForwTable* [endSidValue] 131 | | +--ro endSidValue inet:ipv6-address-no-zone 132 | | +--ro endSidFlavor? string 133 | +--ro srhEndXSidForwTables 134 | +--ro srhEndXSidForwTable* [endXSidValue] 135 | +--ro endXSidValue inet:ipv6-address-no-zone 136 | +--ro endXSidFlavor? string 137 | +--ro endXSidNhpInfos 138 | +--ro endXSidNhpInfo* [interface nextHop] 139 | +--ro interface string 140 | +--ro nextHop inet:ipv6-address-no-zone 141 +--rw srv6-sid-list 142 +--rw explicitPath* [explicitPathName] 143 +--rw explicitPathName string 144 +--rw explicitPathHops 145 +--rw explicitPathHop* [tunnelHopIndex] 146 +--rw tunnelHopIndex uint32 147 +--rw tunnelHopMode? erHopMode 148 +--rw tunnelHopSidIPv6 inet:ipv6-address-no-zone 149 +--rw tunnelHopSidIpv6Type? erSidIpv6Type 151 3.2. SRv6 Configuration 153 The global SRv6 configuration includes the following : 155 1.The underlay transport-type is defined SRH. The SPRING 156 architecture leverages the existing MPLS data plane without any 157 modification, and it also leverages the IPv6 data plane with a new 158 IPv6 Routing Header Type with a proposal for a new type of routing 159 header is made by [SRH]. 161 2.Enable the capability of SRv6 traffic engineering.All the SPRING 162 use cases [RFC7855] are also applicable to the SRv6 data plane 163 including traffic engineering. 165 3.SRV6-node-capability:the ability to encapsulate or handle SRv6 166 headers. 168 encap-capability:the SRv6 encap capability of the node. 170 maximum-sl:the maximum value of the "SL" field in the SRH supported 171 by the node. 173 maximum-end-pop-srh:the maximum number of SIDs in the top SRH in an 174 SRH stack to which the node can apply "PSP" or USP" flavors. 176 maximum-insert-srh:the maximum number of SIDs that can be inserted as 177 part of the "T.insert" behavior supported by the node. 179 maximum-encap-srh:the maximum number of SIDs that can be included as 180 part of the "T.Encap" behavior supported by the node. 182 maximum-end-d-srh:the maximum number of SIDs in an SRH when applying 183 "End.DX6" and "End.DT6" functions supported by the node. 185 4:my-local-sid-table:this table contains all the local SRv6 segments 186 explicitly instantiated at the node. 188 SRv6EndSidTables:Segment Routing IPv6 End Local-SID table. 190 SRV6EndXSidTables:Segment Routing IPv6 End.X Local-SID table. 192 the other SID will be added in a later revision. 194 module: ietf-segment-routing-ipv6 195 augment /rt:routing: 196 +--rw segment-routing-ipv6 197 +--rw srv6-enable? boolean 198 +--rw traffic-engineer-enable? boolean 199 +--rw srv6-node-capabilities 200 | +--rw encap-capability? boolean 201 | +--rw maximum-sl? uint8 202 | +--rw maximum-end-pop-srh? uint8 203 | +--rw maximum-insert-srh? uint8 204 | +--rw maximum-encap-srh? uint8 205 | +--rw maximum-end-d-srh? uint8 206 +--rw myLocalSidTable 207 | +--ro srhEndSidForwTables 208 | | +--ro srhEndSidForwTable* [endSidValue] 209 | | +--ro endSidValue inet:ipv6-address-no-zone 210 | | +--ro endSidFlavor? string 211 | +--ro srhEndXSidForwTables 212 | +--ro srhEndXSidForwTable* [endXSidValue] 213 | +--ro endXSidValue inet:ipv6-address-no-zone 214 | +--ro endXSidFlavor? string 215 | +--ro endXSidNhpInfos 216 | +--ro endXSidNhpInfo* [interface nextHop] 217 | +--ro interface string 218 | +--ro nextHop inet:ipv6-address-no-zone 220 3.3. SRv6 Explicit-path Configuration 222 The SRv6 explicit path configuration includes the following: 224 SRv6 tunnel explicit path, the SRV6 explicit path can be expressed by 225 a set of IPv6 address or SRV6 sid or Mixed with both. It contains 226 the following parameters: 228 o explicitPathName: The path name of explicit path. 230 o tunnelHopIndex: The path index of explicit path. 232 o HopMode: Route hop mode, specifies the IPv6 address or the SRv6 233 SID. 235 o tunnelHopSidIPv6 : IPv6 address or SRv6 SID. 237 o tunnelHopSidIpv6Type: SRv6 SID type of the explicit route hop. 239 +--rw srv6-sid-list 240 +--rw explicitPath* [explicitPathName] 241 +--rw explicitPathName string 242 +--rw explicitPathHops 243 +--rw explicitPathHop* [tunnelHopIndex] 244 +--rw tunnelHopIndex uint32 245 +--rw tunnelHopMode? erHopMode 246 +--rw tunnelHopSidIPv6 inet:ipv6-address-no-zone 247 +--rw tunnelHopSidIpv6Type? erSidIpv6Type 249 4. SRv6 VPN YANG 251 The SRv6 VPN YANG module will be added in a later revision. 253 5. Yang Module 255 file "ietf-segment-routing-ipv6@2017-10-23.yang" 256 module ietf-segment-routing-ipv6 { 257 namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-ipv6"; 258 prefix sr; 260 import ietf-inet-types { 261 prefix inet; 262 } 263 import ietf-routing { 264 prefix rt; 265 } 267 organization 268 "IETF SPRING Working Group"; 269 contact 270 "WG Web: 271 WG List: 273 Editor: Zhibo hu 274 276 Author: Zhenbin li 277 279 Author: S. Matsushima 280 282 "; 283 description 284 "The YANG module defines a generic configuration model for 285 Segment routing IPv6 data plane. 287 Copyright (c) 2017 IETF Trust and the persons identified as 288 authors of the code. All rights reserved. 290 Redistribution and use in source and binary forms, with or 291 without modification, is permitted pursuant to, and subject 292 to the license terms contained in, the Simplified BSD License 293 set forth in Section 4.c of the IETF Trust's Legal Provisions 294 Relating to IETF Documents 295 (http://trustee.ietf.org/license-info). 297 This version of this YANG module is part of RFC XXXX; 298 see the RFC itself for full legal notices."; 300 reference "RFC XXXX"; 302 revision 2017-10-23 { 303 description 304 " 305 * Implement NMDA model 306 *Conform to RFC6087BIS Appendix C 307 "; 308 reference "RFC XXXX: YANG Data Model for Segment Routing IPv6."; 309 } 311 typedef erHopMode { 312 type enumeration { 313 enum "IPV6_ADDRESS" { 314 description 315 "IPv6 address."; 316 } 317 enum "SRv6 Sid" { 318 description 319 "SRv6 SID."; 320 } 321 } 322 description 323 "TE Hop Address Type"; 324 } 325 typedef erSidIpv6Type { 326 type enumeration { 327 enum "none" { 328 description 329 "None."; 330 } 331 enum "adjacency" { 332 description 333 "Adjacency SID."; 334 } 335 enum "prefix" { 336 description 337 "Prefix SID."; 338 } 339 } 340 description 341 "TE Hop Address Type"; 342 } 344 augment "/rt:routing" { 345 description 346 "This augments routing-instance 347 configuration with segment-routing-ipv6."; 348 container segment-routing-ipv6 { 349 description 350 "segment routing IPV6 global config."; 351 leaf srv6-enable { 352 type boolean; 353 default "false"; 354 description 355 "Enables segment-routing 356 IPV6 dataplane."; 357 } 358 leaf traffic-engineering-enable { 359 type boolean; 360 default "false"; 361 description 362 "Enables segment-routing 363 IPV6 traffic-engineering."; 364 } 365 container SRV6-node-capabilities { 366 description 367 "Containing SRv6 node capabilities."; 368 leaf encap-capability { 369 type boolean; 370 default true; 371 description 372 "The SRv6 T.Encap capability of Node."; 373 } 374 leaf maximum-sl { 375 type uint8; 376 description 377 "Node maximum-sl is the maximum value of the 'SL' field 378 in the SRH supported by the node."; 379 } 380 leaf maximum-end-pop-srh { 381 type uint8; 382 description 383 "Node maximum-end-pop-srh is the maximum number of SIDs 384 in the top SRH in an SRH stack to which the node can 385 apply 'PSP' or 'USP' flavors."; 386 } 387 leaf maximum-insert-srh { 388 type uint8; 389 description 390 "Node maximum-insert-srh is the maximum number of SIDs 391 that can be inserted as part of the 'T.insert' 392 behavior supported by the node."; 393 } 394 leaf maximum-encap-srh { 395 type uint8; 396 description 397 "Node maximum-encap-srh is the maximum number of SIDs 398 that can be included as part of the 'T.Encap' 399 behavior supported by the node."; 400 } 401 leaf maximum-end-d-srh { 402 type uint8; 403 description 404 "Node maximum-end-d-srh is the maximum number of SIDs 405 in an SRH when applying 'End.DX6' and 'End.DT6' 406 functions supported by the node."; 407 } 408 } 410 container myLocalSidTable { 411 container srv6EndSidTables { 412 config false; 413 description 414 "Segment Routing IPv6 End Local-Sid table."; 415 list srhEndSidForwTable { 416 key "endSidValue"; 417 config false; 418 description 419 "Segment Routing IPv6 End Local-Sid table."; 420 leaf endSidValue { 421 type inet:ipv6-address-no-zone; 422 config false; 423 description 424 "End SID value."; 425 } 426 leaf endSidFlavor { 427 type string { 428 length "0..64"; 429 } 430 config false; 431 description 432 "End SID flavor value."; 433 } 434 } 435 } 436 container srv6EndXSidTables { 437 config false; 438 description 439 "Segment Routing IPv6 End.X Local-Sid table."; 440 list srhEndXSidForwTable { 441 key "endXSidValue"; 442 config false; 443 description 444 "Segment Routing IPv6 End.X Local-Sid table."; 445 leaf endXSidValue { 446 type inet:ipv6-address-no-zone; 447 config false; 448 description 449 "End.X SID value."; 450 } 451 leaf endXSidFlavor { 452 type string { 453 length "0..64"; 454 } 455 config false; 456 description 457 "End.X SID flavor value."; 458 } 459 container endXSidNhpInfos { 460 config false; 461 description 462 "Next hop information."; 463 list endXSidNhpInfo { 464 key "interface nextHop"; 465 config false; 466 description 467 "Next hop information."; 468 leaf interface { 469 type string { 470 length "0..64"; 471 } 472 config false; 473 description 474 "Exit interface."; 475 } 476 leaf nextHop { 477 type inet:ipv6-address-no-zone; 478 config false; 479 description 480 "Next hop IPV6 address."; 481 } 482 } 483 } 484 } 485 } 486 description 487 "My local SID table contains all the local SRv6 segments 488 explicitly instantiated at the node."; 489 } 490 container explicitPaths { 491 description 492 "Explicit path list."; 493 list explicitPath { 494 key "explicitPathName"; 495 description 496 "Explicit path. When a TE LSP is to be established, 497 specify route hop constraints for the LSP."; 498 leaf explicitPathName { 499 type string { 500 length "1..63"; 501 pattern '[^ \?]*'; 502 } 503 description 504 "Explicit path name."; 505 } 506 container explicitPathHops { 507 description 508 "Route hop list."; 509 list explicitPathHop { 510 key "tunnelHopIndex"; 511 max-elements "96"; 512 description 513 "Route hop."; 514 leaf tunnelHopIndex { 515 type uint32 { 516 range "1..65535"; 517 } 518 description 519 "Route hop index."; 520 } 521 leaf tunnelHopMode { 522 type erHopMode; 523 default "IPV6_ADDRESS"; 524 description 525 "Route hop mode, specifies the 526 IPv6 address or the SRv6 SID."; 528 } 529 leaf tunnelHopSidIPv6 { 530 when "../tunnelHopMode='SID_IPV6'"; 531 type inet:ipv6-address-no-zone; 532 mandatory true; 533 description 534 "SRv6 SID of the explicit route hop."; 535 } 536 leaf tunnelHopSidIpv6Type { 537 when "../tunnelHopMode='SID_IPV6'"; 538 type erSidIpv6Type; 539 default "none"; 540 description 541 "SRv6 SID type of the explicit route hop."; 542 } 543 } 544 } 545 } 546 } 547 } 548 } 549 } 550 552 6. IANA Considerations 554 This draft has no request to IANA. 556 7. Security Considerations 558 The data model defined in this document does not create any security 559 implications. This draft does not change any underlying security 560 issues inherent in [I-D.ietf-netmod-routing-cfg]. 562 8. Acknowledgements 564 TBD 566 9. References 568 9.1. Normative References 570 [I-D.filsfils-spring-srv6-network-programming] 571 Filsfils, C., Leddy, J., daniel.voyer@bell.ca, d., 572 daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., 573 Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., 574 Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., 575 Sharif, M., Ayyangar, A., Mynam, S., Henderickx, W., 576 Bashandy, A., Raza, K., Dukes, D., Clad, F., and P. 577 Camarillo, "SRv6 Network Programming", draft-filsfils- 578 spring-srv6-network-programming-01 (work in progress), 579 June 2017. 581 [I-D.ietf-netmod-routing-cfg] 582 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 583 Management", draft-ietf-netmod-routing-cfg-25 (work in 584 progress), November 2016. 586 [RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol 587 Independent Multicast - Dense Mode (PIM-DM): Protocol 588 Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973, 589 January 2005, . 591 [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, 592 "Protocol Independent Multicast - Sparse Mode (PIM-SM): 593 Protocol Specification (Revised)", RFC 4601, 594 DOI 10.17487/RFC4601, August 2006, 595 . 597 [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for 598 IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, 599 . 601 [RFC4608] Meyer, D., Rockell, R., and G. Shepherd, "Source-Specific 602 Protocol Independent Multicast in 232/8", BCP 120, 603 RFC 4608, DOI 10.17487/RFC4608, August 2006, 604 . 606 [RFC4610] Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol 607 Independent Multicast (PIM)", RFC 4610, 608 DOI 10.17487/RFC4610, August 2006, 609 . 611 [RFC5015] Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano, 612 "Bidirectional Protocol Independent Multicast (BIDIR- 613 PIM)", RFC 5015, DOI 10.17487/RFC5015, October 2007, 614 . 616 [RFC5059] Bhaskar, N., Gall, A., Lingard, J., and S. Venaas, 617 "Bootstrap Router (BSR) Mechanism for Protocol Independent 618 Multicast (PIM)", RFC 5059, DOI 10.17487/RFC5059, January 619 2008, . 621 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 622 the Network Configuration Protocol (NETCONF)", RFC 6020, 623 DOI 10.17487/RFC6020, October 2010, 624 . 626 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 627 and A. Bierman, Ed., "Network Configuration Protocol 628 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 629 . 631 9.2. Informative References 633 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 634 Requirement Levels", BCP 14, RFC 2119, 635 DOI 10.17487/RFC2119, March 1997, 636 . 638 Authors' Addresses 640 Zhibo 641 Huawei 642 Huawei Bld., No.156 Beiqing Rd. 643 Beijing 100095 644 China 646 Email: huzhibo@huawei.com 648 Zhenbin 649 Huawei 650 Huawei Bld., No.156 Beiqing Rd. 651 Beijing 100095 652 China 654 Email: lizhenbin@huawei.com 655 Satoru Matsushima 656 Softbank 657 1-9-1,Higashi-Shimbashi,Minato-Ku . 658 Tokyo 105-7322 659 Japan 661 Email: satoru.matsushima@g.softbank.co.jp 663 Katsuhiro Horiba 664 Softbank 665 1-9-1,Higashi-Shimbashi,Minato-Ku . 666 Tokyo 105-7322 667 Japan 669 Email: katsuhiro.horiba@g.softbank.co.jp