< draft-ietf-nvo3-yang-cfg-01.txt   draft-ietf-nvo3-yang-cfg-02.txt >
INTERNET-DRAFT B. Liu, Ed. INTERNET-DRAFT B. Liu, Ed.
Intended Status: Standards Track Huawei Intended Status: Standards Track Huawei
R. Chen R. Chen
ZTE ZTE
F. Qin F. Qin
China Mobile China Mobile
R. Rahman R. Rahman
Cisco Cisco
Expires: May 7, 2020 November 4, 2019 Expires: September 10, 2020 March 9, 2020
Base YANG Data Model for NVO3 Protocols Base YANG Data Model for NVO3 Protocols
draft-ietf-nvo3-yang-cfg-01.txt draft-ietf-nvo3-yang-cfg-02.txt
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.
skipping to change at page 7, line 12 skipping to change at page 7, line 12
+--ro tunnel-id uint32 +--ro tunnel-id uint32
+--ro source-ip? inet:ip-address-no-zone +--ro source-ip? inet:ip-address-no-zone
+--ro peer-ip? inet:ip-address-no-zone +--ro peer-ip? inet:ip-address-no-zone
+--ro status? tunnel-status +--ro status? tunnel-status
+--ro type? tunnel-type +--ro type? tunnel-type
+--ro up-time? string +--ro up-time? string
+--ro vrf-name? -> /ni:network-instances/network-instance/name +--ro vrf-name? -> /ni:network-instances/network-instance/name
augment /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw nvo3-nve +--rw nvo3-nve
| +--rw nvo3-config +--rw nvo3-config
| +--rw source-vtep-ip? inet:ipv4-address-no-zone +--rw source-vtep-ip? inet:ipv4-address-no-zone
| +--rw source-vtep-ipv6? inet:ipv6-address-no-zone +--rw source-vtep-ipv6? inet:ipv6-address-no-zone
| +--rw bypass-vtep-ip? inet:ipv4-address-no-zone +--rw bypass-vtep-ip? inet:ipv4-address-no-zone
| +--rw statistics +--rw statistics
| +--rw statistic* [vni-id mode peer-ip direction] +--rw statistic* [vni-id peer-ip direction]
| +--rw vni-id uint32 +--rw vni-id uint32
| +--rw mode vni-type +--rw mode vni-type
| +--rw peer-ip inet:ipv4-address-no-zone +--rw peer-ip inet:ipv4-address-no-zone
| +--rw direction direction-type +--rw direction direction-type
| +--ro info +--ro info
| +--ro rx-pkts? uint64 +--ro rx-pkts? uint64
| +--ro rx-bytes? uint64 +--ro rx-bytes? uint64
| +--ro tx-pkts? uint64 +--ro tx-pkts? uint64
| +--ro tx-bytes? uint64 +--ro tx-bytes? uint64
| +--ro rx-unicast-pkts? uint64 +--ro rx-unicast-pkts? uint64
| +--ro rx-multicast-pkts? uint64 +--ro rx-multicast-pkts? uint64
| +--ro rx-broadcast-pkts? uint64 +--ro rx-broadcast-pkts? uint64
| +--ro tx-unicast-pkts? uint64 +--ro tx-unicast-pkts? uint64
| +--ro tx-multicast-pkts? uint64 +--ro tx-multicast-pkts? uint64
| +--ro tx-broadcast-pkts? uint64 +--ro tx-broadcast-pkts? uint64
| +--ro drop-unicast-pkts? uint64 +--ro drop-unicast-pkts? uint64
| +--ro drop-multicast-pkts? uint64 +--ro drop-multicast-pkts? uint64
| +--ro drop-broadcast-pkts? uint64 +--ro drop-broadcast-pkts? uint64
| +--ro rx-bits-per-sec? uint64 +--ro rx-bits-per-sec? uint64
| +--ro rx-pkt-per-sec? uint64 +--ro rx-pkt-per-sec? uint64
| +--ro tx-bits-per-sec? uint64 +--ro tx-bits-per-sec? uint64
| +--ro tx-pkt-per-sec? uint64 +--ro tx-pkt-per-sec? uint64
+--rw nvo3-gateway
+--rw nvo3-gateway
+--rw vxlan-anycast-gateway? boolean
augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn: augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn:
+--rw vni-lists +--rw vni-lists
+--rw vni* [vni-id] +--rw vni* [vni-id]
+--rw vni-id uint32 +--rw vni-id uint32
augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: augment /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
+--rw vni-lists +--rw vni-lists
+--rw vni* [vni-id] +--rw vni* [vni-id]
+--rw vni-id uint32 +--rw vni-id uint32
+--rw split-horizon-mode? vni-bind-type +--rw split-horizon-mode? vni-bind-type
+--rw split-group? string +--rw split-group? string
rpcs: rpcs:
+---x reset-vni-instance-statistic +---x reset-vni-instance-statistic
| +---w input | +---w input
| +---w vni-id uint32 | +---w vni-id uint32
+---x reset-vni-peer-statistic +---x reset-vni-peer-statistic
+---w input +---w input
+---w vni-id uint32 +---w vni-id uint32
+---w mode vni-type +---w mode vni-type
+---w peer-ip inet:ipv4-address-no-zone +---w peer-ip inet:ipv4-address-no-zone
+---w direction direction-type +---w direction direction-type
Figure 3.2. The tree structure of YANG module for NVO3 configuration Figure 3.2. The tree structure of YANG module for NVO3 configuration
3.4. YANG Module 3.4. YANG Module
<CODE BEGINS> file "ietf-nvo3-base@2019-11-04.yang" <CODE BEGINS> file "ietf-nvo3-base@2020-03-09.yang"
module ietf-nvo3-base { module ietf-nvo3-base {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3"; namespace "urn:ietf:params:xml:ns:yang:ietf-nvo3-base";
prefix "nvo3"; prefix "nvo3";
import ietf-network-instance { import ietf-network-instance {
prefix "ni"; prefix "ni";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-l2vpn { import ietf-l2vpn {
prefix "l2vpn"; prefix "l2vpn";
} }
import ietf-bgp-l3vpn { import ietf-bgp-l3vpn {
prefix "l3vpn"; prefix "l3vpn";
} }
organization "ietf"; import iana-if-type {
contact "ietf"; prefix ianaift;
description "Yang model for NVO3"; }
revision 2019-11-04 { organization "ietf";
description contact "ietf";
"Cleaning non ietf-bgp-l3vpn related errors"; description "Yang model for NVO3";
reference revision 2020-03-09 {
""; description
} "Revise some design in the statitics";
reference
"";
}
revision 2019-04-01 { revision 2019-11-04 {
description description
"Init revision"; "Cleaning non ietf-bgp-l3vpn related errors";
reference reference
""; "";
} }
typedef vni-status-type { revision 2019-04-01 {
type enumeration { description
enum "up" { "Init revision";
description reference
"Vni status up."; "";
} }
enum "down" {
description
"Vni status down.";
}
}
description
"Vni status";
}
typedef vni-type { typedef vni-status-type {
type enumeration { type enumeration {
enum "l2" { enum "up" {
description description
"layer 2 mode"; "Vni status up.";
} }
enum "l3" { enum "down" {
description description
"layer 3 mode"; "Vni status down.";
} }
} }
description description
"vni type"; "Vni status";
} }
typedef peer-type { typedef vni-type {
type enumeration { type enumeration {
enum "static" { enum "l2" {
description description
"Static."; "layer 2 mode";
}
enum "l3" {
description
"layer 3 mode";
}
}
description
"vni type";
}
} typedef peer-type {
enum "dynamic" { type enumeration {
description enum "static" {
"Dynamic."; description
} "Static.";
} }
description enum "dynamic" {
"Peer type"; description
} "Dynamic.";
}
}
description
"Peer type";
}
typedef tunnel-status { typedef tunnel-status {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"The tunnel is up."; "The tunnel is up.";
} }
enum "down" { enum "down" {
description description
"The tunnel is down."; "The tunnel is down.";
} }
} }
description description
"Tunnel status"; "Tunnel status";
} }
typedef tunnel-type { typedef tunnel-type {
type enumeration { type enumeration {
enum "dynamic" { enum "dynamic" {
description description
"The tunnel is dynamic."; "The tunnel is dynamic.";
} }
enum "static" { enum "static" {
description description
"The tunnel is static."; "The tunnel is static.";
} }
enum "invalid" { enum "invalid" {
description description
"The tunnel is invalid."; "The tunnel is invalid.";
} }
} }
description description
"Tunnel type"; "Tunnel type";
} }
typedef direction-type { typedef direction-type {
type enumeration { type enumeration {
enum "inbound" { enum "inbound" {
description description
"Inbound."; "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
"bdBindVniType";
}
}
} container nvo3 {
enum "outbound" { description
description "Management of NVO3.";
"Outbound.";
}
enum "bidirection" {
description
"Bidirection.";
}
}
description
"Bound direction";
}
typedef vni-bind-type { container vni-instances {
type enumeration { description
enum "hub-mode" { "The confiuration and information table of the VNI.";
description list vni-instance {
"Hub mode."; key "vni-id";
} must "(if:interfaces/if:interface[if:name=current()/source-nve]/if:type='Nve')";
enum "spoke-mode" { description
description "The confiuration and information of the VNI.";
"Spoke mode."; leaf vni-id {
} type uint32 {
} range "1..16777215";
description }
"bdBindVniType"; description
} "The id of VNI.";
}
leaf vni-mode {
type enumeration {
enum "Local" {
description
"Local mode";
}
enum "Global" {
description
"Global mode";
}
}
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;
default "false";
description
"Whether use bgp as vxlan's protocol.";
}
leaf status {
type vni-status-type;
config false;
description
"The status of the VNI.";
}
container static-ipv4-peers {
description
"The remote NVE address table in a same VNI.";
list static-peer {
key "peer-ip";
description
"The remote NVE address in a same VNI.";
leaf peer-ip {
type inet:ipv4-address-no-zone;
description
"The address of the NVE.";
}
leaf out-vni-id {
type uint32 {
range "1..16777215";
}
description
"The ID of the out VNI. Do not support separate deletion.";
}
}
}
container static-ipv6-peers {
description
"The remote NVE ipv6 address table in a same VNI.";
list static-ipv6-peer {
key "peer-ip";
description
"The remote NVE ipv6 address in a same VNI.";
leaf peer-ip {
type inet:ipv6-address-no-zone;
description
"The ipv6 address of the NVE.";
}
}
}
container flood-proxys {
description
"The flood proxys for this VNI";
list flood-proxy {
key "peer-ip";
leaf peer-ip {
type inet:ipv4-address-no-zone;
description
"peer ip address";
}
description
"List of the flood proxys";
}
}
container mcast-groups {
description
"The mcast address table.";
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 {
description
"The VNI member in a same NVE.";
leaf statistic-enable {
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 nvo3 { }
description }
"Management of NVO3."; }
container vni-peer-infos {
config false;
description
"The information table of vni members.";
container peers {
config false;
description
"The remote nve address in a same VNI.";
list peer {
key "vni-id source-ip peer-ip";
config false;
description
"The remote nve address list in a same VNI.";
container vni-instances { leaf vni-id {
description type uint32 {
"The confiuration and information table of the VNI."; range "1..16777215";
list vni-instance {
key "vni-id";
must "(/if:interfaces/if:interface[if:name=current()/source-nve]/if:type='Nve')";
description
"The confiuration and information of the VNI.";
leaf vni-id {
type uint32 {
range "1..16777215";
}
description
"The id of VNI.";
}
leaf vni-mode {
type enumeration {
enum "Local" {
description
"Local mode";
}
enum "Global" {
description
"Global mode";
}
} }
config false;
description description
"The mode of the VNI instance."; "The ID of VNI.";
} }
leaf source-nve { leaf source-ip {
type if:interface-ref; type inet:ip-address-no-zone;
mandatory true; config false;
description description
"The name of the nve interface ."; "The source address of the NVE interface.";
} }
leaf protocol-bgp { leaf peer-ip {
type boolean; type inet:ip-address-no-zone;
default "false"; config false;
description description
"Whether use bgp as vxlan's protocol."; "The remote NVE address.";
} }
leaf status { leaf tunnel-type {
type vni-status-type; type peer-type;
config false; config false;
description description
"The status of the VNI."; "Tunnel type.";
} }
container static-ipv4-peers { leaf out-vni-id {
description type uint32 {
"The remote NVE address table in a same VNI."; range "1..16777215";
list static-peer { }
key "peer-ip"; config false;
description description
"The remote NVE address in a same VNI."; "The ID of the out VNI.";
leaf peer-ip { }
type inet:ipv4-address-no-zone; }
description }
"The address of the NVE."; }
}
leaf out-vni-id {
type uint32 {
range "1..16777215";
}
description
"The ID of the out VNI. Do not support separate deletion.";
}
}
}
container static-ipv6-peers {
description
"The remote NVE ipv6 address table in a same VNI.";
list static-ipv6-peer {
key "peer-ip";
description
"The remote NVE ipv6 address in a same VNI.";
leaf peer-ip {
type inet:ipv6-address-no-zone;
description
"The ipv6 address of the NVE.";
}
}
}
container flood-proxys {
description
"The flood proxys for this VNI";
list flood-proxy {
key "peer-ip";
leaf peer-ip {
type inet:ipv4-address-no-zone;
description
"peer ip address";
}
description
"List of the flood proxys";
}
}
container mcast-groups {
description
"The mcast address table.";
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 {
description
"The VNI member in a same NVE.";
leaf statistic-enable {
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 {
config false;
description
"The information table of vni members.";
container peers {
config false;
description
"The remote nve address in a same VNI.";
list peer {
key "vni-id source-ip peer-ip";
config false;
description
"The remote nve address list in a same VNI.";
leaf vni-id {
type uint32 {
range "1..16777215";
}
config false;
description
"The ID of VNI.";
}
leaf source-ip {
type inet:ip-address-no-zone;
config false;
description
"The source address of the NVE interface.";
}
leaf peer-ip {
type inet:ip-address-no-zone;
config false;
description
"The remote NVE address.";
}
leaf tunnel-type {
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.";
}
}
}
}
container tunnel-infos { container tunnel-infos {
config false; config false;
description description
"VxLAN tunnel information."; "VxLAN tunnel information.";
list tunnel-info { list tunnel-info {
key "tunnel-id"; key "tunnel-id";
config false; config false;
description description
"VxLAN tunnel information list."; "VxLAN tunnel information list.";
leaf tunnel-id { leaf tunnel-id {
type uint32 { type uint32 {
range "1..4294967295"; range "1..4294967295";
} }
config false; config false;
description description
"The ID of Vxlan tunnel."; "The ID of Vxlan tunnel.";
} }
leaf source-ip { leaf source-ip {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
config false; config false;
description description
"Local NVE interface address."; "Local NVE interface address.";
} }
leaf peer-ip { leaf peer-ip {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
config false; config false;
description description
"Remote NVE interface address."; "Remote NVE interface address.";
} }
leaf status { leaf status {
type tunnel-status; type tunnel-status;
config false; config false;
description description
"Tunnel status."; "Tunnel status.";
} }
leaf type { leaf type {
type tunnel-type; type tunnel-type;
config false; config false;
description description
"Tunnel type."; "Tunnel type.";
} }
leaf up-time { leaf up-time {
type string { type string {
length "1..10"; length "1..10";
} }
config false; config false;
description description
"Vxlan tunnel up time."; "Vxlan tunnel up time.";
} }
leaf vrf-name { leaf vrf-name {
type leafref { type leafref {
path "/ni:network-instances/ni:network-instance/ni:name"; path "/ni:network-instances/ni:network-instance/ni:name";
} }
default "_public_"; default "_public_";
config false; config false;
description description
"The name of VPN instance."; "The name of VPN instance.";
} }
}
}
augment "/if:interfaces/if:interface" { }
description }
"Augment the interface, NVE as an interface.";
when "if:type = 'Nve'";
container nvo3-nve {
description
"Network virtualization edge.";
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;
must "(../mode='l3' and ../direction!='bidirection')";
description
"Traffic statistics type about the VXLAN tunnel.";
}
container info {
config false;
description
"Traffic statistics about the peer.";
leaf rx-pkts { augment "/ianaift" {
type uint64; description
config false; "A new interface type to be registered to IANA";
description identity Nve {
"Total number of received packets."; base iana-interface-type;
} }
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.";
}
}
}
}
} augment "/if:interfaces/if:interface" {
container nvo3-gateway { description
when "/if:interfaces/if:interface/if:type = 'Vbdif'"; "Augment the interface, NVE as an interface.";
description when "(/if:interfaces/if:interface/if:type = 'Nve')";
"Enable anycast gateway."; container nvo3-nve {
leaf vxlan-anycast-gateway { description
type boolean; "Network virtualization edge.";
default "false"; leaf source-vtep-ip {
description type inet:ipv4-address-no-zone;
"Enable vxlan anycast gateway."; 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.";
}
}
}
}
}
}
augment "/ni:network-instances/ni:network-instance/ni:ni-type" + augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
"/l3vpn:l3vpn/l3vpn:l3vpn" { "/l3vpn:l3vpn/l3vpn:l3vpn" {
description "Augment for l3vpn instance"; description "Augment for l3vpn instance";
container vni-lists { container vni-lists {
description "Vni list for l3vpn"; description "Vni list for l3vpn";
list vni { list vni {
key "vni-id"; key "vni-id";
description description
"Vni for current l3vpn instance"; "Vni for current l3vpn instance";
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 VNI.";
} }
} }
} }
}
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
"The id of VNI.";
}
leaf split-horizon-mode {
type vni-bind-type;
default "hub-mode";
description
"Split horizon mode.";
}
leaf split-group {
type string {
length "1..31";
}
description
"Split group name.";
}
}
}
}
rpc reset-vni-instance-statistic { augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
description "/l2vpn:l2vpn" {
"Clear traffic statistics about the VNI."; description "Augment for l2vpn instance";
input { container vni-lists {
leaf vni-id { description "Vni list for l2vpn";
type uint32 { list vni {
range "1..16777215"; key "vni-id";
} description
mandatory true; "Vni for current l2vpn instance";
description leaf vni-id {
"ID of the VNI."; type uint32 {
} range "1..16777215";
} }
} description
rpc reset-vni-peer-statistic { "The id of VNI.";
description }
"Clear traffic statistics about the VXLAN tunnel."; container split-horizon {
input { leaf split-horizon-mode {
leaf vni-id { type vni-bind-type;
type uint32 { default "hub-mode";
range "1..16777215"; description
} "Split horizon mode.";
mandatory true; }
description leaf split-group {
"ID of the VNI."; must "(vni-bind-type='split-group-mode')";
} type string {
leaf mode { length "1..31";
type vni-type; }
mandatory true; description
description "Split group name.";
"The type of vni memeber statistic."; }
} }
leaf peer-ip { }
type inet:ipv4-address-no-zone; }
mandatory true; }
description
"IP address of the remote NVE interface.";
}
leaf direction{
type direction-type;
must "(../mode='l3' and ../direction!='bidirection')";
mandatory true;
description
"Traffic statistics type about the VXLAN tunnel.";
}
}
}
}
<CODE ENDS> rpc reset-vni-instance-statistic {
description
"Clear traffic statistics about the VNI.";
input {
leaf vni-id {
type uint32 {
range "1..16777215";
}
mandatory true;
description
"ID of the VNI.";
}
}
}
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
"ID of the VNI.";
}
leaf peer-ip {
type inet:ipv4-address-no-zone;
mandatory true;
description
"IP address of the remote NVE interface.";
}
leaf direction{
type direction-type;
mandatory true;
description
"Traffic statistics type about the VXLAN tunnel.";
}
}
}
}
<CODE ENDS>
4. Security Considerations 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.3 need be registered in the
IETF XML registry [RFC3688]. IETF XML registry [RFC3688].
 End of changes. 34 change blocks. 
792 lines changed or deleted 793 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/