draft-ietf-bess-mvpn-yang-01.txt   draft-ietf-bess-mvpn-yang-02.txt 
BESS Working Group Y. Liu BESS Working Group Y. Liu
Internet Draft F. Guo Internet Draft Individual
Intended status: Standards Track Huawei Technologies Intended status: Standards Track F. Guo
Expires: September 6, 2019 S. Litkowski Expires: June 2, 2020 Huawei
Orange S. Litkowski
Cisco
X. Liu X. Liu
Volta Networks Volta Networks
R. Kebler R. Kebler
M. Sivakumar M. Sivakumar
Juniper Networks Juniper
March 6, 2019 Dec 2, 2019
Yang Data Model for Multicast in MPLS/BGP IP VPNs Yang Data Model for Multicast in MPLS/BGP IP VPNs
draft-ietf-bess-mvpn-yang-01 draft-ietf-bess-mvpn-yang-02
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 38 skipping to change at page 1, line 39
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress." reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on September 6, 2019. This Internet-Draft will expire on June 2, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 18 skipping to change at page 2, line 24
Abstract Abstract
This document defines a YANG data model that can be used to This document defines a YANG data model that can be used to
configure and manage multicast in MPLS/BGP IP VPNs. configure and manage multicast in MPLS/BGP IP VPNs.
Table of Contents Table of Contents
1. Introduction ................................................ 2 1. Introduction ................................................ 2
1.1. Terminology ............................................ 3 1.1. Terminology ............................................ 3
1.2. Tree Diagrams .......................................... 4 1.2. Tree Diagrams .......................................... 3
1.3. Prefixes in Data Node Names ............................ 4 1.3. Prefixes in Data Node Names ............................ 4
2. Design of Data model......................................... 4 2. Design of Data Model......................................... 4
2.1. Scope of model ......................................... 4 2.1. Scope of Model ......................................... 4
2.2. Optional capabilities .................................. 5 2.2. Optional Capabilities .................................. 4
2.3. Position of address family in hierarchy ................ 5 2.3. Position of Address Family in Hierarchy ................ 5
3. Module Structure ............................................ 5 3. Module Structure ............................................ 5
4. MVPN YANG Modules .......................................... 12 4. MVPN YANG Modules .......................................... 13
5. Security Considerations .................................... 32 5. Security Considerations .................................... 36
6. IANA Considerations ........................................ 32 6. IANA Considerations ........................................ 36
7. References ................................................. 32 7. References ................................................. 37
7.1. Normative References .................................. 32 7.1. Normative References .................................. 37
7.2. Informative References ................................ 33 7.2. Informative References ................................ 38
8. Acknowledgments ............................................ 34 8. Acknowledgments ............................................ 38
Authors' Addresses ............................................ 39
1. Introduction 1. Introduction
YANG [RFC6020] [RFC7950] is a data definition language that was YANG [RFC6020] [RFC7950] is a data definition language that was
introduced to define the contents of a conceptual data store that introduced to define the contents of a conceptual data store that
allows networked devices to be managed using NETCONF [RFC6241]. allows networked devices to be managed using NETCONF [RFC6241].
YANG is proving relevant beyond its initial confines, as bindings to YANG is proving relevant beyond its initial confines, as bindings to
other interfaces (e.g. REST) and encoding other than XML (e.g. JSON) 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 are being defined. Furthermore, YANG data models can be used as the
basis of implementation for other interface, such as CLI and basis of implementation for other interface, such as CLI and
skipping to change at page 3, line 13 skipping to change at page 3, line 21
mentioned above RFC in separate documents. mentioned above RFC in separate documents.
1.1. Terminology 1.1. Terminology
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC6020] & [RFC7950]. [RFC6020] & [RFC7950].
The following abbreviations are used in this document and the The following abbreviations are used in this document and the
defined model: defined model:
MVPN: MVPN: Multicast Virtual Private Network [RFC6513].
Multicast Virtual Private Network [RFC6513].
PMSI:
P-Multicast Service Interface [RFC6513].
PIM:
Protocol Independent Multicast [RFC7761].
SM:
Sparse Mode [RFC7761].
SSM:
Source Specific Multicast [RFC4607].
BIDIR-PIM: PMSI: P-Multicast Service Interface [RFC6513].
Bidirectional Protocol Independent Multicast [RFC5015]. PIM: Protocol Independent Multicast [RFC7761].
MLDP P2MP: SM: Sparse Mode [RFC7761].
Multipoint Label Distribution Protocol for Point to Multipoint SSM: Source Specific Multicast [RFC4607].
[RFC6388].
MLDP MP2MP: BIDIR-PIM: Bidirectional Protocol Independent Multicast [RFC5015].
Multipoint Label Distribution Protocol for Multipoint to MLDP P2MP: Multipoint Label Distribution Protocol for Point to
Multipoint [RFC6388]. Multipoint [RFC6388].
RSVP TE P2MP: MLDP MP2MP: Multipoint Label Distribution Protocol for Multipoint to
Multipoint [RFC6388].
Resource Reservation Protocol - Traffic Engineering for Point to
Multipoint [RFC4875].
BIER: RSVP TE P2MP: Resource Reservation Protocol - Traffic Engineering
for Point to Multipoint [RFC4875].
Bit Index Explicit Replication [RFC8279]. BIER: Bit Index Explicit Replication [RFC8279].
1.2. Tree Diagrams 1.2. Tree Diagrams
Tree diagrams used in this document follow the notation defined in Tree diagrams used in this document follow the notation defined in
[RFC8340]. [RFC8340].
1.3. Prefixes in Data Node Names 1.3. Prefixes in Data Node Names
In this document, names of data nodes, actions, and other data model In this document, names of data nodes, actions, and other data model
objects are often used without a prefix, as long as it is clear from objects are often used without a prefix, as long as it is clear from
the context in which YANG module each name is defined. Otherwise, the context in which YANG module each name is defined. Otherwise,
names are prefixed using the standard prefix associated with the names are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1 corresponding YANG module, as shown in Table 1
+----------+---------------------------+----------------------------+ +----------+---------------------------+----------------------------+
| Prefix | YANG module | Reference |
| Prefix | YANG module | Reference | +-----------+--------------------------+----------------------------+
| ni | ietf-network-instance | [RFC8529] |
+-----------+--------------------------+----------------------------+ | l3vpn | ietf-bgp-l3vpn | [I-D.ietf-l3vpn-yang] |
| inet | ietf-inet-types | [RFC6991] |
| ni | ietf-network-instance | [I-D.ietf-ni-model] | | rt-types | ietf-routing-types | [RFC8294] |
| acl | ietf-access-control-list | [RFC8519] |
| l3vpn | ietf-bgp-l3vpn | [I-D.ietf-l3vpn-yang] | +-----------+--------------------------+----------------------------+
Table 1: Prefixes and Corresponding YANG Modules
| inet | ietf-inet-types | [RFC6991] |
| rt-types | ietf-routing-types | [RFC8294] |
| acl | ietf-access-control-list | [I-D.ietf-acl-yang] |
+-----------+--------------------------+----------------------------+
Table 1: Prefixes and Corresponding YANG Modules
2. Design of Data model 2. Design of Data Model
2.1. Scope of model 2.1. Scope of Model
The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514]. The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514].
The configuration of MVPN features, and the operational state fields The configuration of MVPN features, and the operational state fields
and RPC definitions are not all included in this document of the and RPC definitions are not all included in this document of the
data model. This model can be extended, though the structure of what data model. This model can be extended, though the structure of what
has been written may be taken as representative of the structure of has been written may be taken as representative of the structure of
the whole model. the whole model.
This model does not cover other MVPN related protocols such as MVPN This model does not cover other MVPN related protocols such as MVPN
Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc., Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc.,
these will be specified in separate documents. these will be specified in separate documents.
2.2. Optional capabilities 2.2. Optional Capabilities
This model is designed to represent the capabilities of MVPN devices This model is designed to represent the capabilities of MVPN devices
with various specifications, including some with basic subsets of with various specifications, including some with basic subsets of
the MVPN protocols. The main design goals of this document are that the MVPN protocols. The main design goals of this document are that
any major now-existing implementation may be said to support the any major now-existing implementation may be said to support the
basic model, and that the configuration of all implementations basic model, and that the configuration of all implementations
meeting the specification is easy to express through some meeting the specification is easy to express through some
combination of the features in the basic model and simple vendor combination of the features in the basic model and simple vendor
augmentations. augmentations.
skipping to change at page 5, line 34 skipping to change at page 5, line 21
native support for a piece of operational state would be able to native support for a piece of operational state would be able to
derive a suitable value for a state variable that is not natively derive a suitable value for a state variable that is not natively
supported. supported.
For the same reason, wide constant ranges (for example, timer For the same reason, wide constant ranges (for example, timer
maximum and minimum) will be used in the model. It is expected that maximum and minimum) will be used in the model. It is expected that
vendors will augment the model with any specific restrictions that vendors will augment the model with any specific restrictions that
might be required. Vendors may also extend the features list with might be required. Vendors may also extend the features list with
proprietary extensions. proprietary extensions.
2.3. Position of address family in hierarchy 2.3. Position of Address Family in Hierarchy
The current draft contains MVPN IPv4 and IPv6 as separate schema The current draft contains MVPN IPv4 and IPv6 as separate schema
branches in the structure. The reason for this is to inherit l3vpn branches in the structure. The reason for this is to inherit l3vpn
yang model structure and make it easier for implementations which yang model structure and make it easier for implementations which
may optionally choose to support specific address families. And the may optionally choose to support specific address families. And the
names of some objects may be different between the IPv4 and IPv6 names of some objects may be different between the IPv4 and IPv6
address families. address families.
3. Module Structure 3. Module Structure
The MVPN YANG model follows the Guidelines for YANG Module Authors The MVPN YANG model follows the Guidelines for YANG Module Authors
(NMDA) [RFC8342]. The operational state data is combined with the (NMDA) [RFC8342]. The operational state data is combined with the
associated configuration data in the same hierarchy [RFC8407]. The associated configuration data in the same hierarchy [RFC8407]. The
MVPN modules define for both IPv4 and IPv6 in a two-level hierarchy MVPN modules define for both IPv4 and IPv6 in a two-level hierarchy
as listed below: as listed below:
Instance level: Only including configuration data nodes now. MVPN Instance level: Only including configuration data nodes now. MVPN
configuration attributes for the entire routing instance, including configuration attributes for the entire routing instance,
route-target, I-PMSI tunnel and S-PMSI number, common timer etc. including route-target, I-PMSI tunnel and S-PMSI number, common
timer etc.
PMSI tunnel level: MVPN configuration attributes applicable to PMSI tunnel level: MVPN configuration attributes applicable to the
the I-PMSI and per S-PMSI tunnel configuration attributes, including I-PMSI and per S-PMSI tunnel configuration attributes, including
tunnel mode, tunnel specific parameters and threshold etc. MVPN PMSI tunnel mode, tunnel specific parameters and threshold etc. MVPN
tunnel operational state attributes applicable to the I-PMSI and per PMSI tunnel operational state attributes applicable to the I-
S-PMSI tunnel operational state attributes, including tunnel mode, PMSI and per S-PMSI tunnel operational state attributes,
tunnel role, tunnel specific parameters and referenced private including tunnel mode, tunnel role, tunnel specific parameters
source and group address etc. and referenced private source and group address etc.
Where fields are not genuinely essential to protocol operation, they Where fields are not genuinely essential to protocol operation, they
are marked as optional. Some fields will be essential but have a are marked as optional. Some fields will be essential but have a
default specified, so that they need not be configured explicitly. default specified, so that they need not be configured explicitly.
This MVPN model augments "/ni:network-instances/ni:network- This MVPN model augments "/ni:network-instances/ni:network-
instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4:" for IPv4 instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4:" for IPv4
MVPN service and "/ni:network-instances/ni:network-instance/ni:ni- MVPN service and "/ni:network-instances/ni:network-instance/ni:ni-
type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" for IPv6 MVPN service type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" for IPv6 MVPN service
specified in [I-D.ietf-l3vpn-yang]. specified in [I-D.ietf-l3vpn-yang].
augment /ni:network-instances/ni:network-instance/ni:ni-type augment /ni:network-instances/ni:network-instance/ni:ni-type
/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4: /l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4:
+--rw multicast +--rw multicast
+--rw signaling-mode? enumeration +--rw signaling-mode? enumeration
+--rw auto-discovery-mode? enumeration +--rw auto-discovery-mode? enumeration
+--rw mvpn-type? enumeration +--rw mvpn-type? enumeration
+--rw is-sender-site? boolean {mvpn-sender}? +--rw is-sender-site? boolean {mvpn-sender}?
+--rw rpt-spt-mode? enumeration +--rw rpt-spt-mode? enumeration
+--rw ecmp-load-balance-mode? +--rw ecmp-load-balance-mode?
| enumeration {mvpn-ecmp-load-balance}? | enumeration {mvpn-ecmp-load-balance}?
+--rw mvpn-route-targets {mvpn-separate-rt}? +--rw mvpn-route-targets {mvpn-separate-rt}?
| +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value]
| +--rw mvpn-rt-type enumeration | +--rw mvpn-rt-type enumeration
| +--rw mvpn-rt-value string | +--rw mvpn-rt-value string
+--rw mvpn-ipmsi-tunnel-ipv4 +--rw mvpn-ipmsi-tunnel-ipv4
| +--rw tunnel-type? p-tunnel | +--rw tunnel-type? p-tunnel
| +--rw (ipmsi-tunnel-attribute)? | +--rw (ipmsi-tunnel-attribute)?
| | +--:(rsvp-te-p2mp) | | +--:(rsvp-te-p2mp)
| | | +--rw rsvp-te-p2mp-template? string | | | +--rw rsvp-te-p2mp-template? string
| | +--:(mldp-p2mp) | | +--:(mldp-p2mp)
| | +--:(pim-ssm) | | +--:(pim-ssm)
| | | +--rw ssm-default-group-addr? | | | +--rw ssm-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(pim-sm) | | +--:(pim-sm)
| | | +--rw sm-default-group-addr? | | | +--rw sm-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(bidir-pim) | | +--:(bidir-pim)
| | | +--rw bidir-default-group-addr? | | | +--rw bidir-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(ingress-replication) | | +--:(ingress-replication)
| | +--:(mldp-mp2mp) | | +--:(mldp-mp2mp)
| | +--:(bier) | | +--:(bier)
| | +--rw inclusive-sub-domain-id? uint8 | | +--rw inclusive-sub-domain-id? uint8
| | +--rw inclusive-bitstring-length? uint16 | | +--rw inclusive-bitstring-length? uint16
| +--ro (pmsi-tunnel-state-attribute)? | +--ro (pmsi-tunnel-state-attribute)?
| | +--:(rsvp-te-p2mp) | | +--:(rsvp-te-p2mp)
| | | +--ro p2mp-id? uint16 | | | +--ro p2mp-id? uint16
| | | +--ro tunnel-id? uint16 | | | +--ro tunnel-id? uint16
| | | +--ro extend-tunnel-id? uint16 | | | +--ro extend-tunnel-id? uint16
| | +--:(mldp-p2mp) | | +--:(mldp-p2mp)
| | | +--ro mldp-root-addr? inet:ip-address | | | +--ro mldp-root-addr? inet:ip-address
| | | +--ro mldp-lsp-id? string | | | +--ro mldp-lsp-id? string
| | +--:(pim-ssm) | | +--:(pim-ssm)
| | | +--ro ssm-group-addr? | | | +--ro ssm-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(pim-sm) | | +--:(pim-sm)
| | | +--ro sm-group-addr? | | | +--ro sm-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(bidir-pim) | | +--:(bidir-pim)
| | | +--ro bidir-group-addr? | | | +--ro bidir-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(ingress-replication) | | +--:(ingress-replication)
| | +--:(mldp-mp2mp) | | +--:(mldp-mp2mp)
| | +--:(bier) | | +--:(bier)
| | +--ro sub-domain-id? uint8 | | +--ro sub-domain-id? uint8
| | +--ro bitstring-length? uint16 | | +--ro bitstring-length? uint16
| | +--ro bfir-id? uint16 | | +--ro bfir-id? uint16
| +--ro tunnel-role? enumeration | +--ro tunnel-role? enumeration
| +--ro upstream-vpn-label? | +--ro upstream-vpn-label?
| | rt-types:mpls-label {mvpn-aggregation-tunnel}? | | rt-types:mpls-label {mvpn-aggregation-tunnel}?
| +--ro mvpn-pmsi-ipv4-ref-sg-entries | +--ro mvpn-pmsi-ipv4-ref-sg-entries
| +--ro mvpn-pmsi-ipv4-ref-sg-entries* | +--ro mvpn-pmsi-ipv4-ref-sg-entries*
| [ipv4-source-address ipv4-group-address] | [ipv4-source-address ipv4-group-address]
| +--ro ipv4-source-address inet:ipv4-address | +--ro ipv4-source-address inet:ipv4-address
| +--ro ipv4-group-address | +--ro ipv4-group-address
| rt-types:ipv4-multicast-group-address | rt-types:ipv4-multicast-group-address
+--rw mvpn-spmsi-tunnels-ipv4 +--rw mvpn-spmsi-tunnels-ipv4
+--rw switch-delay-time? uint8 +--rw switch-delay-time? uint8
+--rw switch-back-holddown-time? uint16 +--rw switch-back-holddown-time? uint16
+--rw tunnel-limit? uint16 +--rw tunnel-limit? uint16
+--rw mvpn-spmsi-tunnel-ipv4* [tunnel-type] +--rw mvpn-spmsi-tunnel-ipv4* [tunnel-type]
+--rw tunnel-type p-tunnel +--rw tunnel-type p-tunnel
+--rw (spmsi-tunnel-attribute)? +--rw (spmsi-tunnel-attribute)?
| +--:(rsvp-te-p2mp) | +--:(rsvp-te-p2mp)
| | +--rw rsvp-te-p2mp-template? string | | +--rw rsvp-te-p2mp-template? string
| +--:(p2mp-mldp) | +--:(p2mp-mldp)
| +--:(pim-ssm) | +--:(pim-ssm)
| | +--rw ssm-group-pool-addr? | | +--rw ssm-group-pool-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--rw ssm-group-pool-masklength? uint8 | | +--rw ssm-group-pool-masklength? uint8
| +--:(pim-sm) | +--:(pim-sm)
| | +--rw sm-group-pool-addr? | | +--rw sm-group-pool-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--rw sm-group-pool-masklength? uint8 | | +--rw sm-group-pool-masklength? uint8
| +--:(bidir-pim) | +--:(bidir-pim)
| | +--rw bidir-group-pool-addr? | | +--rw bidir-group-pool-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--rw bidir-group-pool-masklength? uint8 | | +--rw bidir-group-pool-masklength? uint8
| +--:(ingress-replication) | +--:(ingress-replication)
| +--:(mldp-mp2mp) | +--:(mldp-mp2mp)
| +--:(bier) | +--:(bier)
| +--rw selective-sub-domain-id? uint8 | +--rw selective-sub-domain-id? uint8
| +--rw selective-bitstring-length? uint16 | +--rw selective-bitstring-length? uint16
+--rw switch-threshold? uint32 +--rw switch-threshold? uint32
+--rw per-item-tunnel-limit? uint16 +--rw per-item-tunnel-limit? uint16
+--rw switch-wildcard-mode? +--rw switch-wildcard-mode?
| enumeration {mvpn-switch-wildcard}? | enumeration {mvpn-switch-wildcard}?
+--rw explicit-tracking-mode? +--rw explicit-tracking-mode?
| enumeration {mvpn-explicit-tracking}? | enumeration {mvpn-explicit-tracking}?
+--rw (address-mask-or-acl)? +--rw (address-mask-or-acl)?
| +--:(address-mask) | +--:(address-mask)
| | +--rw ipv4-group-addr? | | +--rw ipv4-group-addr?
| | | rt-types:ipv4-multicast-group-address | | | rt-types:ipv4-multicast-group-address
| | +--rw ipv4-group-masklength? uint8 | | +--rw ipv4-group-masklength? uint8
| | +--rw ipv4-source-addr? | | +--rw ipv4-source-addr?
| | | inet:ipv4-address | | | inet:ipv4-address
| | +--rw ipv4-source-masklength? uint8 | | +--rw ipv4-source-masklength? uint8
| +--:(acl-name) | +--:(acl-name)
| +--rw group-acl-ipv4? | +--rw group-acl-ipv4?
| -> /acl:acls/acl/name | -> /acl:acls/acl/name
+--ro (pmsi-tunnel-state-attribute)? +--ro (pmsi-tunnel-state-attribute)?
| +--:(rsvp-te-p2mp) | +--:(rsvp-te-p2mp)
| | +--ro p2mp-id? uint16 | | +--ro p2mp-id? uint16
| | +--ro tunnel-id? uint16 | | +--ro tunnel-id? uint16
| | +--ro extend-tunnel-id? uint16 | | +--ro extend-tunnel-id? uint16
| +--:(mldp-p2mp) | +--:(mldp-p2mp)
| | +--ro mldp-root-addr? inet:ip-address | | +--ro mldp-root-addr? inet:ip-address
| | +--ro mldp-lsp-id? string | | +--ro mldp-lsp-id? string
| +--:(pim-ssm) | +--:(pim-ssm)
| | +--ro ssm-group-addr? | | +--ro ssm-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(pim-sm) | +--:(pim-sm)
| | +--ro sm-group-addr? | | +--ro sm-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(bidir-pim) | +--:(bidir-pim)
| | +--ro bidir-group-addr? | | +--ro bidir-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(ingress-replication) | +--:(ingress-replication)
| +--:(mldp-mp2mp) | +--:(mldp-mp2mp)
| +--:(bier) | +--:(bier)
| +--ro sub-domain-id? uint8 | +--ro sub-domain-id? uint8
| +--ro bitstring-length? uint16 | +--ro bitstring-length? uint16
| +--ro bfir-id? uint16 | +--ro bfir-id? uint16
+--ro tunnel-role? enumeration +--ro tunnel-role? enumeration
+--ro upstream-vpn-label? +--ro upstream-vpn-label?
| rt-types:mpls-label {mvpn-aggregation-tunnel}? | rt-types:mpls-label {mvpn-aggregation-tunnel}?
+--ro mvpn-pmsi-ipv4-ref-sg-entries +--ro mvpn-pmsi-ipv4-ref-sg-entries
+--ro mvpn-pmsi-ipv4-ref-sg-entries* +--ro mvpn-pmsi-ipv4-ref-sg-entries*
[ipv4-source-address ipv4-group-address] [ipv4-source-address ipv4-group-address]
+--ro ipv4-source-address inet:ipv4-address +--ro ipv4-source-address inet:ipv4-address
+--ro ipv4-group-address +--ro ipv4-group-address
rt-types:ipv4-multicast-group-address rt-types:ipv4-multicast-group-address
augment /ni:network-instances/ni:network-instance/ni:ni-type augment /ni:network-instances/ni:network-instance/ni:ni-type
/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6: /l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6:
+--rw multicast +--rw multicast
+--rw signaling-mode? enumeration +--rw signaling-mode? enumeration
+--rw auto-discovery-mode? enumeration +--rw auto-discovery-mode? enumeration
+--rw mvpn-type? enumeration +--rw mvpn-type? enumeration
+--rw is-sender-site? boolean {mvpn-sender}? +--rw is-sender-site? boolean {mvpn-sender}?
+--rw rpt-spt-mode? enumeration +--rw rpt-spt-mode? enumeration
+--rw ecmp-load-balance-mode? +--rw ecmp-load-balance-mode?
| enumeration {mvpn-ecmp-load-balance}? | enumeration {mvpn-ecmp-load-balance}?
+--rw mvpn-route-targets {mvpn-separate-rt}? +--rw mvpn-route-targets {mvpn-separate-rt}?
| +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value]
| +--rw mvpn-rt-type enumeration | +--rw mvpn-rt-type enumeration
| +--rw mvpn-rt-value string | +--rw mvpn-rt-value string
+--rw mvpn-ipmsi-tunnel-ipv6 +--rw mvpn-ipmsi-tunnel-ipv6
| +--rw tunnel-type? p-tunnel | +--rw tunnel-type? p-tunnel
| +--rw (ipmsi-tunnel-attribute)? | +--rw (ipmsi-tunnel-attribute)?
| | +--:(rsvp-te-p2mp) | | +--:(rsvp-te-p2mp)
| | | +--rw rsvp-te-p2mp-template? string | | | +--rw rsvp-te-p2mp-template? string
| | +--:(mldp-p2mp) | | +--:(mldp-p2mp)
| | +--:(pim-ssm) | | +--:(pim-ssm)
| | | +--rw ssm-default-group-addr? | | | +--rw ssm-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(pim-sm) | | +--:(pim-sm)
| | | +--rw sm-default-group-addr? | | | +--rw sm-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(bidir-pim) | | +--:(bidir-pim)
| | | +--rw bidir-default-group-addr? | | | +--rw bidir-default-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(ingress-replication) | | +--:(ingress-replication)
| | +--:(mldp-mp2mp) | | +--:(mldp-mp2mp)
| | +--:(bier) | | +--:(bier)
| | +--rw inclusive-sub-domain-id? uint8 | | +--rw inclusive-sub-domain-id? uint8
| | +--rw inclusive-bitstring-length? uint16 | | +--rw inclusive-bitstring-length? uint16
| +--ro (pmsi-tunnel-state-attribute)? | +--ro (pmsi-tunnel-state-attribute)?
| | +--:(rsvp-te-p2mp) | | +--:(rsvp-te-p2mp)
| | | +--ro p2mp-id? uint16 | | | +--ro p2mp-id? uint16
| | | +--ro tunnel-id? uint16 | | | +--ro tunnel-id? uint16
| | | +--ro extend-tunnel-id? uint16 | | | +--ro extend-tunnel-id? uint16
| | +--:(mldp-p2mp) | | +--:(mldp-p2mp)
| | | +--ro mldp-root-addr? inet:ip-address | | | +--ro mldp-root-addr? inet:ip-address
| | | +--ro mldp-lsp-id? string | | | +--ro mldp-lsp-id? string
| | +--:(pim-ssm) | | +--:(pim-ssm)
| | | +--ro ssm-group-addr? | | | +--ro ssm-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(pim-sm) | | +--:(pim-sm)
| | | +--ro sm-group-addr? | | | +--ro sm-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(bidir-pim) | | +--:(bidir-pim)
| | | +--ro bidir-group-addr? | | | +--ro bidir-group-addr?
| | | rt-types:ip-multicast-group-address | | | rt-types:ip-multicast-group-address
| | +--:(ingress-replication) | | +--:(ingress-replication)
| | +--:(mldp-mp2mp) | | +--:(mldp-mp2mp)
| | +--:(bier) | | +--:(bier)
| | +--ro sub-domain-id? uint8 | | +--ro sub-domain-id? uint8
| | +--ro bitstring-length? uint16 | | +--ro bitstring-length? uint16
| | +--ro bfir-id? uint16 | | +--ro bfir-id? uint16
| +--ro tunnel-role? enumeration | +--ro tunnel-role? enumeration
| +--ro upstream-vpn-label? | +--ro upstream-vpn-label?
| | rt-types:mpls-label {mvpn-aggregation-tunnel}? | | rt-types:mpls-label {mvpn-aggregation-tunnel}?
| +--ro mvpn-pmsi-ipv6-ref-sg-entries | +--ro mvpn-pmsi-ipv6-ref-sg-entries
| +--ro mvpn-pmsi-ipv6-ref-sg-entries* | +--ro mvpn-pmsi-ipv6-ref-sg-entries*
| [ipv6-source-address ipv6-group-address] | [ipv6-source-address ipv6-group-address]
| +--ro ipv6-source-address inet:ipv6-address | +--ro ipv6-source-address inet:ipv6-address
| +--ro ipv6-group-address | +--ro ipv6-group-address
| rt-types:ipv6-multicast-group-address | rt-types:ipv6-multicast-group-address
+--rw mvpn-spmsi-tunnels-ipv6 +--rw mvpn-spmsi-tunnels-ipv6
+--rw switch-delay-time? uint8 +--rw switch-delay-time? uint8
+--rw switch-back-holddown-time? uint16 +--rw switch-back-holddown-time? uint16
+--rw tunnel-limit? uint16 +--rw tunnel-limit? uint16
+--rw mvpn-spmsi-tunnel-ipv6* [tunnel-type] +--rw mvpn-spmsi-tunnel-ipv6* [tunnel-type]
+--rw tunnel-type p-tunnel +--rw tunnel-type p-tunnel
+--rw (spmsi-tunnel-attribute)? +--rw (spmsi-tunnel-attribute)?
| +--:(rsvp-te-p2mp) | +--:(rsvp-te-p2mp)
| | +--rw rsvp-te-p2mp-template? string | | +--rw rsvp-te-p2mp-template? string
| +--:(p2mp-mldp) | +--:(p2mp-mldp)
| +--:(pim-ssm) | +--:(pim-ssm)
| | +--rw ssm-group-pool-addr? | | +--rw ssm-group-pool-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| | +--rw ssm-group-pool-masklength? uint8 | | +--rw ssm-group-pool-masklength? uint8
| +--:(pim-sm) | +--:(pim-sm)
| | +--rw sm-group-pool-addr? | | +--rw sm-group-pool-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| | +--rw sm-group-pool-masklength? uint8 | | +--rw sm-group-pool-masklength? uint8
| +--:(bidir-pim) | +--:(bidir-pim)
| | +--rw bidir-group-pool-addr? | | +--rw bidir-group-pool-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| | +--rw bidir-group-pool-masklength? uint8 | | +--rw bidir-group-pool-masklength? uint8
| +--:(ingress-replication) | +--:(ingress-replication)
| +--:(mldp-mp2mp) | +--:(mldp-mp2mp)
| +--:(bier) | +--:(bier)
| +--rw selective-sub-domain-id? uint8 | +--rw selective-sub-domain-id? uint8
| +--rw selective-bitstring-length? uint16 | +--rw selective-bitstring-length? uint16
+--rw switch-threshold? uint32 +--rw switch-threshold? uint32
+--rw per-item-tunnel-limit? uint16 +--rw per-item-tunnel-limit? uint16
+--rw switch-wildcard-mode? +--rw switch-wildcard-mode?
| enumeration {mvpn-switch-wildcard}? | enumeration {mvpn-switch-wildcard}?
+--rw explicit-tracking-mode? +--rw explicit-tracking-mode?
| enumeration {mvpn-explicit-tracking}? | enumeration {mvpn-explicit-tracking}?
+--rw (address-mask-or-acl)? +--rw (address-mask-or-acl)?
| +--:(address-mask) | +--:(address-mask)
| | +--rw ipv6-group-addr? | | +--rw ipv6-group-addr?
| | | rt-types:ipv6-multicast-group-address | | | rt-types:ipv6-multicast-group-address
| | +--rw ipv6-groupmasklength? uint8 | | +--rw ipv6-groupmasklength? uint8
| | +--rw ipv6-source-addr? | | +--rw ipv6-source-addr?
| | | inet:ipv6-address | | | inet:ipv6-address
| | +--rw ipv6-source-masklength? uint8 | | +--rw ipv6-source-masklength? uint8
| +--:(acl-name) | +--:(acl-name)
| +--rw group-acl-ipv6? | +--rw group-acl-ipv6?
| -> /acl:acls/acl/name | -> /acl:acls/acl/name
+--ro (pmsi-tunnel-state-attribute)? +--ro (pmsi-tunnel-state-attribute)?
| +--:(rsvp-te-p2mp) | +--:(rsvp-te-p2mp)
| | +--ro p2mp-id? uint16 | | +--ro p2mp-id? uint16
| | +--ro tunnel-id? uint16 | | +--ro tunnel-id? uint16
| | +--ro extend-tunnel-id? uint16 | | +--ro extend-tunnel-id? uint16
| +--:(mldp-p2mp) | +--:(mldp-p2mp)
| | +--ro mldp-root-addr? inet:ip-address | | +--ro mldp-root-addr? inet:ip-address
| | +--ro mldp-lsp-id? string | | +--ro mldp-lsp-id? string
| +--:(pim-ssm) | +--:(pim-ssm)
| | +--ro ssm-group-addr? | | +--ro ssm-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(pim-sm) | +--:(pim-sm)
| | +--ro sm-group-addr? | | +--ro sm-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(bidir-pim) | +--:(bidir-pim)
| | +--ro bidir-group-addr? | | +--ro bidir-group-addr?
| | rt-types:ip-multicast-group-address | | rt-types:ip-multicast-group-address
| +--:(ingress-replication) | +--:(ingress-replication)
| +--:(mldp-mp2mp) | +--:(mldp-mp2mp)
| +--:(bier) | +--:(bier)
| +--ro sub-domain-id? uint8 | +--ro sub-domain-id? uint8
| +--ro bitstring-length? uint16 | +--ro bitstring-length? uint16
| +--ro bfir-id? uint16 | +--ro bfir-id? uint16
+--ro tunnel-role? enumeration +--ro tunnel-role? enumeration
+--ro upstream-vpn-label? +--ro upstream-vpn-label?
| rt-types:mpls-label {mvpn-aggregation-tunnel}? | rt-types:mpls-label {mvpn-aggregation-tunnel}?
+--ro mvpn-pmsi-ipv6-ref-sg-entries +--ro mvpn-pmsi-ipv6-ref-sg-entries
+--ro mvpn-pmsi-ipv6-ref-sg-entries* +--ro mvpn-pmsi-ipv6-ref-sg-entries*
[ipv6-source-address ipv6-group-address] [ipv6-source-address ipv6-group-address]
+--ro ipv6-source-address inet:ipv6-address +--ro ipv6-source-address inet:ipv6-address
+--ro ipv6-group-address +--ro ipv6-group-address
rt-types:ipv6-multicast-group-address rt-types:ipv6-multicast-group-address
4. MVPN YANG Modules 4. MVPN YANG Modules
<CODE BEGINS> file "ietf-mvpn@2019-03-05.yang" <CODE BEGINS> file ietf-mvpn@2019-12-02.yang
module ietf-mvpn { module ietf-mvpn {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn"; namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn";
prefix mvpn; prefix mvpn;
import ietf-network-instance { import ietf-network-instance {
prefix ni; prefix ni;
} }
import ietf-bgp-l3vpn { import ietf-bgp-l3vpn {
skipping to change at page 12, line 46 skipping to change at page 13, line 40
import ietf-access-control-list { import ietf-access-control-list {
prefix acl; prefix acl;
} }
organization organization
"IETF BESS(BGP Enabled Services) Working Group"; "IETF BESS(BGP Enabled Services) Working Group";
contact contact
" "
Yisong Liu Yisong Liu
<mailto:liuyisong@huawei.com> <mailto:liuyisong.ietf@gmail.com>
Stephane Litkowski Stephane Litkowski
<mailto:stephane.litkowski@orange.com> <mailto:slitkows@cisco.com>
Feng Guo Feng Guo
<mailto:guofeng@huawei.com> <mailto:guofeng@huawei.com>
Xufeng Liu Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Robert Kebler Robert Kebler
<mailto:rkebler@juniper.net> <mailto:rkebler@juniper.net>
Mahesh Sivakumar Mahesh Sivakumar
<mailto:sivakumar.mahesh@gmail.com>"; <mailto:sivakumar.mahesh@gmail.com>";
description description
"This YANG module defines the generic configuration "This YANG module defines the generic configuration
and operational state data for mvpn, which is common across and operational state data for mvpn, which is common across
all of the vendor implementations of the protocol. It is all of the vendor implementations of the protocol. It is
intended that the module will be extended by vendors to intended that the module will be extended by vendors to
define vendor-specific mvpn parameters."; define vendor-specific mvpn parameters.";
revision 2019-12-02 {
description
"Update the contact information of co-authors.";
reference
"RFC XXXX: A YANG Data Model for MVPN";
}
revision 2019-03-05 { revision 2019-03-05 {
description description
"Add bier as a type of P-Tunnel and Errata."; "Add bier as a type of P-Tunnel and Errata.";
reference reference
"RFC XXXX: A YANG Data Model for MVPN"; "RFC XXXX: A YANG Data Model for MVPN";
} }
revision 2018-11-08 { revision 2018-11-08 {
description description
"Update for leaf type and reference."; "Update for leaf type and reference.";
reference reference
skipping to change at page 14, line 4 skipping to change at page 15, line 16
"Update S-PMSI configuration and errata."; "Update S-PMSI configuration and errata.";
reference reference
"RFC XXXX: A YANG Data Model for MVPN"; "RFC XXXX: A YANG Data Model for MVPN";
} }
revision 2016-10-28 { revision 2016-10-28 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for MVPN"; "RFC XXXX: A YANG Data Model for MVPN";
} }
/* Features */ /* Features */
feature mvpn-sender { feature mvpn-sender {
description description
"Support configuration to specify the current PE as the "Support configuration to specify the current PE as the
sender PE"; sender PE";
} }
feature mvpn-separate-rt { feature mvpn-separate-rt {
description description
"Support route-targets configuration of MVPN when they are "Support route-targets configuration of MVPN when they are
different from the route-targets of unicast L3VPN."; different from the route-targets of unicast L3VPN.";
} }
skipping to change at page 14, line 33 skipping to change at page 16, line 4
when multicast packets forward by I-PMSI or S-PMSI."; when multicast packets forward by I-PMSI or S-PMSI.";
} }
feature mvpn-aggregation-tunnel { feature mvpn-aggregation-tunnel {
description description
"Support more than one VPN multicast service to use the same "Support more than one VPN multicast service to use the same
p-tunnel."; p-tunnel.";
} }
feature mvpn-ecmp-load-balance { feature mvpn-ecmp-load-balance {
description description
"Support multicast entries in the private network to be "Support multicast entries in the private network to be
distributed on the ECMP path of bier in the public network."; distributed on the ECMP path of bier in the public
network.";
} }
typedef p-tunnel { typedef p-tunnel {
type enumeration { type enumeration {
enum no-tunnel-present { enum no-tunnel-present {
value 0; value 0;
description "No tunnel information present"; description "No tunnel information present";
} }
enum rsvp-te-p2mp { enum rsvp-te-p2mp {
value 1; value 1;
description "RSVP TE P2MP tunnel"; description "RSVP TE P2MP tunnel";
} }
enum mldp-p2mp { enum mldp-p2mp {
value 2; value 2;
description "MLDP P2MP tunnel"; description "MLDP P2MP tunnel";
} }
enum pim-ssm { enum pim-ssm {
value 3; value 3;
description "PIM SSM tree in public net"; description "PIM SSM tree in public net";
}
}
enum pim-sm { enum pim-sm {
value 4; value 4;
description "PIM SM tree in public net"; description "PIM SM tree in public net";
} }
enum bidir-pim { enum bidir-pim {
value 5; value 5;
description "BIDIR-PIM tree in public net"; description "BIDIR-PIM tree in public net";
} }
enum ingress-replication { enum ingress-replication {
value 6; value 6;
skipping to change at page 16, line 4 skipping to change at page 17, line 33
value 2; value 2;
description "pim signaling"; description "pim signaling";
} }
enum mldp-in-band { enum mldp-in-band {
value 3; value 3;
description "mldp in-band signaling"; description "mldp in-band signaling";
} }
} }
default "none"; default "none";
description "Signaling mode for C-multicast route."; description "Signaling mode for C-multicast route.";
}
}
leaf auto-discovery-mode { leaf auto-discovery-mode {
type enumeration { type enumeration {
enum none { enum none {
value 0; value 0;
description "no auto-discovery signaling"; description "no auto-discovery signaling";
} }
enum pim { enum pim {
value 1; value 1;
description "auto-discovery by PIM signaling"; description "auto-discovery by PIM signaling";
} }
skipping to change at page 17, line 4 skipping to change at page 18, line 40
description "Configure the current PE as a sender PE."; description "Configure the current PE as a sender PE.";
} }
leaf rpt-spt-mode { leaf rpt-spt-mode {
type enumeration { type enumeration {
enum spt-only { enum spt-only {
value 0; value 0;
description description
"Only spt entries can cross the public net."; "Only spt entries can cross the public net.";
} }
enum rpt-spt { enum rpt-spt {
value 1; value 1;
description description
"Both rpt and spt entries can corss the public net."; "Both rpt and spt entries can corss the public net.";
} }
} }
description description
"ASM mode in multicast private network for crossing "ASM mode in multicast private network for crossing
public net."; public net.";
} }
leaf ecmp-load-balance-mode { leaf ecmp-load-balance-mode {
if-feature mvpn-ecmp-load-balance; if-feature mvpn-ecmp-load-balance;
skipping to change at page 18, line 4 skipping to change at page 20, line 4
grouping mvpn-rts { grouping mvpn-rts {
description description
"May be different from l3vpn unicast route-targets."; "May be different from l3vpn unicast route-targets.";
container mvpn-route-targets{ container mvpn-route-targets{
if-feature mvpn-separate-rt; if-feature mvpn-separate-rt;
description "Multicast vpn route-targets"; description "Multicast vpn route-targets";
list mvpn-route-target { list mvpn-route-target {
key "mvpn-rt-type mvpn-rt-value" ; key "mvpn-rt-type mvpn-rt-value" ;
description description
"List of multicast route-targets" ; "List of multicast route-targets" ;
leaf mvpn-rt-type { leaf mvpn-rt-type {
type enumeration { type enumeration {
enum export-extcommunity { enum export-extcommunity {
value 0; value 0;
description "export-extcommunity"; description "export-extcommunity";
} }
enum import-extcommunity { enum import-extcommunity {
value 1; value 1;
description "import-extcommunity"; description "import-extcommunity";
} }
skipping to change at page 18, line 46 skipping to change at page 21, line 4
number ranges from 0 to 4294967295. The as number ranges from 0 to 4294967295. The as
number and user-defined number cannot be number and user-defined number cannot be
both 0s. That is, a vpn target cannot be 0:0. both 0s. That is, a vpn target cannot be 0:0.
- 32-bit ip address:16-bit user-defined - 32-bit ip address:16-bit user-defined
number, for example, 192.168.122.15:1. number, for example, 192.168.122.15:1.
The ip address ranges from 0.0.0.0 to The ip address ranges from 0.0.0.0 to
255.255.255.255, and the user-defined 255.255.255.255, and the user-defined
number ranges from 0 to 65535."; number ranges from 0 to 65535.";
} }
} }
} }
} }
grouping mvpn-ipmsi-tunnel-config { grouping mvpn-ipmsi-tunnel-config {
description description
"Configuration of default mdt for rosen mvpn "Configuration of default mdt for rosen mvpn
and I-PMSI for ng mvpn"; and I-PMSI for ng mvpn";
leaf tunnel-type {
leaf tunnel-type {
type p-tunnel; type p-tunnel;
description "I-PMSI tunnel type."; description "I-PMSI tunnel type.";
} }
choice ipmsi-tunnel-attribute { choice ipmsi-tunnel-attribute {
description "I-PMSI tunnel attributes configuration"; description "I-PMSI tunnel attributes configuration";
case rsvp-te-p2mp { case rsvp-te-p2mp {
description "RSVP TE P2MP tunnel"; description "RSVP TE P2MP tunnel";
leaf rsvp-te-p2mp-template { leaf rsvp-te-p2mp-template {
type string { type string {
length "1..31"; length "1..31";
skipping to change at page 20, line 4 skipping to change at page 22, line 17
description description
"Default mdt or I-PMSI group address for BIDIR mode."; "Default mdt or I-PMSI group address for BIDIR mode.";
} }
} }
case ingress-replication { case ingress-replication {
description "Ingress replication p2p tunnel"; description "Ingress replication p2p tunnel";
} }
case mldp-mp2mp { case mldp-mp2mp {
description "MLDP MP2MP tunnel"; description "MLDP MP2MP tunnel";
} }
case bier { case bier {
description "bier underlay"; description "bier underlay";
leaf inclusive-sub-domain-id { leaf inclusive-sub-domain-id {
type uint8; type uint8;
description "Subdomain ID of bier."; description "Subdomain ID of bier.";
} }
leaf inclusive-bitstring-length { leaf inclusive-bitstring-length {
type uint16 { type uint16 {
range "64|128|256|512|1024|2048|4096"; range "64|128|256|512|1024|2048|4096";
} }
description "BitString length of bier underlay."; description "BitString length of bier underlay.";
skipping to change at page 20, line 45 skipping to change at page 23, line 17
} }
} }
case p2mp-mldp { case p2mp-mldp {
description "MLDP P2MP tunnel"; description "MLDP P2MP tunnel";
} }
case pim-ssm { case pim-ssm {
description "PIM SSM tree in the public net"; description "PIM SSM tree in the public net";
leaf ssm-group-pool-addr { leaf ssm-group-pool-addr {
type rt-types:ip-multicast-group-address; type rt-types:ip-multicast-group-address;
description description
"Group pool address for data mdt or s-pmsi in SSM mode"; "Group pool address for data mdt or s-pmsi in SSM
mode";
} }
leaf ssm-group-pool-masklength { leaf ssm-group-pool-masklength {
type uint8 { type uint8 {
range "8..128"; range "8..128";
} }
description description
"Group pool mask length for data mdt or s-pmsi in "Group pool mask length for data mdt or s-pmsi in
SSM mode"; SSM mode";
} }
} }
case pim-sm { case pim-sm {
description "PIM SM tree in the public net"; description "PIM SM tree in the public net";
leaf sm-group-pool-addr { leaf sm-group-pool-addr {
type rt-types:ip-multicast-group-address; type rt-types:ip-multicast-group-address;
description description
"Group pool address for data mdt or s-pmsi in SM mode"; "Group pool address for data mdt or s-pmsi in SM mode";
} }
leaf sm-group-pool-masklength { leaf sm-group-pool-masklength {
skipping to change at page 22, line 4 skipping to change at page 24, line 32
case mldp-mp2mp { case mldp-mp2mp {
description "MLDP MP2MP tunnel"; description "MLDP MP2MP tunnel";
} }
case bier { case bier {
description "bier underlay"; description "bier underlay";
leaf selective-sub-domain-id { leaf selective-sub-domain-id {
type uint8; type uint8;
description "Subdomain ID of bier."; description "Subdomain ID of bier.";
} }
leaf selective-bitstring-length { leaf selective-bitstring-length {
type uint16 { type uint16 {
range "64|128|256|512|1024|2048|4096"; range "64|128|256|512|1024|2048|4096";
} }
description "BitString length of bier underlay."; description "BitString length of bier underlay.";
} }
} }
} }
leaf switch-threshold { leaf switch-threshold {
type uint32 { type uint32 {
range "0..4194304"; range "0..4194304";
} }
skipping to change at page 23, line 4 skipping to change at page 25, line 39
"Wildcard for both source and group address."; "Wildcard for both source and group address.";
} }
enum star-group { enum star-group {
value 2; value 2;
description description
"Wildcard only for source address."; "Wildcard only for source address.";
} }
enum source-star { enum source-star {
value 3; value 3;
description description
"Wildcard only for group address."; "Wildcard only for group address.";
} }
} }
description description
"I-PMSI switching to S-PMSI mode for private net "I-PMSI switching to S-PMSI mode for private net
wildcard mode, which including (*,*), (*,G), (S,*), wildcard mode, which including (*,*), (*,G), (S,*),
(S,G) four modes."; (S,G) four modes.";
} }
leaf explicit-tracking-mode { leaf explicit-tracking-mode {
if-feature mvpn-explicit-tracking; if-feature mvpn-explicit-tracking;
type enumeration { type enumeration {
enum no-leaf-info-required { enum no-leaf-info-required {
value 0; value 0;
description "No need to track leaf information."; description "No need to track leaf information.";
} }
enum leaf-info-required { enum leaf-info-required {
value 1; value 1;
skipping to change at page 24, line 4 skipping to change at page 27, line 4
default 5; default 5;
description description
"Delay for switching from the I-PMSI to "Delay for switching from the I-PMSI to
the S-PMSI. The value is an integer the S-PMSI. The value is an integer
ranging from 3 to 60, in seconds. "; ranging from 3 to 60, in seconds. ";
} }
leaf switch-back-holddown-time { leaf switch-back-holddown-time {
type uint16 { type uint16 {
range "0..512"; range "0..512";
} }
units seconds; units seconds;
default 60; default 60;
description description
"Delay for switching back from the S-PMSI "Delay for switching back from the S-PMSI
to the I-PMSI. The value is an integer to the I-PMSI. The value is an integer
ranging from 0 to 512, in seconds. "; ranging from 0 to 512, in seconds. ";
} }
leaf tunnel-limit { leaf tunnel-limit {
type uint16 { type uint16 {
range "1..8192"; range "1..8192";
} }
skipping to change at page 25, line 4 skipping to change at page 28, line 11
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description description
"Extended tunnel ID of the RSVP TE P2MP Tunnel"; "Extended tunnel ID of the RSVP TE P2MP Tunnel";
} }
} }
case mldp-p2mp { case mldp-p2mp {
description "MLDP P2MP tunnel"; description "MLDP P2MP tunnel";
leaf mldp-root-addr { leaf mldp-root-addr {
type inet:ip-address; type inet:ip-address;
description "IP address of the root of a MLDP P2MP lsp."; description "IP address of the root of a MLDP P2MP lsp.";
} }
leaf mldp-lsp-id { leaf mldp-lsp-id {
type string { type string {
length "1..256"; length "1..256";
} }
description "MLDP P2MP lsp ID."; description "MLDP P2MP lsp ID.";
} }
} }
case pim-ssm { case pim-ssm {
skipping to change at page 26, line 4 skipping to change at page 29, line 18
leaf sub-domain-id { leaf sub-domain-id {
type uint8; type uint8;
description "Subdomain ID of bier."; description "Subdomain ID of bier.";
} }
leaf bitstring-length { leaf bitstring-length {
type uint16 { type uint16 {
range "64|128|256|512|1024|2048|4096"; range "64|128|256|512|1024|2048|4096";
} }
description "BitString length of bier underlay."; description "BitString length of bier underlay.";
} }
leaf bfir-id { leaf bfir-id {
type uint16; type uint16;
description "ID of BIER sender PE of MVPN."; description "ID of BIER sender PE of MVPN.";
} }
} }
} }
leaf tunnel-role { leaf tunnel-role {
type enumeration { type enumeration {
enum none { enum none {
value 0; value 0;
description "none"; description "none";
skipping to change at page 26, line 48 skipping to change at page 30, line 20
in an aggregation P-tunnel."; in an aggregation P-tunnel.";
} }
}/* mvpn-pmsi-state */ }/* mvpn-pmsi-state */
grouping mvpn-pmsi-ipv4-entry { grouping mvpn-pmsi-ipv4-entry {
description description
"Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; "Multicast entries in ipv4 mvpn referenced the pmsi tunnel";
container mvpn-pmsi-ipv4-ref-sg-entries { container mvpn-pmsi-ipv4-ref-sg-entries {
config false; config false;
description description
"Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; "Multicast entries in ipv4 mvpn referenced the pmsi
tunnel";
list mvpn-pmsi-ipv4-ref-sg-entries { list mvpn-pmsi-ipv4-ref-sg-entries {
key "ipv4-source-address ipv4-group-address"; key "ipv4-source-address ipv4-group-address";
description description
"IPv4 source and group address of private network entry"; "IPv4 source and group address of private network entry";
leaf ipv4-source-address {
leaf ipv4-source-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 source address of private network entry "IPv4 source address of private network entry
in I-PMSI or S-PMSI."; in I-PMSI or S-PMSI.";
} }
leaf ipv4-group-address { leaf ipv4-group-address {
type rt-types:ipv4-multicast-group-address; type rt-types:ipv4-multicast-group-address;
description description
"IPv4 group address of private network entry "IPv4 group address of private network entry
in I-PMSI or S-PMSI."; in I-PMSI or S-PMSI.";
skipping to change at page 27, line 24 skipping to change at page 31, line 4
"IPv4 group address of private network entry "IPv4 group address of private network entry
in I-PMSI or S-PMSI."; in I-PMSI or S-PMSI.";
} }
} }
} }
}/* mvpn-pmsi-ipv4-entry */ }/* mvpn-pmsi-ipv4-entry */
grouping mvpn-pmsi-ipv6-entry { grouping mvpn-pmsi-ipv6-entry {
description description
"Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; "Multicast entries in ipv6 mvpn referenced the pmsi tunnel";
container mvpn-pmsi-ipv6-ref-sg-entries { container mvpn-pmsi-ipv6-ref-sg-entries {
config false; config false;
description description
"Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; "Multicast entries in ipv6 mvpn referenced the pmsi
tunnel";
list mvpn-pmsi-ipv6-ref-sg-entries { list mvpn-pmsi-ipv6-ref-sg-entries {
key "ipv6-source-address ipv6-group-address"; key "ipv6-source-address ipv6-group-address";
description description
"IPv6 source and group address of private network entry"; "IPv6 source and group address of private network entry";
leaf ipv6-source-address { leaf ipv6-source-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 source address of private network entry "IPv6 source address of private network entry
in I-PMSI or S-PMSI."; in I-PMSI or S-PMSI.";
} }
skipping to change at page 28, line 4 skipping to change at page 31, line 35
} }
} }
} }
}/* mvpn-pmsi-ipv6-entry */ }/* mvpn-pmsi-ipv6-entry */
grouping mvpn-ipmsi-tunnel-info-ipv4 { grouping mvpn-ipmsi-tunnel-info-ipv4 {
description description
"Default mdt or I-PMSI configuration and "Default mdt or I-PMSI configuration and
operational state information"; operational state information";
container mvpn-ipmsi-tunnel-ipv4 { container mvpn-ipmsi-tunnel-ipv4 {
description description
"Default mdt or I-PMSI configuration and "Default mdt or I-PMSI configuration and
operational state information"; operational state information";
uses mvpn-ipmsi-tunnel-config; uses mvpn-ipmsi-tunnel-config;
uses mvpn-pmsi-state; uses mvpn-pmsi-state;
uses mvpn-pmsi-ipv4-entry; uses mvpn-pmsi-ipv4-entry;
} }
} }
grouping mvpn-ipmsi-tunnel-info-ipv6 { grouping mvpn-ipmsi-tunnel-info-ipv6 {
description description
skipping to change at page 29, line 4 skipping to change at page 32, line 41
uses mvpn-spmsi-tunnel-per-item-config; uses mvpn-spmsi-tunnel-per-item-config;
choice address-mask-or-acl { choice address-mask-or-acl {
description description
"Type of definition of private network "Type of definition of private network
multicast address range"; multicast address range";
case address-mask { case address-mask {
description "Use the type of address and mask"; description "Use the type of address and mask";
leaf ipv4-group-addr { leaf ipv4-group-addr {
type rt-types:ipv4-multicast-group-address; type rt-types:ipv4-multicast-group-address;
description description
"Start address of the IPv4 group "Start address of the IPv4 group
address range in private net. "; address range in private net. ";
} }
leaf ipv4-group-masklength { leaf ipv4-group-masklength {
type uint8 { type uint8 {
range "4..32"; range "4..32";
} }
description description
"Group mask length for the IPv4 "Group mask length for the IPv4
group address range in private net."; group address range in private net.";
skipping to change at page 29, line 51 skipping to change at page 34, line 4
to 3999 or a string of 32 case-sensitive to 3999 or a string of 32 case-sensitive
characters. If no value is specified, the characters. If no value is specified, the
switch-group address pool takes effect on switch-group address pool takes effect on
all (s, g)."; all (s, g).";
} }
} }
} }
uses mvpn-pmsi-state; uses mvpn-pmsi-state;
uses mvpn-pmsi-ipv4-entry; uses mvpn-pmsi-ipv4-entry;
}/* list mvpn-spmsi-tunnel-ipv4 */ }/* list mvpn-spmsi-tunnel-ipv4 */
}/* container mvpn-spmsi-tunnels-ipv4 */ }/* container mvpn-spmsi-tunnels-ipv4 */
}/* grouping mvpn-spmsi-tunnel-info-ipv4 */ }/* grouping mvpn-spmsi-tunnel-info-ipv4 */
grouping mvpn-spmsi-tunnel-info-ipv6 { grouping mvpn-spmsi-tunnel-info-ipv6 {
description description
"Data mdt for rosen mvpn or S-PMSI for ng mvpn in "Data mdt for rosen mvpn or S-PMSI for ng mvpn in
IPv6 private network"; IPv6 private network";
container mvpn-spmsi-tunnels-ipv6 { container mvpn-spmsi-tunnels-ipv6 {
description description
"S-PMSI tunnel configuration and "S-PMSI tunnel configuration and
operational state information."; operational state information.";
uses mvpn-spmsi-tunnel-common-config; uses mvpn-spmsi-tunnel-common-config;
skipping to change at page 31, line 4 skipping to change at page 35, line 12
} }
leaf ipv6-source-addr { leaf ipv6-source-addr {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Start address of the IPv6 source "Start address of the IPv6 source
address range in private net."; address range in private net.";
} }
leaf ipv6-source-masklength { leaf ipv6-source-masklength {
type uint8 { type uint8 {
range "0..128"; range "0..128";
}
}
description description
"Source mask length for the IPv6 "Source mask length for the IPv6
source address range in private net."; source address range in private net.";
} }
} }
case acl-name { case acl-name {
description "Use the type of acl"; description "Use the type of acl";
leaf group-acl-ipv6 { leaf group-acl-ipv6 {
type leafref { type leafref {
path "/acl:acls/acl:acl/acl:name"; path "/acl:acls/acl:acl/acl:name";
skipping to change at page 32, line 4 skipping to change at page 36, line 20
uses mvpn-rts; uses mvpn-rts;
uses mvpn-ipmsi-tunnel-info-ipv4; uses mvpn-ipmsi-tunnel-info-ipv4;
uses mvpn-spmsi-tunnel-info-ipv4; uses mvpn-spmsi-tunnel-info-ipv4;
} }
} }
augment "/ni:network-instances/ni:network-instance/ni:ni-type/" augment "/ni:network-instances/ni:network-instance/ni:ni-type/"
+"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" { +"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" {
description description
"Augment l3vpn ipv6 container for per multicast VRF "Augment l3vpn ipv6 container for per multicast VRF
configuration and operational state."; configuration and operational state.";
container multicast { container multicast {
description description
"Configuration and operational state of multicast IPv6 vpn "Configuration and operational state of multicast IPv6 vpn
specific parameters"; specific parameters";
uses mvpn-instance-config; uses mvpn-instance-config;
uses mvpn-rts; uses mvpn-rts;
uses mvpn-ipmsi-tunnel-info-ipv6; uses mvpn-ipmsi-tunnel-info-ipv6;
uses mvpn-spmsi-tunnel-info-ipv6; uses mvpn-spmsi-tunnel-info-ipv6;
} }
} }
skipping to change at page 33, line 29 skipping to change at page 38, line 9
Explicit Replication (BIER)", RFC 8279, November 2017 Explicit Replication (BIER)", RFC 8279, November 2017
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294, "Common YANG Data Types for the Routing Area", RFC 8294,
December 2017 December 2017
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, March 2018 (NMDA)", RFC 8342, March 2018
[I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D. [RFC8519] M. Jethanandani, S. Agarwal, L. Huang and D.
Blair, "Network Access Control List (ACL) YANG Data Blair, "Yang Data Model for Network Access Control Lists
Model", draft-ietf-netmod-acl-model-21(work in progress), (ACL) ", RFC8519, March 2019
November 2018
[I-D.ietf-ni-model] Berger, L., Hopps, C., Lindem, A., and D. [RFC8529] L. Berger, C. Hopps, A. Lindem, D. Bogdanovic and X. Liu,
Bogdanovic, X. Liu, "Network Instance Model", draft-ietf- "YANG Data Model for Network Instances", RFC8529, March
rtgwg-ni-model-12(work in progress), March 2018. 2019.
[I-D.ietf-l3vpn-yang] D. Jain, K. Patel, P. Brissette, Z. Li, S. [I-D.ietf-l3vpn-yang] D. Jain, K. Patel, P. Brissette, Z. Li, S.
Zhuang, X. Liu, J. Haas, S. Esale and B. Wen, "Yang Data Zhuang, X. Liu, J. Haas, S. Esale and B. Wen, "Yang Data
Model for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang- Model for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-
04(work in progress), October 2018. 04(expired), October 2018.
7.2. Informative References 7.2. Informative References
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, March 2018 BCP 215, RFC 8340, March 2018
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of YANG [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", RFC8407, October 2018 Data Model Documents", RFC8407, October 2018
8. Acknowledgments 8. Acknowledgments
The authors would like to thank Anish Peter, Stig Venaas for their The authors would like to thank the following for their valuable
valuable contributions. contributions of this document:
Authors' Addresses TBD
Authors' Addresses
Yisong Liu Yisong Liu
Huawei Technologies Individual
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China China
Email: liuyisong.ietf@gmail.com
Email: liuyisong@huawei.com
Feng Guo Feng Guo
Huawei Technologies Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China China
Email: guofeng@huawei.com Email: guofeng@huawei.com
Stephane Litkowski Stephane Litkowski
Orange Cisco
Email: stephane.litkowski@orange.com Email: slitkows@cisco.com
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
Email: xufeng.liu.ietf@gmail.com Email: xufeng.liu.ietf@gmail.com
Robert Kebler Robert Kebler
Juniper Networks Juniper Networks
10 Technology Park Drive
Westford, MA 01886
USA USA
Email: kebler@juniper.net
Email: rkebler@juniper.net
Mahesh Sivakumar Mahesh Sivakumar
Juniper Networks Juniper Networks
1133 Innovation Way
Sunnyvale, California
USA USA
Email: sivakumar.mahesh@gmail.com Email: sivakumar.mahesh@gmail.com
 End of changes. 72 change blocks. 
427 lines changed or deleted 400 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/