Internet DRAFT - draft-wang-bess-vpls-multicast-yang
draft-wang-bess-vpls-multicast-yang
BESS Working Group D. Wang
Internet-Draft Y. Liu
Intended Status: Standard Track Huawei Technologies
Expires: September 13, 2017
March 13, 2017
A YANG data model for Multicast in Virtual Private LAN Service
draft-wang-bess-vpls-multicast-yang-00
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 September 10, 2017.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must 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.
Wang & Liu, etc Expires September 13, 2017 [Page 1]
Internet-Draft VPLS Multicast Yang Model March 2017
Abstract
This document defines a YANG data model that can be used to
configure and manage multicast devices in Virtual Private LAN
Service.
Table of Contents
1. Introduction ................................................ 2
1.1. Requirements Language................................... 2
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. IGMP and MLD Snooping Configuration..................... 4
3.2. IGMP and MLD Snooping Operational State................. 9
4. IGMP and MLD YANG Modules................................... 19
5. Security Considerations..................................... 65
6. IANA Considerations ........................................ 65
7. References ................................................. 65
7.1. Normative References................................... 65
7.2. Informative References................................. 66
1. Introduction
YANG [RFC6020] [RFC6087] is a data definition language that was
introduced to model the configuration and running state of a device
managed using NETCONF [RFC6241]. YANG is now also being used as a
component of wider management interfaces, such as CLIs.
This document defines a draft YANG data model that can be used to
configure and manage multicast devices in Virtual Private LAN
Service. Currently this model is incomplete, but it will support the
core IGMP and MLD snooping protocols in Virtual Private LAN Service,
as well as many other features mentioned in separate multicast RFCs.
Non-core features are defined as optional in the provided data
model.
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].
Wang & Liu, etc Expires September 13, 2017 [Page 2]
Internet-Draft VPLS Multicast Yang Model March 2017
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 IGMP and MLD snooping[RFC4541], and multicast in
BGP based VPLS[RFC4761] or LDP based VPLS[RFC4762].
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 multicast protocols in VPLS such as
[RFC7117] or [RFC7524] etc., these will be specified in separate
documents.
2.2. Optional capabilities
This model is designed to represent the capabilities of IGMP and MLD
snooping devices in VPLS with various specifications, including some
with basic subsets of the IGMP and MLD snooping protocols in VPLS.
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.
There is also value in widely-supported features being standardized,
to save work for individual vendors, and so that mapping between
different vendors' configuration is not needlessly complicated.
Therefore these modules declare a number of features representing
capabilities that not all deployed devices support.
The extensive use of feature declarations should also substantially
simplify the capability negotiation process for a vendor's IGMP and
MLD snooping in VPLS implementations.
Wang & Liu, etc Expires September 13, 2017 [Page 3]
Internet-Draft VPLS Multicast Yang Model March 2017
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
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 IGMP or MLD snooping in VPLS as separate
schema branches in the structure. The reason for this is to 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 (IGMP snooping) and ipv6 (MLD snooping) address
families.
3. Module Structure
3.1. VPLS Multicast Configuration
The IGMP or MLD snooping in VPLS modules define the configuration
options in a two-level hierarchy as listed below:
Global level: IGMP or MLD snooping configuration attributes for
the entire system and applicable to all of the l2vpn instances.
L2vpn instance level: IGMP or MLD snooping configuration
attributes applicable to a specific l2vpn instance.
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 and notifications as well.
The IGMP or MLD snooping in VPLS model will augments
"/l2vpn:l2vpn:".
augment /l2vpn:l2vpn:
+--rw igmp-snooping
| +--rw global
| | +--rw enable? boolean {global-admin-enable}?
| | +--rw max-entry? uint32
Wang & Liu, etc Expires September 13, 2017 [Page 4]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--rw bandwidth? uint32
| | +--rw ssm-mapping-policys
| | | +--rw ssm-mapping-policy* [name]
| | | +--rw name string
| | | +--rw ssm-map* [group-address group-mask-length source-address]
| | | +--rw group-address inet:ipv4-address
| | | +--rw group-mask-length uint8
| | | +--rw source-address inet:ipv4-address
| | +--rw unspecified-channel-deny? boolean
| | +--rw global-cac-configs
| | | +--rw global-cac-config* [channel-name channel-mode]
| | | +--rw channel-name string
| | | +--rw channel-mode channel-mode
| | | +--rw max-entry? uint32
| | | +--rw channel-policys
| | | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length]
| | | +--rw group-address inet:ipv4-address
| | | +--rw group-mask-length uint8
| | | +--rw source-address inet:ipv4-address
| | | +--rw source-mask-length uint8
| | | +--rw bandwidth-each-entry? uint32
| | +--rw send-query-source? inet:ipv4-address
| +--rw l2vpn-multicast-instances
| +--rw l2vpn-multicast-instance* [name type]
| +--rw name string
| +--rw type identityref
| +--rw enable? boolean
| +--rw version? uint8
| +--rw snooping-mode? snooping-mode
| +--rw ssm-policy? string
| +--rw group-policy? string
| +--rw group-policy-version? uint8
| +--rw ip-policy? string
| +--rw query-ip-policy? string
| +--rw last-member-query-interval? uint8
| +--rw query-interval? uint16
| +--rw query-max-response-time? uint8
| +--rw router-aging-time? uint16
| +--rw prompt-leave? boolean
| +--rw router-learning? boolean
| +--rw require-router-alert? boolean
| +--rw send-router-alert? boolean
| +--rw ssm-mapping? boolean
| +--rw ssm-mapping-policy? string
| +--rw robustness-variable? uint8
| +--rw source-life-time? uint32
| +--rw unspecified-channel-deny? boolean
| +--rw max-entry? uint32
| +--rw max-entry-except-policy? string
| +--rw bandwidth-lose-mode? boolean
Wang & Liu, etc Expires September 13, 2017 [Page 5]
Internet-Draft VPLS Multicast Yang Model March 2017
| +--rw proxy-enable? boolean
| +--rw proxy-router-protocol-pass? boolean
| +--rw query-enable? boolean
| +--rw querier-election? boolean
| +--rw report-suppress? boolean
| +--rw ssm-map* [group-address group-mask-length source-address]
| | +--rw group-address inet:ipv4-address
| | +--rw group-mask-length uint8
| | +--rw source-address inet:ipv4-address
| +--rw static-pw-router* [peer-ip pw-id]
| | +--rw peer-ip inet:ip-address
| | +--rw pw-id uint32
| +--rw static-ac-router-port* [name pe-id ce-id]
| | +--rw name if:interface-ref
| | +--rw pe-id uint16
| | +--rw ce-id uint16
| +--rw static-pw-group* [peer-ip pw-id]
| | +--rw peer-ip inet:ip-address
| | +--rw pw-id uint32
| | +--rw static-group-sources
| | +--rw static-group-source* [group-address source-address]
| | +--rw group-address inet:ipv4-address
| | +--rw source-address inet:ipv4-address
| +--rw static-ac-static-group* [name pe-id ce-id]
| | +--rw name if:interface-ref
| | +--rw pe-id uint16
| | +--rw ce-id uint16
| | +--rw static-group-sources
| | +--rw static-group-source* [group-address source-address]
| | +--rw group-address inet:ipv4-address
| | +--rw source-address inet:ipv4-address
| +--rw cac-configs
| | +--rw cac-config* [channel-name channel-mode]
| | +--rw channel-name string
| | +--rw channel-mode channel-mode
| | +--rw max-entry? uint32
| | +--rw channel-policys
| | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length]
| | +--rw group-address inet:ipv4-address
| | +--rw group-mask-length uint8
| | +--rw source-address inet:ipv4-address
| | +--rw source-mask-length uint8
| | +--rw bandwidth-each-entry? uint32
| +--rw interfaces
| +--rw interface* [interface]
| +--rw interface if:interface-ref
| +--rw bandwidth-lose-mode? boolean
| +--rw max-entry? uint32
| +--rw group-policy? string
| +--rw group-policy-version? uint8
Wang & Liu, etc Expires September 13, 2017 [Page 6]
Internet-Draft VPLS Multicast Yang Model March 2017
| +--rw (group-policy-vlan)?
| | +--:(qinq-range)
| | | +--rw qinq-vlan* [pe-id]
| | | +--rw pe-id uint16
| | | +--rw vlan-bitmap? string
| | +--:(dot1q-range)
| | +--rw vlan-bitmap? string
| +--rw trunk-bandwidth* [bandwidth]
| | +--rw bandwidth uint32
| | +--rw vlan-bitmap? string
| +--rw dot1q-bandwidth* [bandwidth]
| | +--rw bandwidth uint32
| | +--rw vlan-bitmap? string
| +--rw dot1q-channel-bandwidth* [channel-name bandwidth]
| +--rw channel-name string
| +--rw bandwidth uint32
| +--rw vlan-bitmap? string
+--rw mld-snooping
+--rw global
| +--rw enable? boolean {global-admin-enable}?
| +--rw max-entry? uint32
| +--rw bandwidth? uint32
| +--rw ssm-mapping-policys
| | +--rw ssm-mapping-policy* [name]
| | +--rw name string
| | +--rw ssm-map* [group-address group-mask-length source-address]
| | +--rw group-address inet:ipv6-address
| | +--rw group-mask-length uint8
| | +--rw source-address inet:ipv6-address
| +--rw unspecified-channel-deny? boolean
| +--rw global-cac-configs
| | +--rw global-cac-config* [channel-name channel-mode]
| | +--rw channel-name string
| | +--rw channel-mode channel-mode
| | +--rw channel-policys
| | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length]
| | +--rw group-address inet:ipv6-address
| | +--rw group-mask-length uint8
| | +--rw source-address inet:ipv6-address
| | +--rw source-mask-length uint8
| | +--rw bandwidth-each-entry? uint32
| +--rw send-query-source? inet:ipv6-address
+--rw l2vpn-multicast-instances
+--rw l2vpn-multicast-instance* [name type]
+--rw name string
+--rw type identityref
+--rw enable? boolean
+--rw version? uint8
+--rw snooping-mode? snooping-mode
+--rw ssm-policy? string
Wang & Liu, etc Expires September 13, 2017 [Page 7]
Internet-Draft VPLS Multicast Yang Model March 2017
+--rw group-policy? string
+--rw group-policy-version? uint8
+--rw ip-policy? string
+--rw query-ip-policy? string
+--rw last-member-query-interval? uint8
+--rw query-interval? uint16
+--rw query-max-response-time? uint8
+--rw router-aging-time? uint16
+--rw prompt-leave? boolean
+--rw router-learning? boolean
+--rw require-router-alert? boolean
+--rw send-router-alert? boolean
+--rw ssm-mapping? boolean
+--rw ssm-mapping-policy? string
+--rw robustness-variable? uint8
+--rw source-life-time? uint32
+--rw unspecified-channel-deny? boolean
+--rw max-entry? uint32
+--rw max-entry-except-policy? string
+--rw bandwidth-lose-mode? boolean
+--rw proxy-enable? boolean
+--rw proxy-router-protocol-pass? boolean
+--rw query-enable? boolean
+--rw querier-election? boolean
+--rw report-suppress? boolean
+--rw ssm-map* [group-address group-mask-length source-address]
| +--rw group-address inet:ipv6-address
| +--rw group-mask-length uint8
| +--rw source-address inet:ipv6-address
+--rw static-pw-router* [peer-ip pw-id]
| +--rw peer-ip inet:ip-address
| +--rw pw-id uint32
+--rw static-ac-router-port* [name pe-id ce-id]
| +--rw name if:interface-ref
| +--rw pe-id uint16
| +--rw ce-id uint16
+--rw static-pw-group* [peer-ip pw-id]
| +--rw peer-ip inet:ip-address
| +--rw pw-id uint32
| +--rw static-group-sources
| +--rw static-group-source* [group-address source-address]
| +--rw group-address inet:ipv6-address
| +--rw source-address inet:ipv6-address
+--rw static-ac-static-group* [name pe-id ce-id]
| +--rw name if:interface-ref
| +--rw pe-id uint16
| +--rw ce-id uint16
| +--rw static-group-sources
| +--rw static-group-source* [group-address source-address]
| +--rw group-address inet:ipv6-address
Wang & Liu, etc Expires September 13, 2017 [Page 8]
Internet-Draft VPLS Multicast Yang Model March 2017
| +--rw source-address inet:ipv6-address
+--rw cac-configs
| +--rw cac-config* [channel-name channel-mode]
| +--rw channel-name string
| +--rw channel-mode channel-mode
| +--rw channel-policys
| +--rw channel-policy* [group-address group-mask-length source-address source-mask-length]
| +--rw group-address inet:ipv6-address
| +--rw group-mask-length uint8
| +--rw source-address inet:ipv6-address
| +--rw source-mask-length uint8
| +--rw bandwidth-each-entry? uint32
+--rw interfaces
+--rw interface* [interface]
+--rw interface if:interface-ref
+--rw bandwidth-lose-mode? boolean
+--rw max-entry? uint32
+--rw group-policy? string
+--rw group-policy-version? uint8
+--rw (group-policy-vlan)?
| +--:(qinq-range)
| | +--rw qinq-vlan* [pe-id]
| | +--rw pe-id uint16
| | +--rw vlan-bitmap? string
| +--:(dot1q-range)
| +--rw vlan-bitmap? string
+--rw trunk-bandwidth* [bandwidth]
| +--rw bandwidth uint32
| +--rw vlan-bitmap? string
+--rw dot1q-bandwidth* [bandwidth]
| +--rw bandwidth uint32
| +--rw vlan-bitmap? string
+--rw dot1q-channel-bandwidth* [channel-name bandwidth]
+--rw channel-name string
+--rw bandwidth uint32
+--rw vlan-bitmap? string
3.2. VPLS Multicast Operational State
The IGMP or MLD snooping in VPLS module contains operational state
information also in a two-level hierarchy as mentioned earlier.
Global level: IGMP or MLD snooping operational state attributes
for the entire system.
L2vpn instance level: IGMP or MLD snooping operational state
attributes specific to the given l2vpn instance.
augment /l2vpn:l2vpn-state:
Wang & Liu, etc Expires September 13, 2017 [Page 9]
Internet-Draft VPLS Multicast Yang Model March 2017
+--ro igmp-snooping
| +--ro global
| | +--ro enable? boolean {global-admin-enable}?
| | +--ro max-entry? uint32
| | +--ro bandwidth? uint32
| | +--ro ssm-mapping-policys
| | | +--ro ssm-mapping-policy* [name]
| | | +--ro name string
| | | +--ro ssm-map* [group-address group-mask-length source-address]
| | | +--ro group-address inet:ipv4-address
| | | +--ro group-mask-length uint8
| | | +--ro source-address inet:ipv4-address
| | +--ro unspecified-channel-deny? boolean
| | +--ro global-cac-configs
| | | +--ro global-cac-config* [channel-name channel-mode]
| | | +--ro channel-name string
| | | +--ro channel-mode channel-mode
| | | +--ro max-entry? uint32
| | | +--ro channel-policys
| | | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length]
| | | +--ro group-address inet:ipv4-address
| | | +--ro group-mask-length uint8
| | | +--ro source-address inet:ipv4-address
| | | +--ro source-mask-length uint8
| | | +--ro bandwidth-each-entry? uint32
| | +--ro dynamic-entry? uint32
| | +--ro dynamic-bandwidth? uint32
| | +--ro channel-cac* [channel-name channel-mode]
| | | +--ro channel-name string
| | | +--ro channel-mode channel-mode
| | | +--ro dynamic-entry-count? uint32
| | | +--ro dynamic-bandwidth? uint32
| | +--ro send-query-source? inet:ipv4-address
| +--ro l2vpn-multicast-instances
| +--ro l2vpn-multicast-instance* [name type]
| +--ro name string
| +--ro type identityref
| +--ro enable? boolean
| +--ro version? uint8
| +--ro snooping-mode? snooping-mode
| +--ro ssm-policy? string
| +--ro group-policy? string
| +--ro group-policy-version? uint8
| +--ro ip-policy? string
| +--ro query-ip-policy? string
| +--ro last-member-query-interval? uint8
| +--ro query-interval? uint16
| +--ro query-max-response-time? uint8
| +--ro router-aging-time? uint16
| +--ro prompt-leave? boolean
Wang & Liu, etc Expires September 13, 2017 [Page 10]
Internet-Draft VPLS Multicast Yang Model March 2017
| +--ro router-learning? boolean
| +--ro require-router-alert? boolean
| +--ro send-router-alert? boolean
| +--ro ssm-mapping? boolean
| +--ro ssm-mapping-policy? string
| +--ro robustness-variable? uint8
| +--ro source-life-time? uint32
| +--ro unspecified-channel-deny? boolean
| +--ro max-entry? uint32
| +--ro max-entry-except-policy? string
| +--ro bandwidth-lose-mode? boolean
| +--ro proxy-enable? boolean
| +--ro proxy-router-protocol-pass? boolean
| +--ro query-enable? boolean
| +--ro querier-election? boolean
| +--ro report-suppress? boolean
| +--ro querier-state
| | +--ro querierState? boolean
| | +--ro querierAddr? inet:ip-address
| +--ro statistics
| | +--ro received
| | | +--ro v1-report? yang:counter64
| | | +--ro v2-report? yang:counter64
| | | +--ro v3-report? yang:counter64
| | | +--ro v1-query? yang:counter64
| | | +--ro v2-query? yang:counter64
| | | +--ro v3-query? yang:counter64
| | | +--ro leave? yang:counter64
| | | +--ro hello? yang:counter64
| | | +--ro zero-source-query? yang:counter64
| | | +--ro no-zero-source-query? yang:counter64
| | +--ro sent
| | +--ro general-query? yang:counter64
| | +--ro source-group-specific-query? yang:counter64
| | +--ro group--specific-query? yang:counter64
| +--ro ssm-map* [group-address group-mask-length source-address]
| | +--ro group-address inet:ipv4-address
| | +--ro group-mask-length uint8
| | +--ro source-address inet:ipv4-address
| +--ro static-pw-router-port* [peer-ip pw-id]
| | +--ro peer-ip inet:ip-address
| | +--ro pw-id uint32
| +--ro static-ac-router-port* [name pe-id ce-id]
| | +--ro name if:interface-ref
| | +--ro pe-id uint16
| | +--ro ce-id uint16
| +--ro static-pw-group* [peer-ip pw-id]
| | +--ro peer-ip inet:ip-address
| | +--ro pw-id uint32
| | +--ro static-group-sources
Wang & Liu, etc Expires September 13, 2017 [Page 11]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--ro static-group-source* [group-address source-address]
| | +--ro group-address inet:ipv4-address
| | +--ro source-address inet:ipv4-address
| +--ro static-ac-group* [name pe-id ce-id]
| | +--ro name if:interface-ref
| | +--ro pe-id uint16
| | +--ro ce-id uint16
| | +--ro static-group-sources
| | +--ro static-group-source* [group-address source-address]
| | +--ro group-address inet:ipv4-address
| | +--ro source-address inet:ipv4-address
| +--ro cac-configs
| | +--ro cac-config* [channel-name channel-mode]
| | +--ro channel-name string
| | +--ro channel-mode channel-mode
| | +--ro max-entry? uint32
| | +--ro channel-policys
| | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length]
| | +--ro group-address inet:ipv4-address
| | +--ro group-mask-length uint8
| | +--ro source-address inet:ipv4-address
| | +--ro source-mask-length uint8
| | +--ro bandwidth-each-entry? uint32
| +--ro interfaces
| | +--ro interface* [interface]
| | +--ro interface if:interface-ref
| | +--ro bandwidth-lose-mode? boolean
| | +--ro max-entry? uint32
| | +--ro group-policy? string
| | +--ro group-policy-version? uint8
| | +--ro (group-policy-vlan)?
| | | +--:(qinq-range)
| | | | +--ro qinq-vlan* [pe-id]
| | | | +--ro pe-id uint16
| | | | +--ro vlan-bitmap? string
| | | +--:(dot1q-range)
| | | +--ro vlan-bitmap? string
| | +--ro trunk-bandwidth* [bandwidth]
| | | +--ro bandwidth uint32
| | | +--ro vlan-bitmap? string
| | +--ro dot1q-bandwidth* [bandwidth]
| | | +--ro bandwidth uint32
| | | +--ro vlan-bitmap? string
| | +--ro dot1q-channel-bandwidth* [channel-name bandwidth]
| | | +--ro channel-name string
| | | +--ro bandwidth uint32
| | | +--ro vlan-bitmap? string
| | +--ro dynamic-entry? uint32
| | +--ro dynamic-trunk-bandwidth* [vlan-id]
| | | +--ro vlan-id uint16
Wang & Liu, etc Expires September 13, 2017 [Page 12]
Internet-Draft VPLS Multicast Yang Model March 2017
| | | +--ro bandwidth? uint32
| | +--ro dynamic-dot1q-bandwidth* [vlan-id]
| | | +--ro vlan-id uint16
| | | +--ro bandwidth? uint32
| | +--ro dynamic-dot1q-channel-bandwidth* [channel-name]
| | +--ro channel-name string
| | +--ro vlan-bandwidth* [vlan-id]
| | +--ro vlan-id uint16
| | +--ro bandwidth? uint32
| +--ro (dynamic-router-port)?
| | +--:(pw)
| | | +--ro dynamic-pw-router-port* [peer-ip pw-id]
| | | +--ro peer-ip inet:ip-address
| | | +--ro pw-id uint32
| | | +--ro expire? uint32
| | | +--ro up-time? uint32
| | | +--ro flag? flagType
| | +--:(ac)
| | +--ro dynamic-ac-router-port* [name pe-id ce-id]
| | +--ro name if:interface-ref
| | +--ro pe-id uint16
| | +--ro ce-id uint16
| | +--ro expire? uint32
| | +--ro up-time? uint32
| | +--ro flag? flagType
| +--ro (dynamic-group)?
| +--:(pw-dynamic-group)
| | +--ro dynamic-pw-group* [peer-ip pw-id]
| | +--ro peer-ip inet:ip-address
| | +--ro pw-id uint32
| | +--ro groups
| | +--ro group* [address]
| | +--ro address inet:ipv4-address
| | +--ro filter-mode? filter-mode
| | +--ro up-time? uint32
| | +--ro group-timer? exitOrNot
| | +--ro expire? uint32
| | +--ro retransmission-count? uint32
| | +--ro last-member-query? boolean
| | +--ro compatibility? compatibility
| | +--ro v1-host-timer? exitOrNot
| | +--ro v2-host-timer? exitOrNot
| | +--ro last-source-member-query-timer? exitOrNot
| | +--ro last-source-member-query? boolean
| | +--ro sources
| | +--ro source* [address]
| | +--ro address inet:ipv4-address
| | +--ro expire? uint32
| | +--ro up-time? uint32
| | +--ro source-timer? exitOrNot
Wang & Liu, etc Expires September 13, 2017 [Page 13]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--ro retransmission-count? uint32
| | +--ro last-source-member-query? boolean
| +--:(ac-dynamic-group)
| +--ro dynamic-ac-dynamic-group* [name pe-id ce-id]
| +--ro name if:interface-ref
| +--ro pe-id uint16
| +--ro ce-id uint16
| +--ro groups
| +--ro group* [address]
| +--ro address inet:ipv4-address
| +--ro filter-mode? filter-mode
| +--ro up-time? uint32
| +--ro group-timer? exitOrNot
| +--ro expire? uint32
| +--ro retransmission-count? uint32
| +--ro last-member-query? boolean
| +--ro compatibility? compatibility
| +--ro v1-host-timer? exitOrNot
| +--ro v2-host-timer? exitOrNot
| +--ro last-source-member-query-timer? exitOrNot
| +--ro last-source-member-query? boolean
| +--ro sources
| +--ro source* [address]
| +--ro address inet:ipv4-address
| +--ro expire? uint32
| +--ro up-time? uint32
| +--ro source-timer? exitOrNot
| +--ro retransmission-count? uint32
| +--ro last-source-member-query? boolean
+--ro mld-snooping
+--ro global
| +--ro enable? boolean {global-admin-enable}?
| +--ro max-entry? uint32
| +--ro bandwidth? uint32
| +--ro ssm-mapping-policys
| | +--ro ssm-mapping-policy* [name]
| | +--ro name string
| | +--ro ssm-map* [group-address group-mask-length source-address]
| | +--ro group-address inet:ipv6-address
| | +--ro group-mask-length uint8
| | +--ro source-address inet:ipv6-address
| +--ro unspecified-channel-deny? boolean
| +--ro global-cac-configs
| | +--ro global-cac-config* [channel-name channel-mode]
| | +--ro channel-name string
| | +--ro channel-mode channel-mode
| | +--ro channel-policys
| | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length]
| | +--ro group-address inet:ipv6-address
| | +--ro group-mask-length uint8
Wang & Liu, etc Expires September 13, 2017 [Page 14]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--ro source-address inet:ipv6-address
| | +--ro source-mask-length uint8
| | +--ro bandwidth-each-entry? uint32
| +--ro dynamic-entry? uint32
| +--ro dynamic-bandwidth? uint32
| +--ro channel-cac* [channel-name channel-mode]
| | +--ro channel-name string
| | +--ro channel-mode channel-mode
| | +--ro dynamic-entry-count? uint32
| | +--ro dynamic-bandwidth? uint32
| +--ro entry-count? uint32
| +--ro send-query-source? inet:ipv6-address
+--ro l2vpn-multicast-instances
+--ro l2vpn-multicast-instance* [name type]
+--ro name string
+--ro type identityref
+--ro enable? boolean
+--ro version? uint8
+--ro snooping-mode? snooping-mode
+--ro ssm-policy? string
+--ro group-policy? string
+--ro group-policy-version? uint8
+--ro ip-policy? string
+--ro query-ip-policy? string
+--ro last-member-query-interval? uint8
+--ro query-interval? uint16
+--ro query-max-response-time? uint8
+--ro router-aging-time? uint16
+--ro prompt-leave? boolean
+--ro router-learning? boolean
+--ro require-router-alert? boolean
+--ro send-router-alert? boolean
+--ro ssm-mapping? boolean
+--ro ssm-mapping-policy? string
+--ro robustness-variable? uint8
+--ro source-life-time? uint32
+--ro unspecified-channel-deny? boolean
+--ro max-entry? uint32
+--ro max-entry-except-policy? string
+--ro bandwidth-lose-mode? boolean
+--ro proxy-enable? boolean
+--ro proxy-router-protocol-pass? boolean
+--ro query-enable? boolean
+--ro querier-election? boolean
+--ro report-suppress? boolean
+--ro querier-state
| +--ro querierState? boolean
| +--ro querierAddr? inet:ipv6-address
+--ro statistics
| +--ro received
Wang & Liu, etc Expires September 13, 2017 [Page 15]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--ro v1-report? yang:counter64
| | +--ro v2-report? yang:counter64
| | +--ro v3-report? yang:counter64
| | +--ro v1-query? yang:counter64
| | +--ro v2-query? yang:counter64
| | +--ro v3-query? yang:counter64
| | +--ro leave? yang:counter64
| | +--ro hello? yang:counter64
| | +--ro zero-source-query? yang:counter64
| | +--ro no-zero-source-query? yang:counter64
| +--ro sent
| +--ro general-query? yang:counter64
| +--ro source-group-specific-query? yang:counter64
| +--ro group--specific-query? yang:counter64
+--ro ssm-map* [group-address group-mask-length source-address]
| +--ro group-address inet:ipv6-address
| +--ro group-mask-length uint8
| +--ro source-address inet:ipv6-address
+--ro static-pw-router-port* [peer-ip pw-id]
| +--ro peer-ip inet:ip-address
| +--ro pw-id uint32
+--ro static-ac-router-port* [name pe-id ce-id]
| +--ro name if:interface-ref
| +--ro pe-id uint16
| +--ro ce-id uint16
+--ro static-pw-group* [peer-ip pw-id]
| +--ro peer-ip inet:ip-address
| +--ro pw-id uint32
| +--ro static-group-sources
| +--ro static-group-source* [group-address source-address]
| +--ro group-address inet:ipv6-address
| +--ro source-address inet:ipv6-address
+--ro static-ac-group* [name pe-id ce-id]
| +--ro name if:interface-ref
| +--ro pe-id uint16
| +--ro ce-id uint16
| +--ro static-group-sources
| +--ro static-group-source* [group-address source-address]
| +--ro group-address inet:ipv6-address
| +--ro source-address inet:ipv6-address
+--ro cac-configs
| +--ro cac-config* [channel-name channel-mode]
| +--ro channel-name string
| +--ro channel-mode channel-mode
| +--ro channel-policys
| +--ro channel-policy* [group-address group-mask-length source-address source-mask-length]
| +--ro group-address inet:ipv6-address
| +--ro group-mask-length uint8
| +--ro source-address inet:ipv6-address
| +--ro source-mask-length uint8
Wang & Liu, etc Expires September 13, 2017 [Page 16]
Internet-Draft VPLS Multicast Yang Model March 2017
| +--ro bandwidth-each-entry? uint32
+--ro dynamic-entry? uint32
+--ro dynamic-bandwidth? uint32
+--ro channel-cac* [channel-name channel-mode]
| +--ro channel-name string
| +--ro channel-mode channel-mode
| +--ro dynamic-entry-count? uint32
| +--ro dynamic-bandwidth? uint32
+--ro interfaces
| +--ro interface* [interface]
| +--ro interface if:interface-ref
| +--ro bandwidth-lose-mode? boolean
| +--ro max-entry? uint32
| +--ro group-policy? string
| +--ro group-policy-version? uint8
| +--ro (group-policy-vlan)?
| | +--:(qinq-range)
| | | +--ro qinq-vlan* [pe-id]
| | | +--ro pe-id uint16
| | | +--ro vlan-bitmap? string
| | +--:(dot1q-range)
| | +--ro vlan-bitmap? string
| +--ro trunk-bandwidth* [bandwidth]
| | +--ro bandwidth uint32
| | +--ro vlan-bitmap? string
| +--ro dot1q-bandwidth* [bandwidth]
| | +--ro bandwidth uint32
| | +--ro vlan-bitmap? string
| +--ro dot1q-channel-bandwidth* [channel-name bandwidth]
| | +--ro channel-name string
| | +--ro bandwidth uint32
| | +--ro vlan-bitmap? string
| +--ro dynamic-entry? uint32
| +--ro dynamic-trunk-bandwidth* [vlan-id]
| | +--ro vlan-id uint16
| | +--ro bandwidth? uint32
| +--ro dynamic-dot1q-bandwidth* [vlan-id]
| | +--ro vlan-id uint16
| | +--ro bandwidth? uint32
| +--ro dynamic-dot1q-channel-bandwidth* [channel-name]
| +--ro channel-name string
| +--ro vlan-bandwidth* [vlan-id]
| +--ro vlan-id uint16
| +--ro bandwidth? uint32
+--ro (dynamic-router-port)?
| +--:(pw)
| | +--ro dynamic-pw-router-port* [peer-ip pw-id]
| | +--ro peer-ip inet:ip-address
| | +--ro pw-id uint32
| | +--ro expire? uint32
Wang & Liu, etc Expires September 13, 2017 [Page 17]
Internet-Draft VPLS Multicast Yang Model March 2017
| | +--ro up-time? uint32
| | +--ro flag? flagType
| +--:(ac)
| +--ro dynamic-ac-router-port* [name pe-id ce-id]
| +--ro name if:interface-ref
| +--ro pe-id uint16
| +--ro ce-id uint16
| +--ro expire? uint32
| +--ro up-time? uint32
| +--ro flag? flagType
+--ro (dynamic-group)?
+--:(pw-dynamic-group)
| +--ro dynamic-pw-group* [peer-ip pw-id]
| +--ro peer-ip inet:ip-address
| +--ro pw-id uint32
| +--ro groups
| +--ro group* [address]
| +--ro address inet:ipv6-address
| +--ro filter-mode? filter-mode
| +--ro up-time? uint32
| +--ro group-timer? exitOrNot
| +--ro expire? uint32
| +--ro retransmission-count? uint32
| +--ro last-member-query? boolean
| +--ro compatibility? compatibility
| +--ro v1-host-timer? exitOrNot
| +--ro v2-host-timer? exitOrNot
| +--ro last-source-member-query-timer? exitOrNot
| +--ro last-source-member-query? boolean
| +--ro sources
| +--ro source* [address]
| +--ro address inet:ipv6
| +--ro expire? uint32
| +--ro up-time? uint32
| +--ro source-timer? exitOrNot
| +--ro retransmission-count? uint32
| +--ro last-source-member-query? boolean
+--:(ac-dynamic-group)
+--ro dynamic-ac-dynamic-group* [name pe-id ce-id]
+--ro name if:interface-ref
+--ro pe-id uint16
+--ro ce-id uint16
+--ro groups
+--ro group* [address]
+--ro address inet:ipv6
+--ro filter-mode? filter-mode
+--ro up-time? uint32
+--ro group-timer? exitOrNot
+--ro expire? uint32
+--ro retransmission-count? uint32
Wang & Liu, etc Expires September 13, 2017 [Page 18]
Internet-Draft VPLS Multicast Yang Model March 2017
+--ro last-member-query? boolean
+--ro compatibility? compatibility
+--ro v1-host-timer? exitOrNot
+--ro v2-host-timer? exitOrNot
+--ro last-source-member-query-timer? exitOrNot
+--ro last-source-member-query? boolean
+--ro sources
+--ro source* [address]
+--ro address inet:ipv6-address
+--ro expire? uint32
+--ro up-time? uint32
+--ro source-timer? exitOrNot
+--ro retransmission-count? uint32
+--ro last-source-member-query? boolean
4. VPLS Multicast YANG Modules
<CODE BEGINS> file "ietf-l2vpn-igmp-mld-snooping@2017-03-13.yang"
module ietf-l2vpn-igmp-mld-snooping {
namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-igmp-mld-snooping";
// replace with IANA namespace when assigned
prefix l2vpn-igmp-mld-snooping;
import ietf-inet-types {
prefix "inet";
}
import ietf-yang-types {
prefix "yang";
}
import ietf-interfaces {
prefix "if";
}
import ietf-l2vpn {
prefix "l2vpn";
}
organization
"IETF BESS Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/bess/>
WG List: <mailto:bess@ietf.org>
Editors: ";
Wang & Liu, etc Expires September 13, 2017 [Page 19]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"The module defines a collection of YANG definitions common for
IGMP and MLD snooping in Virtual Private LAN Service.";
revision 2017-03-13 {
description
"Initial revision.";
reference
"RFC XXX: A YANG Data Model for VPLS Multicast";
}
/*
* Features
*/
feature global-admin-enable {
description
"Support global configuration to enable or disable protocol.";
}
/*
* Typedefs
*/
typedef ssm-map-ipv4-addr-type {
type union {
type enumeration {
enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type for SSM map.";
} // ssm-map-ipv4-addr-type
typedef ssm-map-ipv6-addr-type {
type union {
type enumeration {
enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type for SSM map.";
} // ssm-map-ipv6-addr-type
Wang & Liu, etc Expires September 13, 2017 [Page 20]
Internet-Draft VPLS Multicast Yang Model March 2017
typedef source-ipv4-addr-type {
type union {
type enumeration {
enum '*' {
description
"Any source address.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type.";
} // source-ipv4-addr-type
typedef source-ipv6-addr-type {
type union {
type enumeration {
enum '*' {
description
"Any source address.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type.";
} // source-ipv6-addr-type
typedef channel-mode {
type enumeration {
enum "asm" {
value 0;
description
"Channel-Name-Mode ASM.";
}
enum "ssm" {
value 1;
description
"Channel-Name-Mode SSM.";
}
}
description
"Channel Mode";
}
typedef flagType {
type enumeration {
enum "STATIC" {
value 0;
Wang & Liu, etc Expires September 13, 2017 [Page 21]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"Static.";
}
enum "DYNAMIC" {
value 1;
description
"Dynamic.";
}
enum "MAPPING" {
value 2;
description
"SSM Mapping.";
}
enum "STATIC_DYNAMIC" {
value 3;
description
"Both static and dynamic.";
}
enum "STATIC_MAPPING" {
value 4;
description
"Both statically and SSM mapping joined groups exist.";
}
enum "DYNAMIC_MAPPING" {
value 5;
description
"Both dynamically and SSM mapping joined groups exist.";
}
enum "STATIC_DYNAMIC_MAPPING" {
value 6;
description
"Both statically dynamically and SSM mapping joined groups exist.";
}
}
description
"Flag Type";
}
typedef snooping-mode {
type enumeration {
enum "asm-ssm" {
value 0;
description
"A device learns multicast entries with group
addresses in the ASM and SSM address ranges.";
}
enum "asm-only" {
value 1;
description
"A device only learns multicast entries with group
Wang & Liu, etc Expires September 13, 2017 [Page 22]
Internet-Draft VPLS Multicast Yang Model March 2017
addresses in the ASM address range.";
}
enum "ssm-only" {
value 2;
description
"A device only learns multicast entries with group
addresses in the SSM address range.";
}
}
description
"Snooping mode";
} //snooping-mode
typedef VLAN_BITMAP {
type string {
length "2049";
}
description
"vlan bitmap";
}
typedef exitOrNot {
type enumeration {
enum "Not-exist" {
value 0;
description
"Not exist.";
}
enum "Exist" {
value 1;
description
"Exist.";
}
}
description
"Exist or Not-exist";
}
typedef filter-mode {
type enumeration {
enum "include" {
description
"";
}
enum "exclude" {
description
"";
}
}
description
Wang & Liu, etc Expires September 13, 2017 [Page 23]
Internet-Draft VPLS Multicast Yang Model March 2017
"group filter mode";
}
typedef compatibility-mode {
type enumeration {
enum "V1" {
value 0;
description
"L2VPN service multicast version 1.";
}
enum "V2" {
value 1;
description
"L2VPN service multicast version 2.";
}
enum "V3" {
value 2;
description
"L2VPN service multicast version 3.";
}
}
description
"Group Compatible Mode";
}
/*
* Identities
*/
/*
* Groupings
*/
grouping group-states-igmp-mld-snooping {
description
"Per port state attributes for both IGMP and MLD snooping
groups.";
leaf filter-mode {
type filter-mode;
description "Group filter mode.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a multicast group was discovered, in seconds.";
}
leaf group-timer {
type exitOrNot;
Wang & Liu, etc Expires September 13, 2017 [Page 24]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"Group timer.";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a group will be deleted from the
group record table, in seconds.";
}
leaf retransmission-count {
type uint32;
description
"Number of times that the last-member
query message is transmitted.";
}
leaf last-member-query {
type boolean;
default "false";
description
"Whether group-specific Query messages are being sent.";
}
leaf compatibility {
type compatibility-mode;
description
"Group compatible mode.";
}
leaf v1-host-timer {
type exitOrNot;
description
"Timeout period of a L2VPN service multicastv1 host.";
}
leaf v2-host-timer {
type exitOrNot;
description
"Timeout period of a L2VPN service multicastv2 host.";
}
leaf last-source-member-query-timer {
type exitOrNot;
description
"Expire time of a last-member query message.";
}
leaf last-source-member-query {
type boolean;
default "false";
description
"Whether source-specific Query messages are being sent.";
}
} // group-states-igmp-mld-snooping
Wang & Liu, etc Expires September 13, 2017 [Page 25]
Internet-Draft VPLS Multicast Yang Model March 2017
grouping source-states-igmp-mld-snooping {
description
"Per port state attributes for both IGMP and MLD snooping
sources.";
leaf expire {
type uint32;
units seconds;
description
"Time after which a source will be deleted
from the source record table, in seconds.";
}
leaf up-time {
type uint32;
units seconds;
description "Time since a multicast source was discovered.";
}
leaf source-timer {
type exitOrNot;
description
"source timer.";
}
leaf retransmission-count {
type uint32;
description
"Number of times that the last-member
query message is transmitted.";
}
leaf last-source-member-query {
type boolean;
default "false";
description
"Whether source-specific Query messages are being sent.";
}
} // source-states-igmp-mld-snooping
grouping ipv4-static-group-source {
description "static group source address.";
container static-group-sources {
description
"List of static groups. ";
list static-group-source {
key "group-address source-address";
description
"Static group.";
leaf group-address {
type inet:ipv4-address;
description
Wang & Liu, etc Expires September 13, 2017 [Page 26]
Internet-Draft VPLS Multicast Yang Model March 2017
"Address of a multicast group.";
}
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address.";
}
}
}
} //ipv4-static-group-source
grouping ipv6-static-group-source {
description "static group source address.";
container static-group-sources {
description
"List of static groups. ";
list static-group-source {
key "group-address source-address";
description
"Static group.";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
}
}
} //ipv6-static-group-source
grouping ipv4-ssm-mapping-attributes {
description "ssm mapping attribute.";
leaf group-address {
type inet:ipv4-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "4..32";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv4-address;
Wang & Liu, etc Expires September 13, 2017 [Page 27]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"Multicast source address.";
}
} //ipv4-ssm-mapping-attributes
grouping ipv6-ssm-mapping-attributes {
description "ssm mapping attribute.";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "8..128";
}
description
"IPv6 address mask length.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
} //ipv6-ssm-mapping-attributes
grouping cac-ipv4-policy-attributes {
description "cac policy config attributes.";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated.";
}
container channel-policys {
description
"L2-multicast CAC Global Channel Policy Config List. ";
list channel-policy {
Wang & Liu, etc Expires September 13, 2017 [Page 28]
Internet-Draft VPLS Multicast Yang Model March 2017
key
"group-address group-mask-length
source-address source-mask-length";
max-elements "16";
description
"L2-multicast CAC Global Channel Policy Config. ";
leaf group-address {
type inet:ipv4-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "4..32";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address.";
}
leaf source-mask-length {
type uint8 {
range "0..32";
}
description
"Specify the source mask length.";
}
leaf bandwidth-each-entry {
type uint32 {
range "0..131072";
}
default "0";
description
"Specify the bandwidth of each group (in Kbits/sec).";
}
} //channel-policy
} //channel-policys
} //cac-ipv4-policy-attributes
grouping cac-ipv6-policy-attributes {
description "cac policy config attributes.";
leaf channel-name {
type string {
length "1..31";
}
description
Wang & Liu, etc Expires September 13, 2017 [Page 29]
Internet-Draft VPLS Multicast Yang Model March 2017
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
container channel-policys {
description
"L2-multicast CAC Global Channel Policy Config List. ";
list channel-policy {
key
"group-address group-mask-length
source-address source-mask-length";
max-elements "16";
description
"L2-multicast CAC Global Channel Policy Config. ";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "8..128";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
leaf source-mask-length {
type uint8 {
range "0..128";
}
description
"Specify the source mask length.";
}
leaf bandwidth-each-entry {
type uint32 {
range "0..131072";
}
default "0";
description
"Specify the bandwidth of each group (in Kbits/sec).";
}
} //channel-policy
Wang & Liu, etc Expires September 13, 2017 [Page 30]
Internet-Draft VPLS Multicast Yang Model March 2017
} //channel-policys
} //cac-ipv6-policy-attributes
grouping cac-dynamic-attributes {
description "Global IGMP or MLD snooping state.";
leaf dynamic-entry {
type uint32;
description
"Maximum number of entries generAted";
}
leaf dynamic-bandwidth {
type uint32;
description
"Maximum bandwidth of entries generated";
}
list channel-cac {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel entry count. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
leaf dynamic-entry-count {
type uint32;
description
"Maximum number of entries generated.";
}
leaf dynamic-bandwidth {
type uint32;
description
"Maximum bandwidth of entries generated";
}
} //global-cac-count
} // cac-dynamic-attributes
grouping global-ipv4-config-attributes {
Wang & Liu, etc Expires September 13, 2017 [Page 31]
Internet-Draft VPLS Multicast Yang Model March 2017
description "Global IGMP or MLD snooping configuration.";
leaf enable {
if-feature global-admin-enable;
type boolean;
description
"true to enable IGMP or MLD snooping;
false to disable IGMP or MLD snooping.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf bandwidth {
type uint32;
description
"Maximum bandwidth of entries that can be generated";
}
container ssm-mapping-policys {
description
"L2-multicast SSM mapping policy List. ";
list ssm-mapping-policy {
key "name";
description "ssm mapping policy. ";
leaf name {
type string {
length "1..31";
}
description "name of ssm mapping policy. ";
}
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
} //ssm-mapping-policy
} //ssm-mapping-policys
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any
channel.By default, no deny channel is configured.";
}
Wang & Liu, etc Expires September 13, 2017 [Page 32]
Internet-Draft VPLS Multicast Yang Model March 2017
container global-cac-configs {
description
"L2-multicast CAC Global Channel Config List. ";
list global-cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel Config. ";
uses cac-ipv4-policy-attributes;
} //global-cac-config
}
} // global-ipv4-config-attributes
grouping global-ipv6-config-attributes {
description "Global IGMP or MLD snooping configuration.";
leaf enable {
if-feature global-admin-enable;
type boolean;
description
"true to enable IGMP or MLD snooping;
false to disable IGMP or MLD snooping.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf bandwidth {
type uint32;
description
"Maximum bandwidth of entries that can be generated";
}
container ssm-mapping-policys {
description
"L2-multicast SSM mapping policy List. ";
list ssm-mapping-policy {
key "name";
description "ssm mapping policy";
leaf name {
type string {
length "1..31";
}
description "name of ssm mapping policy. ";
}
Wang & Liu, etc Expires September 13, 2017 [Page 33]
Internet-Draft VPLS Multicast Yang Model March 2017
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
} //ssm-mapping-policy
} //ssm-mapping-policys
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any
channel.By default, no deny channel is configured.";
}
container global-cac-configs {
description
"L2-multicast CAC Global Channel Config List. ";
list global-cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel Config. ";
uses cac-ipv6-policy-attributes;
} //global-cac-config
}
} // global-ipv6-config-attributes
grouping proxy-config-attributes {
description "";
leaf proxy-enable {
type boolean;
default "false";
description
"Enable L2VPN service multicast snooping proxy.";
}
leaf proxy-router-protocol-pass {
type boolean;
default "false";
description
"L2VPN service multicast snooping proxy-enabled
device to transparently transmit
multicast Report messages.";
}
leaf query-enable {
type boolean;
Wang & Liu, etc Expires September 13, 2017 [Page 34]
Internet-Draft VPLS Multicast Yang Model March 2017
default "false";
description
"Enable L2VPN service multicast querier.";
}
leaf querier-election {
type boolean;
description
"Enable L2VPN service multicast querier election.";
}
leaf report-suppress {
type boolean;
default "false";
description
"Enable the function of suppressing L2VPN service
multicast Report messages.";
}
} //proxy-config-attributes
grouping l2vpn-config-attributes-igmp-mld-snooping {
description "igmp snooping configuration attributes";
leaf enable {
type boolean;
default "false";
description
"true to enable IGMP or MLD snooping in the L2VPN service
instance, false to disable IGMP or MLD snooping
in the L2VPN service instance";
}
leaf version {
type uint8 {
range "1..3";
}
description
"L2VPN service multicast version. IPv4: By default,
IGMPv2 is used; IPv6: By default, MLDv2 is used.";
}
leaf snooping-mode {
type snooping-mode;
description
"L2VPN service multicast group join mode.";
}
leaf ssm-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD SSM group range.";
Wang & Liu, etc Expires September 13, 2017 [Page 35]
Internet-Draft VPLS Multicast Yang Model March 2017
}
leaf group-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD membership.";
}
leaf group-policy-version {
type uint8 {
range "1..3";
}
description
"A group policy applies only to a specified
L2VPN service multicast version.";
}
leaf ip-policy {
type string;
description
"Name of the access policy used to filter IGMP or MLD ;
report source/destination address";
}
leaf query-ip-policy {
type string;
description
"Name of the access policy used to filter IGMP or MLD ;
query source address";
}
leaf last-member-query-interval {
type uint8 {
range "1..5";
}
description
"Interval at which a querier sends
last-member query messages.";
}
leaf query-interval {
type uint16 {
range "1..65535";
}
units seconds;
description
"Interval at which a router sends General Query messages.";
}
leaf query-max-response-time {
type uint8 {
range "1..25";
}
units seconds;
description
"Maximum response time for a L2VPN service
Wang & Liu, etc Expires September 13, 2017 [Page 36]
Internet-Draft VPLS Multicast Yang Model March 2017
multicast Query message.";
}
leaf router-aging-time {
type uint16{
range "1..1000";
}
units seconds;
description
"Aging time of dynamic router ports.";
}
leaf prompt-leave {
type boolean;
description
"Prompt-Leave allows an interface to immediately delete a
group record after receiving a Leave message for
this group, without sending a last-member query message.";
}
leaf router-learning {
type boolean;
default "true";
description
"Enable dynamic router port learning.";
}
leaf require-router-alert {
type boolean;
description
"Configure a device to permit only L2VPN service
multicast messages that contain the Router-Alert
option in the IP header.";
}
leaf send-router-alert {
type boolean;
description
"Configure a device to send L2VPN service
multicast messages that contain the Router-Alert
option in the IP header.";
}
leaf ssm-mapping {
type boolean;
default "false";
description
"Enable SSM mapping.";
}
leaf ssm-mapping-policy {
type string;
description
"Specifies the name of an SSM mapping policy.";
}
leaf robustness-variable {
type uint8 {
Wang & Liu, etc Expires September 13, 2017 [Page 37]
Internet-Draft VPLS Multicast Yang Model March 2017
range "2..7";
}
default 2;
description
"Number of times for retransmitting a
message to avoid packet loss. ";
}
leaf source-life-time {
type uint32{
range "60..1000";
}
units seconds;
description
"Aging time for entries triggered by multicast flows.";
}
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any channel.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf max-entry-except-policy {
type string;
description
"Name of the access policy used to prevent groups
from being counted against the multicast
group number limit";
}
leaf bandwidth-lose-mode {
type boolean;
default "false";
description
"Dynamic Eth-Trunk Bandwidth Limit Lose Mode.";
}
uses proxy-config-attributes;
} // l2vpn-config-attributes-igmp-mld-snooping
grouping vlan-set {
description "VLAN IDs attributes";
leaf vlan-bitmap {
Wang & Liu, etc Expires September 13, 2017 [Page 38]
Internet-Draft VPLS Multicast Yang Model March 2017
type string;
description
"List of VLAN IDs.";
}
} //vlan-set
grouping l2vpn-if-config-attributes-igmp-mld-snooping {
description "igmp or mld snooping configuration attributes";
leaf bandwidth-lose-mode {
type boolean;
default "false";
description
"Dynamic Eth-Trunk Bandwidth Limit Lose Mode.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf group-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD membership.";
}
leaf group-policy-version {
type uint8 {
range "1..3";
}
description
"A group policy applies only to a specified
L2VPN service multicast version.";
}
choice group-policy-vlan {
description "group policy vlan config";
case qinq-range {
list qinq-vlan {
key "pe-id";
description "qinq type interface config";
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
uses vlan-set;
} // qinq-vlan
Wang & Liu, etc Expires September 13, 2017 [Page 39]
Internet-Draft VPLS Multicast Yang Model March 2017
} //qinq-range
case dot1q-range {
description "dot1q type interface config";
uses vlan-set;
} //dot1q-range
} //group-policy-vlan
list trunk-bandwidth {
key "bandwidth";
description
"Dynamic Bandwidth Limit on
Eth-Trunk Sub-interface.";
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
list dot1q-bandwidth {
key "bandwidth";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
list dot1q-channel-bandwidth {
key "channel-name bandwidth";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
Wang & Liu, etc Expires September 13, 2017 [Page 40]
Internet-Draft VPLS Multicast Yang Model March 2017
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
} // l2vpn-if-config-attributes-igmp-mld-snooping
grouping l2vpn-if-dynamic-cac-state-igmp-mld-snooping {
description "igmp or mld snooping configuration attributes";
leaf dynamic-entry {
type uint32;
description
"Maximum number of entries generated";
}
list dynamic-trunk-bandwidth {
key "vlan-id";
description
"Dynamic Bandwidth used on Eth-Trunk Sub-interface.";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Bandwidth used.";
}
}
list dynamic-dot1q-bandwidth {
key "vlan-id";
description "Bandwidth used on Dot1q Sub-interface. ";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
Wang & Liu, etc Expires September 13, 2017 [Page 41]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"Bandwidth used.";
}
}
list dynamic-dot1q-channel-bandwidth {
key "channel-name";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
list vlan-bandwidth {
key "vlan-id";
description "Bandwidth used on Dot1q Sub-interface. ";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Bandwidth used.";
}
} //vlan-bandwidth
} //dot1q-channel-bandwidth
} // l2vpn-if-dynamic-cac-state-igmp-mld-snooping
grouping statistics-received {
description
"A grouping defining statistics attributes.";
leaf v1-report {
type yang:counter64;
description
"Number of received IGMPv1/MLDv1 Report messages.";
}
leaf v2-report {
type yang:counter64;
description
Wang & Liu, etc Expires September 13, 2017 [Page 42]
Internet-Draft VPLS Multicast Yang Model March 2017
"Number of received IGMPv2/MLDv2 Report messages.";
}
leaf v3-report {
type yang:counter64;
description
"Number of received IGMPv3 Report messages.";
}
leaf v1-query {
type yang:counter64;
description
"Number of received IGMPv1/MLDv1 query messages.";
}
leaf v2-query {
type yang:counter64;
description
"Number of received IGMPv2/MLDv2 query messages.";
}
leaf v3-query {
type yang:counter64;
description
"Number of received IGMPv3 Query messages.";
}
leaf leave {
type yang:counter64;
description
"Number of received IGMP/MLD Leave messages.";
}
leaf hello {
type yang:counter64;
description
"Number of Received PIM Hello messages.";
}
leaf zero-source-query {
type yang:counter64;
description
"Number of received query messages
in which the source addresss is zero.";
}
leaf no-zero-source-query {
type yang:counter64;
description
"Number of received query messages
in which the source addresss is not zero.";
}
} // statistics-received
grouping statistics-send {
description
"A grouping defining statistics attributes.";
Wang & Liu, etc Expires September 13, 2017 [Page 43]
Internet-Draft VPLS Multicast Yang Model March 2017
leaf general-query {
type yang:counter64;
description
"Number of sent General Query messages.";
}
leaf source-group-specific-query {
type yang:counter64;
description
"Number of sent source and group specific Query messages.";
}
leaf group--specific-query {
type yang:counter64;
description
"Number of sent group specific Query messages.";
}
} // statistics-send
/*
* Configuration data nodes
*/
augment "/l2vpn:l2vpn"
{
description
"IGMP and MLD snooping augmentation to
l2vpn instance configuration.";
container igmp-snooping {
description
"IGMP snooping configuration data.";
container global {
description
"Global attributes.";
uses global-ipv4-config-attributes;
leaf send-query-source {
type inet:ipv4-address;
default "192.168.0.1";
description
"Source IP address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast
configurations in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
Wang & Liu, etc Expires September 13, 2017 [Page 44]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
Wang & Liu, etc Expires September 13, 2017 [Page 45]
Internet-Draft VPLS Multicast Yang Model March 2017
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv4-static-group-source;
} // static-pw-group
list static-ac-static-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv4-static-group-source;
} //static-ac-static-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List.";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
Wang & Liu, etc Expires September 13, 2017 [Page 46]
Internet-Draft VPLS Multicast Yang Model March 2017
"L2-multicast CAC L2VPN service Channel Config.";
uses cac-ipv4-policy-attributes;
}
} //cac-configs
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
} // interface
} // interfaces
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // igmp-snooping
container mld-snooping {
description
"MLD snooping configuration data.";
container global {
description
"Global attributes.";
uses global-ipv6-config-attributes;
leaf send-query-source {
type inet:ipv6-address;
default "FE80::";
description
"Source IPv6 address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast configurations
in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
Wang & Liu, etc Expires September 13, 2017 [Page 47]
Internet-Draft VPLS Multicast Yang Model March 2017
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
Wang & Liu, etc Expires September 13, 2017 [Page 48]
Internet-Draft VPLS Multicast Yang Model March 2017
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv6-static-group-source;
} // static-pw-group
list static-ac-static-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv6-static-group-source;
} //static-ac-static-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
Wang & Liu, etc Expires September 13, 2017 [Page 49]
Internet-Draft VPLS Multicast Yang Model March 2017
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv6-policy-attributes;
}
} //cac-configs
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the global
interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
} // interface
} // interfaces
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // mld-snooping
} //l2vpn
/*
* Operational state data nodes
*/
augment "/l2vpn:l2vpn-state"
{
description
"IGMP and MLD snooping augmentation to
l2vpn instance configuration.";
container igmp-snooping {
description
"IGMP snooping state data.";
container global {
description
"Global attributes.";
uses global-ipv4-config-attributes;
uses cac-dynamic-attributes;
leaf send-query-source {
type inet:ipv4-address;
Wang & Liu, etc Expires September 13, 2017 [Page 50]
Internet-Draft VPLS Multicast Yang Model March 2017
default "192.168.0.1";
description
"Source IP address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast
configurations in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
container querier-state {
description
"L2VPN service multicast querier. ";
leaf querierState {
type boolean;
description
"L2VPN service multicast querier state.";
}
leaf querierAddr {
type inet:ip-address;
description
"L2VPN service multicast querier address.";
}
}
container statistics {
description
"Statistics information of a L2VPN service instance. ";
container received {
description "Statistics of received messages.";
uses statistics-received;
Wang & Liu, etc Expires September 13, 2017 [Page 51]
Internet-Draft VPLS Multicast Yang Model March 2017
}
container sent {
description "Statistics of sent messages.";
uses statistics-send;
}
} //statistics
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router-port
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
Wang & Liu, etc Expires September 13, 2017 [Page 52]
Internet-Draft VPLS Multicast Yang Model March 2017
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv4-static-group-source;
} // static-pw-group
list static-ac-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv4-static-group-source;
} //static-ac-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv4-policy-attributes;
}
} //cac-configs
container interfaces {
description
Wang & Liu, etc Expires September 13, 2017 [Page 53]
Internet-Draft VPLS Multicast Yang Model March 2017
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping;
} // interface
} // interfaces
choice dynamic-router-port {
description "dynamic router port";
case pw {
list dynamic-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port
was discovered.";
}
Wang & Liu, etc Expires September 13, 2017 [Page 54]
Internet-Draft VPLS Multicast Yang Model March 2017
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-pw-router-port
} //pw
case ac {
list dynamic-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-ac-router-port
} //ac
} //dynamic-router-port
choice dynamic-group {
Wang & Liu, etc Expires September 13, 2017 [Page 55]
Internet-Draft VPLS Multicast Yang Model March 2017
description "dynamic group";
case pw-dynamic-group {
list dynamic-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} // dynamic-pw-group
} //pw-dynamic-group
case ac-dynamic-group {
Wang & Liu, etc Expires September 13, 2017 [Page 56]
Internet-Draft VPLS Multicast Yang Model March 2017
list dynamic-ac-dynamic-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} //dynamic-ac-dynamic-group
} //ac-dynamic-group
} //dynamic-group
Wang & Liu, etc Expires September 13, 2017 [Page 57]
Internet-Draft VPLS Multicast Yang Model March 2017
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // igmp-snooping
container mld-snooping {
description
"MLD snooping state data.";
container global {
description
"Global attributes.";
uses global-ipv6-config-attributes;
uses cac-dynamic-attributes;
leaf entry-count {
type uint32;
description
"Maximum number of entries generated";
}
leaf send-query-source {
type inet:ipv6-address;
default "FF80::";
description
"Source IPv6 address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast configurations
in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
Wang & Liu, etc Expires September 13, 2017 [Page 58]
Internet-Draft VPLS Multicast Yang Model March 2017
uses l2vpn-config-attributes-igmp-mld-snooping;
container querier-state {
description
"L2VPN service multicast querier. ";
leaf querierState {
type boolean;
description
"L2VPN service multicast querier state.";
}
leaf querierAddr {
type inet:ipv6-address;
description
"L2VPN service multicast querier address.";
}
}
container statistics {
description
"Statistics information of a L2VPN service instance. ";
container received {
description "Statistics of received messages.";
uses statistics-received;
}
container sent {
description "Statistics of sent messages.";
uses statistics-send;
}
} //statistics
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
Wang & Liu, etc Expires September 13, 2017 [Page 59]
Internet-Draft VPLS Multicast Yang Model March 2017
}
} // static-pw-router-port
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv6-static-group-source;
} // static-pw-group
list static-ac-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
Wang & Liu, etc Expires September 13, 2017 [Page 60]
Internet-Draft VPLS Multicast Yang Model March 2017
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv6-static-group-source;
} //static-ac-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv6-policy-attributes;
}
} //cac-configs
uses cac-dynamic-attributes;
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping;
} // interface
} // interfaces
choice dynamic-router-port {
description "dynamic router port";
case pw {
list dynamic-pw-router-port {
key "peer-ip pw-id";
Wang & Liu, etc Expires September 13, 2017 [Page 61]
Internet-Draft VPLS Multicast Yang Model March 2017
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-pw-router-port
} //pw
case ac {
list dynamic-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
Wang & Liu, etc Expires September 13, 2017 [Page 62]
Internet-Draft VPLS Multicast Yang Model March 2017
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-ac-router-port
} //ac
} //dynamic-router-port
choice dynamic-group {
description "dynamic group";
case pw-dynamic-group {
list dynamic-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast group.";
}
Wang & Liu, etc Expires September 13, 2017 [Page 63]
Internet-Draft VPLS Multicast Yang Model March 2017
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} // dynamic-pw-group
} //pw-dynamic-group
case ac-dynamic-group {
list dynamic-ac-dynamic-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast group.";
Wang & Liu, etc Expires September 13, 2017 [Page 64]
Internet-Draft VPLS Multicast Yang Model March 2017
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} //dynamic-ac-dynamic-group
} //ac-dynamic-group
} //dynamic-group
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // mld-snooping
} //l2vpn-state
}
<CODE ENDS>
5. Security Considerations
The data model defined does not introduce any security implications.
This draft does not change any underlying security issues inherent
in [RFC8022].
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.
Wang & Liu, etc Expires September 13, 2017 [Page 65]
Internet-Draft VPLS Multicast Yang Model March 2017
[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
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for
RoutingManagement", RFC 8022, November 2016
[I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors
and Reviewers of YANG Data Model Documents", draft-ietf-
netmod-rfc6087bis-12(work in progress), March 2017
7.2. Informative References
[RFC4541] Christensen, M., Kimball, K., and Solensky, F., "
Considerations for Internet Group Management Protocol
(IGMP) and Multicast Listener Discovery (MLD) Snooping
Switches", RFC 4541, May 2006.
[RFC4761] K. Kompella and Y. Rekhter, " Virtual Private LAN Service
(VPLS) Using BGP for Auto-Discovery and Signaling", RFC
4761, January 2007.
[RFC4762] M. Lasserre and V. Kompella, " Virtual Private LAN Service
(VPLS) Using Label Distribution Protocol (LDP) Signaling",
RFC 4762, January 2007.
[RFC7117] R. Aggarwal, Y. Kamite, L. Fang, Y. Rekhter and C.
Kodeboniya, " Multicast in Virtual Private LAN Service
(VPLS)", RFC 7117, February 2014.
[RFC7524] Y. Rekhter, E. Rosen, R. Aggarwal, T. Morin, I.
Grosclaude, N. Leymann and S. Saad, " Inter-Area Point-to-
Multipoint (P2MP) Segmented Label Switched Paths (LSPs)",
RFC 7524, May 2015.
Wang & Liu, etc Expires September 13, 2017 [Page 66]
Internet-Draft VPLS Multicast Yang Model March 2017
Authors' Addresses
Dong Wang
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: michael.wangdong@huawei.com
Yisong Liu
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: liuyisong@huawei.com
Wang & Liu, etc Expires September 13, 2017 [Page 67]