idnits 2.17.1 draft-ietf-nvo3-yang-cfg-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 7 instances of too long lines in the document, the longest one being 20 characters in excess of 72. ** There are 7 instances of lines with control characters in the document. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 235 has weird spacing: '...peer-ip ine...' == Line 241 has weird spacing: '...cast-ip ine...' == Line 272 has weird spacing: '...nnel-id uin...' == Line 291 has weird spacing: '...rection dir...' == Line 316 has weird spacing: '... vni-id uin...' == (2 more instances...) -- The document date (November 4, 2019) is 1628 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: 'RFC8365' is mentioned on line 143, but not defined == Unused Reference: 'I-D.ietf-nvo3-geneve' is defined on line 1193, but no explicit reference was found in the text == Unused Reference: 'RFC7637' is defined on line 1213, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-nvo3-vxlan-gpe' is defined on line 1216, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-bess-evpn-inter-subnet-forwarding' is defined on line 1219, but no explicit reference was found in the text ** Downref: Normative reference to an Informational draft: draft-ietf-nvo3-overlay-problem-statement (ref. 'RFC7364') ** Downref: Normative reference to an Informational draft: draft-ietf-nvo3-framework (ref. 'RFC7365') ** Downref: Normative reference to an Informational RFC: RFC 7348 == Outdated reference: A later version (-16) exists of draft-ietf-nvo3-geneve-10 ** Downref: Normative reference to an Informational RFC: RFC 8014 == Outdated reference: A later version (-13) exists of draft-ietf-nvo3-vxlan-gpe-06 == Outdated reference: A later version (-15) exists of draft-ietf-bess-evpn-inter-subnet-forwarding-08 Summary: 6 errors (**), 0 flaws (~~), 15 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT B. Liu, Ed. 3 Intended Status: Standards Track Huawei 4 R. Chen 5 ZTE 6 F. Qin 7 China Mobile 8 R. Rahman 9 Cisco 10 Expires: May 7, 2020 November 4, 2019 12 Base YANG Data Model for NVO3 Protocols 13 draft-ietf-nvo3-yang-cfg-01.txt 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 to IETF 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), its areas, and its working groups. Note that 32 other groups may also distribute working documents as 33 Internet-Drafts. 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 The list of current Internet-Drafts can be accessed at 41 http://www.ietf.org/1id-abstracts.html 43 The list of Internet-Draft Shadow Directories can be accessed at 44 http://www.ietf.org/shadow.html 46 Copyright and License Notice 48 Copyright (c) 2019 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 64 2. Acronyms and Terminology . . . . . . . . . . . . . . . . . . . 3 65 2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 67 3. The YANG Data Model for NVO3 . . . . . . . . . . . . . . . . . 3 68 3.1 Mapping to the NVO3 architecture . . . . . . . . . . . . . . 4 69 3.2. The Configuration Parameters . . . . . . . . . . . . . . . 4 70 3.2.1. NVE as an interface . . . . . . . . . . . . . . . . . . 4 71 3.2.2. Virtual Network Instance . . . . . . . . . . . . . . . 5 72 3.2.3. BUM Mode . . . . . . . . . . . . . . . . . . . . . . . 5 73 3.3. Statistics . . . . . . . . . . . . . . . . . . . . . . . . 5 74 3.3. Model Structure . . . . . . . . . . . . . . . . . . . . . . 5 75 3.4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . 8 76 4. Security Considerations . . . . . . . . . . . . . . . . . . . . 24 77 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 24 78 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 24 79 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 80 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 81 8.1. Normative References . . . . . . . . . . . . . . . . . . . 25 82 8.2. Informative References . . . . . . . . . . . . . . . . . . 26 83 Author's Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 85 1. Introduction 87 Network Virtualization Overlays (NVO3), such as VXLAN, NVGRE, GENEVE 88 and VXLAN-GPE, enable network virtualization for data center networks 89 environment that assumes an IP-based underlay. 91 YANG [RFC6020] is a data definition language that was introduced to 92 define the contents of a conceptual data store that allows networked 93 devices to be managed using NETCONF [RFC6241]. This document 94 specifies a YANG data model that can be used to configure and manage 95 NVO3 protocols. The model covers the configuration of NVO3 instances 96 as well as their operation states, which are the basic common 97 requirements of the different tunnel encapsulations. Thus it is 98 called "the base model for NVO3" in this document. 100 As the Network Virtualization Overlay evolves, newly defined tunnel 101 encapsulation may require extra configuration. For example, GENEVE 102 may require configuration of TLVs at the NVE. The base module can be 103 augmented to accommodate these new solutions. 105 2. Acronyms and Terminology 107 2.1. Acronyms 109 NVO3: Network Virtualization Overlays 110 VNI: Virtual Network Instance 111 BUM: Broadcast, Unknown Unicast, Multicast traffic 113 2.2. Terminology 115 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 116 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 117 document are to be interpreted as described in RFC 2119 [RFC2119]. 119 Familiarity with [RFC7348], [RFC7364], [RFC7365] and [RFC8014] is 120 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 3.1, the reference model 137 of the NVE defined in [RFC8014], multiple instances can be mounted 138 under 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 have 140 several peer NVEs. A NVO3 tunnel can be determined by the VNI, the 141 source NVE and the peer NVE. The tunnel can be built statically by 142 manually indicate the addresses of the peer NVEs, or dynamically via 143 a control plane, e.g. EVPN [RFC8365]. An enabler is defined in the 144 NVO3 base YANG to choose from these two modes. 146 | Data-Center Network (IP) | 147 | | 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 +---+ +---+ +---+ +---+ +---+ +---+ 171 Figure 3.1. NVE Reference model in RFC 8014 173 3.2. The Configuration Parameters 175 3.2.1. NVE as an interface 177 A NVE in the NVO3 base YANG is defined via augmenting the IETF 178 interface YANG. If anycast gateway is enabled, the source VTEP 179 address is the address of the anycast gateway, and a bypass address 180 is used to uniquely identify the NVE. Otherwise, the source VTEP 181 address is the NVE interface's own IP address. 183 3.2.2. Virtual Network Instance 185 A Virtual Network Instance ('VNI') is a specific VN instance on an 186 NVE [RFC7365]. At each NVE, a Tenant System is connect to VNIs 187 through Virtual Access Points (VAP). VAPs can be physical ports or 188 virtual ports identified by the bridge domain Identifier ('bdId'). 189 The mapping between VNI and bdId is managed by the operator. 191 As defined in [draft-ietf-bess-evpn-inter-subnet-forwarding], a 192 tenant can have multiple bridge domains, and each domain has its own 193 VNI. Thus these VNIs are used as L2VPN. Besides, a dedicated VNI can 194 be used for routing between the bridge domains, i.e. used as L3VPN. 195 The mapping relationship between VNI and L2VPN (respectively, L3VPN) 196 is given by augmenting the IETF YANG of L2VPN (respectively L3VPN). 198 3.2.3. BUM Mode 200 An NVE SHOULD support either ingress replication, or multicast proxy, 201 or point to multipoint tunnels on a per-VNI basis. It is possible 202 that both modes be used simultaneously in one NVO3 network by 203 different NVEs. 205 If ingress replication is used, the receiver addresses are listed in 206 'peers'. If multicast proxy [RFC8293] is used, the proxy's address is 207 given in "flood-proxy". If the choice is point to multipoint tunnels, 208 the multicast address is given as 'multiAddr'. 210 3.3. Statistics 212 Operators can determine whether a NVE should gather statistic values 213 on a per-VNI basis. An enabler is contained in the 'static' list as 214 'statistic-enable' leaf. If the gathering for a VNI is enabled, the 215 statistical information about the local NVEs, the remote NVEs, the 216 flows and the MAC addresses will be collected by the NVEs in this 217 VNI. 219 3.3. Model Structure 220 module: ietf-nvo3-base 221 +--rw nvo3 222 | +--rw vni-instances 223 | +--rw vni-instance* [vni-id] 224 | +--rw vni-id uint32 225 | +--rw vni-mode enumeration 226 | +--rw source-nve if:interface-ref 227 | +--rw protocol-bgp? boolean 228 | +--ro status? vni-status-type 229 | +--rw static-ipv4-peers 230 | | +--rw static-peer* [peer-ip] 231 | | +--rw peer-ip inet:ipv4-address-no-zone 232 | | +--rw out-vni-id? uint32 233 | +--rw static-ipv6-peers 234 | | +--rw static-ipv6-peer* [peer-ip] 235 | | +--rw peer-ip inet:ipv6-address-no-zone 236 | +--rw flood-proxys 237 | | +--rw flood-proxy* [peer-ip] 238 | | +--rw peer-ip inet:ipv4-address-no-zone 239 | +--rw mcast-groups 240 | | +--rw mcast-group* [mcast-ip] 241 | | +--rw mcast-ip inet:ipv4-address-no-zone 242 | +--rw statistic 243 | +--rw statistic-enable? boolean 244 | +--ro statistic-info 245 | +--ro rx-bits-per-sec? uint64 246 | +--ro rx-pkt-per-sec? uint64 247 | +--ro tx-bits-per-sec? uint64 248 | +--ro tx-pkt-per-sec? uint64 249 | +--ro rx-pkts? uint64 250 | +--ro rx-bytes? uint64 251 | +--ro tx-pkts? uint64 252 | +--ro tx-bytes? uint64 253 | +--ro rx-unicast-pkts? uint64 254 | +--ro rx-multicast-pkts? uint64 255 | +--ro rx-broadcast-pkts? uint64 256 | +--ro drop-unicast-pkts? uint64 257 | +--ro drop-multicast-pkts? uint64 258 | +--ro drop-broadcast-pkts? uint64 259 | +--ro tx-unicast-pkts? uint64 260 | +--ro tx-multicast-pkts? uint64 261 | +--ro tx-broadcast-pkts? uint64 262 +--ro vni-peer-infos 263 | +--ro peers 264 | +--ro peer* [vni-id source-ip peer-ip] 265 | +--ro vni-id uint32 266 | +--ro source-ip inet:ip-address-no-zone 267 | +--ro peer-ip inet:ip-address-no-zone 268 | +--ro tunnel-type? peer-type 269 | +--ro out-vni-id? uint32 270 +--ro tunnel-infos 271 +--ro tunnel-info* [tunnel-id] 272 +--ro tunnel-id uint32 273 +--ro source-ip? inet:ip-address-no-zone 274 +--ro peer-ip? inet:ip-address-no-zone 275 +--ro status? tunnel-status 276 +--ro type? tunnel-type 277 +--ro up-time? string 278 +--ro vrf-name? -> /ni:network-instances/network-instance/name 280 augment /if:interfaces/if:interface: 281 +--rw nvo3-nve 282 | +--rw nvo3-config 283 | +--rw source-vtep-ip? inet:ipv4-address-no-zone 284 | +--rw source-vtep-ipv6? inet:ipv6-address-no-zone 285 | +--rw bypass-vtep-ip? inet:ipv4-address-no-zone 286 | +--rw statistics 287 | +--rw statistic* [vni-id mode peer-ip direction] 288 | +--rw vni-id uint32 289 | +--rw mode vni-type 290 | +--rw peer-ip inet:ipv4-address-no-zone 291 | +--rw direction direction-type 292 | +--ro info 293 | +--ro rx-pkts? uint64 294 | +--ro rx-bytes? uint64 295 | +--ro tx-pkts? uint64 296 | +--ro tx-bytes? uint64 297 | +--ro rx-unicast-pkts? uint64 298 | +--ro rx-multicast-pkts? uint64 299 | +--ro rx-broadcast-pkts? uint64 300 | +--ro tx-unicast-pkts? uint64 301 | +--ro tx-multicast-pkts? uint64 302 | +--ro tx-broadcast-pkts? uint64 303 | +--ro drop-unicast-pkts? uint64 304 | +--ro drop-multicast-pkts? uint64 305 | +--ro drop-broadcast-pkts? uint64 306 | +--ro rx-bits-per-sec? uint64 307 | +--ro rx-pkt-per-sec? uint64 308 | +--ro tx-bits-per-sec? uint64 309 | +--ro tx-pkt-per-sec? uint64 310 +--rw nvo3-gateway 311 +--rw nvo3-gateway 312 +--rw vxlan-anycast-gateway? boolean 313 augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn: 314 +--rw vni-lists 315 +--rw vni* [vni-id] 316 +--rw vni-id uint32 317 augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: 318 +--rw vni-lists 319 +--rw vni* [vni-id] 320 +--rw vni-id uint32 321 +--rw split-horizon-mode? vni-bind-type 322 +--rw split-group? string 324 rpcs: 325 +---x reset-vni-instance-statistic 326 | +---w input 327 | +---w vni-id uint32 328 +---x reset-vni-peer-statistic 329 +---w input 330 +---w vni-id uint32 331 +---w mode vni-type 332 +---w peer-ip inet:ipv4-address-no-zone 333 +---w direction direction-type 335 Figure 3.2. The tree structure of YANG module for NVO3 configuration 337 3.4. YANG Module 339 file "ietf-nvo3-base@2019-11-04.yang" 340 module ietf-nvo3-base { 341 yang-version 1.1; 342 namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3"; 343 prefix "nvo3"; 345 import ietf-network-instance { 346 prefix "ni"; 347 } 349 import ietf-interfaces { 350 prefix "if"; 351 } 353 import ietf-inet-types { 354 prefix "inet"; 355 } 357 import ietf-l2vpn { 358 prefix "l2vpn"; 359 } 361 import ietf-bgp-l3vpn { 362 prefix "l3vpn"; 363 } 365 organization "ietf"; 366 contact "ietf"; 367 description "Yang model for NVO3"; 369 revision 2019-11-04 { 370 description 371 "Cleaning non ietf-bgp-l3vpn related errors"; 372 reference 373 ""; 374 } 376 revision 2019-04-01 { 377 description 378 "Init revision"; 379 reference 380 ""; 381 } 383 typedef vni-status-type { 384 type enumeration { 385 enum "up" { 386 description 387 "Vni status up."; 388 } 389 enum "down" { 390 description 391 "Vni status down."; 392 } 393 } 394 description 395 "Vni status"; 396 } 398 typedef vni-type { 399 type enumeration { 400 enum "l2" { 401 description 402 "layer 2 mode"; 403 } 404 enum "l3" { 405 description 406 "layer 3 mode"; 407 } 408 } 409 description 410 "vni type"; 411 } 413 typedef peer-type { 414 type enumeration { 415 enum "static" { 416 description 417 "Static."; 419 } 420 enum "dynamic" { 421 description 422 "Dynamic."; 423 } 424 } 425 description 426 "Peer type"; 427 } 429 typedef tunnel-status { 430 type enumeration { 431 enum "up" { 432 description 433 "The tunnel is up."; 434 } 435 enum "down" { 436 description 437 "The tunnel is down."; 438 } 439 } 440 description 441 "Tunnel status"; 442 } 443 typedef tunnel-type { 444 type enumeration { 445 enum "dynamic" { 446 description 447 "The tunnel is dynamic."; 448 } 449 enum "static" { 450 description 451 "The tunnel is static."; 452 } 453 enum "invalid" { 454 description 455 "The tunnel is invalid."; 456 } 457 } 458 description 459 "Tunnel type"; 460 } 462 typedef direction-type { 463 type enumeration { 464 enum "inbound" { 465 description 466 "Inbound."; 468 } 469 enum "outbound" { 470 description 471 "Outbound."; 472 } 473 enum "bidirection" { 474 description 475 "Bidirection."; 476 } 477 } 478 description 479 "Bound direction"; 480 } 482 typedef vni-bind-type { 483 type enumeration { 484 enum "hub-mode" { 485 description 486 "Hub mode."; 487 } 488 enum "spoke-mode" { 489 description 490 "Spoke mode."; 491 } 492 } 493 description 494 "bdBindVniType"; 495 } 497 container nvo3 { 498 description 499 "Management of NVO3."; 501 container vni-instances { 502 description 503 "The confiuration and information table of the VNI."; 504 list vni-instance { 505 key "vni-id"; 506 must "(/if:interfaces/if:interface[if:name=current()/source-nve]/if:type='Nve')"; 507 description 508 "The confiuration and information of the VNI."; 509 leaf vni-id { 510 type uint32 { 511 range "1..16777215"; 512 } 513 description 514 "The id of VNI."; 515 } 516 leaf vni-mode { 517 type enumeration { 518 enum "Local" { 519 description 520 "Local mode"; 521 } 522 enum "Global" { 523 description 524 "Global mode"; 525 } 526 } 527 description 528 "The mode of the VNI instance."; 529 } 530 leaf source-nve { 531 type if:interface-ref; 532 mandatory true; 533 description 534 "The name of the nve interface ."; 535 } 536 leaf protocol-bgp { 537 type boolean; 538 default "false"; 539 description 540 "Whether use bgp as vxlan's protocol."; 541 } 542 leaf status { 543 type vni-status-type; 544 config false; 545 description 546 "The status of the VNI."; 547 } 548 container static-ipv4-peers { 549 description 550 "The remote NVE address table in a same VNI."; 551 list static-peer { 552 key "peer-ip"; 553 description 554 "The remote NVE address in a same VNI."; 555 leaf peer-ip { 556 type inet:ipv4-address-no-zone; 557 description 558 "The address of the NVE."; 559 } 560 leaf out-vni-id { 561 type uint32 { 562 range "1..16777215"; 563 } 564 description 565 "The ID of the out VNI. Do not support separate deletion."; 566 } 567 } 568 } 569 container static-ipv6-peers { 570 description 571 "The remote NVE ipv6 address table in a same VNI."; 572 list static-ipv6-peer { 573 key "peer-ip"; 574 description 575 "The remote NVE ipv6 address in a same VNI."; 576 leaf peer-ip { 577 type inet:ipv6-address-no-zone; 578 description 579 "The ipv6 address of the NVE."; 580 } 581 } 582 } 583 container flood-proxys { 584 description 585 "The flood proxys for this VNI"; 586 list flood-proxy { 587 key "peer-ip"; 588 leaf peer-ip { 589 type inet:ipv4-address-no-zone; 590 description 591 "peer ip address"; 592 } 593 description 594 "List of the flood proxys"; 595 } 596 } 597 container mcast-groups { 598 description 599 "The mcast address table."; 600 list mcast-group { 601 key "mcast-ip"; 602 description 603 "The mcast address."; 604 leaf mcast-ip { 605 type inet:ipv4-address-no-zone; 606 description 607 "The mcast address of NVO3."; 608 } 609 } 610 } 611 container statistic { 612 description 613 "The VNI member in a same NVE."; 614 leaf statistic-enable { 615 type boolean; 616 default "false"; 617 description 618 "To determine whether to enable the statistics for a VNI."; 619 } 620 container statistic-info { 621 config false; 622 description 623 "The vni instance traffic statistics information."; 624 leaf rx-bits-per-sec { 625 type uint64; 626 config false; 627 description 628 "Number of bits received per second."; 629 } 630 leaf rx-pkt-per-sec { 631 type uint64; 632 config false; 633 description 634 "Number of packets received per second."; 635 } 636 leaf tx-bits-per-sec { 637 type uint64; 638 config false; 639 description 640 "Number of bits sent per second."; 641 } 642 leaf tx-pkt-per-sec { 643 type uint64; 644 config false; 645 description 646 "Number of packets sent per second."; 647 } 648 leaf rx-pkts { 649 type uint64; 650 config false; 651 description 652 "Total number of received packets."; 653 } 654 leaf rx-bytes { 655 type uint64; 656 config false; 657 description 658 "Total number of received bytes."; 659 } 660 leaf tx-pkts { 661 type uint64; 662 config false; 663 description 664 "Total number of sent packets."; 665 } 666 leaf tx-bytes { 667 type uint64; 668 config false; 669 description 670 "Total number of sent bytes."; 671 } 672 leaf rx-unicast-pkts { 673 type uint64; 674 config false; 675 description 676 "Number of received unicast packets."; 677 } 678 leaf rx-multicast-pkts { 679 type uint64; 680 config false; 681 description 682 "Number of received multicast packets."; 683 } 684 leaf rx-broadcast-pkts { 685 type uint64; 686 config false; 687 description 688 "Number of received broadcast packets."; 689 } 690 leaf drop-unicast-pkts { 691 type uint64; 692 config false; 693 description 694 "Number of discarded unicast packets."; 695 } 696 leaf drop-multicast-pkts { 697 type uint64; 698 config false; 699 description 700 "Number of discarded multicast packets."; 701 } 702 leaf drop-broadcast-pkts { 703 type uint64; 704 config false; 705 description 706 "Number of discarded broadcast packets."; 707 } 708 leaf tx-unicast-pkts { 709 type uint64; 710 config false; 711 description 712 "Number of sent unicast packets."; 713 } 714 leaf tx-multicast-pkts { 715 type uint64; 716 config false; 717 description 718 "Number of sent multicast packets."; 719 } 720 leaf tx-broadcast-pkts { 721 type uint64; 722 config false; 723 description 724 "Number of sent broadcast packets."; 725 } 726 } 727 } 729 } 730 } 731 } 732 container vni-peer-infos { 733 config false; 734 description 735 "The information table of vni members."; 736 container peers { 737 config false; 738 description 739 "The remote nve address in a same VNI."; 740 list peer { 741 key "vni-id source-ip peer-ip"; 742 config false; 743 description 744 "The remote nve address list in a same VNI."; 745 leaf vni-id { 746 type uint32 { 747 range "1..16777215"; 748 } 749 config false; 750 description 751 "The ID of VNI."; 752 } 753 leaf source-ip { 754 type inet:ip-address-no-zone; 755 config false; 756 description 757 "The source address of the NVE interface."; 758 } 759 leaf peer-ip { 760 type inet:ip-address-no-zone; 761 config false; 762 description 763 "The remote NVE address."; 764 } 765 leaf tunnel-type { 766 type peer-type; 767 config false; 768 description 769 "Tunnel type."; 770 } 771 leaf out-vni-id { 772 type uint32 { 773 range "1..16777215"; 774 } 775 config false; 776 description 777 "The ID of the out VNI."; 778 } 779 } 780 } 781 } 783 container tunnel-infos { 784 config false; 785 description 786 "VxLAN tunnel information."; 787 list tunnel-info { 788 key "tunnel-id"; 789 config false; 790 description 791 "VxLAN tunnel information list."; 792 leaf tunnel-id { 793 type uint32 { 794 range "1..4294967295"; 795 } 796 config false; 797 description 798 "The ID of Vxlan tunnel."; 799 } 800 leaf source-ip { 801 type inet:ip-address-no-zone; 802 config false; 803 description 804 "Local NVE interface address."; 805 } 806 leaf peer-ip { 807 type inet:ip-address-no-zone; 808 config false; 809 description 810 "Remote NVE interface address."; 811 } 812 leaf status { 813 type tunnel-status; 814 config false; 815 description 816 "Tunnel status."; 817 } 818 leaf type { 819 type tunnel-type; 820 config false; 821 description 822 "Tunnel type."; 823 } 824 leaf up-time { 825 type string { 826 length "1..10"; 827 } 828 config false; 829 description 830 "Vxlan tunnel up time."; 831 } 832 leaf vrf-name { 833 type leafref { 834 path "/ni:network-instances/ni:network-instance/ni:name"; 835 } 836 default "_public_"; 837 config false; 838 description 839 "The name of VPN instance."; 840 } 841 } 842 } 844 augment "/if:interfaces/if:interface" { 845 description 846 "Augment the interface, NVE as an interface."; 847 when "if:type = 'Nve'"; 848 container nvo3-nve { 849 description 850 "Network virtualization edge."; 851 leaf source-vtep-ip { 852 type inet:ipv4-address-no-zone; 853 description 854 "The source address of the NVE interface."; 855 } 856 leaf source-vtep-ipv6 { 857 type inet:ipv6-address-no-zone; 858 description 859 "The source ipv6 address of the NVE interface."; 860 } 861 leaf bypass-vtep-ip { 862 type inet:ipv4-address-no-zone; 863 description 864 "The source address of bypass VXLAN tunnel."; 865 } 866 container statistics { 867 description 868 "VXLAN Tunnel Traffic Statistical Configuration Table."; 869 list statistic { 870 key "vni-id mode peer-ip direction"; 871 description 872 "VXLAN Tunnel Traffic Statistics Configuration."; 873 leaf vni-id { 874 type uint32 { 875 range "1..16777215"; 876 } 877 description 878 "ID of the VNI."; 879 } 880 leaf mode { 881 type vni-type; 882 description 883 "The type of the NVE interface."; 884 } 885 leaf peer-ip { 886 type inet:ipv4-address-no-zone; 887 description 888 "IP address of the remote VTEP."; 889 } 890 leaf direction { 891 type direction-type; 892 must "(../mode='l3' and ../direction!='bidirection')"; 893 description 894 "Traffic statistics type about the VXLAN tunnel."; 895 } 896 container info { 897 config false; 898 description 899 "Traffic statistics about the peer."; 901 leaf rx-pkts { 902 type uint64; 903 config false; 904 description 905 "Total number of received packets."; 906 } 907 leaf rx-bytes { 908 type uint64; 909 config false; 910 description 911 "Total number of received bytes."; 912 } 913 leaf tx-pkts { 914 type uint64; 915 config false; 916 description 917 "Total number of sent packets."; 918 } 919 leaf tx-bytes { 920 type uint64; 921 config false; 922 description 923 "Total number of sent bytes."; 924 } 925 leaf rx-unicast-pkts { 926 type uint64; 927 config false; 928 description 929 "Number of received unicast packets."; 930 } 931 leaf rx-multicast-pkts { 932 type uint64; 933 config false; 934 description 935 "Number of received multicast packets."; 936 } 937 leaf rx-broadcast-pkts { 938 type uint64; 939 config false; 940 description 941 "Number of received broadcast packets."; 942 } 943 leaf tx-unicast-pkts { 944 type uint64; 945 config false; 946 description 947 "Number of sent unicast packets."; 948 } 949 leaf tx-multicast-pkts { 950 type uint64; 951 config false; 952 description 953 "Number of sent multicast packets."; 954 } 955 leaf tx-broadcast-pkts { 956 type uint64; 957 config false; 958 description 959 "Number of sent broadcast packets."; 960 } 961 leaf drop-unicast-pkts { 962 type uint64; 963 config false; 964 description 965 "Number of discarded unicast packets."; 966 } 967 leaf drop-multicast-pkts { 968 type uint64; 969 config false; 970 description 971 "Number of discarded multicast packets."; 972 } 973 leaf drop-broadcast-pkts { 974 type uint64; 975 config false; 976 description 977 "Number of discarded broadcast packets."; 978 } 979 leaf rx-bits-per-sec { 980 type uint64; 981 config false; 982 description 983 "Number of bits received per second."; 984 } 985 leaf rx-pkt-per-sec { 986 type uint64; 987 config false; 988 description 989 "Number of packets received per second."; 990 } 991 leaf tx-bits-per-sec { 992 type uint64; 993 config false; 994 description 995 "Number of bits sent per second."; 996 } 997 leaf tx-pkt-per-sec { 998 type uint64; 999 config false; 1000 description 1001 "Number of packets sent per second."; 1002 } 1003 } 1004 } 1005 } 1007 } 1008 container nvo3-gateway { 1009 when "/if:interfaces/if:interface/if:type = 'Vbdif'"; 1010 description 1011 "Enable anycast gateway."; 1012 leaf vxlan-anycast-gateway { 1013 type boolean; 1014 default "false"; 1015 description 1016 "Enable vxlan anycast gateway."; 1017 } 1018 } 1019 } 1021 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 1022 "/l3vpn:l3vpn/l3vpn:l3vpn" { 1023 description "Augment for l3vpn instance"; 1024 container vni-lists { 1025 description "Vni list for l3vpn"; 1026 list vni { 1027 key "vni-id"; 1028 description 1029 "Vni for current l3vpn instance"; 1030 leaf vni-id { 1031 type uint32 { 1032 range "1..16777215"; 1033 } 1034 description 1035 "The id of VNI."; 1036 } 1037 } 1038 } 1039 } 1041 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 1042 "/l2vpn:l2vpn" { 1043 description "Augment for l2vpn instance"; 1044 container vni-lists { 1045 description "Vni list for l2vpn"; 1046 list vni { 1047 key "vni-id"; 1048 description 1049 "Vni for current l2vpn instance"; 1050 leaf vni-id { 1051 type uint32 { 1052 range "1..16777215"; 1053 } 1054 description 1055 "The id of VNI."; 1056 } 1057 leaf split-horizon-mode { 1058 type vni-bind-type; 1059 default "hub-mode"; 1060 description 1061 "Split horizon mode."; 1062 } 1063 leaf split-group { 1064 type string { 1065 length "1..31"; 1066 } 1067 description 1068 "Split group name."; 1069 } 1070 } 1071 } 1072 } 1074 rpc reset-vni-instance-statistic { 1075 description 1076 "Clear traffic statistics about the VNI."; 1077 input { 1078 leaf vni-id { 1079 type uint32 { 1080 range "1..16777215"; 1081 } 1082 mandatory true; 1083 description 1084 "ID of the VNI."; 1085 } 1086 } 1087 } 1088 rpc reset-vni-peer-statistic { 1089 description 1090 "Clear traffic statistics about the VXLAN tunnel."; 1091 input { 1092 leaf vni-id { 1093 type uint32 { 1094 range "1..16777215"; 1095 } 1096 mandatory true; 1097 description 1098 "ID of the VNI."; 1099 } 1100 leaf mode { 1101 type vni-type; 1102 mandatory true; 1103 description 1104 "The type of vni memeber statistic."; 1105 } 1106 leaf peer-ip { 1107 type inet:ipv4-address-no-zone; 1108 mandatory true; 1109 description 1110 "IP address of the remote NVE interface."; 1111 } 1112 leaf direction{ 1113 type direction-type; 1114 must "(../mode='l3' and ../direction!='bidirection')"; 1115 mandatory true; 1116 description 1117 "Traffic statistics type about the VXLAN tunnel."; 1118 } 1119 } 1120 } 1121 } 1123 1125 4. Security Considerations 1127 This document raises no new security issues. 1129 5. IANA Considerations 1131 The namespace URI defined in Section 3.3 need be registered in the 1132 IETF XML registry [RFC3688]. 1134 This document need to register the 'ietf-nvo3-base' YANG module in 1135 the YANG Module Names registry [RFC6020]. 1137 6. Contributors 1139 Haibo Wang 1140 Huawei 1141 Email: rainsword.wang@huawei.com 1143 Yuan Gao 1144 Huawei 1145 Email: sean.gao@huawei.com 1147 Gang Yan 1148 Huawei 1149 Email: yangang@huawei.com 1151 Mingui Zhang 1152 Huawei 1153 Email: zhangmingui@huawei.com 1155 Yubao(Bob) Wang 1156 ZTE Corporation 1157 Email: yubao.wang2008@hotmail.com 1159 Ruixue Wang 1160 China Mobile 1161 Email: wangruixue@chinamobile.com 1163 Sijun Weng 1164 China Mobile 1165 Email: wengsijun@chinamobile.com 1167 7. Acknowledgements 1169 Authors would like to thank the comments and suggestions from Tao 1170 Han, Weilian Jiang. 1172 8. References 1174 8.1. Normative References 1176 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1177 Requirement Levels", BCP 14, RFC 2119, March 1997. 1179 [RFC7364] T. Narten, E. Gray, et al, "Problem Statement: Overlays for 1180 Network Virtualization", draft-ietf-nvo3-overlay-problem- 1181 statement, working in progress. 1183 [RFC7365] Marc Lasserre, Florin Balus, et al, "Framework for DC 1184 Network Virtualization", draft-ietf-nvo3-framework, working 1185 in progress. 1187 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1188 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1189 eXtensible Local Area Network (VXLAN): A Framework for 1190 Overlaying Virtualized Layer 2 Networks over Layer 3 1191 Networks", RFC 7348, August 2014. 1193 [I-D.ietf-nvo3-geneve] Gross, J., Ganga, I., and T. Sridhar, "Geneve: 1194 Generic Network Virtualization Encapsulation", draft-ietf- 1195 nvo3-geneve-10 (work in progress), March 2019. 1197 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1198 January 2004. 1200 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1201 the Network Configuration Protocol (NETCONF)", RFC 6020, 1202 October 2010. 1204 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1205 and A. Bierman, Ed., "Network Configuration Protocol 1206 (NETCONF)", RFC 6241, June 2011. 1208 [RFC8014] D. Black, J. Hudson, L. Kreeger, M. Lasserre, T. Narten, An 1209 Architecture for Data-Center Network Virtualization over 1210 Layer 3 (NVO3), RFC8014, December 2016. 1212 8.2. Informative References 1213 [RFC7637] M. Sridharan, A. Greenberg, et al, "NVGRE: Network 1214 Virtualization using Generic Routing Encapsulation", 1215 RFC7637, September 2015. 1216 [I-D.ietf-nvo3-vxlan-gpe] Maino, F., Kreeger, L., and U. Elzur, 1217 "Generic Protocol Extension for VXLAN", draft-ietf-nvo3- 1218 vxlan-gpe-06 (work in progress), April 2018. 1219 [I-D.draft-ietf-bess-evpn-inter-subnet-forwarding] A. Sajassi, S. 1220 Salam, S. Thoria, J. Drake, J. Rabadan, "Integrated Routing 1221 and Bridging in EVPN", draft-ietf-bess-evpn-inter-subnet- 1222 forwarding-08, March 4, 2019. 1223 [RFC8293] A. Ghanwani, L. Dunbar, V. Bannai, M. McBride, R. Krishnan, 1224 "A Framework for Multicast in Network Virtualization over 1225 Layer 3", RFC8293, January 2018. 1227 Author's Addresses 1229 Bing Liu 1230 Huawei Technologies 1231 No. 156 Beiqing Rd. Haidian District, 1232 Beijing 100095 1233 P.R. China 1235 Email: remy.liubing@huawei.com 1237 Ran Chen 1238 ZTE Corporation 1240 Email: chen.ran@zte.com.cn 1242 Fengwei Qin 1243 China Mobile 1244 32 Xuanwumen West Ave, Xicheng District 1245 Beijing, Beijing 100053 1246 China 1248 Email: qinfengwei@chinamobile.com 1250 Reshad Rahman 1251 Cisco Systems 1253 Email: rrahman@cisco.com