Network Working Group Y. Liu
Internet-Draft F. Guo
Intended status: Standards Track Huawei
Expires: October 19, 2015 April 17, 2015
Yang Data Model for Multicast in MPLS/BGP IP VPNs
draft-liu-bess-mvpn-yang-00
Abstract
This document defines a YANG data model that can be used to configure
and manage MVPN.
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 October 19, 2015.
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
(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
Liu & Guo Expires October 19, 2015 [Page 1]
Internet-Draft MVPN YANG Data Model April 2015
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. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. MVPN Per-instance Configuration . . . . . . . . . . . . . 5
3.2.1. Per-instance Parameters . . . . . . . . . . . . . . . 5
3.2.2. Per-vpn-target Configuration of MVPN Instance . . . . 5
3.2.3. Per-tunnel-interface Configuration of MVPN Instance . 6
3.2.4. Per-share-mdt Configuration of MVPN Instance . . . . 6
3.2.5. Per-ipmsi-tunnel Configuration of MVPN Instance . . . 6
3.2.6. Per-switch-mdt Configuration of MVPN Instance . . . . 7
3.2.7. Per-spmsi-tunnel Configuration of MVPN Instance . . . 7
3.3. MVPN Operation State . . . . . . . . . . . . . . . . . . 8
4. MVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 10
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
6. Security Considerations . . . . . . . . . . . . . . . . . . . 35
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.1. Normative References . . . . . . . . . . . . . . . . . . 35
8.2. Informative References . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
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 encoding other than XML (e.g. JSON) are
being defined. Furthermore, YANG data models can be used as the
basis of implementation for other interface, such as CLI and
Programmatic APIs.
This document defines a YANG data model that can be used to configure
and manage MVPN. It includes Cisco systems' solution [RFC6037], BGP
MVPN [RFC6513][RFC6514] etc. In addition, features described in MVPN
standards other than mentioned above RFC in future version.
Liu & Guo Expires October 19, 2015 [Page 2]
Internet-Draft MVPN YANG Data Model April 2015
2. Terminology
o PIM: Protocol Independent Multicast
o SM: Sparse Mode
o SSM: Source-specific Multicast
o PMSI: P-Multicast Service Interface
o MDT: Multicast Distribution Tree
o P2MP: Point to Multipoint
o TE: Traffic Engineering
o MLDP: Multipoint Label Distribution Protocol
3. Design of Data Model
3.1. Overview
MVPN includes two types of configuration objects and operation states
for MD MVPN and NG MVPN. The MVPN Yang module is divided into five
main containers, one contains the writable parameters, while the
others contain the operational states.
o mvpn-instances: that contains per-instance writable configuration
objects.
o mvpn-share-grp-infos: provide share group states information for
MD MVPN instances.
o mvpn-swt-grp-send-infos: provide switch group states sending
information for MD MVPN instances.
o mvpn-swt-grp-recv-infos: provide switch group states received
information for MD MVPN instances.
o mvpn-pmsi-infos: provide i-pmsi and s-pmsi states information for
NG MVPN instances.
The figure below describes the overall structure of the MVPN Yang
module :
module: mvpn
+--rw mvpn-instances
| +--rw mvpn-instance* [vrf-name address-family]
Liu & Guo Expires October 19, 2015 [Page 3]
Internet-Draft MVPN YANG Data Model April 2015
| +--...
| +--rw mvpn-vpn-targets
| | +--rw mvpn-vpn-target* [rt-type vpn-tar-val]
| | +--...
| +--rw mvpn-tunnel-interfaces
| | +--rw mvpn-tunnel-interface* [mtunnel-num]
| | +--...
| +--rw mvpn-share-mdts
| | +--rw mvpn-share-mdt
| | +--...
| +--rw mvpn-ipmsi-tunnels
| | +--rw mvpn-ipmsi-tunnel* [tunnel-mode]
| | +--...
| +--rw mvpn-switch-mdts
| | +--rw mvpn-switch-mdt
| | +--...
| +--rw mvpn-spmsi-tunnels
| +--rw mvpn-spmsi-tunnel
| +--...
+--ro mvpn-share-grp-infos
| +--ro mvpn-share-grp-info* [vrf-name address-family]
| +--...
+--ro mvpn-swt-grp-send-infos
| +--ro mvpn-swt-grp-send-info* [vrf-name address-family]
| +--...
| +--ro mvpn-swt-sg-send-infos
| +--ro mvpn-swt-sg-send-info* [ipv4-src-address ipv4-grp-address]
| +--...
+--ro mvpn-swt-grp-recv-infos
| +--ro mvpn-swt-grp-recv-info* [vrf-name address-family]
| +--...
| +--ro sender-infos
| +--ro sender-info* [ipv4-sender-address]
| +--...
| +--ro swt-sg-infos
| +--ro swt-sg-info* [ipv4-src-address ipv4-grp-address]
| +--...
+--ro mvpn-pmsi-infos
+--ro mvpn-pmsi-info* [vrf-name address-family]
+--...
+--ro mvpn-ipmsi-tnl-infos
| +--ro mvpn-ipmsi-tnl-info* [tunnel-address]
| +--...
+--ro mvpn-spmsi-sg-infos
+--ro mvpn-spmsi-sg-info* [ipv4-src-address ipv4-grp-address]
+--...
Figure 1 The overview of MVPN YANG data model
Liu & Guo Expires October 19, 2015 [Page 4]
Internet-Draft MVPN YANG Data Model April 2015
3.2. MVPN Per-instance Configuration
MVPN per-instance configuration container includes parameters of the
MVPN instance binding a specific VRF. MVPN per-instance
configuration container is divided into:
o Per-instance parameters.
o Per-vpn-target configuration of the MVPN instance.
o Per-tunnel-interface configuration of the MVPN instance.
o Per-share-mdt configuration of the MVPN instance.
o Per-ipmsi-tunnel configuration of the MVPN instance.
o Per-switch-mdt configuration of the MVPN instance.
o Per-spmsi-tunnel configuration of the MVPN instance.
3.2.1. Per-instance Parameters
The per-instance parameter includes the name of the VRF bound by the
MVPN instance, and signal mode or auto discovery mode etc.
+--rw mvpn-instances
| +--rw mvpn-instance* [vrf-name address-family]
| +--rw vrf-name string
| +--rw address-family enumeration
| +--rw signaling-mode? enumeration
| +--rw auto-discovery-mode? enumeration
| +--rw config-type? enumeration
| +--rw is-sender-site? boolean
| +--rw rpt-spt-mode? boolean
Figure 2 The YANG data model of MVPN instance configuration
3.2.2. Per-vpn-target Configuration of MVPN Instance
The vpn-target of mvpn can be configured differently from unicast
vpn. By default, unicast vpn-targets are always used for multicast
vpn.
Liu & Guo Expires October 19, 2015 [Page 5]
Internet-Draft MVPN YANG Data Model April 2015
| +--rw mvpn-vpn-targets
| | +--rw mvpn-vpn-target* [rt-type vpn-tar-val]
| | +--rw rt-type enumeration
| | +--rw vpn-tar-val string
Figure 3 The YANG data model of MVPN vpn-target configuration
3.2.3. Per-tunnel-interface Configuration of MVPN Instance
The tunnel interface configuration includes interface number or name,
and address for ipv4 or ipv6 etc. It can borrow address from other
interfaces.
| +--rw mvpn-tunnel-interfaces
| | +--rw mvpn-tunnel-interface* [mtunnel-num]
| | +--rw mtunnel-num uint16
| | +--rw mtunnel-name? string
| | +--rw is-unnumbered? boolean
| | +--rw unnumbered-if-name? if-name
| | +--rw mtunnel-if-ipv4-address? inet:ipv4-address
| | +--rw mtunnel-if-ipv6-address? inet:ipv6-address
| | +--rw mtunnel-if-ipv4-masklength? uint8
| | +--rw mtunnel-if-ipv6-masklength? uint8
Figure 4 The YANG data model of MVPN tunnel-interface configuration
3.2.4. Per-share-mdt Configuration of MVPN Instance
For MD MVPN, every vpn instance has only one share mdt, and it can be
configured pim mode and group address of the multicast tree in public
net.
| +--rw mvpn-share-mdts
| | +--rw mvpn-share-mdt
| | +--rw share-mdt-mode enumeration
| | +--rw ipv4-share-grp-addr inet:ipv4-address
| | +--rw ipv6-share-grp-addr inet:ipv6-address
Figure 5 The YANG data model of MVPN share-mdt configuration
3.2.5. Per-ipmsi-tunnel Configuration of MVPN Instance
For NG MVPN, every vpn instance has only one i-pmsi tunnel, and it
can be configured tunnel mode, and especially specified template for
p2mp te.
Liu & Guo Expires October 19, 2015 [Page 6]
Internet-Draft MVPN YANG Data Model April 2015
| +--rw mvpn-ipmsi-tunnels
| | +--rw mvpn-ipmsi-tunnel* [tunnel-mode]
| | +--rw tunnel-mode enumeration
| | +--rw te-p2mp-template? string
Figure 6 The YANG data model of MVPN ipmsi-tunnel configuration
3.2.6. Per-switch-mdt Configuration of MVPN Instance
For MD MVPN, every vpn instance can be configured switch group
address pool for forwarding multicast data from share mdt to switch
mdt. It can be also specified switch threshold value, group policies
etc.
| +--rw mvpn-switch-mdts
| | +--rw mvpn-switch-mdt
| | +--rw mdt-limit? uint16
| | +--rw switch-mdt-mode enumeration
| | +--rw ipv4-group-pool-addr inet:ipv4-address
| | +--rw ipv4-group-pool-masklength uint8
| | +--rw ipv6-group-pool-addr inet:ipv6-address
| | +--rw ipv6-group-pool-masklength uint8
| | +--rw switch-threshold? uint32
| | +--rw switch-delay-time? uint8
| | +--rw hold-down-time? uint8
| | +--rw group-acl-name? string
| | +--rw group-acl-ipv6-name? string
| | +--rw is-switch-group-reuse-log? boolean
Figure 7 The YANG data model of MVPN switch-mdt configuration
3.2.7. Per-spmsi-tunnel Configuration of MVPN Instance
For NG MVPN, every vpn instance can be configured s-pmsi tunnels for
forwarding multicast data from i-pmsi tunnel to s-pmsi tunnel. It
can be also specified group and source address in private net, and
switch threshold value etc.
Liu & Guo Expires October 19, 2015 [Page 7]
Internet-Draft MVPN YANG Data Model April 2015
| +--rw mvpn-spmsi-tunnels
| +--rw mvpn-spmsi-tunnel
| +--rw ipv4-group-addr inet:ipv4-address
| +--rw ipv6-group-addr inet:ipv6-address
| +--rw ipv4-group-masklength uint8
| +--rw ipv6-groupmasklength uint8
| +--rw ipv4-source-addr inet:ipv4-address
| +--rw ipv6-source-addr inet:ipv6-address
| +--rw ipv4-source-masklength uint8
| +--rw ipv6-source-masklength uint8
| +--rw tunnel-mode enumeration
| +--rw p2mp-te-template? string
| +--rw threshold? uint32
| +--rw tunnel-limit? uint8
Figure 8 The YANG data model of MVPN spmsi-tunnel configuration
3.3. MVPN Operation State
MVPN container provides operational states for MD MVPN and NG MVPN
instances. This container is divided in four components:
o mvpn-share-grp-infos: provide share group states information for
MD MVPN instances.
o mvpn-swt-grp-send-infos: provide switch group states sending
information for MD MVPN instances.
o mvpn-swt-grp-recv-infos: provide switch group states received
information for MD MVPN instances.
o mvpn-pmsi-infos: provide i-pmsi and s-pmsi states information for
NG MVPN instances.
+--ro mvpn-share-grp-infos
| +--ro mvpn-share-grp-info* [vrf-name address-family]
| +--ro vrf-name string
| +--ro address-family enumeration
| +--ro ipv4-share-grp-address? inet:ipv4-address
| +--ro ipv6-share-grp-address? inet:ipv6-address
| +--ro ipv4-mtunnel-address? inet:ipv4-address
| +--ro ipv6-mtunnel-address? inet:ipv6-address
Figure 9 The YANG data model of MVPN share group information
Liu & Guo Expires October 19, 2015 [Page 8]
Internet-Draft MVPN YANG Data Model April 2015
+--ro mvpn-swt-grp-send-infos
| +--ro mvpn-swt-grp-send-info* [vrf-name address-family]
| +--ro vrf-name string
| +--ro address-family enumeration
| +--ro ipv4-swt-grp-address? inet:ipv4-address
| +--ro ipv6-swt-grp-address? inet:ipv6-address
| +--ro reference-count? uint32
| +--ro mvpn-swt-sg-send-infos
| +--ro mvpn-swt-sg-send-info* [ipv4-src-address ipv4-grp-address]
| +--ro ipv4-src-address inet:ipv4-address
| +--ro ipv6-src-address? inet:ipv6-address
| +--ro ipv4-grp-address inet:ipv4-address
| +--ro ipv6-grp-address? inet:ipv6-address
| +--ro swt-time? uint32
Figure 10 The YANG data model of MVPN switch group sending information
+--ro mvpn-swt-grp-recv-infos
| +--ro mvpn-swt-grp-recv-info* [vrf-name address-family]
| +--ro vrf-name string
| +--ro address-family enumeration
| +--ro ipv4-swt-grp-address? inet:ipv4-address
| +--ro ipv6-swt-grp-address? inet:ipv6-address
| +--ro reference-count? uint32
| +--ro active-count? uint32
| +--ro sender-infos
| +--ro sender-info* [ipv4-sender-address]
| +--ro ipv4-sender-address inet:ipv4-address
| +--ro ipv6-sender-address? inet:ipv6-address
| +--ro sender-active-cnt? uint32
| +--ro swt-sg-infos
| +--ro swt-sg-info* [ipv4-src-address ipv4-grp-address]
| +--ro ipv4-src-address inet:ipv4-address
| +--ro ipv6-src-address? inet:ipv6-address
| +--ro ipv4-grp-address inet:ipv4-address
| +--ro ipv6-grp-address? inet:ipv6-address
| +--ro expire-time? uint32
| +--ro is-active? boolean
Figure 11 The YANG data model of MVPN switch group received information
Liu & Guo Expires October 19, 2015 [Page 9]
Internet-Draft MVPN YANG Data Model April 2015
+--ro mvpn-pmsi-infos
+--ro mvpn-pmsi-info* [vrf-name address-family]
+--ro vrf-name string
+--ro address-family enumeration
+--ro mvpn-pmsi-type enumeration
+--ro tunnel-mode enumeration
+--ro te-p2mp-id? uint16
+--ro te-tunnel-id? uint16
+--ro te-extend-tunnel-id? uint16
+--ro mldp-root-addr? inet:ipv4-address
+--ro mldp-lsp-id? string
+--ro mvpn-ipmsi-tnl-infos
| +--ro mvpn-ipmsi-tnl-info* [tunnel-address]
| +--ro tunnel-address inet:ipv4-address
| +--ro tunnel-role? enumeration
+--ro mvpn-spmsi-sg-infos
+--ro mvpn-spmsi-sg-info* [ipv4-src-address ipv4-grp-address]
+--ro ipv4-src-address inet:ipv4-address
+--ro ipv6-src-address? inet:ipv6-address
+--ro ipv4-grp-address inet:ipv4-address
+--ro ipv6-grp-address? inet:ipv6-address
Figure 12 The YANG data model of MVPN i-pmsi and s-pmsi information
4. MVPN Yang Module
module mvpn {
namespace "urn:huawei:params:xml:ns:yang:mvpn";
// replace with IANA namespace when assigned -
// urn:ietf:params:xml:ns:yang:1
prefix "mvpn";
import ietf-inet-types {
prefix inet;
}
organization
"IETF BESS(BGP Enabled Services) Working Group";
contact
"liuyisong@huawei.com
guofeng@huawei.com";
description
"This YANG module defines the generic configuration
data for mvpn, which is common across all of the vendor
implementations of the protocol. It is intended that the module
will be extended by vendors to define vendor-specific
mvpn configuration parameters.";
revision 2015-04-30 {
description
"Initial revision.";
Liu & Guo Expires October 19, 2015 [Page 10]
Internet-Draft MVPN YANG Data Model April 2015
}
typedef if-name {
description "if-name is like ethernet1/1/1/1";
type string {
length "1..63";
}
}
container mvpn-instances {
list mvpn-instance {
key "vrf-name address-family";
config "true";
leaf vrf-name {
description "Name of a vpn instance. ";
config "true";
type string {
length "0..32";
}
}
leaf address-family {
config "true";
mandatory "true";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf signaling-mode {
description "Signaling mode.";
config "true";
default "invalid";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
Liu & Guo Expires October 19, 2015 [Page 11]
Internet-Draft MVPN YANG Data Model April 2015
}
enum bgp {
value "1";
description "bgp:bgp";
}
enum pim {
value "2";
description "pim:pim";
}
}
}
leaf auto-discovery-mode {
description "Auto discovery mode.";
config "true";
default "none";
type enumeration {
enum none {
value "0";
description "none:none";
}
enum ad {
value "1";
description "ad:ad";
}
}
}
leaf config-type {
description "Mvpn type, which can be md or ng.";
config "true";
default "md";
type enumeration {
enum md {
value "0";
description "md:md";
}
enum ng {
value "1";
description "ng:ng";
}
}
}
leaf is-sender-site {
description "Configure the current PE as a sender PE.";
config "true";
default "false";
type boolean{
}
}
Liu & Guo Expires October 19, 2015 [Page 12]
Internet-Draft MVPN YANG Data Model April 2015
leaf rpt-spt-mode {
description "Rpt and spt mode in private net.";
config "true";
default "false";
type boolean{
}
}
container mvpn-vpn-targets {
list mvpn-vpn-target {
key "rt-type vpn-tar-val";
leaf rt-type {
description
"rt types are as follows:
export-extcommunity: specifies the value of
the extended community attribute of the
route from an outbound interface to the
destination vpn.
import-extcommunity: receives routes that
carry the specified extended community
attribute";
config "true";
mandatory "true";
type enumeration {
enum export-extcommunity {
value "0";
description "export-extcommunity";
}
enum import-extcommunity {
value "1";
description "import-extcommunity";
}
}
}
leaf vpn-tar-val {
description
"the available mvpn target formats are as
follows:
- 16-bit as number:32-bit user-defined
number, for example, 1:3. an as number
ranges from 0 to 65535, and a user-defined
number ranges from 0 to 4294967295. The as
number and user-defined number cannot be
both 0s. That is, a vpn target cannot be 0:0.
- 32-bit ip address:16-bit user-defined
Liu & Guo Expires October 19, 2015 [Page 13]
Internet-Draft MVPN YANG Data Model April 2015
number, for example, 192.168.122.15:1.
The ip address ranges from 0.0.0.0 to
255.255.255.255, and the user-defined
number ranges from 0 to 65535.";
config "true";
type string {
length "3..21";
}
}
}
}
container mvpn-tunnel-interfaces {
list mvpn-tunnel-interface {
key "mtunnel-num";
leaf mtunnel-num {
description "Mti id.";
config "true";
type uint16 {
range "0..4095";
}
}
leaf mtunnel-name {
description "Mti name.";
config "true";
type string {
length "1..48";
}
}
leaf is-unnumbered {
description
"Configure the ip address of a specified
interface as the default ip address of
an mti.";
config "true";
default "false";
type boolean{
}
}
leaf unnumbered-if-name {
description
"Interface whose ip address is used as the
default ip address of an mti.";
config "true";
Liu & Guo Expires October 19, 2015 [Page 14]
Internet-Draft MVPN YANG Data Model April 2015
type if-name;
}
leaf mtunnel-if-ipv4-address {
description "Mti ipv4 address.";
config "true";
type inet:ipv4-address;
}
leaf mtunnel-if-ipv6-address {
description "Mti ipv6 address.";
config "true";
type inet:ipv6-address;
}
leaf mtunnel-if-ipv4-masklength {
description "Mask length of the mti ipv4 address.";
config "true";
type uint8 {
range "0..32";
}
}
leaf mtunnel-if-ipv6-masklength {
description "Mask length of the mti ipv6 address.";
config "true";
type uint8 {
range "0..128";
}
}
}
}
container mvpn-share-mdts {
container mvpn-share-mdt {
leaf share-mdt-mode {
description "Share mdt mode.";
config "true";
mandatory "true";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
}
enum pim-ssm {
value "1";
description "pim-ssm:pim-ssm";
}
enum pim-sm {
Liu & Guo Expires October 19, 2015 [Page 15]
Internet-Draft MVPN YANG Data Model April 2015
value "2";
description "pim-sm:pim-sm";
}
enum pim-dm {
value "3";
description "pim-dm:pim-dm";
}
enum bidir-pim {
value "4";
description "bidir-pim:bidir-pim";
}
}
}
leaf ipv4-share-grp-addr {
description "share-group ipv4 address.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv6-share-grp-addr {
description "share-group ipv6 address.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
}
}
container mvpn-ipmsi-tunnels {
list mvpn-ipmsi-tunnel {
key "tunnel-mode";
leaf tunnel-mode {
description "I-PMSI tunnel mode.";
config "true";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te:p2mp-te";
}
Liu & Guo Expires October 19, 2015 [Page 16]
Internet-Draft MVPN YANG Data Model April 2015
enum p2mp-mldp {
value "2";
description "p2mp-mldp:p2mp-mldp";
}
enum pim-ssm {
value "3";
description "pim-ssm:pim-ssm";
}
enum pim-sm {
value "4";
description "pim-sm:pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim:bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication:
ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp:mp2mp-mldp";
}
}
}
leaf te-p2mp-template {
description "P2mp te tunnel template";
config "true";
type string {
length "1..31";
}
}
}
}
container mvpn-switch-mdts {
container mvpn-switch-mdt {
leaf mdt-limit {
description
"maximum number of switch mdts allowed.";
config "true";
default "0";
type uint16 {
Liu & Guo Expires October 19, 2015 [Page 17]
Internet-Draft MVPN YANG Data Model April 2015
range "0..256";
}
}
leaf switch-mdt-mode {
description "Switch mdt mode.";
config "true";
mandatory "true";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
}
enum pim-ssm {
value "1";
description "pim-ssm:pim-ssm";
}
enum pim-sm {
value "2";
description "pim-sm:pim-sm";
}
enum pim-dm {
value "3";
description "pim-dm:pim-dm";
}
enum bidir-pim {
value "4";
description "bidir-pim:bidir-pim";
}
}
}
leaf ipv4-group-pool-addr {
description
"Start and end ipv4 addresses of the
switch-group address pool. The value is
in dotted decimal notation and ranges
from 224.0.1.0 to 239.255.255.255.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv4-group-pool-masklength {
description
"Mask length for ipv4 addresses in the
switch-group address pool.";
config "true";
mandatory "true";
type uint8 {
range "24..32";
Liu & Guo Expires October 19, 2015 [Page 18]
Internet-Draft MVPN YANG Data Model April 2015
}
}
leaf ipv6-group-pool-addr {
description
"Start and end ipv6 addresses of the
switch-group address pool. ";
config "true";
mandatory "true";
type inet:ipv6-address;
}
leaf ipv6-group-pool-masklength {
description
"Mask length for ipv6 addresses in the
switch-group address pool.";
config "true";
mandatory "true";
type uint8 {
range "96..128";
}
}
leaf switch-threshold {
description
"Multicast packet rate threshold for
triggering the switching from the
share-mdt to the switch-mdt. The value is
an integer ranging from 0 to 4194304, in
kbit/s. The default value is 0.";
config "true";
default "0";
type uint32 {
range "0..4194304";
}
}
leaf switch-delay-time {
description
"Delay for switching from the share-mdt to
the switch-mdt. The value is an integer
ranging from 3 to 60, in seconds. ";
config "true";
default "5";
type uint8 {
range "3..60";
}
}
leaf hold-down-time {
description
"Delay for switching from the switch-mdt
to the share-mdt. The value is an integer
Liu & Guo Expires October 19, 2015 [Page 19]
Internet-Draft MVPN YANG Data Model April 2015
ranging from 0 to 512, in seconds. ";
config "true";
default "60";
type uint8 {
range "0..180";
}
}
leaf group-acl-name {
description
"Specify the (s, g) entry on which the
switch-group address pool takes effect.
The value is an integer ranging from 3000
to 3999 or a string of 32 case-sensitive
characters. If no value is specified, the
switch-group address pool takes effect on
all (s, g).";
config "true";
type string {
length "1..32";
}
}
leaf group-acl-ipv6-name {
description
"Specify the (s, g) entry on which the
switch-group address pool takes effect.
The value is an integer ranging from 3000
to 3999 or a string of 32 case-sensitive
characters. If no value is specified, the
switch-group address pool takes effect on
all (s, g).";
config "true";
type string {
length "1..32";
}
}
leaf is-switch-group-reuse-log {
description
"Enable the function to record switch-group
address reuse information.";
config "true";
default "false";
type boolean{
}
}
}
}
Liu & Guo Expires October 19, 2015 [Page 20]
Internet-Draft MVPN YANG Data Model April 2015
container mvpn-spmsi-tunnels {
container mvpn-spmsi-tunnel {
leaf ipv4-group-addr {
description
"Start and end ipv4 addresses of the group
address in private net. The value is in
dotted decimal notation and ranges from
224.0.1.0 to 239.255.255.255.";
config "true";
mandatory "true";
type inet:ipv4-address;
}
leaf ipv6-group-addr {
description
"Start and end ipv6 addresses of the group
address in private net.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
leaf ipv4-group-masklength {
description
"Group mask length for ipv4 addresses in
the group address pool in private net.";
config "true";
mandatory "true";
type uint8 {
range "4..32";
}
}
leaf ipv6-groupmasklength {
description
"Group mask length for ipv6 addresses in
the group address pool in private net.";
config "true";
mandatory "true";
type uint8 {
range "8..128";
}
}
leaf ipv4-source-addr {
description
"Start and end ipv4 addresses of the source
address in private net.";
config "true";
mandatory "true";
Liu & Guo Expires October 19, 2015 [Page 21]
Internet-Draft MVPN YANG Data Model April 2015
type inet:ipv4-address;
}
leaf ipv6-source-addr {
description
"Start and end ipv6 addresses of the source
address in private net.";
config "true";
mandatory "true";
type inet:ipv6-address;
}
leaf ipv4-source-masklength {
description
"Source mask length for ipv4 addresses in
the group address pool in private net.";
config "true";
mandatory "true";
type uint8 {
range "0..32";
}
}
leaf ipv6-source-masklength {
description
"Source mask length for ipv6 addresses in
the group address pool in private net.";
config "true";
mandatory "true";
type uint8 {
range "0..128";
}
}
leaf tunnel-mode {
description "S-pmsi tunnel mode.";
config "true";
mandatory "true";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te:p2mp-te";
}
enum p2mp-mldp {
value "2";
description "p2mp-mldp:p2mp-mldp";
}
enum pim-ssm {
Liu & Guo Expires October 19, 2015 [Page 22]
Internet-Draft MVPN YANG Data Model April 2015
value "3";
description "pim-ssm:pim-ssm";
}
enum pim-sm {
value "4";
description "pim-sm:pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim:bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication:
ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp:mp2mp-mldp";
}
}
}
leaf p2mp-te-template {
description "P2mp te tunnel template";
config "true";
type string {
length "1..31";
}
}
leaf threshold {
description
"Multicast packet rate threshold for
triggering the switching from the i-pmsi
to the s-pmsi. The value is an integer
ranging from 0 to 4194304, in kbit/s. The
default value is 0.";
config "true";
type uint32 {
range "0..4194304";
}
}
leaf tunnel-limit {
description
"Maximum number of s-pmsi tunnels allowed.";
config "true";
type uint8 {
range "1..16";
Liu & Guo Expires October 19, 2015 [Page 23]
Internet-Draft MVPN YANG Data Model April 2015
}
}
}
}
}
}
container mvpn-share-grp-infos {
config "false";
list mvpn-share-grp-info {
key "vrf-name address-family";
config "false";
leaf vrf-name {
description "Name of a vpn instance. ";
config "false";
type string {
length "0..32";
}
}
leaf address-family {
description "Ipv4 or ipv6 address family.";
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-share-grp-address {
description "Share-group address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-share-grp-address {
Liu & Guo Expires October 19, 2015 [Page 24]
Internet-Draft MVPN YANG Data Model April 2015
description "Share-group address for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf ipv4-mtunnel-address {
description "Mti ip address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-mtunnel-address {
description "Mti ip address for ipv6.";
config "false";
type inet:ipv6-address;
}
}
}
container mvpn-swt-grp-send-infos {
config "false";
list mvpn-swt-grp-send-info {
key "vrf-name address-family";
config "false";
description
"Switch-group information sent by a specified vpn
instance.";
leaf vrf-name {
description "Name of a vpn instance. ";
config "false";
type string {
length "0..32";
}
}
leaf address-family {
description "Ipv4 or ipv6 address family.";
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
Liu & Guo Expires October 19, 2015 [Page 25]
Internet-Draft MVPN YANG Data Model April 2015
description "ipv6unicast:";
}
}
}
leaf ipv4-swt-grp-address {
description "Switch-group address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-swt-grp-address {
description "Switch-group address for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf reference-count {
description
"Number of vpn multicast groups joining a
switch-group.";
config "false";
type uint32 {
range "1..4294967295";
}
}
container mvpn-swt-sg-send-infos {
list mvpn-swt-sg-send-info {
key "ipv4-src-address ipv4-grp-address";
config "false";
leaf ipv4-src-address {
description
"Source address on the mvpn for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-src-address {
description
"Source address on the mvpn for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf ipv4-grp-address {
description
"Group address on the mvpn for ipv4.";
config "false";
type inet:ipv4-address;
Liu & Guo Expires October 19, 2015 [Page 26]
Internet-Draft MVPN YANG Data Model April 2015
}
leaf ipv6-grp-address {
description
"Group address on the mvpn for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf swt-time {
description
"Switching duration of the vpn multicast
(s, g) entry joining the switch-group. ";
config "false";
type uint32 {
range "1..4294967295";
}
}
}
}
}
}
container mvpn-swt-grp-recv-infos {
config "false";
list mvpn-swt-grp-recv-info {
key "vrf-name address-family";
config "false";
description
"Switch-group information received by a specified vpn
instance.";
leaf vrf-name {
description "Name of a vpn instance. ";
config "false";
type string {
length "0..32";
}
}
leaf address-family {
description "Ipv4 or ipv6 address family.";
config "false";
type enumeration {
Liu & Guo Expires October 19, 2015 [Page 27]
Internet-Draft MVPN YANG Data Model April 2015
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf ipv4-swt-grp-address {
description "Switch-group address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-swt-grp-address {
description "Switch-group address for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf reference-count {
description
"Number of vpn multicast groups joining the
switch-group.";
config "false";
type uint32 {
range "1..4294967295";
}
}
leaf active-count {
description
"Number of active vpn multicast groups
(with receivers) joining a switch-group.";
config "false";
type uint32 {
range "1..4294967295";
}
}
container sender-infos {
list sender-info {
key "ipv4-sender-address";
config "false";
leaf ipv4-sender-address {
description
"Bgp peer address of the PE that sends
Liu & Guo Expires October 19, 2015 [Page 28]
Internet-Draft MVPN YANG Data Model April 2015
switch-group information for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-sender-address {
description
"Bgp peer address of the PE that sends
switch-group information for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf sender-active-cnt {
description
"Number of active vpn multicast groups
(with receivers) referenced by a sender.";
config "false";
type uint32 {
range "1..4294967295";
}
}
container swt-sg-infos {
list swt-sg-info {
key "ipv4-src-address ipv4-grp-address";
config "false";
leaf ipv4-src-address {
description
"Mvpn source address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-src-address {
description
"Mvpn source address for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf ipv4-grp-address {
description
"Mvpn group address for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-grp-address {
description
"Mvpn group address for ipv6.";
Liu & Guo Expires October 19, 2015 [Page 29]
Internet-Draft MVPN YANG Data Model April 2015
config "false";
type inet:ipv6-address;
}
leaf expire-time {
description
"Timeout duration of vpn (s, g)
entries.";
config "false";
type uint32 {
range "1..4294967295";
}
}
leaf is-active {
description
"Flag indicating whether a vpn
(s, g) entry is active.";
config "false";
type boolean{
}
}
}
}
}
}
}
}
container mvpn-pmsi-infos {
config "false";
list mvpn-pmsi-info {
key "vrf-name address-family";
config "false";
description "i-pmsi & s-pmsi information.";
leaf vrf-name {
description "Name of a vpn instance. ";
config "false";
type string {
length "0..32";
}
Liu & Guo Expires October 19, 2015 [Page 30]
Internet-Draft MVPN YANG Data Model April 2015
}
leaf address-family {
description "ipv4 or ipv6 address family.";
config "false";
type enumeration {
enum ipv4unicast {
value "0";
description "ipv4unicast:";
}
enum ipv6unicast {
value "1";
description "ipv6unicast:";
}
}
}
leaf mvpn-pmsi-type {
description "Type of mvpn pmsi";
config "false";
mandatory "true";
type enumeration {
enum i-pmsi{
value "0";
description "i-pmsi information";
}
enum s-pmsi{
value "1";
description "s-pmsi information";
}
}
}
leaf tunnel-mode {
description "Tunnel mode.";
config "false";
mandatory "true";
type enumeration {
enum invalid {
value "0";
description "invalid:invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te:p2mp-te";
}
enum p2mp-mldp {
value "2";
description "p2mp-mldp:p2mp-mldp";
}
enum pim-ssm {
Liu & Guo Expires October 19, 2015 [Page 31]
Internet-Draft MVPN YANG Data Model April 2015
value "3";
description "pim-ssm:pim-ssm";
}
enum pim-sm {
value "4";
description "pim-sm:pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim:bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication:
ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp:mp2mp-mldp";
}
}
}
leaf te-p2mp-id {
description "P2mp id of the p2mp tunnel.";
config "false";
default "0";
type uint16 {
range "0..65535";
}
}
leaf te-tunnel-id {
description "Id of the p2mp tunnel.";
config "false";
type uint16 {
range "1..65535";
}
}
leaf te-extend-tunnel-id {
description "P2mp extended tunnel interface id.";
config "false";
type uint16 {
range "1..65535";
}
}
leaf mldp-root-addr {
description "Ip address of the root of a p2mp ldp lsp.";
config "false";
type inet:ipv4-address;
Liu & Guo Expires October 19, 2015 [Page 32]
Internet-Draft MVPN YANG Data Model April 2015
}
leaf mldp-lsp-id {
description "P2mp ldp lsp id.";
config "false";
type string {
length "1..256";
}
}
container mvpn-ipmsi-tnl-infos {
list mvpn-ipmsi-tnl-info {
key "tunnel-address";
config "false";
leaf tunnel-address {
description "Tunnel node address.";
config "false";
type inet:ipv4-address;
}
leaf tunnel-role {
description "Role of a tunnel node.";
config "false";
type enumeration {
enum none {
value "0";
description "none:nome";
}
enum root {
value "1";
description "root:root";
}
enum leaf {
value "2";
description "leaf:leaf";
}
enum root-and-leaf {
value "3";
description "root-and-leaf:
root-and-leaf";
}
}
}
}
}
container mvpn-spmsi-sg-infos {
Liu & Guo Expires October 19, 2015 [Page 33]
Internet-Draft MVPN YANG Data Model April 2015
list mvpn-spmsi-sg-info {
key "ipv4-src-address ipv4-grp-address";
config "false";
leaf ipv4-src-address {
description
"Source address in s-pmsi for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-src-address {
description
"Source address in s-pmsi for ipv6.";
config "false";
type inet:ipv6-address;
}
leaf ipv4-grp-address {
description
"Group address in s-pmsi for ipv4.";
config "false";
type inet:ipv4-address;
}
leaf ipv6-grp-address {
description
"Group address in s-pmsi for ipv6.";
config "false";
type inet:ipv6-address;
}
}
}
}
}
}
5. IANA Considerations
This draft includes no request to IANA.
Liu & Guo Expires October 19, 2015 [Page 34]
Internet-Draft MVPN YANG Data Model April 2015
6. Security Considerations
The data model defined does not create any security implications.
This draft does not change any underlying security issues inherent in
[I-D.ietf-netmod-routing-cfg].
7. Acknowledgements
TBD
8. References
8.1. Normative References
[I-D.ietf-netmod-routing-cfg]
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-17 (work in
progress), March 2015.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems'
Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011.
[RFC6513] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP
VPNs", RFC 6513, February 2012.
[RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP
Encodings and Procedures for Multicast in MPLS/BGP IP
VPNs", RFC 6514, February 2012.
8.2. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
Authors' Addresses
Liu & Guo Expires October 19, 2015 [Page 35]
Internet-Draft MVPN YANG Data Model April 2015
Yisong Liu
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: liuyisong@huawei.com
Feng Guo
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: guofeng@huawei.com
Liu & Guo Expires October 19, 2015 [Page 36]