| < 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/ | ||||