draft-ietf-nvo3-yang-cfg-02.txt   draft-ietf-nvo3-yang-cfg-03.txt 
INTERNET-DRAFT B. Liu, Ed. NVO3 B. Liu, Ed.
Intended Status: Standards Track Huawei Internet-Draft Huawei Technologies
R. Chen Intended status: Standards Track R. Chen
ZTE Expires: March 3, 2021 ZTE Corporation
F. Qin F. Qin
China Mobile China Mobile
R. Rahman R. Rahman
Cisco Cisco Systems
Expires: September 10, 2020 March 9, 2020 August 30, 2020
Base YANG Data Model for NVO3 Protocols Base YANG Data Model for NVO3 Protocols
draft-ietf-nvo3-yang-cfg-02.txt draft-ietf-nvo3-yang-cfg-03
Abstract Abstract
This document describes the base YANG data model that can be used by This document describes the base YANG data model that can be used by
operators to configure and manage Network Virtualization Overlay operators to configure and manage Network Virtualization Overlay
protocols. The model is focused on the common configuration protocols. The model is focused on the common configuration
requirement of various encapsulation options, such as VXLAN, NVGRE, requirement of various encapsulation options, such as VXLAN, NVGRE,
GENEVE and VXLAN-GPE. Using this model as a starting point, GENEVE and VXLAN-GPE. Using this model as a starting point,
incremental work can be done to satisfy the requirement of a specific incremental work can be done to satisfy the requirement of a specific
encapsulation. encapsulation.
Status of this Memo Status of This Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as working documents as Internet-Drafts. The list of current Internet-
Internet-Drafts. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This Internet-Draft will expire on March 3, 2021.
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Copyright and License Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Acronyms and Terminology . . . . . . . . . . . . . . . . . . . 3 2. Acronyms and Terminology . . . . . . . . . . . . . . . . . . 3
2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
3. The YANG Data Model for NVO3 . . . . . . . . . . . . . . . . . 3 3. The YANG Data Model for NVO3 . . . . . . . . . . . . . . . . 3
3.1 Mapping to the NVO3 architecture . . . . . . . . . . . . . . 4 3.1. Mapping to the NVO3 architecture . . . . . . . . . . . . 3
3.2. The Configuration Parameters . . . . . . . . . . . . . . . 4 3.2. The Configuration Parameters . . . . . . . . . . . . . . 4
3.2.1. NVE as an interface . . . . . . . . . . . . . . . . . . 4 3.2.1. NVE as an interface . . . . . . . . . . . . . . . . . 4
3.2.2. Virtual Network Instance . . . . . . . . . . . . . . . 5 3.2.2. Virtual Network Instance . . . . . . . . . . . . . . 4
3.2.3. BUM Mode . . . . . . . . . . . . . . . . . . . . . . . 5 3.2.3. BUM Mode . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Statistics . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3. Statistics . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Model Structure . . . . . . . . . . . . . . . . . . . . . . 5 3.4. Model Structure . . . . . . . . . . . . . . . . . . . . . 5
3.4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . 8 3.5. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 8
4. Security Considerations . . . . . . . . . . . . . . . . . . . . 24 4. Security Considerations . . . . . . . . . . . . . . . . . . . 22
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 24 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 24 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 22
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.1. Normative References . . . . . . . . . . . . . . . . . . 23
8.1. Normative References . . . . . . . . . . . . . . . . . . . 25 7.2. Informative References . . . . . . . . . . . . . . . . . 24
8.2. Informative References . . . . . . . . . . . . . . . . . . 26 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25
Author's Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27
1. Introduction 1. Introduction
Network Virtualization Overlays (NVO3), such as VXLAN, NVGRE, GENEVE Network Virtualization Overlays (NVO3), such as VXLAN [RFC7348],
and VXLAN-GPE, enable network virtualization for data center networks NVGRE [RFC7637], GENEVE [I-D.ietf-nvo3-geneve] and VXLAN-GPE
environment that assumes an IP-based underlay. [I-D.ietf-nvo3-vxlan-gpe], enable network virtualization for data
center networks environment that assumes an IP-based underlay.
YANG [RFC6020] is a data definition language that was introduced to YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. This document devices to be managed using NETCONF [RFC6241]. This document
specifies a YANG data model that can be used to configure and manage specifies a YANG data model that can be used to configure and manage
NVO3 protocols. The model covers the configuration of NVO3 instances NVO3 protocols. The model covers the configuration of NVO3 instances
as well as their operation states, which are the basic common as well as their operation states, which are the basic common
requirements of the different tunnel encapsulations. Thus it is requirements of the different tunnel encapsulations. Thus it is
called "the base model for NVO3" in this document. called "the base model for NVO3" in this document.
As the Network Virtualization Overlay evolves, newly defined tunnel As the Network Virtualization Overlay evolves, newly defined tunnel
encapsulation may require extra configuration. For example, GENEVE encapsulation may require extra configuration. For example, GENEVE
may require configuration of TLVs at the NVE. The base module can be may require configuration of TLVs at the NVE. The base module can be
augmented to accommodate these new solutions. augmented to accommodate these new solutions.
2. Acronyms and Terminology 2. Acronyms and Terminology
2.1. Acronyms 2.1. Acronyms
NVO3: Network Virtualization Overlays NVO: Network Virtualization Overlays
VNI: Virtual Network Instance
BUM: Broadcast, Unknown Unicast, Multicast traffic
2.2. Terminology VNI: Virtual Network Instance
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", BUM: Broadcast, Unknown Unicast, Multicast traffic
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Familiarity with [RFC7348], [RFC7364], [RFC7365] and [RFC8014] is 2.2. Terminology
assumed in this document.
3. The YANG Data Model for NVO3 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",
and "OPTIONAL" in this document are to be interpreted as described in
BCP14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Familiarity with [RFC7348], [RFC7348], [RFC7364], [RFC7365] and
[RFC8014] is assumed in this document.
3. The YANG Data Model for NVO3
The NVO3 base YANG model defined in this document is used to The NVO3 base YANG model defined in this document is used to
configure the NVEs. It is divided into three containers. The first configure the NVEs. It is divided into three containers. The first
container contains the configuration of the virtual network container contains the configuration of the virtual network
instances, e.g. the VNI, the NVE that the instance is mounted, the instances, e.g. the VNI, the NVE that the instance is mounted, the
peer NVEs which can be determined dynamically via a control plane or peer NVEs which can be determined dynamically via a control plane or
given statically, and the statistical states of the instance. The given statically, and the statistical states of the instance. The
other two containers are separately the statistical states of the other two containers are separately the statistical states of the
peer NVEs and the tunnels. peer NVEs and the tunnels.
3.1 Mapping to the NVO3 architecture 3.1. Mapping to the NVO3 architecture
The NVO3 base YANG model is defined according to the NVO3 The NVO3 base YANG model is defined according to the NVO3
architecture [RFC8014]. As shown in Figure 3.1, the reference model architecture [RFC8014]. As shown in Figure 1, the reference model of
of the NVE defined in [RFC8014], multiple instances can be mounted the NVE defined in [RFC8014], multiple instances can be mounted under
under a NVE. The key of the instance is VNI. The source NVE of the a NVE. The key of the instance is VNI. The source NVE of the
instance is the NVE configured by the base YANG. An instance can have instance is the NVE configured by the base YANG. An instance can
several peer NVEs. A NVO3 tunnel can be determined by the VNI, the have several peer NVEs. A NVO3 tunnel can be determined by the VNI,
source NVE and the peer NVE. The tunnel can be built statically by the source NVE and the peer NVE. The tunnel can be built statically
manually indicate the addresses of the peer NVEs, or dynamically via by manually indicate the addresses of the peer NVEs, or dynamically
a control plane, e.g. EVPN [RFC8365]. An enabler is defined in the via a control plane, e.g. EVPN [RFC8365]. An enabler is defined in
NVO3 base YANG to choose from these two modes. the NVO3 base YANG to choose from these two modes.
| Data-Center Network (IP) | +-----------------------------------------+
| | | Data-Center Network (IP) |
+-----------------------------------------+ +-----------------------------------------+
| | | |
| Tunnel Overlay | | Tunnel Overlay |
+------------+---------+ +---------+------------+ +------------+---------+ +---------+------------+
| +----------+-------+ | | +-------+----------+ | | +----------+-------+ | | +-------+----------+ |
| | Overlay Module | | | | Overlay Module | | | | Overlay Module | | | | Overlay Module | |
| +---------+--------+ | | +---------+--------+ | | +---------+--------+ | | +---------+--------+ |
| | | | | | | | | | | |
NVE1 | | | | | | NVE2 NVE1 | | | | | | NVE2
| +--------+-------+ | | +--------+-------+ | | +--------+-------+ | | +--------+-------+ |
| | VNI1 VNI2 | | | | VNI1 VNI2 | | | | VNI1 VNI2 | | | | VNI1 VNI2 | |
| +-+----------+---+ | | +-+-----------+--+ | | +-+----------+---+ | | +-+-----------+--+ |
| | VAP1 | VAP2 | | | VAP1 | VAP2| | | VAP1 | VAP2 | | | VAP1 | VAP2|
+----+----------+------+ +----+-----------+-----+ +----+----------+------+ +----+-----------+-----+
| | | | | | | |
| | | | | | | |
| | | /| | | | /|
-------+---------+-------------------+---------/-+------- -------+----------+-------------------+---------/-+-------
| | Tenant | / | | | Tenant | / |
TSI1 |TSI2 | TSI3 TSI1 TSI2/ TSI3 TSI1 |TSI2 | TSI3 TSI1 TSI2/ TSI3
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
|TS1| |TS2| |TS3| |TS4| |TS5| |TS6| |TS1| |TS2| |TS3| |TS4| |TS5| |TS6|
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
Figure 3.1. NVE Reference model in RFC 8014
3.2. The Configuration Parameters Figure 1: NVE Reference model in RFC8014
3.2.1. NVE as an interface 3.2. The Configuration Parameters
3.2.1. NVE as an interface
A NVE in the NVO3 base YANG is defined via augmenting the IETF A NVE in the NVO3 base YANG is defined via augmenting the IETF
interface YANG. If anycast gateway is enabled, the source VTEP interface YANG. If anycast gateway is enabled, the source VTEP
address is the address of the anycast gateway, and a bypass address address is the address of the anycast gateway, and a bypass address
is used to uniquely identify the NVE. Otherwise, the source VTEP is used to uniquely identify the NVE. Otherwise, the source VTEP
address is the NVE interface's own IP address. address is the NVE interface's own IP address.
3.2.2. Virtual Network Instance 3.2.2. Virtual Network Instance
A Virtual Network Instance ('VNI') is a specific VN instance on an A Virtual Network Instance ('VNI') is a specific VN instance on an
NVE [RFC7365]. At each NVE, a Tenant System is connect to VNIs NVE [RFC7365]. At each NVE, a Tenant System is connect to VNIs
through Virtual Access Points (VAP). VAPs can be physical ports or through Virtual Access Points (VAP). VAPs can be physical ports or
virtual ports identified by the bridge domain Identifier ('bdId'). virtual ports identified by the bridge domain Identifier ('bdId').
The mapping between VNI and bdId is managed by the operator. The mapping between VNI and bdId is managed by the operator.
As defined in [draft-ietf-bess-evpn-inter-subnet-forwarding], a As defined in [I-D.ietf-bess-evpn-inter-subnet-forwarding], a tenant
tenant can have multiple bridge domains, and each domain has its own can have multiple bridge domains, and each domain has its own VNI.
VNI. Thus these VNIs are used as L2VPN. Besides, a dedicated VNI can Thus these VNIs are used as L2VPN. Besides, a dedicated VNI can be
be used for routing between the bridge domains, i.e. used as L3VPN. used for routing between the bridge domains, i.e. used as L3VPN. The
The mapping relationship between VNI and L2VPN (respectively, L3VPN) mapping relationship between VNI and L2VPN (respectively, L3VPN) is
is given by augmenting the IETF YANG of L2VPN (respectively L3VPN). given by augmenting the IETF YANG of L2VPN (respectively L3VPN).
3.2.3. BUM Mode 3.2.3. BUM Mode
An NVE SHOULD support either ingress replication, or multicast proxy, An NVE SHOULD support either ingress replication, or multicast proxy,
or point to multipoint tunnels on a per-VNI basis. It is possible or point to multipoint tunnels on a per-VNI basis. It is possible
that both modes be used simultaneously in one NVO3 network by that both modes be used simultaneously in one NVO3 network by
different NVEs. different NVEs.
If ingress replication is used, the receiver addresses are listed in If ingress replication is used, the receiver addresses are listed in
'peers'. If multicast proxy [RFC8293] is used, the proxy's address is 'peers'. If multicast proxy [RFC8293] is used, the proxy's address
given in "flood-proxy". If the choice is point to multipoint tunnels, is given in "flood-proxy". If the choice is point to multipoint
the multicast address is given as 'multiAddr'. tunnels, the multicast address is given as 'multiAddr'.
3.3. Statistics 3.3. Statistics
Operators can determine whether a NVE should gather statistic values Operators can determine whether a NVE should gather statistic values
on a per-VNI basis. An enabler is contained in the 'static' list as on a per-VNI basis. An enabler is contained in the 'static' list as
'statistic-enable' leaf. If the gathering for a VNI is enabled, the 'statistic-enable' leaf. If the gathering for a VNI is enabled, the
statistical information about the local NVEs, the remote NVEs, the statistical information about the local NVEs, the remote NVEs, the
flows and the MAC addresses will be collected by the NVEs in this flows and the MAC addresses will be collected by the NVEs in this
VNI. VNI.
3.3. Model Structure 3.4. Model Structure
module: ietf-nvo3-base
+--rw nvo3
| +--rw vni-instances
| +--rw vni-instance* [vni-id]
| +--rw vni-id uint32
| +--rw vni-mode enumeration
| +--rw source-nve if:interface-ref
| +--rw protocol-bgp? boolean
| +--ro status? vni-status-type
| +--rw static-ipv4-peers
| | +--rw static-peer* [peer-ip]
| | +--rw peer-ip inet:ipv4-address-no-zone
| | +--rw out-vni-id? uint32
| +--rw static-ipv6-peers
| | +--rw static-ipv6-peer* [peer-ip]
| | +--rw peer-ip inet:ipv6-address-no-zone
| +--rw flood-proxys
| | +--rw flood-proxy* [peer-ip]
| | +--rw peer-ip inet:ipv4-address-no-zone
| +--rw mcast-groups
| | +--rw mcast-group* [mcast-ip]
| | +--rw mcast-ip inet:ipv4-address-no-zone
| +--rw statistic
| +--rw statistic-enable? boolean
| +--ro statistic-info
| +--ro rx-bits-per-sec? uint64
| +--ro rx-pkt-per-sec? uint64
| +--ro tx-bits-per-sec? uint64
| +--ro tx-pkt-per-sec? uint64
| +--ro rx-pkts? uint64
| +--ro rx-bytes? uint64
| +--ro tx-pkts? uint64
| +--ro tx-bytes? uint64
| +--ro rx-unicast-pkts? uint64
| +--ro rx-multicast-pkts? uint64
| +--ro rx-broadcast-pkts? uint64
| +--ro drop-unicast-pkts? uint64
| +--ro drop-multicast-pkts? uint64
| +--ro drop-broadcast-pkts? uint64
| +--ro tx-unicast-pkts? uint64
| +--ro tx-multicast-pkts? uint64
| +--ro tx-broadcast-pkts? uint64
+--ro vni-peer-infos
| +--ro peers
| +--ro peer* [vni-id source-ip peer-ip]
| +--ro vni-id uint32
| +--ro source-ip inet:ip-address-no-zone
| +--ro peer-ip inet:ip-address-no-zone
| +--ro tunnel-type? peer-type
| +--ro out-vni-id? uint32
+--ro tunnel-infos
+--ro tunnel-info* [tunnel-id]
+--ro tunnel-id uint32
+--ro source-ip? inet:ip-address-no-zone
+--ro peer-ip? inet:ip-address-no-zone
+--ro status? tunnel-status
+--ro type? tunnel-type
+--ro up-time? string
+--ro vrf-name? -> /ni:network-instances/network-instance/name
augment /if:interfaces/if:interface: module: ietf-nvo3-base
+--rw nvo3-nve +--rw nvo3
+--rw nvo3-config | +--rw vni-instances
+--rw source-vtep-ip? inet:ipv4-address-no-zone | +--rw vni-instance* [vni-id]
+--rw source-vtep-ipv6? inet:ipv6-address-no-zone | +--rw vni-id uint32
+--rw bypass-vtep-ip? inet:ipv4-address-no-zone | +--rw vni-mode? vni-mode
+--rw statistics | +--rw source-nve if:interface-ref
+--rw statistic* [vni-id peer-ip direction] | +--rw protocol-bgp? boolean
+--rw vni-id uint32 | +--ro status? vni-status-type
+--rw mode vni-type | +--rw static-ipv4-peers
+--rw peer-ip inet:ipv4-address-no-zone | | +--rw static-peer* [peer-ip]
+--rw direction direction-type | | +--rw peer-ip inet:ipv4-address-no-zone
+--ro info | | +--rw out-vni-id? uint32
+--ro rx-pkts? uint64 | +--rw static-ipv6-peers
+--ro rx-bytes? uint64 | | +--rw static-ipv6-peer* [peer-ip]
+--ro tx-pkts? uint64 | | +--rw peer-ip inet:ipv6-address-no-zone
+--ro tx-bytes? uint64 | | +--rw out-vni-id? uint32
+--ro rx-unicast-pkts? uint64 | +--rw flood-proxys
+--ro rx-multicast-pkts? uint64 | | +--rw flood-proxy* [peer-ip]
+--ro rx-broadcast-pkts? uint64 | | +--rw peer-ip inet:ip-address-no-zone
+--ro tx-unicast-pkts? uint64 | +--rw mcast-groups
+--ro tx-multicast-pkts? uint64 | | +--rw mcast-group* [mcast-ip]
+--ro tx-broadcast-pkts? uint64 | | +--rw mcast-ip inet:ip-address-no-zone
+--ro drop-unicast-pkts? uint64 | +--rw statistic
+--ro drop-multicast-pkts? uint64 | +--rw enable? boolean
+--ro drop-broadcast-pkts? uint64 | +--ro info
+--ro rx-bits-per-sec? uint64 | +--ro send-bits-rate? uint64
+--ro rx-pkt-per-sec? uint64 | +--ro send-pkts-rate? uint64
+--ro tx-bits-per-sec? uint64 | +--ro send-unicast-pkts? uint64
+--ro tx-pkt-per-sec? uint64 | +--ro send-multicast-pkts? uint64
| +--ro send-broadcast-pkts? uint64
| +--ro send-total-bytes? uint64
| +--ro send-total-pkts? uint64
| +--ro receive-bits-rate? uint64
| +--ro receive-pkts-rate? uint64
| +--ro receive-unicast-pkts? uint64
| +--ro receive-multicast-pkts? uint64
| +--ro receive-broadcast-pkts? uint64
| +--ro receive-total-bytes? uint64
| +--ro receive-total-pkts? uint64
| +--ro drop-unicast-pkts? uint64
| +--ro drop-multicast-pkts? uint64
| +--ro drop-broadcast-pkts? uint64
+--ro vni-peer-infos
| +--ro peers
| +--ro peer* [vni-id source-ip peer-ip]
| +--ro vni-id uint32
| +--ro source-ip inet:ip-address-no-zone
| +--ro peer-ip inet:ip-address-no-zone
| +--ro type? tunnel-type
| +--ro out-vni-id? uint32
+--ro tunnel-infos
+--ro tunnel-info* [tunnel-id]
+--ro tunnel-id uint32
+--ro source-ip? inet:ip-address-no-zone
+--ro peer-ip? inet:ip-address-no-zone
+--ro status? tunnel-status
+--ro type? tunnel-type
+--ro up-time? string
+--ro vrf-name? -> /ni:network-instances/network-instance/name
augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn: augment /if:interfaces/if:interface:
+--rw vni-lists +--rw nvo3-nve
+--rw vni* [vni-id] +--rw nve-ip? inet:ipv4-address-no-zone
+--rw vni-id uint32 +--rw nve-ipv6? inet:ipv6-address-no-zone
augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: +--rw bypass-nve-ip? inet:ipv4-address-no-zone
+--rw vni-lists +--rw bypass-nve-ipv6? inet:ipv6-address-no-zone
+--rw vni* [vni-id] +--rw statistics
+--rw vni-id uint32 +--rw statistic* [vni-id peer-ip direction]
+--rw split-horizon-mode? vni-bind-type +--rw vni-id uint32
+--rw split-group? string +--rw peer-ip inet:ip-address-no-zone
rpcs: +--rw direction direction-type
+--ro info
+--ro send-bits-rate? uint64
+--ro send-pkts-rate? uint64
+--ro send-unicast-pkts? uint64
+--ro send-multicast-pkts? uint64
+--ro send-broadcast-pkts? uint64
+--ro send-total-bytes? uint64
+--ro send-total-pkts? uint64
+--ro receive-bits-rate? uint64
+--ro receive-pkts-rate? uint64
+--ro receive-unicast-pkts? uint64
+--ro receive-multicast-pkts? uint64
+--ro receive-broadcast-pkts? uint64
+--ro receive-total-bytes? uint64
+--ro receive-total-pkts? uint64
+--ro drop-unicast-pkts? uint64
+--ro drop-multicast-pkts? uint64
+--ro drop-broadcast-pkts? uint64
+---x reset-vni-instance-statistic augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn:
| +---w input +--rw vnis
| +---w vni-id uint32 +--rw vni* [vni-id]
+---x reset-vni-peer-statistic +--rw vni-id uint32
+---w input
+---w vni-id uint32
+---w mode vni-type
+---w peer-ip inet:ipv4-address-no-zone
+---w direction direction-type
Figure 3.2. The tree structure of YANG module for NVO3 configuration augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
+--rw vnis
+--rw vni* [vni-id]
+--rw vni-id uint32
+--rw split-horizon-mode? vni-bind-type
+--rw split-group? string
3.4. YANG Module rpcs:
+---x reset-vni-instance-statistic
| +---w input
| +---w vni-id uint32
+---x reset-vni-peer-statistic
+---w input
+---w vni-id uint32
+---w peer-ip inet:ip-address-no-zone
+---w direction direction-type
<CODE BEGINS> file "ietf-nvo3-base@2020-03-09.yang" 3.5. YANG Module
module ietf-nvo3-base {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3-base";
prefix "nvo3";
import ietf-network-instance { <CODE BEGINS> file "ietf-nvo3-base@2020-08-26.yang"
prefix "ni";
}
import ietf-interfaces { module ietf-nvo3-base {
prefix "if"; yang-version 1.1;
} namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3-base";
prefix "nvo3";
import ietf-inet-types { import ietf-network-instance {
prefix "inet"; prefix "ni";
}
import ietf-interfaces {
prefix "if";
}
import ietf-inet-types {
prefix "inet";
}
import ietf-l2vpn {
prefix "l2vpn";
}
import ietf-bgp-l3vpn {
prefix "l3vpn";
}
import iana-if-type {
prefix ianaift;
}
organization "ietf";
contact "ietf";
description "Yang model for NVO3.";
revision 2020-08-26 {
description
"Clean non ietf-bgp-l3vpn & ietf-l2vpn related errors.";
reference
"";
}
revision 2020-07-22 {
description
"Solve syntax and norms issues.";
reference
"";
}
revision 2020-03-09 {
description
"Revise some design in the statitics.";
reference
"";
}
revision 2019-11-04 {
description
"Cleaning non ietf-bgp-l3vpn related errors.";
reference
"";
}
revision 2019-04-01 {
description
"Init revision.";
reference
"";
}
typedef vni-status-type {
type enumeration {
enum "up" {
description
"The state is up.";
}
enum "down" {
description
"The state is down.";
}
} }
description
"The state for VNI.";
}
typedef tunnel-status {
type enumeration {
enum "up" {
description
"The tunnel is up.";
}
enum "down" {
description
"The tunnel is down.";
}
import ietf-l2vpn {
prefix "l2vpn";
} }
description
"The status of NVO3 Tunnel.";
}
typedef tunnel-type {
type enumeration {
enum "dynamic" {
description
"The tunnel is dynamic.";
}
enum "static" {
description
"The tunnel is static.";
}
enum "invalid" {
description
"The tunnel is invalid.";
}
}
description
"The type of NVO3 Tunnel.";
}
import ietf-bgp-l3vpn { typedef direction-type {
prefix "l3vpn"; type enumeration {
enum "inbound" {
description
"Inbound.";
}
enum "outbound" {
description
"Outbound.";
}
enum "bidirection" {
description
"Bidirection.";
}
} }
description
"Bound direction.";
}
typedef vni-bind-type {
type enumeration {
enum "hub-mode" {
description
"Hub mode. The vni instance can't communicate with other hub mode vni instances.";
}
enum "spoke-mode" {
description
"Spoke mode.";
}
enum "split-group-mode" {
description
"Split group mode.";
}
}
description
"The binding type of VNI.";
}
import iana-if-type { typedef vni-mode {
prefix ianaift; type enumeration {
enum "local" {
description
"Local mode.";
}
enum "global" {
description
"Global mode.";
}
} }
description
"The mode of VNI.";
}
organization "ietf"; grouping nvo3-traffic-statistics {
contact "ietf"; description
description "Yang model for NVO3"; "NVO3 tunnel traffic statistics collection.";
revision 2020-03-09 { leaf send-bits-rate {
type uint64;
units bit/s;
description description
"Revise some design in the statitics"; "Number of send bits per second.";
reference
"";
} }
leaf send-pkts-rate {
revision 2019-11-04 { type uint64;
units pps;
description description
"Cleaning non ietf-bgp-l3vpn related errors"; "Number of send packets per second.";
reference
"";
} }
leaf send-unicast-pkts {
revision 2019-04-01 { type uint64;
units packet;
description description
"Init revision"; "Number of send unicast packets.";
reference
"";
} }
leaf send-multicast-pkts {
typedef vni-status-type { type uint64;
type enumeration { units packet;
enum "up" {
description
"Vni status up.";
}
enum "down" {
description
"Vni status down.";
}
}
description description
"Vni status"; "Number of send multicast packets.";
} }
leaf send-broadcast-pkts {
typedef vni-type { type uint64;
type enumeration { units packet;
enum "l2" {
description
"layer 2 mode";
}
enum "l3" {
description
"layer 3 mode";
}
}
description description
"vni type"; "Number of send broadcast packets.";
} }
leaf send-total-bytes {
typedef peer-type { type uint64;
type enumeration { units Byte;
enum "static" {
description
"Static.";
}
enum "dynamic" {
description
"Dynamic.";
}
}
description description
"Peer type"; "Total number of send bytes.";
} }
leaf send-total-pkts {
typedef tunnel-status { type uint64;
type enumeration { units packet;
enum "up" {
description
"The tunnel is up.";
}
enum "down" {
description
"The tunnel is down.";
}
}
description description
"Tunnel status"; "Total number of send packets.";
} }
typedef tunnel-type { leaf receive-bits-rate {
type enumeration { type uint64;
enum "dynamic" { units bit/s;
description
"The tunnel is dynamic.";
}
enum "static" {
description
"The tunnel is static.";
}
enum "invalid" {
description
"The tunnel is invalid.";
}
}
description description
"Tunnel type"; "Number of receive bits per second.";
} }
leaf receive-pkts-rate {
type uint64;
units pps;
description
"Number of receive packets per second.";
}
leaf receive-unicast-pkts {
type uint64;
units packet;
description
"Number of receive unicast packets.";
}
leaf receive-multicast-pkts {
type uint64;
units packet;
description
"Number of receive multicast packets.";
}
leaf receive-broadcast-pkts {
type uint64;
units packet;
description
"Number of receive broadcast packets.";
}
leaf receive-total-bytes {
type uint64;
units Byte;
description
"Total number of receive bytes.";
}
leaf receive-total-pkts {
type uint64;
units packet;
description
"Total number of receive packets.";
}
leaf drop-unicast-pkts {
type uint64;
units packet;
description
"Number of discarded unicast packets.";
}
leaf drop-multicast-pkts {
type uint64;
units packet;
description
"Number of discarded multicast packets.";
}
leaf drop-broadcast-pkts {
type uint64;
units packet;
description
"Number of discarded broadcast packets.";
}
}
typedef direction-type { container nvo3 {
type enumeration { description
enum "inbound" { "Management of NVO3.";
description container vni-instances {
"Inbound."; description
} "List of virtual network instances.";
enum "outbound" { list vni-instance {
key "vni-id";
description
"Configure the information of VNI.";
leaf vni-id {
type uint32 {
range "1..16777215";
}
description description
"Outbound."; "The id of VNI.";
} }
enum "bidirection" { leaf vni-mode {
type vni-mode;
default "local";
description description
"Bidirection."; "The mode of VNI.";
} }
} leaf source-nve {
description type if:interface-ref;
"Bound direction"; mandatory true;
} must "(/if:interfaces/if:interface[if:name=current()]/if:type='Nve')";
typedef vni-bind-type {
type enumeration {
enum "hub-mode" {
description description
"Hub mode. The vni instance can’t communicate with other hub mode vni instances."; "The name of the local NVE.";
} }
enum "spoke-mode" { leaf protocol-bgp {
type boolean;
default "false";
description description
"Spoke mode."; "Learn remote NVEs in the same VNI via BGP.";
} }
enum "split-group-mode" { leaf status {
type vni-status-type;
config false;
description description
"Split group mode."; "The status of the VNI.";
} }
description container static-ipv4-peers {
"bdBindVniType";
}
}
container nvo3 {
description
"Management of NVO3.";
container vni-instances {
description
"The confiuration and information table of the VNI.";
list vni-instance {
key "vni-id";
must "(if:interfaces/if:interface[if:name=current()/source-nve]/if:type='Nve')";
description description
"The confiuration and information of the VNI."; "List of remote NVE address created by users in a VNI.";
leaf vni-id { list static-peer {
type uint32 { key "peer-ip";
range "1..16777215";
}
description description
"The id of VNI."; "Configure remote NVE address in a same VNI.";
} leaf peer-ip {
leaf vni-mode { type inet:ipv4-address-no-zone;
type enumeration { description
enum "Local" { "The address of the remote NVE.";
description }
"Local mode"; leaf out-vni-id {
} type uint32 {
enum "Global" { range "1..16777215";
description
"Global mode";
} }
description
"The ID of VNI for outbound. Do not support separate deletion.";
} }
description
"The mode of the VNI instance.";
}
leaf source-nve {
type if:interface-ref;
mandatory true;
description
"The name of the nve interface .";
} }
leaf protocol-bgp { }
type boolean; container static-ipv6-peers {
default "false"; description
description "List of remote NVE IPv6 address created by users in a VNI.";
"Whether use bgp as vxlan's protocol."; list static-ipv6-peer {
} key "peer-ip";
leaf status {
type vni-status-type;
config false;
description
"The status of the VNI.";
}
container static-ipv4-peers {
description description
"The remote NVE address table in a same VNI."; "Configure remote NVE IPv6 address in a same VNI.";
list static-peer { leaf peer-ip {
key "peer-ip"; type inet:ipv6-address-no-zone;
description description
"The remote NVE address in a same VNI."; "The IPv6 address of the remote NVE.";
leaf peer-ip { }
type inet:ipv4-address-no-zone; leaf out-vni-id {
description type uint32 {
"The address of the NVE."; range "1..16777215";
}
leaf out-vni-id {
type uint32 {
range "1..16777215";
}
description
"The ID of the out VNI. Do not support separate deletion.";
} }
description
"The ID of VNI for outbound. Do not support separate deletion.";
} }
} }
container static-ipv6-peers { }
container flood-proxys {
description
"List of flood proxys for the VNI.";
list flood-proxy {
key "peer-ip";
description description
"The remote NVE ipv6 address table in a same VNI."; "Configure flood proxys for the VNI.";
list static-ipv6-peer { leaf peer-ip {
key "peer-ip"; type inet:ip-address-no-zone;
description description
"The remote NVE ipv6 address in a same VNI."; "The address of flood proxy.";
leaf peer-ip {
type inet:ipv6-address-no-zone;
description
"The ipv6 address of the NVE.";
}
} }
} }
container flood-proxys { }
container mcast-groups {
description
"List of multicast address for the VNI.";
list mcast-group {
key "mcast-ip";
description description
"The flood proxys for this VNI"; "Configure multicast address in a same VNI.";
list flood-proxy { leaf mcast-ip {
key "peer-ip"; type inet:ip-address-no-zone;
leaf peer-ip {
type inet:ipv4-address-no-zone;
description
"peer ip address";
}
description description
"List of the flood proxys"; "The mcast address of NVO3.";
} }
} }
container mcast-groups { }
container statistic {
description
"Configure VNI traffic statistics.";
leaf enable {
type boolean;
default "false";
description description
"The mcast address table."; "Enable/disable VNI traffic statistics.";
list mcast-group {
key "mcast-ip";
description
"The mcast address.";
leaf mcast-ip {
type inet:ipv4-address-no-zone;
description
"The mcast address of NVO3.";
}
}
} }
container statistic { container info {
when "../enable='true'";
config false;
description description
"The VNI member in a same NVE."; "The information of vni instance traffic statistics.";
leaf statistic-enable { uses nvo3-traffic-statistics;
type boolean;
default "false";
description
"To determine whether to enable the statistics for a VNI.";
}
container statistic-info {
config false;
description
"The vni instance traffic statistics information.";
leaf rx-bits-per-sec {
type uint64;
config false;
description
"Number of bits received per second.";
}
leaf rx-pkt-per-sec {
type uint64;
config false;
description
"Number of packets received per second.";
}
leaf tx-bits-per-sec {
type uint64;
config false;
description
"Number of bits sent per second.";
}
leaf tx-pkt-per-sec {
type uint64;
config false;
description
"Number of packets sent per second.";
}
leaf rx-pkts {
type uint64;
config false;
description
"Total number of received packets.";
}
leaf rx-bytes {
type uint64;
config false;
description
"Total number of received bytes.";
}
leaf tx-pkts {
type uint64;
config false;
description
"Total number of sent packets.";
}
leaf tx-bytes {
type uint64;
config false;
description
"Total number of sent bytes.";
}
leaf rx-unicast-pkts {
type uint64;
config false;
description
"Number of received unicast packets.";
}
leaf rx-multicast-pkts {
type uint64;
config false;
description
"Number of received multicast packets.";
}
leaf rx-broadcast-pkts {
type uint64;
config false;
description
"Number of received broadcast packets.";
}
leaf drop-unicast-pkts {
type uint64;
config false;
description
"Number of discarded unicast packets.";
}
leaf drop-multicast-pkts {
type uint64;
config false;
description
"Number of discarded multicast packets.";
}
leaf drop-broadcast-pkts {
type uint64;
config false;
description
"Number of discarded broadcast packets.";
}
leaf tx-unicast-pkts {
type uint64;
config false;
description
"Number of sent unicast packets.";
}
leaf tx-multicast-pkts {
type uint64;
config false;
description
"Number of sent multicast packets.";
}
leaf tx-broadcast-pkts {
type uint64;
config false;
description
"Number of sent broadcast packets.";
}
}
} }
} }
} }
} }
container vni-peer-infos { }
container vni-peer-infos {
config false;
description
"List of remote NVE addresses.";
container peers {
config false; config false;
description description
"The information table of vni members."; "Operational data of remote NVE address in a VNI.";
container peers { list peer {
key "vni-id source-ip peer-ip";
config false; config false;
description description
"The remote nve address in a same VNI."; "Operational data of remote NVE addresses in a VNI.";
list peer { leaf vni-id {
key "vni-id source-ip peer-ip"; type uint32 {
range "1..16777215";
}
config false; config false;
description description
"The remote nve address list in a same VNI."; "The ID of VNI.";
}
leaf vni-id { leaf source-ip {
type uint32 { type inet:ip-address-no-zone;
range "1..16777215"; config false;
} description
config false; "Local NVE address, as NVO3 tunnel source point.";
description }
"The ID of VNI."; leaf peer-ip {
} type inet:ip-address-no-zone;
leaf source-ip { config false;
type inet:ip-address-no-zone; description
config false; "Remote NVE address, as NVO3 tunnel end point.";
description }
"The source address of the NVE interface."; leaf type {
} type tunnel-type;
leaf peer-ip { config false;
type inet:ip-address-no-zone; description
config false; "Tunnel type.";
description }
"The remote NVE address."; leaf out-vni-id {
} type uint32 {
leaf tunnel-type { range "1..16777215";
type peer-type;
config false;
description
"Tunnel type.";
}
leaf out-vni-id {
type uint32 {
range "1..16777215";
}
config false;
description
"The ID of the out VNI.";
} }
config false;
description
"The ID of VNI for outbound.";
} }
} }
} }
}
container tunnel-infos { container tunnel-infos {
config false;
description
"List of NVO3 tunnel information.";
list tunnel-info {
key "tunnel-id";
config false; config false;
description description
"VxLAN tunnel information."; "Operational data of NVO3 tunnel information.";
list tunnel-info { leaf tunnel-id {
key "tunnel-id"; type uint32 {
range "1..4294967295";
}
config false; config false;
description description
"VxLAN tunnel information list."; "The ID of NVO3 tunnel.";
leaf tunnel-id { }
type uint32 { leaf source-ip {
range "1..4294967295"; type inet:ip-address-no-zone;
} config false;
config false; description
description "Local NVE address, as NVO3 tunnel source point.";
"The ID of Vxlan tunnel."; }
} leaf peer-ip {
leaf source-ip { type inet:ip-address-no-zone;
type inet:ip-address-no-zone; config false;
config false; description
description "Remote NVE address, as NVO3 tunnel end point.";
"Local NVE interface address."; }
} leaf status {
leaf peer-ip { type tunnel-status;
type inet:ip-address-no-zone; config false;
config false; description
description "Tunnel status.";
"Remote NVE interface address."; }
} leaf type {
leaf status { type tunnel-type;
type tunnel-status; config false;
config false; description
description "Tunnel type.";
"Tunnel status."; }
} leaf up-time {
leaf type { type string {
type tunnel-type; length "1..10";
config false;
description
"Tunnel type.";
}
leaf up-time {
type string {
length "1..10";
}
config false;
description
"Vxlan tunnel up time.";
} }
leaf vrf-name { config false;
type leafref { description
path "/ni:network-instances/ni:network-instance/ni:name"; "The continuous time as NVO3 tunnel is reachable.";
} }
default "_public_"; leaf vrf-name {
config false; type leafref {
description path "/ni:network-instances/ni:network-instance/ni:name";
"The name of VPN instance.";
} }
default "_public_";
config false;
description
"The name of VPN instance.";
} }
} }
}
augment "/ianaift" { identity Nve {
description base ianaift:iana-interface-type;
"A new interface type to be registered to IANA"; description "A new interface type to be registered to IANA";
identity Nve { }
base iana-interface-type;
}
}
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
when "(/if:interfaces/if:interface/if:type = 'nvo3:Nve')";
description
"Augment the interface, NVE as an interface.";
container nvo3-nve {
description description
"Augment the interface, NVE as an interface."; "Local NVE.";
when "(/if:interfaces/if:interface/if:type = 'Nve')"; leaf nve-ip {
container nvo3-nve { type inet:ipv4-address-no-zone;
description description
"Network virtualization edge."; "The address of local NVE.";
leaf source-vtep-ip {
type inet:ipv4-address-no-zone;
description
"The source address of the NVE interface.";
}
leaf source-vtep-ipv6 {
type inet:ipv6-address-no-zone;
description
"The source ipv6 address of the NVE interface.";
}
leaf bypass-vtep-ip {
type inet:ipv4-address-no-zone;
description
"The source address of bypass VXLAN tunnel.";
}
container statistics {
description
"VXLAN Tunnel Traffic Statistical Configuration Table.";
list statistic {
key "vni-id mode peer-ip direction";
description
"VXLAN Tunnel Traffic Statistics Configuration.";
leaf vni-id {
type uint32 {
range "1..16777215";
}
description
"ID of the VNI.";
}
leaf mode {
type vni-type;
description
"The type of the NVE interface.";
}
leaf peer-ip {
type inet:ipv4-address-no-zone;
description
"IP address of the remote VTEP.";
}
leaf direction {
type direction-type;
description
"Traffic statistics type about the VXLAN tunnel.";
}
container info {
config false;
description
"Traffic statistics about the peer.";
leaf rx-pkts {
type uint64;
config false;
description
"Total number of received packets.";
}
leaf rx-bytes {
type uint64;
config false;
description
"Total number of received bytes.";
}
leaf tx-pkts {
type uint64;
config false;
description
"Total number of sent packets.";
}
leaf tx-bytes {
type uint64;
config false;
description
"Total number of sent bytes.";
}
leaf rx-unicast-pkts {
type uint64;
config false;
description
"Number of received unicast packets.";
}
leaf rx-multicast-pkts {
type uint64;
config false;
description
"Number of received multicast packets.";
}
leaf rx-broadcast-pkts {
type uint64;
config false;
description
"Number of received broadcast packets.";
}
leaf tx-unicast-pkts {
type uint64;
config false;
description
"Number of sent unicast packets.";
}
leaf tx-multicast-pkts {
type uint64;
config false;
description
"Number of sent multicast packets.";
}
leaf tx-broadcast-pkts {
type uint64;
config false;
description
"Number of sent broadcast packets.";
}
leaf drop-unicast-pkts {
type uint64;
config false;
description
"Number of discarded unicast packets.";
}
leaf drop-multicast-pkts {
type uint64;
config false;
description
"Number of discarded multicast packets.";
}
leaf drop-broadcast-pkts {
type uint64;
config false;
description
"Number of discarded broadcast packets.";
}
leaf rx-bits-per-sec {
type uint64;
config false;
description
"Number of bits received per second.";
}
leaf rx-pkt-per-sec {
type uint64;
config false;
description
"Number of packets received per second.";
}
leaf tx-bits-per-sec {
type uint64;
config false;
description
"Number of bits sent per second.";
}
leaf tx-pkt-per-sec {
type uint64;
config false;
description
"Number of packets sent per second.";
}
}
}
}
} }
} leaf nve-ipv6 {
type inet:ipv6-address-no-zone;
augment "/ni:network-instances/ni:network-instance/ni:ni-type" + description
"/l3vpn:l3vpn/l3vpn:l3vpn" { "The IPv6 address of the local NVE.";
description "Augment for l3vpn instance"; }
container vni-lists { leaf bypass-nve-ip {
description "Vni list for l3vpn"; type inet:ipv4-address-no-zone;
list vni { description
key "vni-id"; "The address of local NVE as bypass.";
}
leaf bypass-nve-ipv6 {
type inet:ipv6-address-no-zone;
description
"The IPv6 address of local NVE as bypass.";
}
container statistics {
description
"List of NVO3 tunnel statistics.";
list statistic {
key "vni-id peer-ip direction";
description description
"Vni for current l3vpn instance"; "Configure NVO3 tunnel statistics information.";
leaf vni-id { leaf vni-id {
type uint32 { type uint32 {
range "1..16777215"; range "1..16777215";
} }
description description
"The id of VNI."; "The ID of the VNI.";
} }
} leaf peer-ip {
} type inet:ip-address-no-zone;
}
augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
"/l2vpn:l2vpn" {
description "Augment for l2vpn instance";
container vni-lists {
description "Vni list for l2vpn";
list vni {
key "vni-id";
description
"Vni for current l2vpn instance";
leaf vni-id {
type uint32 {
range "1..16777215";
}
description description
"The id of VNI."; "The address of remote NVE.";
} }
container split-horizon { leaf direction {
leaf split-horizon-mode { type direction-type;
type vni-bind-type; description
default "hub-mode"; "Traffic statistics direction for the tunnel.";
description }
"Split horizon mode."; container info {
} config false;
leaf split-group { description
must "(vni-bind-type='split-group-mode')"; "The information of tunnel traffic statistics.";
type string { uses nvo3-traffic-statistics;
length "1..31";
}
description
"Split group name.";
}
} }
} }
} }
} }
}
rpc reset-vni-instance-statistic { augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
description "/l3vpn:l3vpn/l3vpn:l3vpn" {
"Clear traffic statistics about the VNI."; description "Augment for l3vpn instance";
input { container vnis {
description "Vni list for l3vpn.";
list vni {
key "vni-id";
description
"Vni for current l3vpn instance.";
leaf vni-id { leaf vni-id {
type uint32 { type uint32 {
range "1..16777215"; range "1..16777215";
} }
mandatory true;
description description
"ID of the VNI."; "The ID of the VNI.";
} }
} }
} }
rpc reset-vni-peer-statistic { }
description
"Clear traffic statistics about the VXLAN tunnel."; augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
input { "/l2vpn:l2vpn" {
description "Augment for l2vpn instance.";
container vnis {
description "Vni list for l2vpn.";
list vni {
key "vni-id";
description
"Vni for current l2vpn instance.";
leaf vni-id { leaf vni-id {
type uint32 { type uint32 {
range "1..16777215"; range "1..16777215";
} }
mandatory true;
description description
"ID of the VNI."; "The ID of the VNI.";
} }
leaf peer-ip { container split-horizon {
type inet:ipv4-address-no-zone; description "Configure NVO3 split-horizon information.";
mandatory true; leaf split-horizon-mode {
description type vni-bind-type;
"IP address of the remote NVE interface."; default "hub-mode";
description
"Split horizon mode.";
}
leaf split-group {
when "(../split-horizon-mode='split-group-mode')";
type string {
length "1..31";
}
description
"Split group name.";
}
} }
leaf direction{ }
type direction-type; }
mandatory true; }
description
"Traffic statistics type about the VXLAN tunnel."; rpc reset-vni-instance-statistic {
description
"Clear traffic statistics about the VNI.";
input {
leaf vni-id {
type uint32 {
range "1..16777215";
} }
mandatory true;
description
"The ID of the VNI.";
} }
} }
} }
<CODE ENDS> rpc reset-vni-peer-statistic {
description
"Clear traffic statistics about the VXLAN tunnel.";
input {
leaf vni-id {
type uint32 {
range "1..16777215";
}
mandatory true;
description
"The ID of the VNI.";
}
leaf peer-ip {
type inet:ip-address-no-zone;
mandatory true;
description
"The address of the remote NVE.";
}
leaf direction{
type direction-type;
mandatory true;
description
"Traffic statistics direction for the tunnel.";
}
}
}
}
4. Security Considerations <CODE ENDS>
4. Security Considerations
This document raises no new security issues. This document raises no new security issues.
5. IANA Considerations 5. IANA Considerations
The namespace URI defined in Section 3.3 need be registered in the The namespace URI defined in Section 3.4 need to be registered in the
IETF XML registry [RFC3688]. IETF XML registry [RFC3688].
This document need to register the 'ietf-nvo3-base' YANG module in This document need to register the 'ietf-nvo3-base' YANG module in
the YANG Module Names registry [RFC6020]. the YANG Module Names registry [RFC6020].
6. Contributors 6. Contributors
Haibo Wang Haibo Wang
Huawei Huawei
Email: rainsword.wang@huawei.com Email: rainsword.wang@huawei.com
Yuan Gao Yuan Gao
Huawei Huawei
Email: sean.gao@huawei.com Email: sean.gao@huawei.com
Gang Yan Guannan Shi
Huawei Huawei
Email: yangang@huawei.com Email: shiguannan1@huawei.com
Gang Yan
Huawei
Email: yangang@huawei.com
Mingui Zhang Mingui Zhang
Huawei Huawei
Email: zhangmingui@huawei.com Email: zhangmingui@huawei.com
Yubao(Bob) Wang Yubao Wang
ZTE Corporation ZTE Corporation
Email: yubao.wang2008@hotmail.com Email: yubao.wang2008@hotmail.com
Ruixue Wang Ruixue Wang
China Mobile China Mobile
Email: wangruixue@chinamobile.com Email: wangruixue@chinamobile.com
Sijun Weng Sijun Weng
China Mobile China Mobile
Email: wengsijun@chinamobile.com Email: wengsijun@chinamobile.com
7. Acknowledgements This document is part of a plan to make xml2rfc indispensable.
Authors would like to thank the comments and suggestions from Tao 7. References
Han, Weilian Jiang.
8. References 7.1. Normative References
8.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
Requirement Levels", BCP 14, RFC 2119, March 1997. DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>.
[RFC7364] T. Narten, E. Gray, et al, "Problem Statement: Overlays for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
Network Virtualization", draft-ietf-nvo3-overlay-problem- the Network Configuration Protocol (NETCONF)", RFC 6020,
statement, working in progress. DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>.
[RFC7365] Marc Lasserre, Florin Balus, et al, "Framework for DC [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
Network Virtualization", draft-ietf-nvo3-framework, working and A. Bierman, Ed., "Network Configuration Protocol
in progress. (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>.
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger,
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual L., Sridhar, T., Bursell, M., and C. Wright, "Virtual
eXtensible Local Area Network (VXLAN): A Framework for eXtensible Local Area Network (VXLAN): A Framework for
Overlaying Virtualized Layer 2 Networks over Layer 3 Overlaying Virtualized Layer 2 Networks over Layer 3
Networks", RFC 7348, August 2014. Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014,
<https://www.rfc-editor.org/info/rfc7348>.
[I-D.ietf-nvo3-geneve] Gross, J., Ganga, I., and T. Sridhar, "Geneve: [RFC7364] Narten, T., Ed., Gray, E., Ed., Black, D., Fang, L.,
Generic Network Virtualization Encapsulation", draft-ietf- Kreeger, L., and M. Napierala, "Problem Statement:
nvo3-geneve-10 (work in progress), March 2019. Overlays for Network Virtualization", RFC 7364,
DOI 10.17487/RFC7364, October 2014,
<https://www.rfc-editor.org/info/rfc7364>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC7365] Lasserre, M., Balus, F., Morin, T., Bitar, N., and Y.
January 2004. Rekhter, "Framework for Data Center (DC) Network
Virtualization", RFC 7365, DOI 10.17487/RFC7365, October
2014, <https://www.rfc-editor.org/info/rfc7365>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC8014] Black, D., Hudson, J., Kreeger, L., Lasserre, M., and T.
the Network Configuration Protocol (NETCONF)", RFC 6020, Narten, "An Architecture for Data-Center Network
October 2010. Virtualization over Layer 3 (NVO3)", RFC 8014,
DOI 10.17487/RFC8014, December 2016,
<https://www.rfc-editor.org/info/rfc8014>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
and A. Bierman, Ed., "Network Configuration Protocol 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
(NETCONF)", RFC 6241, June 2011. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8014] D. Black, J. Hudson, L. Kreeger, M. Lasserre, T. Narten, An [RFC8365] Sajassi, A., Ed., Drake, J., Ed., Bitar, N., Shekhar, R.,
Architecture for Data-Center Network Virtualization over Uttaro, J., and W. Henderickx, "A Network Virtualization
Layer 3 (NVO3), RFC8014, December 2016. Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365,
DOI 10.17487/RFC8365, March 2018,
<https://www.rfc-editor.org/info/rfc8365>.
8.2. Informative References 7.2. Informative References
[RFC7637] M. Sridharan, A. Greenberg, et al, "NVGRE: Network
Virtualization using Generic Routing Encapsulation",
RFC7637, September 2015.
[I-D.ietf-nvo3-vxlan-gpe] Maino, F., Kreeger, L., and U. Elzur,
"Generic Protocol Extension for VXLAN", draft-ietf-nvo3-
vxlan-gpe-06 (work in progress), April 2018.
[I-D.draft-ietf-bess-evpn-inter-subnet-forwarding] A. Sajassi, S.
Salam, S. Thoria, J. Drake, J. Rabadan, "Integrated Routing
and Bridging in EVPN", draft-ietf-bess-evpn-inter-subnet-
forwarding-08, March 4, 2019.
[RFC8293] A. Ghanwani, L. Dunbar, V. Bannai, M. McBride, R. Krishnan,
"A Framework for Multicast in Network Virtualization over
Layer 3", RFC8293, January 2018.
Author's Addresses [I-D.ietf-bess-evpn-inter-subnet-forwarding]
Sajassi, A., Salam, S., Thoria, S., Drake, J., and J.
Rabadan, "Integrated Routing and Bridging in EVPN", draft-
ietf-bess-evpn-inter-subnet-forwarding-09 (work in
progress), June 2020.
Bing Liu [I-D.ietf-nvo3-geneve]
Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic
Network Virtualization Encapsulation", draft-ietf-
nvo3-geneve-16 (work in progress), March 2020.
[I-D.ietf-nvo3-vxlan-gpe]
Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol
Extension for VXLAN (VXLAN-GPE)", draft-ietf-nvo3-vxlan-
gpe-10 (work in progress), July 2020.
[RFC7637] Garg, P., Ed. and Y. Wang, Ed., "NVGRE: Network
Virtualization Using Generic Routing Encapsulation",
RFC 7637, DOI 10.17487/RFC7637, September 2015,
<https://www.rfc-editor.org/info/rfc7637>.
[RFC8293] Ghanwani, A., Dunbar, L., McBride, M., Bannai, V., and R.
Krishnan, "A Framework for Multicast in Network
Virtualization over Layer 3", RFC 8293,
DOI 10.17487/RFC8293, January 2018,
<https://www.rfc-editor.org/info/rfc8293>.
Authors' Addresses
Bing Liu (editor)
Huawei Technologies Huawei Technologies
No. 156 Beiqing Rd. Haidian District, No. 156 Beiqing Rd. Haidian District
Beijing 100095 Beijing 100095
P.R. China China
Email: remy.liubing@huawei.com Email: remy.liubing@huawei.com
Ran Chen Ran Chen
ZTE Corporation ZTE Corporation
Email: chen.ran@zte.com.cn Email: chen.ran@zte.com.cn
Fengwei Qin Fengwei Qin
China Mobile China Mobile
32 Xuanwumen West Ave, Xicheng District 32 Xuanwumen West Ave, Xicheng District
Beijing, Beijing 100053 Beijing 100053
China China
Email: qinfengwei@chinamobile.com Email: qinfengwei@chinamobile.com
Reshad Rahman Reshad Rahman
Cisco Systems Cisco Systems
Email: rrahman@cisco.com Email: rrahman@cisco.com
 End of changes. 169 change blocks. 
982 lines changed or deleted 915 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/