Internet DRAFT - draft-zhuang-bess-l3vpn-yang
draft-zhuang-bess-l3vpn-yang
Network Working Group S. Zhuang
Internet-Draft Z. Li
Intended status: Informational Huawei Technologies
Expires: January 7, 2016 X. Liu
Ericsson
V. Liu
China Mobile
July 6, 2015
Yang Data Model for BGP/MPLS IP VPNs
draft-zhuang-bess-l3vpn-yang-01
Abstract
This document defines a YANG data model that can be used to configure
and manage L3VPN (BGP/MPLS IP VPN).
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 7, 2016.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
Zhuang, et al. Expires January 7, 2016 [Page 1]
Internet-Draft Yang Data Model for L3VPN July 2015
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 2
3. Design of the L3VPN Model . . . . . . . . . . . . . . . . . . 3
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. VPN Instance Configuration . . . . . . . . . . . . . . . 4
3.2.1. Per-Instance Configuration . . . . . . . . . . . . . 5
3.2.2. Address Family Configuration of L3VPN Instance . . . 5
3.3. VPN Interface Configuration . . . . . . . . . . . . . . . 6
3.4. MP-BGP Configuration for L3VPN . . . . . . . . . . . . . 6
3.5. BGP VPN Instance Configuration . . . . . . . . . . . . . 6
4. L3VPN YANG MODEL . . . . . . . . . . . . . . . . . . . . . . 7
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
6. Security Considerations . . . . . . . . . . . . . . . . . . . 26
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.1. Normative References . . . . . . . . . . . . . . . . . . 26
8.2. Informative References . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27
1. Introduction
YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces
(e.g. ReST) and encodings other than XML (e.g. JSON) are being
defined. Furthermore, YANG data models can be used as the basis of
implementation for other interfaces, such as CLI and programmatic
APIs.
This document defines a YANG data model that can be used to configure
and manage L3VPN (BGP/MPLS IP VPN) [RFC4364].
2. Definitions and Acronyms
AF: Address Family
BGP: Border Gateway Protocol
Zhuang, et al. Expires January 7, 2016 [Page 2]
Internet-Draft Yang Data Model for L3VPN July 2015
JSON: JavaScript Object Notation
L3VPN: Layer 3 VPN
NETCONF: Network Configuration Protocol
ReST: Representational State Transfer, a style of stateless interface
and protocol that is generally carried over HTTP
YANG: A data definition language for NETCONF
3. Design of the L3VPN Model
3.1. Overview
The L3VPN Yang module consists of the following components :
o vpn-instances configuration : that contains per-instance writable
configuration objects. VPN instances support both the IPv4 and IPv6
address families.
o vpn-interfaces configuration: that contains writable configuration
objects of MPLS VPN interface.
o mp-bgp configuration: This component uses the definitions defined
in BGP YANG module and augments some parameters.
o bgp-vpn-instance configuration: that contains writable
configuration objects when using BGP between PE and CE.
The figure below describe the overall structure of the L3VPN Yang
module :
Zhuang, et al. Expires January 7, 2016 [Page 3]
Internet-Draft Yang Data Model for L3VPN July 2015
module: l3vpn
+--rw vpn-instances
| +--rw vpn-instance* [vpn-instance-name]
| +--rw vpn-instance-name string
| +--rw description? string
| +--rw ipv4-family
| | +--rw route-distinguisher? string
| | +--rw vpnTargets
| | | +--rw vpnTarget* [vrfRTValue]
| | | +--rw vrfRTValue string
| | | +--rw vrfRTType enumeration
| ...
| +--rw ipv6-family
| ...
+--rw vpn-interfaces
| +--rw vpn-interface* [name]
| +--rw name leafref
| +--rw vpn-instance-name? string
+--rw vrfInfo
+--ro vrfCreateTime? yang:timestamp
...
augment /bgp:bgp-router/bgp:vpnv4/bgp:unicast:
+--rw apply-label-per-nexthop? boolean
+--rw upeEnable? boolean
augment /bgp:bgp-router/bgp:vpnv6/bgp:unicast:
+--rw apply-label-per-nexthop? boolean
+--rw upeEnable? boolean
augment /bgp:bgp-router:
+--rw bgp-af-ipv4-vpn-instances
| +--rw bgp-af-ipv4-vpn-instance* [vpn-instance-name]
|...
+--rw bgp-af-ipv6-vpn-instances
+--rw bgp-af-ipv6-vpn-instance* [vpn-instance-name]
+--rw vpn-instance-name string
+--rw router-id
|...
3.2. VPN Instance Configuration
An instance is created to comprise the VPN forwarding information for
each VPN in a BGP/MPLS IP VPN. This instance is called a VPN
instance or a VPN routing and forwarding (VRF) table. It is also
called a per-site forwarding table in [RFC4364]. VPN instances must
be created in all BGP/MPLS IP VPN solutions. VPN instances support
both the IPv4 and IPv6 address families.
VPN instance configuration consists of the following components :
Zhuang, et al. Expires January 7, 2016 [Page 4]
Internet-Draft Yang Data Model for L3VPN July 2015
o Per-Instance Configuration : that contains the common writable
configuration objects for VPN instance IPv4 and IPv6 address family.
o Address Family Configuration of L3VPN Instance: that contains the
address family specific writable configuration objects.
3.2.1. Per-Instance Configuration
This component contains the common writable configuration objects for
VPN instance IPv4 and IPv6 address family.
+--rw vpn-instances
| +--rw vpn-instance* [vpn-instance-name]
| +--rw vpn-instance-name string
| +--rw description? string
| +--rw ipv4-family
...
| +--rw ipv6-family
...
3.2.2. Address Family Configuration of L3VPN Instance
This component contains the address family specific writable
configuration objects, such as route-distinguisher, vpnTargets,
apply-label mode, etc.
+--rw ipv4-family
| +--rw route-distinguisher? string
| +--rw vpnTargets
| | +--rw vpnTarget* [vrfRTValue]
| | +--rw vrfRTValue string
| | +--rw vrfRTType enumeration
| +--rw apply-label
| | +--rw (apply-label-mode)?
| | +--:(per-route)
| | | +--rw apply-label-per-route? boolean
| | +--:(per-instance)
| | +--rw apply-label-per-instance? boolean
| +--rw import-route-policy? string
| +--rw export-route-policy? string
...
+--rw ipv6-family
+--rw route-distinguisher? string
...
Zhuang, et al. Expires January 7, 2016 [Page 5]
Internet-Draft Yang Data Model for L3VPN July 2015
3.3. VPN Interface Configuration
This component contains per-interface writable configuration objects,
such as VPN instance binded, IPv4 address, IPv6 address, etc.
+--rw vpn-interfaces
| +--rw vpn-interface* [name]
| +--rw name leafref
| +--rw vpn-instance-name? string
...
3.4. MP-BGP Configuration for L3VPN
This component uses the definitions defined in BGP YANG module and
augments some parameters. In a BGP/MPLS IP VPN, PEs must use MP-BGP
to advertise VPNv4 or VPNv6 routes with the RD information to each
other. A few of parameters have been defined in BGP YANG module [I-
D.zhdankin-netmod-bgp-cfg]. This document adds some parameters.
augment /bgp:bgp-router/bgp:vpnv4/bgp:unicast:
+--rw apply-label-per-nexthop? boolean
+--rw upeEnable? boolean
augment /bgp:bgp-router/bgp:vpnv6/bgp:unicast:
+--rw apply-label-per-nexthop? boolean
+--rw upeEnable? boolean
...
3.5. BGP VPN Instance Configuration
In a BGP/MPLS IP VPN, a routing protocol or static routes must be
configured between a PE and a CE to allow them to communicate and
allow the CE to obtain routes to other CEs. The routing protocol can
be EBGP, IBGP, RIP, OSPF, or IS-IS. Choose one of the following
configurations as needed.
This section contains writable configuration objects when using BGP
between PE and CE.
Zhuang, et al. Expires January 7, 2016 [Page 6]
Internet-Draft Yang Data Model for L3VPN July 2015
augment /bgp:bgp-router:
+--rw bgp-af-ipv4-vpn-instances
| +--rw bgp-af-ipv4-vpn-instance* [vpn-instance-name]
| +--rw vpn-instance-name string
| +--rw router-id
| | +--rw enable? boolean
| | +--rw (config-type)?
| | +--:(static)
| | | +--rw ip-address? inet:ip-address
| | +--:(auto-select)
| | +--rw enable-auto-select? boolean
| +--rw auto-frr? boolean
| +--rw bgpPeers
| +--rw bgpPeer* [peerAddr]
| +--rw peerAddr inet:ip-address
| +--rw groupName? string
| +--rw remoteAs? string
| +--rw description? string
| +--rw soo? string
| +--rw substituteAsEnable? boolean
+--rw bgp-af-ipv6-vpn-instances
+--rw bgp-af-ipv6-vpn-instance* [vpn-instance-name]
+--rw vpn-instance-name string
+--rw router-id
| +--rw enable? boolean
| +--rw (config-type)?
| +--:(static)
| | +--rw ip-address? inet:ip-address
| +--:(auto-select)
| +--rw enable-auto-select? boolean
+--rw auto-frr? boolean
+--rw bgpPeers
+--rw bgpPeer* [peerAddr]
+--rw peerAddr inet:ip-address
+--rw groupName? string
+--rw remoteAs? string
+--rw description? string
+--rw soo? string
+--rw substituteAsEnable? boolean
...
4. L3VPN YANG MODEL
L3VPN YANG MODEL
<CODE BEGINS> file "l3vpn@2014-08-15.yang"
module l3vpn {
namespace "urn:huawei:params:xml:ns:yang:l3vpn";
Zhuang, et al. Expires January 7, 2016 [Page 7]
Internet-Draft Yang Data Model for L3VPN July 2015
// replace with IANA namespace when assigned
prefix "l3vpn";
import bgp {
prefix bgp;
//draft-zhdankin-netmod-bgp-cfg
}
import ietf-interfaces {
prefix if;
//rfc7223-YANG Interface Management
}
import ietf-inet-types {
prefix inet;
//RFC6991
}
import ietf-yang-types {
prefix yang;
//RFC6991
}
description
"This YANG module defines the generic configuration data for L3VPN service.
Terms and Acronyms
BGP (bgp): Border Gateway Protocol
IPv4 (ipv4):Internet Protocol Version 4
IPv6 (ipv6): Internet Protocol Version 6
";
revision 2014-08-15 {
description
"Initial revision.";
reference "RFC4271, RFC4364, RFC4760";
}
grouping augment-bgp-af-vpn-config {
description
"A set of configuration parameters that is applicable to both BGP-VPNv4
and BGP-VPNv6 address family.";
leaf apply-label-per-nexthop {
description
"The apply-label per-nexthop command enables the ASBR to allocate
labels for IPv4 VPN routes or IPv6 VPN routes based on the next hop.";
Zhuang, et al. Expires January 7, 2016 [Page 8]
Internet-Draft Yang Data Model for L3VPN July 2015
config "true";
type boolean;
default "false";
}
leaf upeEnable {
description
"Specify peer as UPE.";
config "true";
type boolean;
default "false";
}
}
grouping bgp-af-vpn-instance-config {
container router-id {
description
"The router-id command configures router ID for BGP VPN instance IPv4
or IPv6 address family.
By default, no router ID is configured for BGP VPN instance IPv4 or
IPv6 address family, and the BGP router ID is used as the router ID.";
leaf enable {
type boolean;
}
choice config-type {
case static {
leaf ip-address {
description
"Specifies the router ID of a BGP VPN instance IPv4 address
family. The router ID is expressed in the IPv4 address format.
";
config "true";
type inet:ip-address;
}
}
case auto-select {
leaf enable-auto-select {
description
"Configures automatic route ID selection for the current BGP VPN
instance address family.";
Zhuang, et al. Expires January 7, 2016 [Page 9]
Internet-Draft Yang Data Model for L3VPN July 2015
config "true";
type boolean;
}
}
}
}
leaf auto-frr {
description
"The auto-frr command enables BGP Auto FRR.";
config "true";
type boolean;
default "false";
}
container bgpPeers {
list bgpPeer {
key "peerAddr";
max-elements "unbounded";
min-elements "0";
description
"BGP Peer configure class";
leaf peerAddr {
description
"The nerighbor address";
config "true";
type inet:ip-address;
mandatory true;
}
leaf groupName {
description "peerGroupName";
config "true";
type string {
length "1..47";
}
}
leaf remoteAs {
description "Specifies the AS number of the peer.";
config "true";
type string {
length "1..11";
}
}
leaf description {
Zhuang, et al. Expires January 7, 2016 [Page 10]
Internet-Draft Yang Data Model for L3VPN July 2015
description
"specifies the description. The description is a string of letters
or figures. The value ranges from 1 to 80 characters without
spaces.";
config "true";
type string {
length "1..80";
pattern "([^?]*)";
}
}
leaf soo {
description
"The peer soo command configures the Site of Origin (SoO)
attribute for an EBGP peer in a BGP VPN instance. Format is ASN:nn
or IP-address:nn.";
config "true";
type string {
length "3..21";
}
}
leaf substituteAsEnable {
description
"Using the peer substitute-as command, you can substitute the AS
number of the specified peer in the as-path with the local AS
number.";
config "true";
type boolean;
default "false";
}
}
}
}
grouping vpn-af-config {
description
"A set of configuration parameters that is applicable to both IPv4 and
IPv6 address family for a VPN instance .";
leaf route-distinguisher {
description
"The route-distinguisher command configures a route distinguisher (RD)
for the IPv4 or IPv6 address family of a VPN instance.
Zhuang, et al. Expires January 7, 2016 [Page 11]
Internet-Draft Yang Data Model for L3VPN July 2015
Format is ASN:nn or IP-address:nn.";
config "true";
type string {
length "3..21";
}
}
container vpnTargets {
description
"The vpn-target command configures the export or import VPN target
extended community attribute for the VPN instance IPv4/IPv6 address
family.
Format is ASN:nn or IP-address:nn.";
list vpnTarget {
key "vrfRTValue";
max-elements "unbounded";
min-elements "0";
description
"L3vpn vpntarget configure class";
leaf vrfRTValue {
description
"Vpn-target: adds VPN target extended community attribute to the
export or import VPN target extended community list. The
vpn-target can be expressed in either of the following formats:
(1)16-bit AS number:32-bit user-defined number
For example, 1:3. The AS number ranges from 0 to 65535. The
user-defined number ranges from 0 to 4294967295. The AS number
and the user-defined number cannot be 0s at the same time.
That is, a VPN target cannot be 0:0.
(2)32-bit IP address:16-bit user-defined number
For example, 192.168.122.15:1. The IP address ranges from
0.0.0.0 to 255.255.255.255. The user-defined number ranges from
0 to 65535.
(3)32-bit IP address:16-bit user-defined number
For example, 192.168.122.15:1. An IP address ranges from
0.0.0.0 to 255.255.255.255. A user-defined number ranges from 0
to 65535.";
config "true";
mandatory "true";
type string {
length "3..21";
}
}
Zhuang, et al. Expires January 7, 2016 [Page 12]
Internet-Draft Yang Data Model for L3VPN July 2015
leaf vrfRTType {
description
"Specifies the vpn target type, export-extcommunity:
specifies the extended community attributes carried in routing
information to be sent. import-extcommunity: receives routing
information carrying specified extended community attributes.";
mandatory "true";
type enumeration {
enum export_extcommunity {
value "0";
description "export-extcommunity:";
}
enum import_extcommunity {
value "1";
description "import-extcommunity:";
}
enum both {
value "2";
description "export-extcommunity & import-extcommunity:";
}
}
}
}
}
container apply-label {
description
"Apply one label mode for the VPN instance route.";
choice apply-label-mode {
case per-route {
description
"The apply-label per-route command enables the one-label-per-route
mode. The VPN instance IPv4/IPv6 address family assigns a unique
label to each route to be sent to the peer PE.";
leaf apply-label-per-route {
type boolean;
default "true";
}
}
case per-instance {
description
"The apply-label per-instance command applies one label to all VPN
instance IPv4 address family or IPv6 address family routes to a
peer PE.";
Zhuang, et al. Expires January 7, 2016 [Page 13]
Internet-Draft Yang Data Model for L3VPN July 2015
leaf apply-label-per-instance {
type boolean;
default "false";
}
}
}
}//End of "container apply-label"
leaf import-route-policy {
description
"The import route-policy command associates a VPN instance enabled
with the IPv4 or IPv6 address family with an import routing policy.
Only one import routing policy can be associated with a VPN instance
enabled with the IPv4 or IPv6 address family. If the import
route-policy command is run more than once, the latest configuration
overrides the previous ones.";
config "true";
type string {
length "1..40";
}
}
leaf export-route-policy {
description
"The export route-policy command associates a VPN instance enabled
with the IPv4 or IPv6 address family with an export routing policy.
Only one export routing policy can be associated with a VPN instance
enabled with the IPv4 or IPv6 address family. If the export
route-policy command is run more than once, the latest configuration
overrides the previous ones.";
config "true";
type string {
length "1..40";
}
}
container prefix-limit {
description
"The prefix limit command sets a limit on the maximum number of
prefixes supported in the existing VPN instance, preventing the
PE from importing excessive VPN route prefixes.";
leaf prefix-limit-number {
description
"Specifies the maximum number of prefixes supported in the VPN
Zhuang, et al. Expires January 7, 2016 [Page 14]
Internet-Draft Yang Data Model for L3VPN July 2015
instance IPv4 or IPv6 address family.";
type uint32 {
range "1..4294967295";
}
}
choice prefix-limit-action {
case enable-alert-percent {
leaf alert-percent-value {
description
"Specifies the proportion of the alarm threshold to the maximum
number of prefixes.";
type uint8 {
range "1..100";
}
}
leaf route-unchanged {
description
"Indicates that the routing table remains unchanged. By default,
route-unchanged is not configured. When the number of prefixes
in the routing table is greater than the value of the parameter
number, routes are processed as follows:
(1)If route-unchanged is configured, routes in the routing table
remain unchanged.
(2)If route-unchanged is not configured, all routes in the
routing table are deleted and then re-added.";
config "true";
type boolean;
default "false";
}
}
case enable-simple-alert {
leaf simple-alert {
description
"Indicates that when the number of VPN route prefixes exceeds
number, prefixes can still join the VPN routing table and
alarms are displayed.";
config "true";
type boolean;
default "false";
}
}
}
}
Zhuang, et al. Expires January 7, 2016 [Page 15]
Internet-Draft Yang Data Model for L3VPN July 2015
container routing-table-limit {
description
"The routing-table limit command sets a limit on the maximum number of
routes that the IPv4 or IPv6 address family of a VPN instance can
support.
By default, there is no limit on the maximum number of routes that the
IPv4 or IPv6 address family of a VPN instance can support, but the
total number of private network and public network routes on a device
cannot exceed the allowed maximum number of unicast routes.";
leaf routing-table-limit-number {
description
"Specifies the maximum number of routes supported by a VPN instance.
";
config "true";
type uint32 {
range "1..4294967295";
}
}
choice routing-table-limit-action {
case enable-alert-percent {
leaf alert-percent-value {
description
"Specifies the percentage of the maximum number of routes. When
the maximum number of routes that join the VPN instance is up
to the value (number*alert-percent)/100, the system prompts
alarms. The VPN routes can be still added to the routing table,
but after the number of routes reaches number, the subsequent
routes are dropped.";
config "true";
type uint8 {
range "1..100";
}
}
}
case enable-simple-alert {
leaf simple-alert {
description
"Indicates that when VPN routes exceed number, routes can still
be added into the routing table, but the system prompts alarms.
However, after the total number of VPN routes and network public
routes reaches the unicast route limit specified in the License,
the subsequent VPN routes are dropped.";
config "true";
type boolean;
Zhuang, et al. Expires January 7, 2016 [Page 16]
Internet-Draft Yang Data Model for L3VPN July 2015
}
}
}
}
leaf vpn-frr {
description
"Enable VPN FRR in the VPN instance address family view.
If a PE is connected to two other PEs, running the vpn frr command in
the VPN instance address family view of the PE enables VPN FRR and
improves network reliability. After VPN FRR is configured, traffic can
switch to the secondary LSP immediately after the primary LSP becomes
faulty.";
type boolean;
default "false";
}
/*
* VPN QoS.
*/
container l3vpnVrfPipe {
description
"The diffserv-mode command configures the mode of the MPLS
differentiated service (Diff-Serv) for ensuring end-to-end QoS.";
leaf pipeMode {
description
"Pipe mode";
type enumeration {
enum pipe {
value "0";
description
"pipe: Indicates that the Pipe MPLS Diff-Serv mode is adopted.";
}
enum shortPipe {
value "1";
description
"shortPipe: Indicates that the Short-pipe MPLS Diff-Serv mode
is adopted.";
}
enum uniform {
value "2";
description
"uniform: Indicates that the Uniform MPLS Diff-Serv mode is
adopted.";
Zhuang, et al. Expires January 7, 2016 [Page 17]
Internet-Draft Yang Data Model for L3VPN July 2015
}
}
default "uniform";
}
leaf serviceClass {
description
"Service Class, Specifies the service type when the packet enters the
public network from the private network. The values are cs7, cs6, ef,
af4, af3, af2, af1, be.";
type enumeration {
enum be {
value "0";
description "be:";
}
enum af1 {
value "1";
description "af1:";
}
enum af2 {
value "2";
description "af2:";
}
enum af3 {
value "3";
description "af3:";
}
enum af4 {
value "4";
description "af4:";
}
enum ef {
value "5";
description "ef:";
}
enum cs6 {
value "6";
description "cs6:";
}
enum cs7 {
value "7";
description "cs7:";
}
}
default "be";
}
Zhuang, et al. Expires January 7, 2016 [Page 18]
Internet-Draft Yang Data Model for L3VPN July 2015
leaf color {
description
"Specifies a color for marking the discard priority of a packet
transferred from a private network to a public network. The values
are green, yellow, and red.";
type enumeration {
enum green {
value "0";
description "green:";
}
enum yellow {
value "1";
description "yellow:";
}
enum red {
value "2";
description "red:";
}
}
default "green";
}
leaf dsName {
description
"Specifies the DS domain name of the specified Per-Hop Behavior (PHB)
applied to the egress in Short pipe mode. It is a string of 1 to 31
characters.";
type string;
default "default";
}
}
container l3vpnTtlMode {
description
"The ttl-mode command enables MPLS to process the TTL in a specified
mode. By default, MPLS processes the TTL in pipe mode.";
leaf ttlMode {
description "TTL mode";
default "pipe";
type enumeration {
enum pipe {
value "0";
description
"pipe: Enables MPLS to process the TTL in pipe mode.";
}
Zhuang, et al. Expires January 7, 2016 [Page 19]
Internet-Draft Yang Data Model for L3VPN July 2015
enum uniform {
value "1";
description
"uniform: Enables MPLS to process the TTL in uniform mode.";
}
}
}
}
leaf tunnel-policy {
description
"The tnl-policy command associates the IPv4 or IPv6 address family of
a VPN instance with a tunnel policy.";
type string {
length "1..39";
}
}
container importRibs {
description
"Import route class";
leaf protocol {
description
"Specifies the protocol from which routes are imported.
At present, In the IPv4 unicast address family view, the protocol
can be IS-IS,static, direct and BGP.";
type enumeration {
enum ALL {
value "0";
description "ALL:";
}
enum Direct {
value "1";
description "Direct:";
}
enum OSPF {
value "2";
description "OSPF:";
}
enum ISIS {
value "3";
description "ISIS:";
}
enum Static {
value "4";
Zhuang, et al. Expires January 7, 2016 [Page 20]
Internet-Draft Yang Data Model for L3VPN July 2015
description "Static:";
}
enum RIP {
value "5";
description "RIP:";
}
enum BGP {
value "6";
description "BGP:";
}
enum OSPFV3 {
value "7";
description "OSPFV3:";
}
enum RIPNG {
value "8";
description "RIPNG:";
}
enum INVALID {
value "9";
description "INVALID:";
}
}
}
leaf processId {
description
"Specifies the process ID if the protocol from routes are imported is
IS-IS.";
default "0";
type uint32 {
range "0..4294967295";
}
}
leaf bgp-valid-route {
type boolean;
}
leaf policyName {
description
"Policy Id for import routes";
type string {
}
}
}
Zhuang, et al. Expires January 7, 2016 [Page 21]
Internet-Draft Yang Data Model for L3VPN July 2015
leaf traffic-statistics {
description
"The traffic-statistics enable command enables traffic statistics
for a VPN instance.";
type boolean;
default "false";
}
}
/*
* VPN instance view.
*/
container vpn-instances {
description
"VPN instances configuration parameters.
VPN instances support both the IPv4 and IPv6 address families.";
list vpn-instance {
max-elements "unbounded";
min-elements "0";
key "vpn-instance-name";
description
"Specifies the name of the VPN instance. It is a string of 1 to 31
case-sensitive characters.";
leaf vpn-instance-name {
mandatory "true";
type string {
length "1..31";
}
description
"The name of the vpn-instance.";
}
leaf description {
description
"A textual description of VPN instance, the VPN instance description
helps users memorize the VPN instance.";
type string {
length "1..242";
pattern "([^?]*)";
}
}
Zhuang, et al. Expires January 7, 2016 [Page 22]
Internet-Draft Yang Data Model for L3VPN July 2015
container ipv4-family {
description
"The IPv4 address family is enabled for the VPN instance.";
uses vpn-af-config;
}
container ipv6-family {
description
"The IPv6 address family is enabled for the VPN instance.";
uses vpn-af-config;
}
}
}
/*
* Binding Interfaces to a VPN Instance.
*/
container vpn-interfaces {
description
"VPN is enabled on interfaces.";
list vpn-interface {
key "name";
max-elements "unbounded";
min-elements "0";
leaf name {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
}
leaf vpn-instance-name {
type string {
length "1..40";
}
}
}
}
container vrfInfo {
description
"Display the information of the vrf.
Zhuang, et al. Expires January 7, 2016 [Page 23]
Internet-Draft Yang Data Model for L3VPN July 2015
It is intended that this container may be augmented by vendors to
reflect the vendor-specific operational state parameters.";
leaf vrfCreateTime {
description
"CreateTime of the vrf.";
config "false";
type yang:timestamp;
}
leaf vrfUpTime {
description
"UpTime period of the vrf.";
config "false";
type yang:timeticks;
}
leaf label {
description
"Label of the vrf.";
config "false";
type uint32 {
range "16..1048574";
}
}
leaf vrfStatus {
description
"vrf status.";
config "false";
type enumeration {
enum up {
value "0";
description "vrf up.";
}
enum down {
value "1";
description "vrf down.";
}
}
}
}
/*
* augment some bgp vpn functions in bgp module.
*/
augment "/bgp:bgp-router/bgp:vpnv4/bgp:unicast" {
Zhuang, et al. Expires January 7, 2016 [Page 24]
Internet-Draft Yang Data Model for L3VPN July 2015
uses augment-bgp-af-vpn-config;
}
augment "/bgp:bgp-router/bgp:vpnv6/bgp:unicast" {
uses augment-bgp-af-vpn-config;
}
augment "/bgp:bgp-router" {
container bgp-af-ipv4-vpn-instances {
description
"vpn-instances ipv4 address family.";
list bgp-af-ipv4-vpn-instance {
key "vpn-instance-name";
max-elements "unbounded";
min-elements "0";
leaf vpn-instance-name {
type string;
}
uses bgp-af-vpn-instance-config;
}
}
container bgp-af-ipv6-vpn-instances {
description
"vpn-instances ipv6 address family.";
list bgp-af-ipv6-vpn-instance {
key "vpn-instance-name";
max-elements "unbounded";
min-elements "0";
leaf vpn-instance-name {
type string;
}
uses bgp-af-vpn-instance-config;
}
}
}
}
</CODE ENDS>
Zhuang, et al. Expires January 7, 2016 [Page 25]
Internet-Draft Yang Data Model for L3VPN July 2015
5. IANA Considerations
This document makes no request of IANA.
6. Security Considerations
This document does not introduce any new security risk.
7. Acknowledgements
The authors would like to thank Guangying Zheng, Gang Yan for their
contributions to this work.
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
June 1999.
[RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway
Protocol 4 (BGP-4)", RFC 4271, January 2006.
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
Networks (VPNs)", RFC 4364, February 2006.
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
"Multiprotocol Extensions for BGP-4", RFC 4760, January
2007.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011.
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991,
July 2013.
Zhuang, et al. Expires January 7, 2016 [Page 26]
Internet-Draft Yang Data Model for L3VPN July 2015
8.2. Informative References
[I-D.zhdankin-netmod-bgp-cfg]
Alex, A., Patel, K., and A. Clemm, "Yang Data Model for
BGP Protocol", draft-zhdankin-netmod-bgp-cfg-01 (work in
progress), October 2014.
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 7223, May 2014.
Authors' Addresses
Shunwan Zhuang
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: zhuangshunwan@huawei.com
Zhenbin Li
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: lizhenbin@huawei.com
Xufeng Liu
Ericsson
1595 Spring Hill Road, Suite 500
Vienna, VA 22182
USA
Email: xufeng.liu@ericsson.com
Vic Liu
China Mobile
32 Xuanwumen West Ave
Beijing
China
Email: liuzhiheng@chinamobile.com
Zhuang, et al. Expires January 7, 2016 [Page 27]