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]