idnits 2.17.1 draft-ietf-nvo3-yang-cfg-04.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 8 instances of too long lines in the document, the longest one being 20 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 241 has weird spacing: '...peer-ip ine...' == Line 244 has weird spacing: '...cast-ip ine...' == Line 275 has weird spacing: '...nnel-id uin...' == Line 293 has weird spacing: '...rection dir...' == Line 316 has weird spacing: '... vni-id uin...' == (2 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (March 5, 2021) is 1146 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) ** Downref: Normative reference to an Informational RFC: RFC 7348 ** Downref: Normative reference to an Informational RFC: RFC 7364 ** Downref: Normative reference to an Informational RFC: RFC 7365 ** Downref: Normative reference to an Informational RFC: RFC 8014 == Outdated reference: A later version (-15) exists of draft-ietf-bess-evpn-inter-subnet-forwarding-11 == Outdated reference: A later version (-13) exists of draft-ietf-nvo3-vxlan-gpe-10 Summary: 5 errors (**), 0 flaws (~~), 10 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NVO3 B. Liu, Ed. 3 Internet-Draft Huawei Technologies 4 Intended status: Standards Track R. Chen 5 Expires: September 6, 2021 ZTE Corporation 6 F. Qin 7 China Mobile 8 R. Rahman 9 Cisco Systems 10 March 5, 2021 12 Base YANG Data Model for NVO3 Protocols 13 draft-ietf-nvo3-yang-cfg-04 15 Abstract 17 This document describes the base YANG data model that can be used by 18 operators to configure and manage Network Virtualization Overlay 19 protocols. The model is focused on the common configuration 20 requirement of various encapsulation options, such as VXLAN, NVGRE, 21 GENEVE and VXLAN-GPE. Using this model as a starting point, 22 incremental work can be done to satisfy the requirement of a specific 23 encapsulation. 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at https://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on September 6, 2021. 42 Copyright Notice 44 Copyright (c) 2021 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (https://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 60 2. Acronyms and Terminology . . . . . . . . . . . . . . . . . . 3 61 2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 3 62 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 63 3. The YANG Data Model for NVO3 . . . . . . . . . . . . . . . . 3 64 3.1. Mapping to the NVO3 architecture . . . . . . . . . . . . 3 65 3.2. The Configuration Parameters . . . . . . . . . . . . . . 4 66 3.2.1. NVE as an interface . . . . . . . . . . . . . . . . . 4 67 3.2.2. Virtual Network Instance . . . . . . . . . . . . . . 4 68 3.2.3. BUM Mode . . . . . . . . . . . . . . . . . . . . . . 5 69 3.3. Statistics . . . . . . . . . . . . . . . . . . . . . . . 5 70 3.4. Model Structure . . . . . . . . . . . . . . . . . . . . . 5 71 3.5. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 8 72 4. Security Considerations . . . . . . . . . . . . . . . . . . . 22 73 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 74 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 22 75 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 76 7.1. Normative References . . . . . . . . . . . . . . . . . . 23 77 7.2. Informative References . . . . . . . . . . . . . . . . . 25 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 80 1. Introduction 82 Network Virtualization Overlays (NVO3), such as VXLAN [RFC7348], 83 NVGRE [RFC7637], GENEVE [I-D.ietf-nvo3-geneve] and VXLAN-GPE 84 [I-D.ietf-nvo3-vxlan-gpe], enable network virtualization for data 85 center networks environment that assumes an IP-based underlay. 87 YANG [RFC6020] is a data definition language that was introduced to 88 define the contents of a conceptual data store that allows networked 89 devices to be managed using NETCONF [RFC6241]. This document 90 specifies a YANG data model that can be used to configure and manage 91 NVO3 protocols. The model covers the configuration of NVO3 instances 92 as well as their operation states, which are the basic common 93 requirements of the different tunnel encapsulations. Thus it is 94 called "the base model for NVO3" in this document. 96 As the Network Virtualization Overlay evolves, newly defined tunnel 97 encapsulation may require extra configuration. For example, GENEVE 98 may require configuration of TLVs at the NVE. The base module can be 99 augmented to accommodate these new solutions. 101 2. Acronyms and Terminology 103 2.1. Acronyms 105 NVO: Network Virtualization Overlays 107 VNI: Virtual Network Instance 109 BUM: Broadcast, Unknown Unicast, Multicast traffic 111 2.2. Terminology 113 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 114 NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 115 and "OPTIONAL" in this document are to be interpreted as described in 116 BCP14 [RFC2119] [RFC8174] when, and only when, they appear in all 117 capitals, as shown here. 119 Familiarity with [RFC7348], [RFC7348], [RFC7364], [RFC7365] and 120 [RFC8014] is assumed in this document. 122 3. The YANG Data Model for NVO3 124 The NVO3 base YANG model defined in this document is used to 125 configure the NVEs. It is divided into three containers. The first 126 container contains the configuration of the virtual network 127 instances, e.g. the VNI, the NVE that the instance is mounted, the 128 peer NVEs which can be determined dynamically via a control plane or 129 given statically, and the statistical states of the instance. The 130 other two containers are separately the statistical states of the 131 peer NVEs and the tunnels. 133 3.1. Mapping to the NVO3 architecture 135 The NVO3 base YANG model is defined according to the NVO3 136 architecture [RFC8014]. As shown in Figure 1, the reference model of 137 the NVE defined in [RFC8014], multiple instances can be mounted under 138 a NVE. The key of the instance is VNI. The source NVE of the 139 instance is the NVE configured by the base YANG. An instance can 140 have several peer NVEs. A NVO3 tunnel can be determined by the VNI, 141 the source NVE and the peer NVE. The tunnel can be built statically 142 by manually indicate the addresses of the peer NVEs, or dynamically 143 via a control plane, e.g. EVPN [RFC8365]. An enabler is defined in 144 the NVO3 base YANG to choose from these two modes. 146 +-----------------------------------------+ 147 | Data-Center Network (IP) | 148 +-----------------------------------------+ 149 | | 150 | Tunnel Overlay | 151 +------------+---------+ +---------+------------+ 152 | +----------+-------+ | | +-------+----------+ | 153 | | Overlay Module | | | | Overlay Module | | 154 | +---------+--------+ | | +---------+--------+ | 155 | | | | | | 156 NVE1 | | | | | | NVE2 157 | +--------+-------+ | | +--------+-------+ | 158 | | VNI1 VNI2 | | | | VNI1 VNI2 | | 159 | +-+----------+---+ | | +-+-----------+--+ | 160 | | VAP1 | VAP2 | | | VAP1 | VAP2| 161 +----+----------+------+ +----+-----------+-----+ 162 | | | | 163 | | | | 164 | | | /| 165 -------+----------+-------------------+---------/-+------- 166 | | Tenant | / | 167 TSI1 |TSI2 | TSI3 TSI1 TSI2/ TSI3 168 +---+ +---+ +---+ +---+ +---+ +---+ 169 |TS1| |TS2| |TS3| |TS4| |TS5| |TS6| 170 +---+ +---+ +---+ +---+ +---+ +---+ 172 Figure 1: NVE Reference model in RFC8014 174 3.2. The Configuration Parameters 176 3.2.1. NVE as an interface 178 A NVE in the NVO3 base YANG is defined via augmenting the IETF 179 interface YANG. If anycast gateway is enabled, the source VTEP 180 address is the address of the anycast gateway, and a bypass address 181 is used to uniquely identify the NVE. Otherwise, the source VTEP 182 address is the NVE interface's own IP address. 184 3.2.2. Virtual Network Instance 186 A Virtual Network Instance ('VNI') is a specific VN instance on an 187 NVE [RFC7365]. At each NVE, a Tenant System is connect to VNIs 188 through Virtual Access Points (VAP). VAPs can be physical ports or 189 virtual ports identified by the bridge domain Identifier ('bdId'). 190 The mapping between VNI and bdId is managed by the operator. 192 As defined in [I-D.ietf-bess-evpn-inter-subnet-forwarding], a tenant 193 can have multiple bridge domains, and each domain has its own VNI. 194 Thus these VNIs are used as L2VPN. Besides, a dedicated VNI can be 195 used for routing between the bridge domains, i.e. used as L3VPN. The 196 mapping relationship between VNI and L2VPN (respectively, L3VPN) is 197 given by augmenting the IETF YANG of L2VPN (respectively L3VPN). 199 3.2.3. BUM Mode 201 An NVE SHOULD support either ingress replication, or multicast proxy, 202 or point to multipoint tunnels on a per-VNI basis. It is possible 203 that both modes be used simultaneously in one NVO3 network by 204 different NVEs. 206 If ingress replication is used, the receiver addresses are listed in 207 'peers'. If multicast proxy [RFC8293] is used, the proxy's address 208 is given in "flood-proxy". If the choice is point to multipoint 209 tunnels, the multicast address is given as 'multiAddr'. 211 3.3. Statistics 213 Operators can determine whether a NVE should gather statistic values 214 on a per-VNI basis. An enabler is contained in the 'static' list as 215 'statistic-enable' leaf. If the gathering for a VNI is enabled, the 216 statistical information about the local NVEs, the remote NVEs, the 217 flows and the MAC addresses will be collected by the NVEs in this 218 VNI. 220 3.4. Model Structure 222 module: ietf-nvo3-base 223 +--rw nvo3 224 | +--rw vni-instances 225 | +--rw vni-instance* [vni-id] 226 | +--rw vni-id uint32 227 | +--rw vni-mode? vni-mode 228 | +--rw source-nve if:interface-ref 229 | +--rw protocol-bgp? boolean 230 | +--ro status? vni-status-type 231 | +--rw static-ipv4-peers 232 | | +--rw static-peer* [peer-ip] 233 | | +--rw peer-ip inet:ipv4-address-no-zone 234 | | +--rw out-vni-id? uint32 235 | +--rw static-ipv6-peers 236 | | +--rw static-ipv6-peer* [peer-ip] 237 | | +--rw peer-ip inet:ipv6-address-no-zone 238 | | +--rw out-vni-id? uint32 239 | +--rw flood-proxys 240 | | +--rw flood-proxy* [peer-ip] 241 | | +--rw peer-ip inet:ip-address-no-zone 242 | +--rw mcast-groups 243 | | +--rw mcast-group* [mcast-ip] 244 | | +--rw mcast-ip inet:ip-address-no-zone 245 | +--rw statistic 246 | +--rw enable? boolean 247 | +--ro info 248 | +--ro send-bits-rate? uint64 249 | +--ro send-pkts-rate? uint64 250 | +--ro send-unicast-pkts? uint64 251 | +--ro send-multicast-pkts? uint64 252 | +--ro send-broadcast-pkts? uint64 253 | +--ro send-total-bytes? uint64 254 | +--ro send-total-pkts? uint64 255 | +--ro receive-bits-rate? uint64 256 | +--ro receive-pkts-rate? uint64 257 | +--ro receive-unicast-pkts? uint64 258 | +--ro receive-multicast-pkts? uint64 259 | +--ro receive-broadcast-pkts? uint64 260 | +--ro receive-total-bytes? uint64 261 | +--ro receive-total-pkts? uint64 262 | +--ro drop-unicast-pkts? uint64 263 | +--ro drop-multicast-pkts? uint64 264 | +--ro drop-broadcast-pkts? uint64 265 +--ro vni-peer-infos 266 | +--ro peers 267 | +--ro peer* [vni-id source-ip peer-ip] 268 | +--ro vni-id uint32 269 | +--ro source-ip inet:ip-address-no-zone 270 | +--ro peer-ip inet:ip-address-no-zone 271 | +--ro type? tunnel-type 272 | +--ro out-vni-id? uint32 273 +--ro tunnel-infos 274 +--ro tunnel-info* [tunnel-id] 275 +--ro tunnel-id uint32 276 +--ro source-ip? inet:ip-address-no-zone 277 +--ro peer-ip? inet:ip-address-no-zone 278 +--ro status? tunnel-status 279 +--ro type? tunnel-type 280 +--ro up-time? string 281 +--ro vrf-name? -> /ni:network-instances/network-instance/name 283 augment /if:interfaces/if:interface: 284 +--rw nvo3-nve 285 +--rw nve-ip? inet:ipv4-address-no-zone 286 +--rw nve-ipv6? inet:ipv6-address-no-zone 287 +--rw bypass-nve-ip? inet:ipv4-address-no-zone 288 +--rw bypass-nve-ipv6? inet:ipv6-address-no-zone 289 +--rw statistics 290 +--rw statistic* [vni-id peer-ip direction] 291 +--rw vni-id uint32 292 +--rw peer-ip inet:ip-address-no-zone 293 +--rw direction direction-type 294 +--ro info 295 +--ro send-bits-rate? uint64 296 +--ro send-pkts-rate? uint64 297 +--ro send-unicast-pkts? uint64 298 +--ro send-multicast-pkts? uint64 299 +--ro send-broadcast-pkts? uint64 300 +--ro send-total-bytes? uint64 301 +--ro send-total-pkts? uint64 302 +--ro receive-bits-rate? uint64 303 +--ro receive-pkts-rate? uint64 304 +--ro receive-unicast-pkts? uint64 305 +--ro receive-multicast-pkts? uint64 306 +--ro receive-broadcast-pkts? uint64 307 +--ro receive-total-bytes? uint64 308 +--ro receive-total-pkts? uint64 309 +--ro drop-unicast-pkts? uint64 310 +--ro drop-multicast-pkts? uint64 311 +--ro drop-broadcast-pkts? uint64 313 augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn: 314 +--rw vnis 315 +--rw vni* [vni-id] 316 +--rw vni-id uint32 318 augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: 319 +--rw vnis 320 +--rw vni* [vni-id] 321 +--rw vni-id uint32 322 +--rw split-horizon-mode? vni-bind-type 323 +--rw split-group? string 325 rpcs: 326 +---x reset-vni-instance-statistic 327 | +---w input 328 | +---w vni-id uint32 329 +---x reset-vni-peer-statistic 330 +---w input 331 +---w vni-id uint32 332 +---w peer-ip inet:ip-address-no-zone 333 +---w direction direction-type 335 3.5. YANG Module 337 file "ietf-nvo3-base@2021-03-08.yang" 339 module ietf-nvo3-base { 340 yang-version 1.1; 341 namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3-base"; 342 prefix "nvo3"; 344 import ietf-network-instance { 345 prefix "ni"; 346 } 348 import ietf-interfaces { 349 prefix "if"; 350 } 352 import ietf-inet-types { 353 prefix "inet"; 354 } 356 import ietf-l2vpn { 357 prefix "l2vpn"; 358 } 360 import ietf-bgp-l3vpn { 361 prefix "l3vpn"; 362 } 364 import iana-if-type { 365 prefix ianaift; 366 } 368 organization "ietf"; 369 contact "ietf"; 370 description "Yang model for NVO3."; 371 revision 2021-03-08 { 372 description 373 "Fix the keyword 'must' order issue in the leaf source-nve"; 374 reference 375 ""; 376 } 377 revision 2020-08-26 { 378 description 379 "Clean non ietf-bgp-l3vpn & ietf-l2vpn related errors."; 380 reference 381 ""; 382 } 383 revision 2020-07-22 { 384 description 385 "Solve syntax and norms issues."; 386 reference 387 ""; 388 } 390 revision 2020-03-09 { 391 description 392 "Revise some design in the statitics."; 393 reference 394 ""; 395 } 397 revision 2019-11-04 { 398 description 399 "Cleaning non ietf-bgp-l3vpn related errors."; 400 reference 401 ""; 402 } 404 revision 2019-04-01 { 405 description 406 "Init revision."; 407 reference 408 ""; 409 } 411 typedef vni-status-type { 412 type enumeration { 413 enum "up" { 414 description 415 "The state is up."; 416 } 417 enum "down" { 418 description 419 "The state is down."; 420 } 421 } 422 description 423 "The state for VNI."; 424 } 426 typedef tunnel-status { 427 type enumeration { 428 enum "up" { 429 description 430 "The tunnel is up."; 432 } 433 enum "down" { 434 description 435 "The tunnel is down."; 436 } 437 } 438 description 439 "The status of NVO3 Tunnel."; 440 } 441 typedef tunnel-type { 442 type enumeration { 443 enum "dynamic" { 444 description 445 "The tunnel is dynamic."; 446 } 447 enum "static" { 448 description 449 "The tunnel is static."; 450 } 451 enum "invalid" { 452 description 453 "The tunnel is invalid."; 454 } 455 } 456 description 457 "The type of NVO3 Tunnel."; 458 } 460 typedef direction-type { 461 type enumeration { 462 enum "inbound" { 463 description 464 "Inbound."; 465 } 466 enum "outbound" { 467 description 468 "Outbound."; 469 } 470 enum "bidirection" { 471 description 472 "Bidirection."; 473 } 474 } 475 description 476 "Bound direction."; 477 } 478 typedef vni-bind-type { 479 type enumeration { 480 enum "hub-mode" { 481 description 482 "Hub mode. The vni instance can't communicate with other hub mode vni instances."; 483 } 484 enum "spoke-mode" { 485 description 486 "Spoke mode."; 487 } 488 enum "split-group-mode" { 489 description 490 "Split group mode."; 491 } 492 } 493 description 494 "The binding type of VNI."; 495 } 497 typedef vni-mode { 498 type enumeration { 499 enum "local" { 500 description 501 "Local mode."; 502 } 503 enum "global" { 504 description 505 "Global mode."; 506 } 507 } 508 description 509 "The mode of VNI."; 510 } 512 grouping nvo3-traffic-statistics { 513 description 514 "NVO3 tunnel traffic statistics collection."; 515 leaf send-bits-rate { 516 type uint64; 517 units bit/s; 518 description 519 "Number of send bits per second."; 520 } 521 leaf send-pkts-rate { 522 type uint64; 523 units pps; 524 description 525 "Number of send packets per second."; 526 } 527 leaf send-unicast-pkts { 528 type uint64; 529 units packet; 530 description 531 "Number of send unicast packets."; 532 } 533 leaf send-multicast-pkts { 534 type uint64; 535 units packet; 536 description 537 "Number of send multicast packets."; 538 } 539 leaf send-broadcast-pkts { 540 type uint64; 541 units packet; 542 description 543 "Number of send broadcast packets."; 544 } 545 leaf send-total-bytes { 546 type uint64; 547 units Byte; 548 description 549 "Total number of send bytes."; 550 } 551 leaf send-total-pkts { 552 type uint64; 553 units packet; 554 description 555 "Total number of send packets."; 556 } 557 leaf receive-bits-rate { 558 type uint64; 559 units bit/s; 560 description 561 "Number of receive bits per second."; 562 } 563 leaf receive-pkts-rate { 564 type uint64; 565 units pps; 566 description 567 "Number of receive packets per second."; 568 } 569 leaf receive-unicast-pkts { 570 type uint64; 571 units packet; 572 description 573 "Number of receive unicast packets."; 574 } 575 leaf receive-multicast-pkts { 576 type uint64; 577 units packet; 578 description 579 "Number of receive multicast packets."; 580 } 581 leaf receive-broadcast-pkts { 582 type uint64; 583 units packet; 584 description 585 "Number of receive broadcast packets."; 586 } 587 leaf receive-total-bytes { 588 type uint64; 589 units Byte; 590 description 591 "Total number of receive bytes."; 592 } 593 leaf receive-total-pkts { 594 type uint64; 595 units packet; 596 description 597 "Total number of receive packets."; 598 } 599 leaf drop-unicast-pkts { 600 type uint64; 601 units packet; 602 description 603 "Number of discarded unicast packets."; 604 } 605 leaf drop-multicast-pkts { 606 type uint64; 607 units packet; 608 description 609 "Number of discarded multicast packets."; 610 } 611 leaf drop-broadcast-pkts { 612 type uint64; 613 units packet; 614 description 615 "Number of discarded broadcast packets."; 616 } 617 } 619 container nvo3 { 620 description 621 "Management of NVO3."; 622 container vni-instances { 623 description 624 "List of virtual network instances."; 625 list vni-instance { 626 key "vni-id"; 627 description 628 "Configure the information of VNI."; 629 leaf vni-id { 630 type uint32 { 631 range "1..16777215"; 632 } 633 description 634 "The id of VNI."; 635 } 636 leaf vni-mode { 637 type vni-mode; 638 default "local"; 639 description 640 "The mode of VNI."; 641 } 642 leaf source-nve { 643 type if:interface-ref; 644 must "(/if:interfaces/if:interface[if:name=current()]/if:type='Nve')"; 645 mandatory true; 646 description 647 "The name of the local NVE."; 648 } 649 leaf protocol-bgp { 650 type boolean; 651 default "false"; 652 description 653 "Learn remote NVEs in the same VNI via BGP."; 654 } 655 leaf status { 656 type vni-status-type; 657 config false; 658 description 659 "The status of the VNI."; 660 } 661 container static-ipv4-peers { 662 description 663 "List of remote NVE address created by users in a VNI."; 664 list static-peer { 665 key "peer-ip"; 666 description 667 "Configure remote NVE address in a same VNI."; 668 leaf peer-ip { 669 type inet:ipv4-address-no-zone; 670 description 671 "The address of the remote NVE."; 673 } 674 leaf out-vni-id { 675 type uint32 { 676 range "1..16777215"; 677 } 678 description 679 "The ID of VNI for outbound. Do not support separate deletion."; 680 } 681 } 682 } 683 container static-ipv6-peers { 684 description 685 "List of remote NVE IPv6 address created by users in a VNI."; 686 list static-ipv6-peer { 687 key "peer-ip"; 688 description 689 "Configure remote NVE IPv6 address in a same VNI."; 690 leaf peer-ip { 691 type inet:ipv6-address-no-zone; 692 description 693 "The IPv6 address of the remote NVE."; 694 } 695 leaf out-vni-id { 696 type uint32 { 697 range "1..16777215"; 698 } 699 description 700 "The ID of VNI for outbound. Do not support separate deletion."; 701 } 702 } 703 } 704 container flood-proxys { 705 description 706 "List of flood proxys for the VNI."; 707 list flood-proxy { 708 key "peer-ip"; 709 description 710 "Configure flood proxys for the VNI."; 711 leaf peer-ip { 712 type inet:ip-address-no-zone; 713 description 714 "The address of flood proxy."; 715 } 716 } 717 } 718 container mcast-groups { 719 description 720 "List of multicast address for the VNI."; 722 list mcast-group { 723 key "mcast-ip"; 724 description 725 "Configure multicast address in a same VNI."; 726 leaf mcast-ip { 727 type inet:ip-address-no-zone; 728 description 729 "The mcast address of NVO3."; 730 } 731 } 732 } 733 container statistic { 734 description 735 "Configure VNI traffic statistics."; 736 leaf enable { 737 type boolean; 738 default "false"; 739 description 740 "Enable/disable VNI traffic statistics."; 741 } 742 container info { 743 when "../enable='true'"; 744 config false; 745 description 746 "The information of vni instance traffic statistics."; 747 uses nvo3-traffic-statistics; 748 } 749 } 750 } 751 } 752 } 753 container vni-peer-infos { 754 config false; 755 description 756 "List of remote NVE addresses."; 757 container peers { 758 config false; 759 description 760 "Operational data of remote NVE address in a VNI."; 761 list peer { 762 key "vni-id source-ip peer-ip"; 763 config false; 764 description 765 "Operational data of remote NVE addresses in a VNI."; 766 leaf vni-id { 767 type uint32 { 768 range "1..16777215"; 769 } 770 config false; 771 description 772 "The ID of VNI."; 773 } 774 leaf source-ip { 775 type inet:ip-address-no-zone; 776 config false; 777 description 778 "Local NVE address, as NVO3 tunnel source point."; 779 } 780 leaf peer-ip { 781 type inet:ip-address-no-zone; 782 config false; 783 description 784 "Remote NVE address, as NVO3 tunnel end point."; 785 } 786 leaf type { 787 type tunnel-type; 788 config false; 789 description 790 "Tunnel type."; 791 } 792 leaf out-vni-id { 793 type uint32 { 794 range "1..16777215"; 795 } 796 config false; 797 description 798 "The ID of VNI for outbound."; 799 } 800 } 801 } 802 } 804 container tunnel-infos { 805 config false; 806 description 807 "List of NVO3 tunnel information."; 808 list tunnel-info { 809 key "tunnel-id"; 810 config false; 811 description 812 "Operational data of NVO3 tunnel information."; 813 leaf tunnel-id { 814 type uint32 { 815 range "1..4294967295"; 816 } 817 config false; 818 description 819 "The ID of NVO3 tunnel."; 820 } 821 leaf source-ip { 822 type inet:ip-address-no-zone; 823 config false; 824 description 825 "Local NVE address, as NVO3 tunnel source point."; 826 } 827 leaf peer-ip { 828 type inet:ip-address-no-zone; 829 config false; 830 description 831 "Remote NVE address, as NVO3 tunnel end point."; 832 } 833 leaf status { 834 type tunnel-status; 835 config false; 836 description 837 "Tunnel status."; 838 } 839 leaf type { 840 type tunnel-type; 841 config false; 842 description 843 "Tunnel type."; 844 } 845 leaf up-time { 846 type string { 847 length "1..10"; 848 } 849 config false; 850 description 851 "The continuous time as NVO3 tunnel is reachable."; 852 } 853 leaf vrf-name { 854 type leafref { 855 path "/ni:network-instances/ni:network-instance/ni:name"; 856 } 857 default "_public_"; 858 config false; 859 description 860 "The name of VPN instance."; 861 } 862 } 863 } 865 identity Nve { 866 base ianaift:iana-interface-type; 867 description "A new interface type to be registered to IANA"; 868 } 870 augment "/if:interfaces/if:interface" { 871 when "(/if:interfaces/if:interface/if:type = 'nvo3:Nve')"; 872 description 873 "Augment the interface, NVE as an interface."; 874 container nvo3-nve { 875 description 876 "Local NVE."; 877 leaf nve-ip { 878 type inet:ipv4-address-no-zone; 879 description 880 "The address of local NVE."; 881 } 882 leaf nve-ipv6 { 883 type inet:ipv6-address-no-zone; 884 description 885 "The IPv6 address of the local NVE."; 886 } 887 leaf bypass-nve-ip { 888 type inet:ipv4-address-no-zone; 889 description 890 "The address of local NVE as bypass."; 891 } 892 leaf bypass-nve-ipv6 { 893 type inet:ipv6-address-no-zone; 894 description 895 "The IPv6 address of local NVE as bypass."; 896 } 897 container statistics { 898 description 899 "List of NVO3 tunnel statistics."; 900 list statistic { 901 key "vni-id peer-ip direction"; 902 description 903 "Configure NVO3 tunnel statistics information."; 904 leaf vni-id { 905 type uint32 { 906 range "1..16777215"; 907 } 908 description 909 "The ID of the VNI."; 910 } 911 leaf peer-ip { 912 type inet:ip-address-no-zone; 913 description 914 "The address of remote NVE."; 915 } 916 leaf direction { 917 type direction-type; 918 description 919 "Traffic statistics direction for the tunnel."; 920 } 921 container info { 922 config false; 923 description 924 "The information of tunnel traffic statistics."; 925 uses nvo3-traffic-statistics; 926 } 927 } 928 } 929 } 930 } 932 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 933 "/l3vpn:l3vpn/l3vpn:l3vpn" { 934 description "Augment for l3vpn instance"; 935 container vnis { 936 description "Vni list for l3vpn."; 937 list vni { 938 key "vni-id"; 939 description 940 "Vni for current l3vpn instance."; 941 leaf vni-id { 942 type uint32 { 943 range "1..16777215"; 944 } 945 description 946 "The ID of the VNI."; 947 } 948 } 949 } 950 } 952 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 953 "/l2vpn:l2vpn" { 954 description "Augment for l2vpn instance."; 955 container vnis { 956 description "Vni list for l2vpn."; 957 list vni { 958 key "vni-id"; 959 description 960 "Vni for current l2vpn instance."; 961 leaf vni-id { 962 type uint32 { 963 range "1..16777215"; 964 } 965 description 966 "The ID of the VNI."; 967 } 968 container split-horizon { 969 description "Configure NVO3 split-horizon information."; 970 leaf split-horizon-mode { 971 type vni-bind-type; 972 default "hub-mode"; 973 description 974 "Split horizon mode."; 975 } 976 leaf split-group { 977 when "(../split-horizon-mode='split-group-mode')"; 978 type string { 979 length "1..31"; 980 } 981 description 982 "Split group name."; 983 } 984 } 985 } 986 } 987 } 989 rpc reset-vni-instance-statistic { 990 description 991 "Clear traffic statistics about the VNI."; 992 input { 993 leaf vni-id { 994 type uint32 { 995 range "1..16777215"; 996 } 997 mandatory true; 998 description 999 "The ID of the VNI."; 1000 } 1001 } 1002 } 1003 rpc reset-vni-peer-statistic { 1004 description 1005 "Clear traffic statistics about the VXLAN tunnel."; 1006 input { 1007 leaf vni-id { 1008 type uint32 { 1009 range "1..16777215"; 1011 } 1012 mandatory true; 1013 description 1014 "The ID of the VNI."; 1015 } 1016 leaf peer-ip { 1017 type inet:ip-address-no-zone; 1018 mandatory true; 1019 description 1020 "The address of the remote NVE."; 1021 } 1022 leaf direction{ 1023 type direction-type; 1024 mandatory true; 1025 description 1026 "Traffic statistics direction for the tunnel."; 1027 } 1028 } 1029 } 1030 } 1032 1034 4. Security Considerations 1036 This document raises no new security issues. 1038 5. IANA Considerations 1040 The namespace URI defined in Section 3.4 need to be registered in the 1041 IETF XML registry [RFC3688]. 1043 This document need to register the 'ietf-nvo3-base' YANG module in 1044 the YANG Module Names registry [RFC6020]. 1046 6. Contributors 1048 Haibo Wang 1049 Huawei 1050 Email: rainsword.wang@huawei.com 1052 Yuan Gao 1053 Huawei 1054 Email: sean.gao@huawei.com 1055 Guannan Shi 1056 Huawei 1057 Email: shiguannan1@huawei.com 1059 Gang Yan 1060 Huawei 1061 Email: yangang@huawei.com 1063 Mingui Zhang 1064 Huawei 1065 Email: zhangmingui@huawei.com 1067 Yubao Wang 1068 ZTE Corporation 1069 Email: yubao.wang2008@hotmail.com 1071 Ruixue Wang 1072 China Mobile 1073 Email: wangruixue@chinamobile.com 1075 Sijun Weng 1076 China Mobile 1077 Email: wengsijun@chinamobile.com 1079 This document is part of a plan to make xml2rfc indispensable. 1081 7. References 1083 7.1. Normative References 1085 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1086 Requirement Levels", BCP 14, RFC 2119, 1087 DOI 10.17487/RFC2119, March 1997, 1088 . 1090 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1091 DOI 10.17487/RFC3688, January 2004, 1092 . 1094 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1095 the Network Configuration Protocol (NETCONF)", RFC 6020, 1096 DOI 10.17487/RFC6020, October 2010, 1097 . 1099 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1100 and A. Bierman, Ed., "Network Configuration Protocol 1101 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1102 . 1104 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1105 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1106 eXtensible Local Area Network (VXLAN): A Framework for 1107 Overlaying Virtualized Layer 2 Networks over Layer 3 1108 Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014, 1109 . 1111 [RFC7364] Narten, T., Ed., Gray, E., Ed., Black, D., Fang, L., 1112 Kreeger, L., and M. Napierala, "Problem Statement: 1113 Overlays for Network Virtualization", RFC 7364, 1114 DOI 10.17487/RFC7364, October 2014, 1115 . 1117 [RFC7365] Lasserre, M., Balus, F., Morin, T., Bitar, N., and Y. 1118 Rekhter, "Framework for Data Center (DC) Network 1119 Virtualization", RFC 7365, DOI 10.17487/RFC7365, October 1120 2014, . 1122 [RFC8014] Black, D., Hudson, J., Kreeger, L., Lasserre, M., and T. 1123 Narten, "An Architecture for Data-Center Network 1124 Virtualization over Layer 3 (NVO3)", RFC 8014, 1125 DOI 10.17487/RFC8014, December 2016, 1126 . 1128 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1129 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1130 May 2017, . 1132 [RFC8365] Sajassi, A., Ed., Drake, J., Ed., Bitar, N., Shekhar, R., 1133 Uttaro, J., and W. Henderickx, "A Network Virtualization 1134 Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365, 1135 DOI 10.17487/RFC8365, March 2018, 1136 . 1138 7.2. Informative References 1140 [I-D.ietf-bess-evpn-inter-subnet-forwarding] 1141 Sajassi, A., Salam, S., Thoria, S., Drake, J., and J. 1142 Rabadan, "Integrated Routing and Bridging in EVPN", draft- 1143 ietf-bess-evpn-inter-subnet-forwarding-11 (work in 1144 progress), October 2020. 1146 [I-D.ietf-nvo3-geneve] 1147 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1148 Network Virtualization Encapsulation", draft-ietf- 1149 nvo3-geneve-16 (work in progress), March 2020. 1151 [I-D.ietf-nvo3-vxlan-gpe] 1152 Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol 1153 Extension for VXLAN (VXLAN-GPE)", draft-ietf-nvo3-vxlan- 1154 gpe-10 (work in progress), July 2020. 1156 [RFC7637] Garg, P., Ed. and Y. Wang, Ed., "NVGRE: Network 1157 Virtualization Using Generic Routing Encapsulation", 1158 RFC 7637, DOI 10.17487/RFC7637, September 2015, 1159 . 1161 [RFC8293] Ghanwani, A., Dunbar, L., McBride, M., Bannai, V., and R. 1162 Krishnan, "A Framework for Multicast in Network 1163 Virtualization over Layer 3", RFC 8293, 1164 DOI 10.17487/RFC8293, January 2018, 1165 . 1167 Authors' Addresses 1169 Bing Liu (editor) 1170 Huawei Technologies 1171 No. 156 Beiqing Rd. Haidian District 1172 Beijing 100095 1173 China 1175 Email: remy.liubing@huawei.com 1177 Ran Chen 1178 ZTE Corporation 1180 Email: chen.ran@zte.com.cn 1181 Fengwei Qin 1182 China Mobile 1183 32 Xuanwumen West Ave, Xicheng District 1184 Beijing 100053 1185 China 1187 Email: qinfengwei@chinamobile.com 1189 Reshad Rahman 1190 Cisco Systems 1192 Email: rrahman@cisco.com