idnits 2.17.1 draft-zhuang-bess-evpn-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 : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 128 has weird spacing: '...rw name lea...' == Line 181 has weird spacing: '...eerAddr ine...' == Line 187 has weird spacing: '...entAddr ine...' == Line 203 has weird spacing: '...ce-name str...' == Line 207 has weird spacing: '...-number uin...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (December 22, 2014) is 3413 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- No issues found here. Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Zhuang 3 Internet-Draft Z. Li 4 Intended status: Informational Huawei Technologies 5 Expires: June 25, 2015 December 22, 2014 7 Yang Model for Ethernet VPN 8 draft-zhuang-bess-evpn-yang-00 10 Abstract 12 This document defines a YANG data model that can be used to configure 13 and manage Ethernet VPN. 15 Requirements Language 17 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 18 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 19 document are to be interpreted as described in RFC 2119 [RFC2119]. 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 http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on June 25, 2015. 38 Copyright Notice 40 Copyright (c) 2014 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 respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 3. Design of Data Model . . . . . . . . . . . . . . . . . . . . 2 58 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 59 3.2. EVPN Interface Configuration . . . . . . . . . . . . . . 3 60 3.3. EVPN Global Configuration . . . . . . . . . . . . . . . . 3 61 3.4. MP-BGP Configuration for EVPN . . . . . . . . . . . . . . 4 62 3.5. EVPN Instance Configuration . . . . . . . . . . . . . . . 5 63 4. EVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 6 64 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 65 6. Security Considerations . . . . . . . . . . . . . . . . . . . 15 66 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16 67 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 70 1. Introduction 72 YANG [RFC6020] is a data definition language that was introduced to 73 define the contents of a conceptual data store that allows networked 74 devices to be managed using NETCONF[RFC6241]. YANG is proving 75 relevant beyond its intial confines, as bindings to other 76 interfaces(e.g. ReST) and encoding other than XML (e.g. JSON) are 77 being defined. Furthermore, YANG data models can be used as the 78 basis of implementation for other interface, such as CLI and 79 programatic APIs. 81 This document defines a YANG data model that can be used to configure 82 and manage Ethernet VPN defined in [I-D.ietf-l2vpn-evpn]. 84 2. Terminology 86 EVN: Ethernet Virtual Network 88 EVPN: Ethernet VPN 90 ESI: Ethernet Segment Identifier 92 3. Design of Data Model 93 3.1. Overview 95 The EVPN Yang module is divided in following containers : 97 o interfaces : that contains writable configuration objects of 98 interface binded with EVPN. 100 o evpn : that contains global writable configuration objects of EVPN. 102 o evn-bgp: that contains writable configuration objects of MP-BGP 103 used for EVPN. 105 o evn-instances : that contains writable configuration objects of 106 EVPN instance. 108 The figure below describe the overall structure of the EVPN Yang 109 module : 111 module: evn 112 +--rw interfaces 113 | ... 114 +--rw evn 115 | ... 116 +--rw evn-bgp 117 | ... 118 +--rw evn-instances 119 ... 121 3.2. EVPN Interface Configuration 123 EVPN interface configuration includes the interface name and Ethernet 124 Segment Identifier(ESI). 126 +--rw interfaces 127 | +--rw interface* [name] 128 | +--rw name leafref 129 | +--rw esi? string 131 3.3. EVPN Global Configuration 133 EVPN global configuration includes the global parameters for ARP 134 cache. 136 +--rw evn 137 | +--rw arp-cache-disable? boolean 138 | +--rw arp-cache-timeout? uint32 140 3.4. MP-BGP Configuration for EVPN 142 The traditional configuration model of BGP is defined in 143 [I-D.zhdankin-netmod-bgp-cfg]. In order to satifsy the requirment of 144 reducing operation cost, this document proposes a new model of MP-BGP 145 configuration for EVPN. A independent evn-bgp container is defined 146 in EVPN Yang model to contains writable configuration objects of MP- 147 BGP used for EVPN. It can directly configure MP-BGP peers for EVPN 148 using the bgpPeers container. In addition, BGP router reflector can 149 be introduced to reduced the configuration work for EVPN since when 150 BGP router reflector is introduced each EVPN BGP client only needs to 151 set up BGP peer with the router reflector. For BGP router reflector 152 used for EVPN, it can enable the dynamic BGP peer setup mode to set 153 up BGP peer with EVPN BGP client through the auto-discovery 154 mechanism. Or it can adopt the traditional method to statically 155 designate the list of EVPN BGP clients. The set-route-reflect- 156 function container contains the writable configuration objects of BGP 157 route reflector used for EVPN. 159 Besides above configuration, EVPN BGP configuation also includes the 160 parameters of BFD and MAC limit. 162 +--rw evn-bgp 163 | +--rw bfd 164 | | +--rw isBfdEnable? boolean 165 | | +--rw txInterval? uint32 166 | | +--rw rxInterval? uint32 167 | | +--rw multiplier? uint8 168 | +--rw mac-limit-per-peer 169 | | +--rw mac-limit-value? uint32 170 | | +--rw mac-limit-alert-percent? uint8 171 | | +--rw (mac-limit-action)? 172 | | +--:(enable-alert-only) 173 | | | +--rw alert-only? boolean 174 | | +--:(enable-idle-forever) 175 | | | +--rw idle-forever? boolean 176 | | +--:(enable-idle-timeout) 177 | | +--rw idle-timeout? uint16 178 | +--rw source-address? inet:ip-address 179 | +--rw bgpPeers 180 | | +--rw bgpPeer* [peerAddr] 181 | | +--rw peerAddr inet:ip-address 182 | +--rw set-route-reflect-function 183 | +--rw (set-type)? 184 | | +--:(static) 185 | | | +--rw bgp-clients 186 | | | +--rw bgp-client* [clientAddr] 187 | | | +--rw clientAddr inet:ip-address 188 | | +--:(dynamic) 189 | | +--rw server-enable? boolean 190 | +--rw redundancy-mode? enumeration 191 | +--rw df-delay-timer? uint16 192 | +--rw timer 193 | +--rw keepaliveTime? uint16 194 | +--rw holdTime? uint16 196 3.5. EVPN Instance Configuration 198 EVPN instance configuration includes EVPN instance name, EVPN ID, and 199 VLAN IDs in the VPN instance. 201 +--rw evn-instances 202 +--rw evn-instance* [evn-instance-name] 203 +--rw evn-instance-name string 204 +--rw evn-id? uint16 205 +--rw vlan-ids 206 +--rw vlan-id* [vlan-id-number] 207 +--rw vlan-id-number uint16 209 4. EVPN Yang Module 211 EVN YANG MODEL 212 file "evn@2014-08-17.yang" 213 module evn { 214 namespace "urn:huawei:params:xml:ns:yang:evn"; 215 // replace with IANA namespace when assigned 216 prefix "evn"; 218 import ietf-interfaces { 219 prefix if; 220 //rfc7223-YANG Interface Management 221 } 223 import ietf-inet-types { 224 prefix inet; 225 //RFC6991 226 } 228 description 229 "This YANG module defines the generic configuration data for 230 EVN service. 232 Terms and Acronyms 234 EVN: Ethernet Virtual Network 235 EVPN: Ethernet VPN 236 ESI: Ethernet Segment Identifier 238 "; 240 revision 2014-08-17 { 241 description 242 "Initial revision."; 243 } 245 /* 246 * ethernet segment ID config. 247 */ 248 container interfaces { 249 list interface { 250 key "name"; 251 leaf name { 252 type leafref { 253 path "/if:interfaces/if:interface/if:name"; 254 } 255 } 256 leaf esi { 257 description 258 "Specify the ethernet segment ID."; 260 config "true"; 261 type string { 262 length "24"; 263 pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3} 264 (([0-9a-fA-F]){4})$)"; 265 } 266 } 267 } 268 } 270 /* 271 * Enable Ethernet Virtual Network. 272 */ 273 container evnGlobal { 275 leaf evnEnable { 276 config "true"; 277 type "boolean"; 278 default "false"; 279 } 281 leaf arp-cache-disable { 282 config "true"; 283 type boolean; 284 default "false"; 285 } 287 leaf arp-cache-timeout { 288 config "true"; 289 type uint32 { 290 range "0..100000"; 291 } 292 default "240"; 293 } 295 } 296 /* 297 * Configuring BFD for EVN BGP. 298 */ 299 container evn-bgp { 301 container bfd { 302 leaf isBfdEnable { 303 description "Enable BFD"; 304 config "true"; 305 type boolean; 306 default "false"; 307 } 309 leaf txInterval { 310 description "Specify the minimum transmit interval"; 312 config "true"; 313 type uint32 { 314 range "0..4294967295"; 315 } 316 } 317 leaf rxInterval { 318 description "Specify the minimum receive interval"; 320 config "true"; 321 type uint32 { 322 range "0..4294967295"; 323 } 324 } 325 leaf multiplier { 326 description "Specify the detect multiplier"; 327 config "true"; 328 default "3"; 329 type uint8 { 330 range "3..50"; 331 } 332 } 334 } 336 container mac-limit-per-peer { 338 leaf mac-limit-value { 339 description 340 "Specify Mac route limit value."; 342 config "true"; 343 type uint32 { 344 range "1..4294967295"; 345 } 346 } 347 leaf mac-limit-alert-percent { 348 description 349 "Specify maximum percentage value. Start to generate 350 warning messages if it reaches maximum percentage 351 value"; 353 config "true"; 354 type uint8 { 355 range "1..100"; 356 } 357 default "75"; 358 } 360 choice mac-limit-type { 362 case enable-alert-only { 363 leaf alert-only { 364 description 365 "Allows the router to generate log message without 366 terminating session when the maximum is exceeded."; 368 config "true"; 369 type boolean; 370 default "false"; 371 } 372 } 373 case enable-idle-forever { 374 leaf idle-forever { 375 description 376 "Do not auto-connect-retry until reset bgp when the 377 maximum is exceeded and then terminating session."; 379 config "true"; 380 type boolean; 381 default "false"; 382 } 383 } 384 case enable-idle-timeout { 385 leaf idle-timeout { 386 description 387 "Specify Value of idle-timeout timer(minutes). 388 Auto-connect-retry after timeout when the maximum is 389 exceeded and then terminating session."; 391 config "true"; 392 type uint16 { 393 range "1..1200"; 394 } 395 } 396 } 397 } 398 } 399 leaf source-address { 400 config "true"; 401 type inet:ip-address; 402 } 404 /* 405 * Configuring an Authentication Mode for EVN BGP. 406 */ 407 container authentication { 408 description 409 "To improve network security, you can configure MD5 or 410 Keychain authentication for EVN BGP peers when they 411 set up a TCP connection. 412 "; 414 leaf cipherPassword { 415 config "true"; 416 type "string"; 417 } 418 leaf keychainName { 419 config "true"; 420 type "string"; 421 } 422 } 424 container bgpPeers { 425 list bgpPeer { 426 key "peerAddr"; 427 max-elements "unbounded"; 428 min-elements "0"; 429 description 430 "BGP Peer configure class."; 432 leaf peerAddr { 433 description 434 "The nerighbor address."; 435 config "true"; 436 type inet:ip-address; 437 mandatory true; 438 } 440 } 441 } 443 container set-route-reflect-function { 444 description 445 "Configure an EVN BGP RR to reduce the number of EVN BGP 446 peer connections, saving network resources."; 448 choice set-type { 449 description 450 "An EVN BGP RR can be manually specified or dynamically 451 configured. 453 Static RR: 454 After a static RR is configured, you need to manually 455 establish peer relationships between the RR and other 456 PE devices and specify the PE devices as the RR clients. 458 Dynamic RR: 459 Only a non-PE device can be configured as a dynamic RR. 460 After a device is configured as a dynamic RR, it can 461 automatically set up peer relationships with devices 462 specified by the peer ip-address command (ip-address is 463 the source address of the dynamic RR). 464 "; 466 case static { 467 container bgp-clients { 468 list bgp-client { 469 key "clientAddr"; 470 max-elements "unbounded"; 471 min-elements "0"; 472 description 473 "Configure some peers as route reflector clients."; 475 leaf clientAddr { 476 description 477 "The client address. A static RR is configured. Only 478 the specified peers can become the RR clients."; 480 config "true"; 481 type inet:ip-address; 482 } 483 } 484 } 485 } 487 case dynamic { 488 leaf server-enable { 489 description 490 "Enable Server function for dynamic peer. A dynamic RR is 491 configured. After a dynamic RR is configured, all PE 492 devices that have established peer relationships with the 493 RR can become the RR clients."; 495 type boolean; 496 default "false"; 497 } 498 } 500 } 502 leaf redundancy-mode { 503 description 504 "Specify redundancy-mode."; 506 config "true"; 507 type enumeration { 508 enum "single-active"; 509 enum "all-active"; 510 } 511 default "single-active"; 512 } 514 leaf df-delay-timer{ 515 description 516 "Specify designated forwarder election delay-timer 517 value(seconds)."; 519 config "true"; 520 type uint32 { 521 range "1..1200"; 522 } 523 default "60"; 524 } 526 container timer { 527 leaf keepaliveTime { 528 description "Specifies the Keepalive interval"; 529 config "true"; 530 default "60"; 531 type uint16 { 532 range "0..21845"; 533 } 534 } 535 leaf holdTime { 536 description "Specifies the Holdtime interval"; 537 config "true"; 538 default "180"; 539 type uint16 { 540 range "0..65535"; 542 } 543 } 544 } 546 } 548 } 550 container evnInstances { 551 description 552 "EVN instance configuration parameters."; 554 list evnInstance { 555 max-elements "unbounded"; 556 min-elements "0"; 557 key "evnName"; 559 leaf evnName { 560 description 561 "EVN Instance Name"; 563 config "true"; 564 type string { 565 length "1..31"; 566 } 567 } 569 leaf evnId { 570 description 571 "Specify the EVN instance id. Each EVN instance has a unique 572 ID."; 574 config "true"; 575 type uint32 { 576 range "1..65535"; 577 } 578 } 580 container vlanList { 581 description 582 "Specify a vlan list."; 584 list vlan-id { 585 key "vlan-id-number"; 586 leaf vlan-id-number { 587 type uint16 { 588 range "1..4094"; 589 } 590 } 591 } 592 } 594 container exportAclNameOrId { 595 description 596 "Filter outgoing routing updates. To accurately control EVN 597 routes, configure an export routing policy. The export 598 routing policy filters routes before they are advertised to 599 other PE devices."; 601 choice aclNumOrName { 602 case Specify-aclNum { 603 leaf aclNum { 604 config "true"; 605 type uint16 { 606 range "2000..2999"; 607 } 608 } 609 } 610 case Specify-aclName { 611 leaf aclName { 612 config "true"; 613 type string; 614 } 615 } 616 } 617 } 619 container importAclNameOrId { 620 description 621 "Set route filtering policy. To accurately control EVN routes, 622 configure an import routing policy. The import routing policy 623 filters routes received from other PE devices."; 625 choice aclNumOrName { 626 case Specify-aclNum { 627 leaf aclNum { 628 config "true"; 629 type uint16 { 630 range "2000..2999"; 631 } 632 } 633 } 634 case Specify-aclName { 635 leaf aclName { 636 config "true"; 637 type string; 638 } 639 } 640 } 641 } 643 container evnInstanceInfo { 644 description 645 "Display the information of the evn instance. 646 It is intended that this container may be augmented by 647 vendors to reflect the vendor-specific operational state 648 parameters."; 650 leaf exportRT { 651 config "false"; 652 type "string"; 653 } 654 leaf importRT { 655 config "false"; 656 type "string"; 657 } 658 leaf evnRd { 659 config "false"; 660 type "string"; 661 } 662 } 664 } 666 } 668 } 669 671 5. IANA Considerations 673 This document makes no request of IANA. 675 6. Security Considerations 677 This document does not introduce any new security risk. 679 7. Acknowledgements 681 The authors would like to thank Guangying Zheng, Gang Yan for their 682 contributions to this work. 684 8. References 686 [I-D.ietf-l2vpn-evpn] 687 Sajassi, A., Aggarwal, R., Bitar, N., Isaac, A., and J. 688 Uttaro, "BGP MPLS Based Ethernet VPN", draft-ietf-l2vpn- 689 evpn-11 (work in progress), October 2014. 691 [I-D.zhdankin-netmod-bgp-cfg] 692 Alex, A., Patel, K., and A. Clemm, "Yang Data Model for 693 BGP Protocol", draft-zhdankin-netmod-bgp-cfg-01 (work in 694 progress), October 2014. 696 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 697 Requirement Levels", BCP 14, RFC 2119, March 1997. 699 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 700 Network Configuration Protocol (NETCONF)", RFC 6020, 701 October 2010. 703 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 704 Bierman, "Network Configuration Protocol (NETCONF)", RFC 705 6241, June 2011. 707 Authors' Addresses 709 Shunwan Zhuang 710 Huawei Technologies 711 Huawei Bld., No.156 Beiqing Rd. 712 Beijing 100095 713 China 715 Email: zhuangshunwan@huawei.com 717 Zhenbin Li 718 Huawei Technologies 719 Huawei Bld., No.156 Beiqing Rd. 720 Beijing 100095 721 China 723 Email: lizhenbin@huawei.com