idnits 2.17.1 draft-zhang-nvo3-yang-cfg-07.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 24 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 (September 6, 2019) is 1686 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 1186, but no explicit reference was found in the text == Unused Reference: 'RFC7637' is defined on line 1206, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-nvo3-vxlan-gpe' is defined on line 1209, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-bess-evpn-inter-subnet-forwarding' is defined on line 1212, 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: March 9, 2020 September 6, 2019 12 Base YANG Data Model for NVO3 Protocols 13 draft-zhang-nvo3-yang-cfg-07.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 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-07-01.yang" 340 module ietf-nvo3 { 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-04-01 { 370 description 371 "Init revision"; 372 reference 373 ""; 374 } 376 typedef vni-status-type { 377 type enumeration { 378 enum "up" { 379 description 380 "Vni status up."; 381 } 382 enum "down" { 383 description 384 "Vni status down."; 385 } 386 } 387 description 388 "Vni status"; 389 } 391 typedef vni-type { 392 type enumeration { 393 enum "l2" { 394 description 395 "layer 2 mode"; 396 } 397 enum "l3" { 398 description 399 "layer 3 mode"; 400 } 401 } 402 description 403 "vni type"; 404 } 406 typedef peer-type { 407 type enumeration { 408 enum "static" { 409 description 410 "Static."; 411 } 412 enum "dynamic" { 413 description 414 "Dynamic."; 415 } 416 } 417 description 418 "Peer type"; 419 } 421 typedef tunnel-status { 422 type enumeration { 423 enum "up" { 424 description 425 "The tunnel is up."; 426 } 427 enum "down" { 428 description 429 "The tunnel is down."; 430 } 431 } 432 description 433 "Tunnel status"; 434 } 435 typedef tunnel-type { 436 type enumeration { 437 enum "dynamic" { 438 description 439 "The tunnel is dynamic."; 440 } 441 enum "static" { 442 description 443 "The tunnel is static."; 444 } 445 enum "invalid" { 446 description 447 "The tunnel is invalid."; 448 } 449 } 450 description 451 "Tunnel type"; 452 } 454 typedef direction-type { 455 type enumeration { 456 enum "inbound" { 457 description 458 "Inbound."; 459 } 460 enum "outbound" { 461 description 462 "Outbound."; 463 } 464 enum "bidirection" { 465 description 466 "Bidirection."; 467 } 468 } 469 description 470 "Bound direction"; 471 } 473 typedef vni-bind-type { 474 type enumeration { 475 enum "hub-mode" { 476 description 477 "Hub mode."; 478 } 479 enum "spoke-mode" { 480 description 481 "Spoke mode."; 482 } 483 } 484 description 485 "bdBindVniType"; 486 } 488 container nvo3 { 489 description 490 "Management of NVO3."; 492 container vni-instances { 493 description 494 "The confiuration and information table of the VNI."; 495 list vni-instance { 496 key "vni-id"; 497 must "(/if:interfaces/if:interface[if:name = current()/source_nve]/if:type = 'Nve')"; 498 description 499 "The confiuration and information of the VNI."; 500 leaf vni-id { 501 type uint32 { 502 range "1..16777215"; 503 } 504 description 505 "The id of VNI."; 506 } 507 leaf vni-mode { 508 type enumeration { 509 enum "Local" { 510 description 511 "Local mode"; 512 } 513 enum "Global" { 514 description 515 "Global mode"; 516 } 517 } 518 description 519 "The mode of the VNI instance."; 520 } 521 leaf source-nve { 522 type if:interface-ref; 523 mandatory true; 524 description 525 "The name of the nve interface ."; 526 } 527 leaf protocol-bgp { 528 type boolean; 529 default "false"; 530 description 531 "Whether use bgp as vxlan's protocol."; 532 } 533 leaf status { 534 type vni-status-type; 535 config false; 536 description 537 "The status of the VNI."; 538 } 539 container static-ipv4-peers { 540 description 541 "The remote NVE address table in a same VNI."; 542 list static-peer { 543 key "peer-ip"; 544 description 545 "The remote NVE address in a same VNI."; 546 leaf peer-ip { 547 type inet:ipv4-address-no-zone; 548 description 549 "The address of the NVE."; 550 } 551 leaf out-vni-id { 552 type uint32 { 553 range "1..16777215"; 554 } 555 description 556 "The ID of the out VNI. Do not support separate deletion."; 557 } 558 } 559 } 560 container static-ipv6-peers { 561 description 562 "The remote NVE ipv6 address table in a same VNI."; 563 list static-ipv6-peer { 564 key "peer-ip"; 565 description 566 "The remote NVE ipv6 address in a same VNI."; 567 leaf peer-ip { 568 type inet:ipv6-address-no-zone; 569 description 570 "The ipv6 address of the NVE."; 571 } 572 } 573 } 574 container flood-proxys { 575 description 576 "The flood proxys for this VNI"; 577 list flood-proxy { 578 key "peer-ip"; 579 leaf peer-ip { 580 type inet:ipv4-address-no-zone; 581 description 582 "peer ip address"; 583 } 584 description 585 "List of the flood proxys"; 586 } 587 } 588 container mcast-groups { 589 description 590 "The mcast address table."; 591 list mcast-group { 592 key "mcast-ip"; 593 description 594 "The mcast address."; 595 leaf mcast-ip { 596 type inet:ipv4-address-no-zone; 597 description 598 "The mcast address of NVO3."; 599 } 600 } 601 } 602 container statistic { 603 description 604 "The VNI member in a same NVE."; 605 leaf statistic-enable { 606 type boolean; 607 default "false"; 608 description 609 "To determine whether to enable the statistics for a VNI."; 611 } 612 container statistic-info { 613 config false; 614 description 615 "The vni instance traffic statistics information."; 616 leaf rx-bits-per-sec { 617 type uint64; 618 config false; 619 description 620 "Number of bits received per second."; 621 } 622 leaf rx-pkt-per-sec { 623 type uint64; 624 config false; 625 description 626 "Number of packets received per second."; 627 } 628 leaf tx-bits-per-sec { 629 type uint64; 630 config false; 631 description 632 "Number of bits sent per second."; 633 } 634 leaf tx-pkt-per-sec { 635 type uint64; 636 config false; 637 description 638 "Number of packets sent per second."; 639 } 640 leaf rx-pkts { 641 type uint64; 642 config false; 643 description 644 "Total number of received packets."; 645 } 646 leaf rx-bytes { 647 type uint64; 648 config false; 649 description 650 "Total number of received bytes."; 651 } 652 leaf tx-pkts { 653 type uint64; 654 config false; 655 description 656 "Total number of sent packets."; 657 } 658 leaf tx-bytes { 659 type uint64; 660 config false; 661 description 662 "Total number of sent bytes."; 663 } 664 leaf rx-unicast-pkts { 665 type uint64; 666 config false; 667 description 668 "Number of received unicast packets."; 669 } 670 leaf rx-multicast-pkts { 671 type uint64; 672 config false; 673 description 674 "Number of received multicast packets."; 675 } 676 leaf rx-broadcast-pkts { 677 type uint64; 678 config false; 679 description 680 "Number of received broadcast packets."; 681 } 682 leaf drop-unicast-pkts { 683 type uint64; 684 config false; 685 description 686 "Number of discarded unicast packets."; 687 } 688 leaf drop-multicast-pkts { 689 type uint64; 690 config false; 691 description 692 "Number of discarded multicast packets."; 693 } 694 leaf drop-broadcast-pkts { 695 type uint64; 696 config false; 697 description 698 "Number of discarded broadcast packets."; 699 } 700 leaf tx-unicast-pkts { 701 type uint64; 702 config false; 703 description 704 "Number of sent unicast packets."; 705 } 706 leaf tx-multicast-pkts { 707 type uint64; 708 config false; 709 description 710 "Number of sent multicast packets."; 711 } 712 leaf tx-broadcast-pkts { 713 type uint64; 714 config false; 715 description 716 "Number of sent broadcast packets."; 717 } 718 } 719 } 721 } 722 } 723 } 724 container vni-peer-infos { 725 config false; 726 description 727 "The information table of vni members."; 728 container peers { 729 config false; 730 description 731 "The remote nve address in a same VNI."; 732 list peer { 733 key "vni-id source-ip peer-ip"; 734 config false; 735 description 736 "The remote nve address list in a same VNI."; 737 leaf vni-id { 738 type uint32 { 739 range "1..16777215"; 740 } 741 config false; 742 description 743 "The ID of VNI."; 744 } 745 leaf source-ip { 746 type inet:ip-address-no-zone; 747 config false; 748 description 749 "The source address of the NVE interface."; 750 } 751 leaf peer-ip { 752 type inet:ip-address-no-zone; 753 config false; 754 description 755 "The remote NVE address."; 756 } 757 leaf tunnel-type { 758 type peer-type; 759 config false; 760 description 761 "Tunnel type."; 762 } 763 leaf out-vni-id { 764 type uint32 { 765 range "1..16777215"; 766 } 767 config false; 768 description 769 "The ID of the out VNI."; 770 } 771 } 772 } 773 } 775 container tunnel-infos { 776 config false; 777 description 778 "VxLAN tunnel information."; 779 list tunnel-info { 780 key "tunnel-id"; 781 config false; 782 description 783 "VxLAN tunnel information list."; 784 leaf tunnel-id { 785 type uint32 { 786 range "1..4294967295"; 787 } 788 config false; 789 description 790 "The ID of Vxlan tunnel."; 791 } 792 leaf source-ip { 793 type inet:ip-address-no-zone; 794 config false; 795 description 796 "Local NVE interface address."; 797 } 798 leaf peer-ip { 799 type inet:ip-address-no-zone; 800 config false; 801 description 802 "Remote NVE interface address."; 804 } 805 leaf status { 806 type tunnel-status; 807 config false; 808 description 809 "Tunnel status."; 810 } 811 leaf type { 812 type tunnel-type; 813 config false; 814 description 815 "Tunnel type."; 816 } 817 leaf up-time { 818 type string { 819 length "1..10"; 820 } 821 config false; 822 description 823 "Vxlan tunnel up time."; 824 } 825 leaf vrf-name { 826 type leafref { 827 path "/ni:network-instances/ni:network-instance/ni:name"; 828 } 829 default "_public_"; 830 config false; 831 description 832 "The name of VPN instance."; 833 } 834 } 835 } 837 augment "/if:interfaces/if:interface" { 838 description 839 "Augment the interface, NVE as an interface."; 840 container nvo3-nve { 841 when "if:interfaces/if:interface/if:type = 'Nve'"; 842 description 843 "Network virtualization edge."; 844 leaf source-vtep-ip { 845 type inet:ipv4-address-no-zone; 846 description 847 "The source address of the NVE interface."; 848 } 849 leaf source-vtep-ipv6 { 850 type inet:ipv6-address-no-zone; 851 description 852 "The source ipv6 address of the NVE interface."; 853 } 854 leaf bypass-vtep-ip { 855 type inet:ipv4-address-no-zone; 856 description 857 "The source address of bypass VXLAN tunnel."; 858 } 859 container statistics { 860 description 861 "VXLAN Tunnel Traffic Statistical Configuration Table."; 862 list statistic { 863 key "vni-id mode peer-ip direction"; 864 description 865 "VXLAN Tunnel Traffic Statistics Configuration."; 866 leaf vni-id { 867 type uint32 { 868 range "1..16777215"; 869 } 870 description 871 "ID of the VNI."; 872 } 873 leaf mode { 874 type vni-type; 875 description 876 "The type of the NVE interface."; 877 } 878 leaf peer-ip { 879 type inet:ipv4-address-no-zone; 880 description 881 "IP address of the remote VTEP."; 882 } 883 leaf direction { 884 type direction-type; 885 must "(./mode='l3' and ./bound!='bidirection')"; 886 description 887 "Traffic statistics type about the VXLAN tunnel."; 888 } 889 container info { 890 config false; 891 description 892 "Traffic statistics about the peer."; 893 leaf rx-pkts { 894 type uint64; 895 config false; 896 description 897 "Total number of received packets."; 898 } 899 leaf rx-bytes { 900 type uint64; 901 config false; 902 description 903 "Total number of received bytes."; 904 } 905 leaf tx-pkts { 906 type uint64; 907 config false; 908 description 909 "Total number of sent packets."; 910 } 911 leaf tx-bytes { 912 type uint64; 913 config false; 914 description 915 "Total number of sent bytes."; 916 } 917 leaf rx-unicast-pkts { 918 type uint64; 919 config false; 920 description 921 "Number of received unicast packets."; 922 } 923 leaf rx-multicast-pkts { 924 type uint64; 925 config false; 926 description 927 "Number of received multicast packets."; 928 } 929 leaf rx-broadcast-pkts { 930 type uint64; 931 config false; 932 description 933 "Number of received broadcast packets."; 934 } 935 leaf tx-unicast-pkts { 936 type uint64; 937 config false; 938 description 939 "Number of sent unicast packets."; 940 } 941 leaf tx-multicast-pkts { 942 type uint64; 943 config false; 944 description 945 "Number of sent multicast packets."; 946 } 947 leaf tx-broadcast-pkts { 948 type uint64; 949 config false; 950 description 951 "Number of sent broadcast packets."; 952 } 953 leaf drop-unicast-pkts { 954 type uint64; 955 config false; 956 description 957 "Number of discarded unicast packets."; 958 } 959 leaf drop-multicast-pkts { 960 type uint64; 961 config false; 962 description 963 "Number of discarded multicast packets."; 964 } 965 leaf drop-broadcast-pkts { 966 type uint64; 967 config false; 968 description 969 "Number of discarded broadcast packets."; 970 } 971 leaf rx-bits-per-sec { 972 type uint64; 973 config false; 974 description 975 "Number of bits received per second."; 976 } 977 leaf rx-pkt-per-sec { 978 type uint64; 979 config false; 980 description 981 "Number of packets received per second."; 982 } 983 leaf tx-bits-per-sec { 984 type uint64; 985 config false; 986 description 987 "Number of bits sent per second."; 988 } 989 leaf tx-pkt-per-sec { 990 type uint64; 991 config false; 992 description 993 "Number of packets sent per second."; 994 } 995 } 997 } 998 } 1000 } 1001 container nvo3-gateway { 1002 when "if:interfaces/if:interface/if:type = 'Vbdif'"; 1003 description 1004 "Enable anycast gateway."; 1005 leaf vxlan-anycast-gateway { 1006 type boolean; 1007 default "false"; 1008 description 1009 "Enable vxlan anycast gateway."; 1010 } 1011 } 1012 } 1014 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 1015 "/l3vpn:l3vpn/l3vpn:l3vpn" { 1016 description "Augment for l3vpn instance"; 1017 container vni-lists { 1018 description "Vni list for l3vpn"; 1019 list vni { 1020 key "vni-id"; 1021 description 1022 "Vni for current l3vpn instance"; 1023 leaf vni-id { 1024 type uint32 { 1025 range "1..16777215"; 1026 } 1027 description 1028 "The id of VNI."; 1029 } 1030 } 1031 } 1032 } 1034 augment "/ni:network-instances/ni:network-instance/ni:ni-type" + 1035 "/l2vpn:l2vpn" { 1036 description "Augment for l2vpn instance"; 1037 container vni-lists { 1038 description "Vni list for l2vpn"; 1039 list vni { 1040 key "vni-id"; 1041 description 1042 "Vni for current l2vpn instance"; 1043 leaf vni-id { 1044 type uint32 { 1045 range "1..16777215"; 1046 } 1047 description 1048 "The id of VNI."; 1049 } 1050 leaf split-horizon-mode { 1051 type vni-bind-type; 1052 default "hub-mode"; 1053 description 1054 "Split horizon mode."; 1055 } 1056 leaf split-group { 1057 type string { 1058 length "1..31"; 1059 } 1060 description 1061 "Split group name."; 1062 } 1063 } 1064 } 1065 } 1067 rpc reset-vni-instance-statistic { 1068 description 1069 "Clear traffic statistics about the VNI."; 1070 input { 1071 leaf vni-id { 1072 type uint32 { 1073 range "1..16777215"; 1074 } 1075 mandatory true; 1076 description 1077 "ID of the VNI."; 1078 } 1079 } 1080 } 1081 rpc reset-vni-peer-statistic { 1082 description 1083 "Clear traffic statistics about the VXLAN tunnel."; 1084 input { 1085 leaf vni-id { 1086 type uint32 { 1087 range "1..16777215"; 1088 } 1089 mandatory true; 1090 description 1091 "ID of the VNI."; 1092 } 1093 leaf mode { 1094 type vni-type; 1095 mandatory true; 1096 description 1097 "The type of vni memeber statistic."; 1098 } 1099 leaf peer-ip { 1100 type inet:ipv4-address-no-zone; 1101 mandatory true; 1102 description 1103 "IP address of the remote NVE interface."; 1104 } 1105 leaf direction{ 1106 type direction-type; 1107 must "(./mode='mode-l3' and ./bound!='bidirection')"; 1108 mandatory true; 1109 description 1110 "Traffic statistics type about the VXLAN tunnel."; 1111 } 1112 } 1113 } 1114 } 1116 1118 4. Security Considerations 1120 This document raises no new security issues. 1122 5. IANA Considerations 1124 The namespace URI defined in Section 3.3 need be registered in the 1125 IETF XML registry [RFC3688]. 1127 This document need to register the 'ietf-nvo3-base' YANG module in 1128 the YANG Module Names registry [RFC6020]. 1130 6. Contributors 1132 Haibo Wang 1133 Huawei 1134 Email: rainsword.wang@huawei.com 1136 Yuan Gao 1137 Huawei 1138 Email: sean.gao@huawei.com 1140 Gang Yan 1141 Huawei 1142 Email: yangang@huawei.com 1144 Mingui Zhang 1145 Huawei 1146 Email: zhangmingui@huawei.com 1148 Yubao(Bob) Wang 1149 ZTE Corporation 1150 Email: yubao.wang2008@hotmail.com 1152 Ruixue Wang 1153 China Mobile 1154 Email: wangruixue@chinamobile.com 1156 Sijun Weng 1157 China Mobile 1158 Email: wengsijun@chinamobile.com 1160 7. Acknowledgements 1162 Authors would like to thank the comments and suggestions from Tao 1163 Han, Weilian Jiang. 1165 8. References 1167 8.1. Normative References 1169 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1170 Requirement Levels", BCP 14, RFC 2119, March 1997. 1172 [RFC7364] T. Narten, E. Gray, et al, "Problem Statement: Overlays for 1173 Network Virtualization", draft-ietf-nvo3-overlay-problem- 1174 statement, working in progress. 1176 [RFC7365] Marc Lasserre, Florin Balus, et al, "Framework for DC 1177 Network Virtualization", draft-ietf-nvo3-framework, working 1178 in progress. 1180 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1181 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1182 eXtensible Local Area Network (VXLAN): A Framework for 1183 Overlaying Virtualized Layer 2 Networks over Layer 3 1184 Networks", RFC 7348, August 2014. 1186 [I-D.ietf-nvo3-geneve] Gross, J., Ganga, I., and T. Sridhar, "Geneve: 1187 Generic Network Virtualization Encapsulation", draft-ietf- 1188 nvo3-geneve-10 (work in progress), March 2019. 1190 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1191 January 2004. 1193 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1194 the Network Configuration Protocol (NETCONF)", RFC 6020, 1195 October 2010. 1197 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1198 and A. Bierman, Ed., "Network Configuration Protocol 1199 (NETCONF)", RFC 6241, June 2011. 1201 [RFC8014] D. Black, J. Hudson, L. Kreeger, M. Lasserre, T. Narten, An 1202 Architecture for Data-Center Network Virtualization over 1203 Layer 3 (NVO3), RFC8014, December 2016. 1205 8.2. Informative References 1206 [RFC7637] M. Sridharan, A. Greenberg, et al, "NVGRE: Network 1207 Virtualization using Generic Routing Encapsulation", 1208 RFC7637, September 2015. 1209 [I-D.ietf-nvo3-vxlan-gpe] Maino, F., Kreeger, L., and U. Elzur, 1210 "Generic Protocol Extension for VXLAN", draft-ietf-nvo3- 1211 vxlan-gpe-06 (work in progress), April 2018. 1212 [I-D.draft-ietf-bess-evpn-inter-subnet-forwarding] A. Sajassi, S. 1213 Salam, S. Thoria, J. Drake, J. Rabadan, "Integrated Routing 1214 and Bridging in EVPN", draft-ietf-bess-evpn-inter-subnet- 1215 forwarding-08, March 4, 2019. 1216 [RFC8293] A. Ghanwani, L. Dunbar, V. Bannai, M. McBride, R. Krishnan, 1217 "A Framework for Multicast in Network Virtualization over 1218 Layer 3", RFC8293, January 2018. 1220 Author's Addresses 1222 Bing Liu 1223 Huawei Technologies 1224 No. 156 Beiqing Rd. Haidian District, 1225 Beijing 100095 1226 P.R. China 1228 Email: remy.liubing@huawei.com 1230 Ran Chen 1231 ZTE Corporation 1233 Email: chen.ran@zte.com.cn 1235 Fengwei Qin 1236 China Mobile 1237 32 Xuanwumen West Ave, Xicheng District 1238 Beijing, Beijing 100053 1239 China 1241 Email: qinfengwei@chinamobile.com 1243 Reshad Rahman 1244 Cisco Systems 1246 Email: rrahman@cisco.com