BESS Working Group Y. Liu
Internet Draft Huawei Technologies
Intended status: Standards Track X. Liu
Expires: January 7, 2017 Ericsson
R. Kebler
Juniper Networks
M. Sivakumar
Cisco
F. Guo
Huawei Technologies
July 8, 2016
Yang Data Model for Multicast in MPLS/BGP IP VPNs
draft-liu-bess-mvpn-yang-01.txt
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), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
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."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
This Internet-Draft will expire on January 7, 2017.
Copyright Notice
Copyright (c) 2016 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
Liu & Guo, etc Expires January 7, 2017 [Page 1]
Internet-Draft MVPN Yang Model July 2016
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.
Abstract
This document defines a YANG data model that can be used to
configure and manage multicast in MPLS/BGP IP VPNs.
Table of Contents
1. Introduction ................................................ 2
1.1. Requirements Language................................... 3
1.2. Terminology ............................................ 3
2. Design of Data model......................................... 3
2.1. Scope of model ......................................... 3
2.2. Optional capabilities................................... 3
2.3. Position of address family in hierarchy .................4
3. Module Structure ............................................ 4
3.1. MVPN Configuration...................................... 4
3.2. MVPN Operational State.................................. 7
4. MVPN YANG Modules .......................................... 12
5. Security Considerations..................................... 30
6. IANA Considerations ........................................ 30
7. References ................................................. 30
7.1. Normative References................................... 30
7.2. Informative References................................. 30
8. Acknowledgments ............................................ 31
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 Multicast in MPLS/BGP IP VPN(MVPN). It includes
Cisco systems' solution [RFC6037], BGP MVPN [RFC6513] [RFC6514] etc.
Currently this model is incomplete, but it will support the core
MVPN protocols, as well as many other features mentioned in separate
MVPN RFCs. In addition, Non-core features described in MVPN
standards other than mentioned above RFC in future version.
Liu & Guo, etc Expires January 78, 2017 [Page 2]
Internet-Draft MVPN Yang Model July 2016
1.1. 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].
1.2. Terminology
The terminology for describing YANG data models is found
in[RFC6020].
This draft employs YANG tree diagrams, which are explained in [I-
D.ietf-netmod-rfc6087bis].
2. Design of Data model
2.1. Scope of model
The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514].
The representation of some of extension features is not completely
specified in this draft of the data model. This model is being
circulated in its current form for early oversight and review of the
basic hierarchy.
The operational state fields of this model are also incomplete,
though the structure of what has been written may be taken as
representative of the structure of the model when complete.
This model does not cover other MVPN related protocols such as MVPN
Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc.,
these will be covered by future Internet Drafts.
2.2. Optional capabilities
This model is designed to represent the capabilities of MVPN devices
with various specifications, including some with basic subsets of
the MVPN protocols. The main design goals of this draft are that
any major now-existing implementation may be said to support the
basic model, and that the configuration of all implementations
meeting the specification is easy to express through some
combination of the features in the basic model and simple vendor
augmentations.
On the other hand, operational state parameters are not so widely
designated as features, as there are many cases where the defaulting
of an operational state parameter would not cause any harm to the
system, and it is much more likely that an implementation without
native support for a piece of operational state would be able to
Liu & Guo, etc Expires January 78, 2017 [Page 3]
Internet-Draft MVPN Yang Model July 2016
derive a suitable value for a state variable that is not natively
supported.
For the same reason, wide constant ranges (for example, timer
maximum and minimum) will be used in the model. It is expected that
vendors will augment the model with any specific restrictions that
might be required. Vendors may also extend the features list with
proprietary extensions.
2.3. Position of address family in hierarchy
The current draft contains MVPN ipv4 and ipv6 as separate schema
branches in the structure. The reason for this is to inherit l3vpn
yang model structure and make it easier for implementations which
may optionally choose to support specific address families. And the
names of objects may be different between the ipv4 and ipv6 address
families.
3. Module Structure
3.1. MVPN Configuration
The MVPN modules define the routing-instance-wide configuration
options in a two-level hierarchy as listed below:
Instance level: MVPN configuration attributes for the entire
routing instance, including route-target, I-PMSI tunnel and S-PMSI
number, common timer etc.
PMSI tunnel level: MVPN configuration attributes applicable to
the I-PMSI and per S-PMSI tunnel configuration attributes, including
tunnel mode, tunnel specific parameters and threshold etc.
Where fields are not genuinely essential to protocol operation, they
are marked as optional. Some fields will be essential but have a
default specified, so that they need not be configured explicitly.
The module structure also applies, where applicable, to the
operational state as well.
Our current direction is to agree to a routing-instance-centric
(VRF) model as opposed to protocol-centric mainly because it
inherits l3vpn and it can as a part of l3vpn yang model. It fits
well into the routing-instance model, and it is easier to map from
the VRF-centric to the protocol-centric than the other way around
due to forward references.
The IGMP and MLD model will augment "/rt:routing/rt:routing-
instance/l3vpn:".
Liu & Guo, etc Expires January 78, 2017 [Page 4]
Internet-Draft MVPN Yang Model July 2016
augment /rt:routing/rt:routing-instance:
+--rw l3vpn
+--rw ipv4
| +--rw mvpn
| +--rw signaling-mode? enumeration
| +--rw auto-discovery-mode? enumeration
| +--rw config-type? enumeration
| +--rw is-sender-site? boolean
| +--rw rpt-spt-mode? boolean
| +--rw mvpn-route-targets
| | +--rw mvpn-route-target* [rt-type rt-value]
| | +--rw rt-type enumeration
| | +--rw rt-value string
| +--rw mvpn-ipmsi-tunnel
| | +--rw tunnel-mode? enumeration
| | +--rw (ipmsi-type)?
| | +--:(p2mp-te)
| | | +--rw te-p2mp-template? string
| | +--:(p2mp-mldp)
| | +--:(pim-ssm)
| | | +--rw ssm-default-group-addr? inet:ip-address
| | +--:(pim-sm)
| | | +--rw sm-default-group-addr? inet:ip-address
| | +--:(bidir-pim)
| | | +--rw bidir-default-group-addr? inet:ip-address
| | +--:(pim-dm)
| | | +--rw dm-default-group-addr? inet:ip-address
| | +--:(ingress-replication)
| | +--:(mp2mp-mldp)
| +--rw mvpn-spmsi-tunnels
| +--rw switch-delay-time? uint8
| +--rw hold-down-time? uint16
| +--rw tunnel-limit? uint16
| +--rw mvpn-spmsi-tunnel* [tunnel-mode]
| +--rw tunnel-mode enumeration
| +--rw (spmsi-type)?
| | +--:(p2mp-te)
| | | +--rw te-p2mp-template? string
| | +--:(p2mp-mldp)
| | +--:(pim-ssm)
| | | +--rw ssm-group-pool-addr? inet:ip-address
| | | +--rw ssm-group-pool-masklength? uint8
| | +--:(pim-sm)
| | | +--rw sm-group-pool-addr? inet:ip-address
| | | +--rw sm-group-pool-masklength? uint8
| | +--:(bidir-pim)
| | | +--rw bidir-group-pool-addr? inet:ip-address
| | | +--rw bidir-group-pool-masklength? uint8
| | +--:(pim-dm)
Liu & Guo, etc Expires January 78, 2017 [Page 5]
Internet-Draft MVPN Yang Model July 2016
| | | +--rw dm-group-pool-addr? inet:ip-address
| | | +--rw dm-group-pool-masklength? uint8
| | +--:(ingress-replication)
| | +--:(mp2mp-mldp)
| +--rw switch-threshold? uint32
| +--rw (address-mask-or-acl)?
| +--:(address-mask)
| | +--rw ipv4-group-addr? inet:ipv4-address
| | +--rw ipv4-group-masklength? uint8
| | +--rw ipv4-source-addr? inet:ipv4-address
| | +--rw ipv4-source-masklength? uint8
| +--:(acl)
| +--rw group-acl-ipv4? string
+--rw ipv6
+--rw mvpn
+--rw signaling-mode? enumeration
+--rw auto-discovery-mode? enumeration
+--rw config-type? enumeration
+--rw is-sender-site? boolean
+--rw rpt-spt-mode? boolean
+--rw mvpn-route-targets
| +--rw mvpn-route-target* [rt-type rt-value]
| +--rw rt-type enumeration
| +--rw rt-value string
+--rw mvpn-ipmsi-tunnel
| +--rw tunnel-mode? enumeration
| +--rw (ipmsi-type)?
| +--:(p2mp-te)
| | +--rw te-p2mp-template? string
| +--:(p2mp-mldp)
| +--:(pim-ssm)
| | +--rw ssm-default-group-addr? inet:ip-address
| +--:(pim-sm)
| | +--rw sm-default-group-addr? inet:ip-address
| +--:(bidir-pim)
| | +--rw bidir-default-group-addr? inet:ip-address
| +--:(pim-dm)
| | +--rw dm-default-group-addr? inet:ip-address
| +--:(ingress-replication)
| +--:(mp2mp-mldp)
+--rw mvpn-spmsi-tunnels
+--rw switch-delay-time? uint8
+--rw hold-down-time? uint16
+--rw tunnel-limit? uint16
+--rw mvpn-spmsi-tunnel* [tunnel-mode]
+--rw tunnel-mode enumeration
+--rw (spmsi-type)?
| +--:(p2mp-te)
| | +--rw te-p2mp-template? string
Liu & Guo, etc Expires January 78, 2017 [Page 6]
Internet-Draft MVPN Yang Model July 2016
| +--:(p2mp-mldp)
| +--:(pim-ssm)
| | +--rw ssm-group-pool-addr? inet:ip-address
| | +--rw ssm-group-pool-masklength? uint8
| +--:(pim-sm)
| | +--rw sm-group-pool-addr? inet:ip-address
| | +--rw sm-group-pool-masklength? uint8
| +--:(bidir-pim)
| | +--rw bidir-group-pool-addr? inet:ip-address
| | +--rw bidir-group-pool-masklength? uint8
| +--:(pim-dm)
| | +--rw dm-group-pool-addr? inet:ip-address
| | +--rw dm-group-pool-masklength? uint8
| +--:(ingress-replication)
| +--:(mp2mp-mldp)
+--rw switch-threshold? uint32
+--rw (address-mask-or-acl)?
+--:(address-mask)
| +--rw ipv6-group-addr? inet:ipv6-address
| +--rw ipv6-groupmasklength? uint8
| +--rw ipv6-source-addr? inet:ipv6-address
| +--rw ipv6-source-masklength? uint8
+--:(acl)
+--rw group-acl-ipv6? string
3.2. MVPN Operational State
The MVPN module contains operational state information also in a
two-level hierarchy as mentioned earlier.
Instance level: MVPN operational state attributes for the entire routing
instance, including route-target, I-PMSI tunnel and S-PMSI number, common
timer etc.
PMSI tunnel level: MVPN PMSI tunnel operational state attributes
applicable to the I-PMSI and per S-PMSI tunnel operational state
attributes, including tunnel mode, tunnel role, tunnel specific
parameters and referenced private source and group address etc.
augment /rt:routing-state/rt:routing-instance:
+--ro l3vpn
+--ro ipv4
| +--ro mvpn
| +--ro signaling-mode? enumeration
| +--ro auto-discovery-mode? enumeration
| +--ro config-type? enumeration
| +--ro is-sender-site? boolean
| +--ro rpt-spt-mode? boolean
Liu & Guo, etc Expires January 78, 2017 [Page 7]
Internet-Draft MVPN Yang Model July 2016
| +--ro mvpn-route-targets
| | +--ro mvpn-route-target* [rt-type rt-value]
| | +--ro rt-type enumeration
| | +--ro rt-value string
| +--ro mvpn-ipmsi-tunnel
| | +--ro tunnel-mode? enumeration
| | +--ro (ipmsi-type)?
| | +--:(p2mp-te)
| | | +--ro te-p2mp-template? string
| | +--:(p2mp-mldp)
| | +--:(pim-ssm)
| | | +--ro ssm-default-group-addr? inet:ip-address
| | +--:(pim-sm)
| | | +--ro sm-default-group-addr? inet:ip-address
| | +--:(bidir-pim)
| | | +--ro bidir-default-group-addr? inet:ip-address
| | +--:(pim-dm)
| | | +--ro dm-default-group-addr? inet:ip-address
| | +--:(ingress-replication)
| | +--:(mp2mp-mldp)
| +--ro mvpn-spmsi-tunnels
| | +--ro switch-delay-time? uint8
| | +--ro hold-down-time? uint16
| | +--ro tunnel-limit? uint16
| | +--ro mvpn-spmsi-tunnel* [tunnel-mode]
| | +--ro tunnel-mode enumeration
| | +--ro (spmsi-type)?
| | | +--:(p2mp-te)
| | | | +--ro te-p2mp-template? string
| | | +--:(p2mp-mldp)
| | | +--:(pim-ssm)
| | | | +--ro ssm-group-pool-addr? inet:ip-address
| | | | +--ro ssm-group-pool-masklength? uint8
| | | +--:(pim-sm)
| | | | +--ro sm-group-pool-addr? inet:ip-address
| | | | +--ro sm-group-pool-masklength? uint8
| | | +--:(bidir-pim)
| | | | +--ro bidir-group-pool-addr? inet:ip-address
| | | | +--ro bidir-group-pool-masklength? uint8
| | | +--:(pim-dm)
| | | | +--ro dm-group-pool-addr? inet:ip-address
| | | | +--ro dm-group-pool-masklength? uint8
| | | +--:(ingress-replication)
| | | +--:(mp2mp-mldp)
| | +--ro switch-threshold? uint32
| | +--ro (address-mask-or-acl)?
| | +--:(address-mask)
| | | +--ro ipv4-group-addr? inet:ipv4-address
| | | +--ro ipv4-group-masklength? uint8
Liu & Guo, etc Expires January 78, 2017 [Page 8]
Internet-Draft MVPN Yang Model July 2016
| | | +--ro ipv4-source-addr? inet:ipv4-address
| | | +--ro ipv4-source-masklength? uint8
| | +--:(acl)
| | +--ro group-acl-ipv4? string
| +--ro mvpn-ipmsi-tunnel-info
| | +--ro tunnel-mode? enumeration
| | +--ro (pmsi-type)?
| | | +--:(p2mp-te)
| | | | +--ro te-p2mp-id? uint16
| | | | +--ro te-tunnel-id? uint16
| | | | +--ro te-extend-tunnel-id? uint16
| | | +--:(p2mp-mldp)
| | | | +--ro mldp-root-addr? inet:ip-address
| | | | +--ro mldp-lsp-id? string
| | | +--:(pim-ssm)
| | | | +--ro ssm-group-addr? inet:ip-address
| | | +--:(pim-sm)
| | | | +--ro sm-group-addr? inet:ip-address
| | | +--:(bidir-pim)
| | | | +--ro bidir-group-addr? inet:ip-address
| | | +--:(pim-dm)
| | | | +--ro dm-group-addr? inet:ip-address
| | | +--:(ingress-replication)
| | | +--:(mp2mp-mldp)
| | +--ro tunnel-role? enumeration
| | +--ro mvpn-pmsi-sg-ref-ipv4s
| | +--ro mvpn-pmsi-sg-ref-ipv4* [ipv4-source-address ipv4-group-address]
| | +--ro ipv4-source-address inet:ipv4-address
| | +--ro ipv4-group-address inet:ipv4-address
| +--ro mvpn-spmsi-tunnel-ipv4-infos
| +--ro mvpn-spmsi-tunnel-ipv4-info* [tunnel-mode]
| +--ro tunnel-mode enumeration
| +--ro (pmsi-type)?
| | +--:(p2mp-te)
| | | +--ro te-p2mp-id? uint16
| | | +--ro te-tunnel-id? uint16
| | | +--ro te-extend-tunnel-id? uint16
| | +--:(p2mp-mldp)
| | | +--ro mldp-root-addr? inet:ip-address
| | | +--ro mldp-lsp-id? string
| | +--:(pim-ssm)
| | | +--ro ssm-group-addr? inet:ip-address
| | +--:(pim-sm)
| | | +--ro sm-group-addr? inet:ip-address
| | +--:(bidir-pim)
| | | +--ro bidir-group-addr? inet:ip-address
| | +--:(pim-dm)
| | | +--ro dm-group-addr? inet:ip-address
| | +--:(ingress-replication)
Liu & Guo, etc Expires January 78, 2017 [Page 9]
Internet-Draft MVPN Yang Model July 2016
| | +--:(mp2mp-mldp)
| +--ro tunnel-role? enumeration
| +--ro mvpn-pmsi-sg-ref-ipv4s
| +--ro mvpn-pmsi-sg-ref-ipv4* [ipv4-source-address ipv4-group-address]
| +--ro ipv4-source-address inet:ipv4-address
| +--ro ipv4-group-address inet:ipv4-address
+--ro ipv6
+--ro mvpn
+--ro signaling-mode? enumeration
+--ro auto-discovery-mode? enumeration
+--ro config-type? enumeration
+--ro is-sender-site? boolean
+--ro rpt-spt-mode? boolean
+--ro mvpn-route-targets
| +--ro mvpn-route-target* [rt-type rt-value]
| +--ro rt-type enumeration
| +--ro rt-value string
+--ro mvpn-ipmsi-tunnel
| +--ro tunnel-mode? enumeration
| +--ro (ipmsi-type)?
| +--:(p2mp-te)
| | +--ro te-p2mp-template? string
| +--:(p2mp-mldp)
| +--:(pim-ssm)
| | +--ro ssm-default-group-addr? inet:ip-address
| +--:(pim-sm)
| | +--ro sm-default-group-addr? inet:ip-address
| +--:(bidir-pim)
| | +--ro bidir-default-group-addr? inet:ip-address
| +--:(pim-dm)
| | +--ro dm-default-group-addr? inet:ip-address
| +--:(ingress-replication)
| +--:(mp2mp-mldp)
+--ro mvpn-spmsi-tunnels
| +--ro switch-delay-time? uint8
| +--ro hold-down-time? uint16
| +--ro tunnel-limit? uint16
| +--ro mvpn-spmsi-tunnel* [tunnel-mode]
| +--ro tunnel-mode enumeration
| +--ro (spmsi-type)?
| | +--:(p2mp-te)
| | | +--ro te-p2mp-template? string
| | +--:(p2mp-mldp)
| | +--:(pim-ssm)
| | | +--ro ssm-group-pool-addr? inet:ip-address
| | | +--ro ssm-group-pool-masklength? uint8
| | +--:(pim-sm)
| | | +--ro sm-group-pool-addr? inet:ip-address
| | | +--ro sm-group-pool-masklength? uint8
Liu & Guo, etc Expires January 78, 2017 [Page 10]
Internet-Draft MVPN Yang Model July 2016
| | +--:(bidir-pim)
| | | +--ro bidir-group-pool-addr? inet:ip-address
| | | +--ro bidir-group-pool-masklength? uint8
| | +--:(pim-dm)
| | | +--ro dm-group-pool-addr? inet:ip-address
| | | +--ro dm-group-pool-masklength? uint8
| | +--:(ingress-replication)
| | +--:(mp2mp-mldp)
| +--ro switch-threshold? uint32
| +--ro (address-mask-or-acl)?
| +--:(address-mask)
| | +--ro ipv6-group-addr? inet:ipv6-address
| | +--ro ipv6-groupmasklength? uint8
| | +--ro ipv6-source-addr? inet:ipv6-address
| | +--ro ipv6-source-masklength? uint8
| +--:(acl)
| +--ro group-acl-ipv6? string
+--ro mvpn-ipmsi-tunnel-info
| +--ro tunnel-mode? enumeration
| +--ro (pmsi-type)?
| | +--:(p2mp-te)
| | | +--ro te-p2mp-id? uint16
| | | +--ro te-tunnel-id? uint16
| | | +--ro te-extend-tunnel-id? uint16
| | +--:(p2mp-mldp)
| | | +--ro mldp-root-addr? inet:ip-address
| | | +--ro mldp-lsp-id? string
| | +--:(pim-ssm)
| | | +--ro ssm-group-addr? inet:ip-address
| | +--:(pim-sm)
| | | +--ro sm-group-addr? inet:ip-address
| | +--:(bidir-pim)
| | | +--ro bidir-group-addr? inet:ip-address
| | +--:(pim-dm)
| | | +--ro dm-group-addr? inet:ip-address
| | +--:(ingress-replication)
| | +--:(mp2mp-mldp)
| +--ro tunnel-role? enumeration
| +--ro mvpn-pmsi-sg-ref-ipv6s
| +--ro mvpn-pmsi-sg-ref-ipv6* [ipv6-source-address ipv6-group-address]
| +--ro ipv6-source-address inet:ipv6-address
| +--ro ipv6-group-address inet:ipv6-address
+--ro mvpn-spmsi-tunnel-ipv6-infos
+--ro mvpn-spmsi-tunnel-ipv6-info* [tunnel-mode]
+--ro tunnel-mode enumeration
+--ro (pmsi-type)?
| +--:(p2mp-te)
| | +--ro te-p2mp-id? uint16
| | +--ro te-tunnel-id? uint16
Liu & Guo, etc Expires January 78, 2017 [Page 11]
Internet-Draft MVPN Yang Model July 2016
| | +--ro te-extend-tunnel-id? uint16
| +--:(p2mp-mldp)
| | +--ro mldp-root-addr? inet:ip-address
| | +--ro mldp-lsp-id? string
| +--:(pim-ssm)
| | +--ro ssm-group-addr? inet:ip-address
| +--:(pim-sm)
| | +--ro sm-group-addr? inet:ip-address
| +--:(bidir-pim)
| | +--ro bidir-group-addr? inet:ip-address
| +--:(pim-dm)
| | +--ro dm-group-addr? inet:ip-address
| +--:(ingress-replication)
| +--:(mp2mp-mldp)
+--ro tunnel-role? enumeration
+--ro mvpn-pmsi-sg-ref-ipv6s
+--ro mvpn-pmsi-sg-ref-ipv6* [ipv6-source-address ipv6-group-address]
+--ro ipv6-source-address inet:ipv6-address
+--ro ipv6-group-address inet:ipv6-address
4. MVPN YANG Modules
module ietf-mvpn {
namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn";
prefix mvpn;
import ietf-inet-types {
prefix inet;
}
import ietf-routing {
prefix "rt";
}
organization
"IETF BESS(BGP Enabled Services) Working Group";
contact
"liuyisong@huawei.com
guofeng@huawei.com
xliu@kuatrotech.com
rkebler@juniper.net
masivaku@cisco.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.";
Liu & Guo, etc Expires January 78, 2017 [Page 12]
Internet-Draft MVPN Yang Model July 2016
revision 2016-07-08 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for MVPN";
}
grouping mvpn-instance-config {
description "Mvpn basic configuration per instance.";
leaf signaling-mode {
type enumeration {
enum invalid {
value "0";
description "invalid";
}
enum bgp {
value "1";
description "bgp";
}
enum pim {
value "2";
description "pim";
}
}
default "invalid";
description "Signaling mode.";
}
leaf auto-discovery-mode {
type enumeration {
enum none {
value "0";
description "none";
}
enum ad {
value "1";
description "auto-discovery";
}
}
default "none";
description "Auto discovery mode.";
}
leaf config-type {
type enumeration {
enum md {
value "0";
description "md";
}
Liu & Guo, etc Expires January 78, 2017 [Page 13]
Internet-Draft MVPN Yang Model July 2016
enum ng {
value "1";
description "ng";
}
}
default "md";
description "Mvpn type, which can be md(rosen) mvpn or ng mvpn.";
}
leaf is-sender-site {
type boolean;
default "false";
description "Configure the current PE as a sender PE.";
}
leaf rpt-spt-mode {
type boolean;
default "false";
description "Rpt and spt mode in multicast private net.";
}
}
grouping mvpn-vpn-targets {
description "May be different from l3vpn unicast route-targets";
container mvpn-route-targets{
description "Multicast vpn route-targets";
list mvpn-route-target {
key "rt-type rt-value" ;
description
"List of multicast route-targets" ;
leaf rt-type {
type enumeration {
enum export-extcommunity {
value "0";
description "export-extcommunity";
}
enum import-extcommunity {
value "1";
description "import-extcommunity";
}
}
mandatory "true";
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
Liu & Guo, etc Expires January 78, 2017 [Page 14]
Internet-Draft MVPN Yang Model July 2016
attribute";
}
leaf rt-value {
type string {
length "3..21";
}
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
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.";
}
}
}
}
grouping mvpn-ipmsi-tunnel-config {
description "Default mdt for rosen mvpn and I-PMSI for ng mvpn";
container mvpn-ipmsi-tunnel {
description "I-PMSI tunnel configuraton";
leaf tunnel-mode {
type enumeration {
enum invalid {
value "0";
description "invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te";
}
enum p2mp-mldp {
value "2";
description "p2mp-mldp";
}
enum pim-ssm {
value "3";
description "pim-ssm";
Liu & Guo, etc Expires January 78, 2017 [Page 15]
Internet-Draft MVPN Yang Model July 2016
}
enum pim-sm {
value "4";
description "pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp";
}
enum pim-dm {
value "8";
description "pim-dm";
}
}
description "I-PMSI tunnel mode.";
}
choice ipmsi-type {
description "I-PMSI tunnel parameter configuration";
case p2mp-te {
description "P2mp TE tunnel";
leaf te-p2mp-template {
type string {
length "1..31";
}
description "P2mp te tunnel template";
}
}
case p2mp-mldp {
description "Mldp tunnel";
}
case pim-ssm {
description "Pim ssm tunnel";
leaf ssm-default-group-addr {
type inet:ip-address;
description "Default mdt or I-PMSI group address.";
}
}
case pim-sm {
description "Pim sm tunnel";
leaf sm-default-group-addr {
type inet:ip-address;
Liu & Guo, etc Expires January 78, 2017 [Page 16]
Internet-Draft MVPN Yang Model July 2016
description "Default mdt or I-PMSI group address.";
}
}
case bidir-pim {
description "Bidir pim tunnel";
leaf bidir-default-group-addr {
type inet:ip-address;
description "Default mdt or I-PMSI group address.";
}
}
case pim-dm {
description "Pim dm tunnel";
leaf dm-default-group-addr {
type inet:ip-address;
description "Default mdt or I-PMSI group address.";
}
}
case ingress-replication {
description "Ingress replication p2p tunnel";
}
case mp2mp-mldp {
description "Mp2mp mldp tunnel";
}
}
}
}
grouping mvpn-spmsi-tunnel-basic-config {
description "S-PMSI tunnel basic configuration";
leaf tunnel-mode {
type enumeration {
enum invalid {
value "0";
description "invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te";
}
enum p2mp-mldp {
value "2";
description "p2mp-mldp";
}
enum pim-ssm {
value "3";
description "pim-ssm";
}
enum pim-sm {
value "4";
Liu & Guo, etc Expires January 78, 2017 [Page 17]
Internet-Draft MVPN Yang Model July 2016
description "pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp";
}
enum pim-dm {
value "8";
description "pim-dm";
}
}
description "S-PMSI tunnel mode.";
}
choice spmsi-type {
description "S-PMSI tunnel parameter configuration";
case p2mp-te {
description "P2mp te tunnel";
leaf te-p2mp-template {
type string {
length "1..31";
}
description "P2mp te tunnel template";
}
}
case p2mp-mldp {
description "Mldp tunnel";
}
case pim-ssm {
description "Pim ssm tunnel";
leaf ssm-group-pool-addr {
type inet:ip-address;
description "Group pool address for data mdt or pim s-pmsi.";
}
leaf ssm-group-pool-masklength {
type uint8 {
range "8..128";
}
description "Group pool mask for data mdt or pim s-pmsi";
}
}
case pim-sm {
Liu & Guo, etc Expires January 78, 2017 [Page 18]
Internet-Draft MVPN Yang Model July 2016
description "Pim sm tunnel";
leaf sm-group-pool-addr {
type inet:ip-address;
description "Group pool address for data mdt or pim s-pmsi.";
}
leaf sm-group-pool-masklength {
type uint8 {
range "8..128";
}
description "Group pool mask for data mdt or pim s-pmsi";
}
}
case bidir-pim {
description "Bidir pim tunnel";
leaf bidir-group-pool-addr {
type inet:ip-address;
description "Group pool address for data mdt or pim s-pmsi.";
}
leaf bidir-group-pool-masklength {
type uint8 {
range "8..128";
}
description "Group pool mask for data mdt or pim s-pmsi";
}
}
case pim-dm {
description "Pim dm tunnel";
leaf dm-group-pool-addr {
type inet:ip-address;
description "Group pool address for data mdt or pim s-pmsi.";
}
leaf dm-group-pool-masklength {
type uint8 {
range "8..128";
}
description "Group pool mask for data mdt or pim s-pmsi";
}
}
case ingress-replication {
description "Ingress replication p2p tunnel";
}
case mp2mp-mldp {
description "Mp2mp mldp tunnel";
}
}
leaf switch-threshold {
type uint32 {
range "0..4194304";
}
Liu & Guo, etc Expires January 78, 2017 [Page 19]
Internet-Draft MVPN Yang Model July 2016
default "0";
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.";
}
}
grouping mvpn-spmsi-tunnel-config-ipv4 {
description "Data mdt for rosen mvpn and S-PMSI for ng mvpn";
container mvpn-spmsi-tunnels {
description "S-PMSI tunnel configuration";
leaf switch-delay-time {
type uint8 {
range "3..60";
}
default "5";
description
"Delay for switching from the I-PMSI to
the S-PMSI. The value is an integer
ranging from 3 to 60, in seconds. ";
}
leaf hold-down-time {
type uint16 {
range "0..512";
}
default "60";
description
"Delay for switching back from the S-PMSI
to the I-PMSI. The value is an integer
ranging from 0 to 512, in seconds. ";
}
leaf tunnel-limit {
type uint16 {
range "1..1024";
}
description
"Maximum number of s-pmsi tunnels allowed.";
}
list mvpn-spmsi-tunnel {
key "tunnel-mode";
description "S-PMSI tunnel parameter configuration";
uses mvpn-spmsi-tunnel-basic-config;
Liu & Guo, etc Expires January 78, 2017 [Page 20]
Internet-Draft MVPN Yang Model July 2016
choice address-mask-or-acl {
description "Type of define private net multicast address range";
case address-mask {
description "Use the type of address and mask";
leaf ipv4-group-addr {
type inet:ipv4-address;
description
"Start and end ipv4 addresses of the group
address in private net. ";
}
leaf ipv4-group-masklength {
type uint8 {
range "4..32";
}
description
"Group mask length for ipv4 addresses in
the group address pool in private net.";
}
leaf ipv4-source-addr {
type inet:ipv4-address;
description
"Start and end ipv4 addresses of the source
address in private net.";
}
leaf ipv4-source-masklength {
type uint8 {
range "0..32";
}
description
"Source mask length for ipv4 addresses in
the group address pool in private net.";
}
}
case acl {
description "Use the type of acl";
leaf group-acl-ipv4 {
type string {
length "1..32";
}
description
"Specify the (s, g) entry on which the
S-PMSI tunnel 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).";
}
}
Liu & Guo, etc Expires January 78, 2017 [Page 21]
Internet-Draft MVPN Yang Model July 2016
}
}
}
}
grouping mvpn-spmsi-tunnel-config-ipv6 {
description "Data mdt for rosen mvpn and S-PMSI for ng mvpn";
container mvpn-spmsi-tunnels {
description "S-PMSI tunnel configuration";
leaf switch-delay-time {
type uint8 {
range "3..60";
}
default "5";
description
"Delay for switching from the I-PMSI to
the S-PMSI. The value is an integer
ranging from 3 to 60, in seconds. ";
}
leaf hold-down-time {
type uint16 {
range "0..512";
}
default "60";
description
"Delay for switching back from the S-PMSI
to the I-PMSI. The value is an integer
ranging from 0 to 512, in seconds. ";
}
leaf tunnel-limit {
type uint16 {
range "1..1024";
}
description
"Maximum number of s-pmsi tunnels allowed.";
}
list mvpn-spmsi-tunnel {
key "tunnel-mode";
description "S-PMSI tunnel parameter configuration";
uses mvpn-spmsi-tunnel-basic-config;
choice address-mask-or-acl {
description "Type of define private net multicast address range";
case address-mask {
description "Use the type of address and mask";
leaf ipv6-group-addr {
Liu & Guo, etc Expires January 78, 2017 [Page 22]
Internet-Draft MVPN Yang Model July 2016
type inet:ipv6-address;
description
"Start and end ipv6 addresses of the group
address in private net.";
}
leaf ipv6-groupmasklength {
type uint8 {
range "8..128";
}
description
"Group mask length for ipv6 addresses in
the group address pool in private net.";
}
leaf ipv6-source-addr {
type inet:ipv6-address;
description
"Start and end ipv6 addresses of the source
address in private net.";
}
leaf ipv6-source-masklength {
type uint8 {
range "0..128";
}
description
"Source mask length for ipv6 addresses in
the group address pool in private net.";
}
}
case acl {
description "Use the type of acl";
leaf group-acl-ipv6 {
type string {
length "1..32";
}
description
"Specify the (s, g) entry on which the
S-PMSI tunnel 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).";
}
}
}
}
}
}
Liu & Guo, etc Expires January 78, 2017 [Page 23]
Internet-Draft MVPN Yang Model July 2016
grouping mvpn-pmsi-state {
description "PMSI tunnel operational state information";
leaf tunnel-mode {
type enumeration {
enum invalid {
value "0";
description "invalid";
}
enum p2mp-te {
value "1";
description "p2mp-te";
}
enum p2mp-mldp {
value "2";
description "p2mp-mldp";
}
enum pim-ssm {
value "3";
description "pim-ssm";
}
enum pim-sm {
value "4";
description "pim-sm";
}
enum bidir-pim {
value "5";
description "bidir-pim";
}
enum ingress-replication {
value "6";
description "ingress-replication";
}
enum mp2mp-mldp {
value "7";
description "mp2mp-mldp";
}
enum pim-dm {
value "8";
description "pim-dm";
}
}
description "PMSI tunnel mode.";
}
choice pmsi-type {
description "PMSI tunnel operational state information for each type";
case p2mp-te {
description "P2mp te tunnel";
leaf te-p2mp-id {
type uint16 {
Liu & Guo, etc Expires January 78, 2017 [Page 24]
Internet-Draft MVPN Yang Model July 2016
range "0..65535";
}
default "0";
description "P2mp id of the p2mp tunnel.";
}
leaf te-tunnel-id {
type uint16 {
range "1..65535";
}
description "Id of the p2mp tunnel.";
}
leaf te-extend-tunnel-id {
type uint16 {
range "1..65535";
}
description "P2mp extended tunnel interface id.";
}
}
case p2mp-mldp {
description "P2mp mldp tunnel";
leaf mldp-root-addr {
type inet:ip-address;
description "Ip address of the root of a p2mp ldp lsp.";
}
leaf mldp-lsp-id {
type string {
length "1..256";
}
description "P2mp ldp lsp id.";
}
}
case pim-ssm {
description "Pim ssm tunnel";
leaf ssm-group-addr {
type inet:ip-address;
description "Group address for pim ssm";
}
}
case pim-sm {
description "Pim sm tunnel";
leaf sm-group-addr {
type inet:ip-address;
description "Group address for pim sm";
}
}
case bidir-pim {
description "Bidir pim tunnel";
leaf bidir-group-addr {
type inet:ip-address;
Liu & Guo, etc Expires January 78, 2017 [Page 25]
Internet-Draft MVPN Yang Model July 2016
description "Group address for bidir-pim";
}
}
case pim-dm {
description "Pim dm tunnel";
leaf dm-group-addr {
type inet:ip-address;
description "Group address for pim-dm";
}
}
case ingress-replication {
description "Ingress replication p2p tunnel";
}
case mp2mp-mldp {
description "mp2mp mldp tunnel";
}
}
leaf tunnel-role {
type enumeration {
enum none {
value "0";
description "none";
}
enum root {
value "1";
description "root";
}
enum leaf {
value "2";
description "leaf";
}
enum root-and-leaf {
value "3";
description "root-and-leaf";
}
}
description "Role of a tunnel node.";
}
}
grouping mvpn-pmsi-entry-ipv4 {
description "Multicast entries in ipv4 mvpn referenced the pmsi tunnel";
container mvpn-pmsi-sg-ref-ipv4s {
description "Multicast entries in ipv4 mvpn referenced the pmsi tunnel";
list mvpn-pmsi-sg-ref-ipv4 {
key "ipv4-source-address ipv4-group-address";
description "Ipv4 source and group address";
leaf ipv4-source-address {
type inet:ipv4-address;
Liu & Guo, etc Expires January 78, 2017 [Page 26]
Internet-Draft MVPN Yang Model July 2016
description "Source address in I-PMSI or S-PMSI for ipv4.";
}
leaf ipv4-group-address {
type inet:ipv4-address;
description "Group address in I-PMSI or S-PMSI for ipv4.";
}
}
}
}
grouping mvpn-pmsi-entry-ipv6 {
description "Multicast entries in ipv6 mvpn referenced the pmsi tunnel";
container mvpn-pmsi-sg-ref-ipv6s {
description "Multicast entries in ipv6 mvpn referenced the pmsi tunnel";
list mvpn-pmsi-sg-ref-ipv6 {
key "ipv6-source-address ipv6-group-address";
description "Ipv6 source and group address";
leaf ipv6-source-address {
type inet:ipv6-address;
description "Source address in I-PMSI or S-PMSI for ipv6.";
}
leaf ipv6-group-address {
type inet:ipv6-address;
description "Group address in I-PMSI or S-PMSI for ipv6.";
}
}
}
}
grouping mvpn-ipmsi-tunnel-state-ipv4 {
description "Default mdt or I-PMSI operational state information";
container mvpn-ipmsi-tunnel-info {
description "Default mdt or I-PMSI operational state information";
uses mvpn-pmsi-state;
uses mvpn-pmsi-entry-ipv4;
}
}
grouping mvpn-ipmsi-tunnel-state-ipv6 {
description "Default mdt or I-PMSI operational state information";
container mvpn-ipmsi-tunnel-info {
description "Default mdt or I-PMSI operational state information";
uses mvpn-pmsi-state;
uses mvpn-pmsi-entry-ipv6;
}
}
grouping mvpn-spmsi-tunnel-state-ipv4 {
Liu & Guo, etc Expires January 78, 2017 [Page 27]
Internet-Draft MVPN Yang Model July 2016
description "Data mdt or S-PMSI operational state information";
container mvpn-spmsi-tunnel-ipv4-infos {
description "Data mdt or S-PMSI operational state information";
list mvpn-spmsi-tunnel-ipv4-info {
key "tunnel-mode";
description "Data mdt or S-PMSI operational state information";
uses mvpn-pmsi-state;
uses mvpn-pmsi-entry-ipv4;
}
}
}
grouping mvpn-spmsi-tunnel-state-ipv6 {
description "Data mdt or S-PMSI operational state information";
container mvpn-spmsi-tunnel-ipv6-infos {
description "Data mdt or S-PMSI operational state information";
list mvpn-spmsi-tunnel-ipv6-info {
key "tunnel-mode";
description "Data mdt or S-PMSI operational state information";
uses mvpn-pmsi-state;
uses mvpn-pmsi-entry-ipv6;
}
}
}
grouping l3vpn-mvrf-params-config {
description "Specify multicast vrf parameters";
container ipv4 {
description "Specify multicast ipv4 vrf parameters";
container mvpn {
description "Specify multicast ipv4 vrf parameters";
uses mvpn-instance-config;
uses mvpn-vpn-targets;
uses mvpn-ipmsi-tunnel-config;
uses mvpn-spmsi-tunnel-config-ipv4;
}
}
container ipv6 {
description "Ipv6 address family specific multicast vrf parameters";
container mvpn {
description "Ipv6 address family specific multicast vrf parameters";
uses mvpn-instance-config;
uses mvpn-vpn-targets;
uses mvpn-ipmsi-tunnel-config;
uses mvpn-spmsi-tunnel-config-ipv6;
}
}
}
Liu & Guo, etc Expires January 78, 2017 [Page 28]
Internet-Draft MVPN Yang Model July 2016
augment "/rt:routing/rt:routing-instance" {
description "Augment routing instance container for per multicast VRF config";
container l3vpn {
when "../type='rt:vrf-routing-instance'" {
description "This container is only valid for multicast vrf routing instance";
}
description "Configuration of multicast vpn specific parameters";
uses l3vpn-mvrf-params-config;
}
}
grouping l3vpn-mvrf-params-state {
description "Multicast vrf operational state information";
container ipv4 {
description "Multicast ipv4 vrf operational state information";
container mvpn {
description "Multicast ipv4 vrf operational state information";
uses mvpn-instance-config;
uses mvpn-vpn-targets;
uses mvpn-ipmsi-tunnel-config;
uses mvpn-spmsi-tunnel-config-ipv4;
uses mvpn-ipmsi-tunnel-state-ipv4;
uses mvpn-spmsi-tunnel-state-ipv4;
}
}
container ipv6 {
description "Ipv6 address family multicast vrf operational state information";
container mvpn {
description "Ipv6 address family multicast vrf operational state information";
uses mvpn-instance-config;
uses mvpn-vpn-targets;
uses mvpn-ipmsi-tunnel-config;
uses mvpn-spmsi-tunnel-config-ipv6;
uses mvpn-ipmsi-tunnel-state-ipv6;
uses mvpn-spmsi-tunnel-state-ipv6;
}
}
}
augment "/rt:routing-state/rt:routing-instance" {
description "Augment routing instance container for per multicast VRF config";
container l3vpn {
when "../type='rt:vrf-routing-instance'" {
description "This container is only valid for multicast vrf routing instance";
}
Liu & Guo, etc Expires January 78, 2017 [Page 29]
Internet-Draft MVPN Yang Model July 2016
description "Operational state of multicast vpn specific parameters";
uses l3vpn-mvrf-params-state;
}
}
}
5. Security Considerations
The data model defined does not introduce any security implications.
This draft does not change any underlying security issues inherent
in [I-D.ietf-netmod-routing-cfg].
6. IANA Considerations
TBD
7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, June 2011
[I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors
and Reviewers of YANG Data Model Documents", draft-ietf-
netmod-rfc6087bis-05 (work in progress), October 2015.
7.2. Informative References
[RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems'
Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037,
October 2010.
[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.
Liu & Guo, etc Expires January 78, 2017 [Page 30]
Internet-Draft MVPN Yang Model July 2016
8. Acknowledgments
The authors would like to thank Liu Xufeng, Guo Feng, Robert Kebler,
Anish Peter, Mahesh Sivakumar, and Stig Venaas for their valuable
contributions.
Liu & Guo, etc Expires January 78, 2017 [Page 31]
Internet-Draft MVPN Yang Model July 2016
Authors' Addresses
Yisong Liu
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: liuyisong@huawei.com
Xufeng Liu
Ericsson
1595 Spring Hill Road, Suite 500
Vienna VA 22182
USA
Email: xliu@kuatrotech.com
Robert Kebler
Juniper Networks
Email: rkebler@juniper.net
Mahesh Sivakumar
Cisco Systems, Inc
510 McCarthy Blvd
Milpitas, California 95035
United States
Email: masivaku@cisco.com
Feng Guo
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: guofeng@huawei.com
Liu & Guo, etc Expires January 78, 2017 [Page 32]