idnits 2.17.1 draft-ietf-nvo3-yang-cfg-03.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 (August 30, 2020) is 1328 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-09 == 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: March 3, 2021 ZTE Corporation 6 F. Qin 7 China Mobile 8 R. Rahman 9 Cisco Systems 10 August 30, 2020 12 Base YANG Data Model for NVO3 Protocols 13 draft-ietf-nvo3-yang-cfg-03 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 March 3, 2021. 42 Copyright Notice 44 Copyright (c) 2020 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 . . . . . . . . . . . . . . . . . 24 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@2020-08-26.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 2020-08-26 { 372 description 373 "Clean non ietf-bgp-l3vpn & ietf-l2vpn related errors."; 374 reference 375 ""; 376 } 378 revision 2020-07-22 { 379 description 380 "Solve syntax and norms issues."; 381 reference 382 ""; 384 } 386 revision 2020-03-09 { 387 description 388 "Revise some design in the statitics."; 389 reference 390 ""; 391 } 393 revision 2019-11-04 { 394 description 395 "Cleaning non ietf-bgp-l3vpn related errors."; 396 reference 397 ""; 398 } 400 revision 2019-04-01 { 401 description 402 "Init revision."; 403 reference 404 ""; 405 } 407 typedef vni-status-type { 408 type enumeration { 409 enum "up" { 410 description 411 "The state is up."; 412 } 413 enum "down" { 414 description 415 "The state is down."; 416 } 417 } 418 description 419 "The state for VNI."; 420 } 422 typedef tunnel-status { 423 type enumeration { 424 enum "up" { 425 description 426 "The tunnel is up."; 427 } 428 enum "down" { 429 description 430 "The tunnel is down."; 431 } 433 } 434 description 435 "The status of NVO3 Tunnel."; 436 } 437 typedef tunnel-type { 438 type enumeration { 439 enum "dynamic" { 440 description 441 "The tunnel is dynamic."; 442 } 443 enum "static" { 444 description 445 "The tunnel is static."; 446 } 447 enum "invalid" { 448 description 449 "The tunnel is invalid."; 450 } 451 } 452 description 453 "The type of NVO3 Tunnel."; 454 } 456 typedef direction-type { 457 type enumeration { 458 enum "inbound" { 459 description 460 "Inbound."; 461 } 462 enum "outbound" { 463 description 464 "Outbound."; 465 } 466 enum "bidirection" { 467 description 468 "Bidirection."; 469 } 470 } 471 description 472 "Bound direction."; 473 } 474 typedef vni-bind-type { 475 type enumeration { 476 enum "hub-mode" { 477 description 478 "Hub mode. The vni instance can't communicate with other hub mode vni instances."; 479 } 480 enum "spoke-mode" { 481 description 482 "Spoke mode."; 483 } 484 enum "split-group-mode" { 485 description 486 "Split group mode."; 487 } 488 } 489 description 490 "The binding type of VNI."; 491 } 493 typedef vni-mode { 494 type enumeration { 495 enum "local" { 496 description 497 "Local mode."; 498 } 499 enum "global" { 500 description 501 "Global mode."; 502 } 503 } 504 description 505 "The mode of VNI."; 506 } 508 grouping nvo3-traffic-statistics { 509 description 510 "NVO3 tunnel traffic statistics collection."; 511 leaf send-bits-rate { 512 type uint64; 513 units bit/s; 514 description 515 "Number of send bits per second."; 516 } 517 leaf send-pkts-rate { 518 type uint64; 519 units pps; 520 description 521 "Number of send packets per second."; 522 } 523 leaf send-unicast-pkts { 524 type uint64; 525 units packet; 526 description 527 "Number of send unicast packets."; 528 } 529 leaf send-multicast-pkts { 530 type uint64; 531 units packet; 532 description 533 "Number of send multicast packets."; 534 } 535 leaf send-broadcast-pkts { 536 type uint64; 537 units packet; 538 description 539 "Number of send broadcast packets."; 540 } 541 leaf send-total-bytes { 542 type uint64; 543 units Byte; 544 description 545 "Total number of send bytes."; 546 } 547 leaf send-total-pkts { 548 type uint64; 549 units packet; 550 description 551 "Total number of send packets."; 552 } 553 leaf receive-bits-rate { 554 type uint64; 555 units bit/s; 556 description 557 "Number of receive bits per second."; 558 } 559 leaf receive-pkts-rate { 560 type uint64; 561 units pps; 562 description 563 "Number of receive packets per second."; 564 } 565 leaf receive-unicast-pkts { 566 type uint64; 567 units packet; 568 description 569 "Number of receive unicast packets."; 570 } 571 leaf receive-multicast-pkts { 572 type uint64; 573 units packet; 574 description 575 "Number of receive multicast packets."; 576 } 577 leaf receive-broadcast-pkts { 578 type uint64; 579 units packet; 580 description 581 "Number of receive broadcast packets."; 582 } 583 leaf receive-total-bytes { 584 type uint64; 585 units Byte; 586 description 587 "Total number of receive bytes."; 588 } 589 leaf receive-total-pkts { 590 type uint64; 591 units packet; 592 description 593 "Total number of receive packets."; 594 } 595 leaf drop-unicast-pkts { 596 type uint64; 597 units packet; 598 description 599 "Number of discarded unicast packets."; 600 } 601 leaf drop-multicast-pkts { 602 type uint64; 603 units packet; 604 description 605 "Number of discarded multicast packets."; 606 } 607 leaf drop-broadcast-pkts { 608 type uint64; 609 units packet; 610 description 611 "Number of discarded broadcast packets."; 612 } 613 } 615 container nvo3 { 616 description 617 "Management of NVO3."; 618 container vni-instances { 619 description 620 "List of virtual network instances."; 621 list vni-instance { 622 key "vni-id"; 623 description 624 "Configure the information of VNI."; 626 leaf vni-id { 627 type uint32 { 628 range "1..16777215"; 629 } 630 description 631 "The id of VNI."; 632 } 633 leaf vni-mode { 634 type vni-mode; 635 default "local"; 636 description 637 "The mode of VNI."; 638 } 639 leaf source-nve { 640 type if:interface-ref; 641 mandatory true; 642 must "(/if:interfaces/if:interface[if:name=current()]/if:type='Nve')"; 643 description 644 "The name of the local NVE."; 645 } 646 leaf protocol-bgp { 647 type boolean; 648 default "false"; 649 description 650 "Learn remote NVEs in the same VNI via BGP."; 651 } 652 leaf status { 653 type vni-status-type; 654 config false; 655 description 656 "The status of the VNI."; 657 } 658 container static-ipv4-peers { 659 description 660 "List of remote NVE address created by users in a VNI."; 661 list static-peer { 662 key "peer-ip"; 663 description 664 "Configure remote NVE address in a same VNI."; 665 leaf peer-ip { 666 type inet:ipv4-address-no-zone; 667 description 668 "The address of the remote NVE."; 669 } 670 leaf out-vni-id { 671 type uint32 { 672 range "1..16777215"; 673 } 674 description 675 "The ID of VNI for outbound. Do not support separate deletion."; 676 } 677 } 678 } 679 container static-ipv6-peers { 680 description 681 "List of remote NVE IPv6 address created by users in a VNI."; 682 list static-ipv6-peer { 683 key "peer-ip"; 684 description 685 "Configure remote NVE IPv6 address in a same VNI."; 686 leaf peer-ip { 687 type inet:ipv6-address-no-zone; 688 description 689 "The IPv6 address of the remote NVE."; 690 } 691 leaf out-vni-id { 692 type uint32 { 693 range "1..16777215"; 694 } 695 description 696 "The ID of VNI for outbound. Do not support separate deletion."; 697 } 698 } 699 } 700 container flood-proxys { 701 description 702 "List of flood proxys for the VNI."; 703 list flood-proxy { 704 key "peer-ip"; 705 description 706 "Configure flood proxys for the VNI."; 707 leaf peer-ip { 708 type inet:ip-address-no-zone; 709 description 710 "The address of flood proxy."; 711 } 712 } 713 } 714 container mcast-groups { 715 description 716 "List of multicast address for the VNI."; 717 list mcast-group { 718 key "mcast-ip"; 719 description 720 "Configure multicast address in a same VNI."; 721 leaf mcast-ip { 722 type inet:ip-address-no-zone; 723 description 724 "The mcast address of NVO3."; 725 } 726 } 727 } 728 container statistic { 729 description 730 "Configure VNI traffic statistics."; 731 leaf enable { 732 type boolean; 733 default "false"; 734 description 735 "Enable/disable VNI traffic statistics."; 736 } 737 container info { 738 when "../enable='true'"; 739 config false; 740 description 741 "The information of vni instance traffic statistics."; 742 uses nvo3-traffic-statistics; 743 } 744 } 745 } 746 } 747 } 748 container vni-peer-infos { 749 config false; 750 description 751 "List of remote NVE addresses."; 752 container peers { 753 config false; 754 description 755 "Operational data of remote NVE address in a VNI."; 756 list peer { 757 key "vni-id source-ip peer-ip"; 758 config false; 759 description 760 "Operational data of remote NVE addresses in a VNI."; 761 leaf vni-id { 762 type uint32 { 763 range "1..16777215"; 764 } 765 config false; 766 description 767 "The ID of VNI."; 768 } 769 leaf source-ip { 770 type inet:ip-address-no-zone; 771 config false; 772 description 773 "Local NVE address, as NVO3 tunnel source point."; 774 } 775 leaf peer-ip { 776 type inet:ip-address-no-zone; 777 config false; 778 description 779 "Remote NVE address, as NVO3 tunnel end point."; 780 } 781 leaf type { 782 type tunnel-type; 783 config false; 784 description 785 "Tunnel type."; 786 } 787 leaf out-vni-id { 788 type uint32 { 789 range "1..16777215"; 790 } 791 config false; 792 description 793 "The ID of VNI for outbound."; 794 } 795 } 796 } 797 } 799 container tunnel-infos { 800 config false; 801 description 802 "List of NVO3 tunnel information."; 803 list tunnel-info { 804 key "tunnel-id"; 805 config false; 806 description 807 "Operational data of NVO3 tunnel information."; 808 leaf tunnel-id { 809 type uint32 { 810 range "1..4294967295"; 811 } 812 config false; 813 description 814 "The ID of NVO3 tunnel."; 815 } 816 leaf source-ip { 817 type inet:ip-address-no-zone; 818 config false; 819 description 820 "Local NVE address, as NVO3 tunnel source point."; 821 } 822 leaf peer-ip { 823 type inet:ip-address-no-zone; 824 config false; 825 description 826 "Remote NVE address, as NVO3 tunnel end point."; 827 } 828 leaf status { 829 type tunnel-status; 830 config false; 831 description 832 "Tunnel status."; 833 } 834 leaf type { 835 type tunnel-type; 836 config false; 837 description 838 "Tunnel type."; 839 } 840 leaf up-time { 841 type string { 842 length "1..10"; 843 } 844 config false; 845 description 846 "The continuous time as NVO3 tunnel is reachable."; 847 } 848 leaf vrf-name { 849 type leafref { 850 path "/ni:network-instances/ni:network-instance/ni:name"; 851 } 852 default "_public_"; 853 config false; 854 description 855 "The name of VPN instance."; 856 } 857 } 858 } 860 identity Nve { 861 base ianaift:iana-interface-type; 862 description "A new interface type to be registered to IANA"; 863 } 865 augment "/if:interfaces/if:interface" { 866 when "(/if:interfaces/if:interface/if:type = 'nvo3:Nve')"; 867 description 868 "Augment the interface, NVE as an interface."; 869 container nvo3-nve { 870 description 871 "Local NVE."; 872 leaf nve-ip { 873 type inet:ipv4-address-no-zone; 874 description 875 "The address of local NVE."; 876 } 877 leaf nve-ipv6 { 878 type inet:ipv6-address-no-zone; 879 description 880 "The IPv6 address of the local NVE."; 881 } 882 leaf bypass-nve-ip { 883 type inet:ipv4-address-no-zone; 884 description 885 "The address of local NVE as bypass."; 886 } 887 leaf bypass-nve-ipv6 { 888 type inet:ipv6-address-no-zone; 889 description 890 "The IPv6 address of local NVE as bypass."; 891 } 892 container statistics { 893 description 894 "List of NVO3 tunnel statistics."; 895 list statistic { 896 key "vni-id peer-ip direction"; 897 description 898 "Configure NVO3 tunnel statistics information."; 899 leaf vni-id { 900 type uint32 { 901 range "1..16777215"; 902 } 903 description 904 "The ID of the VNI."; 905 } 906 leaf peer-ip { 907 type inet:ip-address-no-zone; 908 description 909 "The address of remote NVE."; 910 } 911 leaf direction { 912 type direction-type; 913 description 914 "Traffic statistics direction for the tunnel."; 915 } 916 container info { 917 config false; 918 description 919 "The information of tunnel traffic statistics."; 920 uses nvo3-traffic-statistics; 921 } 922 } 923 } 924 } 925 } 927 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 928 "/l3vpn:l3vpn/l3vpn:l3vpn" { 929 description "Augment for l3vpn instance"; 930 container vnis { 931 description "Vni list for l3vpn."; 932 list vni { 933 key "vni-id"; 934 description 935 "Vni for current l3vpn instance."; 936 leaf vni-id { 937 type uint32 { 938 range "1..16777215"; 939 } 940 description 941 "The ID of the VNI."; 942 } 943 } 944 } 945 } 947 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 948 "/l2vpn:l2vpn" { 949 description "Augment for l2vpn instance."; 950 container vnis { 951 description "Vni list for l2vpn."; 952 list vni { 953 key "vni-id"; 954 description 955 "Vni for current l2vpn instance."; 956 leaf vni-id { 957 type uint32 { 958 range "1..16777215"; 959 } 960 description 961 "The ID of the VNI."; 963 } 964 container split-horizon { 965 description "Configure NVO3 split-horizon information."; 966 leaf split-horizon-mode { 967 type vni-bind-type; 968 default "hub-mode"; 969 description 970 "Split horizon mode."; 971 } 972 leaf split-group { 973 when "(../split-horizon-mode='split-group-mode')"; 974 type string { 975 length "1..31"; 976 } 977 description 978 "Split group name."; 979 } 980 } 981 } 982 } 983 } 985 rpc reset-vni-instance-statistic { 986 description 987 "Clear traffic statistics about the VNI."; 988 input { 989 leaf vni-id { 990 type uint32 { 991 range "1..16777215"; 992 } 993 mandatory true; 994 description 995 "The ID of the VNI."; 996 } 997 } 998 } 999 rpc reset-vni-peer-statistic { 1000 description 1001 "Clear traffic statistics about the VXLAN tunnel."; 1002 input { 1003 leaf vni-id { 1004 type uint32 { 1005 range "1..16777215"; 1006 } 1007 mandatory true; 1008 description 1009 "The ID of the VNI."; 1010 } 1011 leaf peer-ip { 1012 type inet:ip-address-no-zone; 1013 mandatory true; 1014 description 1015 "The address of the remote NVE."; 1016 } 1017 leaf direction{ 1018 type direction-type; 1019 mandatory true; 1020 description 1021 "Traffic statistics direction for the tunnel."; 1022 } 1023 } 1024 } 1025 } 1027 1029 4. Security Considerations 1031 This document raises no new security issues. 1033 5. IANA Considerations 1035 The namespace URI defined in Section 3.4 need to be registered in the 1036 IETF XML registry [RFC3688]. 1038 This document need to register the 'ietf-nvo3-base' YANG module in 1039 the YANG Module Names registry [RFC6020]. 1041 6. Contributors 1043 Haibo Wang 1044 Huawei 1045 Email: rainsword.wang@huawei.com 1047 Yuan Gao 1048 Huawei 1049 Email: sean.gao@huawei.com 1051 Guannan Shi 1052 Huawei 1053 Email: shiguannan1@huawei.com 1054 Gang Yan 1055 Huawei 1056 Email: yangang@huawei.com 1058 Mingui Zhang 1059 Huawei 1060 Email: zhangmingui@huawei.com 1062 Yubao Wang 1063 ZTE Corporation 1064 Email: yubao.wang2008@hotmail.com 1066 Ruixue Wang 1067 China Mobile 1068 Email: wangruixue@chinamobile.com 1070 Sijun Weng 1071 China Mobile 1072 Email: wengsijun@chinamobile.com 1074 This document is part of a plan to make xml2rfc indispensable. 1076 7. References 1078 7.1. Normative References 1080 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1081 Requirement Levels", BCP 14, RFC 2119, 1082 DOI 10.17487/RFC2119, March 1997, 1083 . 1085 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1086 DOI 10.17487/RFC3688, January 2004, 1087 . 1089 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1090 the Network Configuration Protocol (NETCONF)", RFC 6020, 1091 DOI 10.17487/RFC6020, October 2010, 1092 . 1094 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1095 and A. Bierman, Ed., "Network Configuration Protocol 1096 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1097 . 1099 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1100 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1101 eXtensible Local Area Network (VXLAN): A Framework for 1102 Overlaying Virtualized Layer 2 Networks over Layer 3 1103 Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014, 1104 . 1106 [RFC7364] Narten, T., Ed., Gray, E., Ed., Black, D., Fang, L., 1107 Kreeger, L., and M. Napierala, "Problem Statement: 1108 Overlays for Network Virtualization", RFC 7364, 1109 DOI 10.17487/RFC7364, October 2014, 1110 . 1112 [RFC7365] Lasserre, M., Balus, F., Morin, T., Bitar, N., and Y. 1113 Rekhter, "Framework for Data Center (DC) Network 1114 Virtualization", RFC 7365, DOI 10.17487/RFC7365, October 1115 2014, . 1117 [RFC8014] Black, D., Hudson, J., Kreeger, L., Lasserre, M., and T. 1118 Narten, "An Architecture for Data-Center Network 1119 Virtualization over Layer 3 (NVO3)", RFC 8014, 1120 DOI 10.17487/RFC8014, December 2016, 1121 . 1123 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1124 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1125 May 2017, . 1127 [RFC8365] Sajassi, A., Ed., Drake, J., Ed., Bitar, N., Shekhar, R., 1128 Uttaro, J., and W. Henderickx, "A Network Virtualization 1129 Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365, 1130 DOI 10.17487/RFC8365, March 2018, 1131 . 1133 7.2. Informative References 1135 [I-D.ietf-bess-evpn-inter-subnet-forwarding] 1136 Sajassi, A., Salam, S., Thoria, S., Drake, J., and J. 1137 Rabadan, "Integrated Routing and Bridging in EVPN", draft- 1138 ietf-bess-evpn-inter-subnet-forwarding-09 (work in 1139 progress), June 2020. 1141 [I-D.ietf-nvo3-geneve] 1142 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1143 Network Virtualization Encapsulation", draft-ietf- 1144 nvo3-geneve-16 (work in progress), March 2020. 1146 [I-D.ietf-nvo3-vxlan-gpe] 1147 Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol 1148 Extension for VXLAN (VXLAN-GPE)", draft-ietf-nvo3-vxlan- 1149 gpe-10 (work in progress), July 2020. 1151 [RFC7637] Garg, P., Ed. and Y. Wang, Ed., "NVGRE: Network 1152 Virtualization Using Generic Routing Encapsulation", 1153 RFC 7637, DOI 10.17487/RFC7637, September 2015, 1154 . 1156 [RFC8293] Ghanwani, A., Dunbar, L., McBride, M., Bannai, V., and R. 1157 Krishnan, "A Framework for Multicast in Network 1158 Virtualization over Layer 3", RFC 8293, 1159 DOI 10.17487/RFC8293, January 2018, 1160 . 1162 Authors' Addresses 1164 Bing Liu (editor) 1165 Huawei Technologies 1166 No. 156 Beiqing Rd. Haidian District 1167 Beijing 100095 1168 China 1170 Email: remy.liubing@huawei.com 1172 Ran Chen 1173 ZTE Corporation 1175 Email: chen.ran@zte.com.cn 1177 Fengwei Qin 1178 China Mobile 1179 32 Xuanwumen West Ave, Xicheng District 1180 Beijing 100053 1181 China 1183 Email: qinfengwei@chinamobile.com 1184 Reshad Rahman 1185 Cisco Systems 1187 Email: rrahman@cisco.com