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