rfc9166.original | rfc9166.txt | |||
---|---|---|---|---|
PIM Working Group H. Zhao | ||||
Internet Draft Ericsson | ||||
Intended status: Standards Track X. Liu | ||||
Expires: April 07, 2022 Volta Networks | ||||
Y. Liu | ||||
China Mobile | ||||
M. Sivakumar | ||||
Juniper | ||||
A. Peter | ||||
Individual | ||||
October 08, 2021 | Internet Engineering Task Force (IETF) H. Zhao | |||
Request for Comments: 9166 Ericsson | ||||
Category: Standards Track X. Liu | ||||
ISSN: 2070-1721 IBM Corporation | ||||
Y. Liu | ||||
China Mobile | ||||
A. Peter | ||||
Individual | ||||
M. Sivakumar | ||||
Juniper Networks | ||||
January 2022 | ||||
A Yang Data Model for IGMP and MLD Snooping | A YANG Data Model for Internet Group Management Protocol (IGMP) and | |||
draft-ietf-pim-igmp-mld-snooping-yang-20.txt | Multicast Listener Discovery (MLD) Snooping | |||
Abstract | Abstract | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage Internet Group Management Protocol (IGMP) and Multicast | and manage Internet Group Management Protocol (IGMP) and Multicast | |||
Listener Discovery (MLD) Snooping devices. The YANG module in this | Listener Discovery (MLD) snooping devices. The YANG module in this | |||
document conforms to Network Management Datastore Architecture (NMDA). | document conforms to the Network Management Datastore Architecture | |||
(NMDA). | ||||
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 | Status of This Memo | |||
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 | This is an Internet Standards Track document. | |||
http://www.ietf.org/ietf/1id-abstracts.txt | ||||
The list of Internet-Draft Shadow Directories can be accessed at | This document is a product of the Internet Engineering Task Force | |||
http://www.ietf.org/shadow.html | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | ||||
Internet Engineering Steering Group (IESG). Further information on | ||||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on April 07, 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9166. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction...................................................3 | 1. Introduction | |||
1.1. Terminology...............................................3 | 1.1. Terminology | |||
1.2. Tree Diagrams.............................................3 | 1.2. Tree Diagrams | |||
1.3. Prefixes in Data Node Names...............................4 | 1.3. Prefixes in Data Node Names | |||
2. Design of Data Model...........................................4 | 2. Design of Data Model | |||
2.1. Overview..................................................5 | 2.1. Overview | |||
2.2. Optional Capabilities.....................................5 | 2.2. Optional Capabilities | |||
2.3. Position of Address Family in Hierarchy...................6 | 2.3. Position of Address Family in Hierarchy | |||
3. Module Structure...............................................6 | 3. Module Structure | |||
3.1. IGMP Snooping Instances...................................6 | 3.1. IGMP Snooping Instances | |||
3.2. MLD Snooping Instances....................................8 | 3.2. MLD Snooping Instances | |||
3.3. Using IGMP and MLD Snooping Instances....................10 | 3.3. Using IGMP and MLD Snooping Instances | |||
3.4. IGMP and MLD Snooping Actions............................11 | 3.4. IGMP and MLD Snooping Actions | |||
4. IGMP and MLD Snooping YANG Module.............................11 | 4. IGMP and MLD Snooping YANG Module | |||
5. Security Considerations.......................................31 | 5. Security Considerations | |||
6. IANA Considerations...........................................33 | 6. IANA Considerations | |||
6.1. XML Registry.............................................33 | 6.1. XML Registry | |||
6.2. YANG Module Names Registry...............................33 | 6.2. YANG Module Names Registry | |||
7. References....................................................34 | 7. References | |||
7.1. Normative References.....................................34 | 7.1. Normative References | |||
7.2. Informative References...................................35 | 7.2. Informative References | |||
Appendix A. Data Tree Example...................................36 | Appendix A. Data Tree Example | |||
Authors' Addresses...............................................39 | Authors' Addresses | |||
1. Introduction | ||||
This document defines a YANG [RFC7950] data model for the management of | 1. Introduction | |||
Internet Group Management Protocol (IGMP) and Multicast Listener | ||||
Discovery (MLD) Snooping [RFC4541] devices. | ||||
The YANG module in this document conforms to the Network Management | This document defines a YANG [RFC7950] data model for the management | |||
Datastore Architecture defined in [RFC8342]. The "Network Management | of IGMP and MLD snooping [RFC4541] devices. | |||
Datastore Architecture" (NMDA) adds the ability to inspect the current | ||||
operational values for configuration, allowing clients to use identical | ||||
paths for retrieving the configured values and the operational values. | ||||
1.1. Terminology | The YANG module in this document conforms to the NMDA defined in | |||
[RFC8342]. The NMDA adds the ability to inspect the current | ||||
operational values for configuration, allowing clients to use | ||||
identical paths for retrieving the configured values and the | ||||
operational values. | ||||
The terminology for describing YANG data models is found in [RFC6020] | 1.1. Terminology | |||
and [RFC7950], including: | The terminology for describing YANG data models is found in [RFC6020] | |||
and [RFC7950], including: | ||||
* augment | * augment | |||
* data model | * data model | |||
* data node | * data node | |||
* identity | * identity | |||
* module | * module | |||
The following terminologies are used in this document: | The following terminologies are used in this document: | |||
* mrouter: multicast router, which is a router that has multicast | mrouter: multicast router, which is a router that has multicast | |||
routing enabled [RFC4286]. | routing enabled [RFC4286]. | |||
* mrouter interfaces: snooping switch ports where multicast routers | mrouter interfaces: snooping switch ports where multicast routers | |||
are attached [RFC4541]. | are attached [RFC4541]. | |||
The following abbreviations are used in this document and defined model: | The following abbreviations are used in this document and defined | |||
model: | ||||
IGMP: Internet Group Management Protocol [RFC3376]. | IGMP: Internet Group Management Protocol [RFC3376]. | |||
MLD: Multicast Listener Discovery [RFC3810]. | MLD: Multicast Listener Discovery [RFC3810]. | |||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
[RFC8340]. | ||||
[RFC8340]. | 1.3. Prefixes in Data Node Names | |||
1.3. Prefixes in Data Node Names | In this document, names of data nodes, actions, and other data model | |||
objects are often used without a prefix, as long as it is clear from | ||||
the context in which YANG module each name is defined. Otherwise, | ||||
names are prefixed using the standard prefix associated with the | ||||
corresponding YANG module, as shown in Table 1. | ||||
In this document, names of data nodes, actions, and other data model | +==========+======================+===========+ | |||
objects are often used without a prefix, as long as it is clear from the | | Prefix | YANG module | Reference | | |||
context in which YANG module each name is defined. Otherwise, names are | +==========+======================+===========+ | |||
prefixed using the standard prefix associated with the corresponding | | inet | ietf-inet-types | [RFC6991] | | |||
YANG module, as shown in Table 1. | +----------+----------------------+-----------+ | |||
| yang | ietf-yang-types | [RFC6991] | | ||||
+----------+----------------------+-----------+ | ||||
| if | ietf-interfaces | [RFC8343] | | ||||
+----------+----------------------+-----------+ | ||||
| rt | ietf-routing | [RFC8349] | | ||||
+----------+----------------------+-----------+ | ||||
| rt-types | ietf-routing-types | [RFC8294] | | ||||
+----------+----------------------+-----------+ | ||||
| dot1q | ieee802-dot1q-bridge | [dot1Qcp] | | ||||
+----------+----------------------+-----------+ | ||||
+----------+-----------------------+---------------------------------+ | Table 1: Prefixes and Corresponding YANG | |||
| Prefix | YANG module | Reference | | Modules | |||
+==========+=======================+=================================+ | ||||
| inet | ietf-inet-types | [RFC6991] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| yang | ietf-yang-types | [RFC6991] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| if | ietf-interfaces | [RFC8343] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| rt | ietf-routing | [RFC8349] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| rt-types | ietf-routing-types | [RFC8294] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
| dot1q | ieee802-dot1q-bridge | [dot1Qcp] | | ||||
+----------+-----------------------+---------------------------------+ | ||||
Table 1: Prefixes and Corresponding YANG Modules | ||||
2. Design of Data Model | 2. Design of Data Model | |||
An IGMP/MLD snooping switch [RFC4541] analyzes IGMP/MLD packets and sets | An IGMP/MLD snooping switch [RFC4541] analyzes IGMP/MLD packets and | |||
up forwarding tables for multicast traffic. If a switch does not run | sets up forwarding tables for multicast traffic. If a switch does | |||
IGMP/MLD snooping, multicast traffic will be flooded in the broadcast | not run IGMP/MLD snooping, multicast traffic will be flooded in the | |||
domain. If a switch runs IGMP/MLD snooping, multicast traffic will be | broadcast domain. If a switch runs IGMP/MLD snooping, multicast | |||
forwarded based on the forwarding tables to avoid wasting bandwidth. The | traffic will be forwarded based on the forwarding tables to avoid | |||
IGMP/MLD snooping switch does not need to run any of the IGMP/MLD | wasting bandwidth. The IGMP/MLD snooping switch does not need to run | |||
protocols. Because the IGMP/MLD snooping is independent of the IGMP/MLD | any of the IGMP/MLD protocols. Because the IGMP/MLD snooping is | |||
protocols, the data model defined in this document does not augment, or | independent of the IGMP/MLD protocols, the data model defined in this | |||
even require, the IGMP/MLD data model defined in [RFC8652]. | document does not augment, or even require, the IGMP/MLD data model | |||
The model covers considerations for Internet Group Management Protocol | defined in [RFC8652]. The model covers considerations for IGMP and | |||
(IGMP) and Multicast Listener Discovery (MLD) Snooping Switches | MLD snooping switches [RFC4541]. | |||
[RFC4541]. | ||||
IGMP and MLD snooping switches do not adhere to the conceptual model | IGMP and MLD snooping switches do not adhere to the conceptual model | |||
that provides the strict separation of functionality between different | that provides the strict separation of functionality between | |||
communications layers in the ISO model, and instead utilize information | different communications layers in the ISO model and instead utilize | |||
in the upper level protocol headers as factors to be considered in | information in the upper-level protocol headers as factors to be | |||
processing at the lower levels [RFC4541]. | considered in processing at the lower levels [RFC4541]. | |||
IGMP Snooping switches utilize IGMP, and could support IGMPv1 [RFC1112], | IGMP snooping switches utilize IGMP and could support IGMPv1 | |||
IGMPv2 [RFC2236], and IGMPv3 [RFC3376]. MLD Snooping switches utilize | [RFC1112], IGMPv2 [RFC2236], and IGMPv3 [RFC3376]. MLD snooping | |||
MLD, and could support MLDv1 [RFC2710] and MLDv2 [RFC3810]. The goal of | switches utilize MLD and could support MLDv1 [RFC2710] and MLDv2 | |||
this document is to define a data model that provides a common user | [RFC3810]. The goal of this document is to define a data model that | |||
interface to IGMP and MLD Snooping. | provides a common user interface to IGMP and MLD snooping. | |||
2.1. Overview | 2.1. Overview | |||
The IGMP and MLD Snooping YANG module defined in this document has all | The YANG module on IGMP and MLD snooping defined in this document has | |||
the common building blocks for the IGMP and MLD Snooping switches. | all the common building blocks for the IGMP and MLD snooping | |||
switches. | ||||
The YANG module includes IGMP and MLD Snooping instance definition, | The YANG module includes an IGMP and MLD snooping instance definition | |||
using instance in the L2 service type of BRIDGE [dot1Qcp]. It also | that uses the instance in the L2 service type of bridge [dot1Qcp]. | |||
includes actions for clearing IGMP and MLD Snooping group tables. | It also includes actions for clearing IGMP and MLD snooping group | |||
tables. | ||||
The YANG module doesn't cover L2VPN, which will be specified in a | The YANG module doesn't cover L2VPN, which will be specified in a | |||
separated document. | separate document. | |||
2.2. Optional Capabilities | 2.2. Optional Capabilities | |||
This model is designed to represent the basic capability subsets of IGMP | This model is designed to represent the basic capability subsets of | |||
and MLD Snooping. The main design goals of this document are that the | IGMP and MLD snooping. The main design goals of this document are | |||
basic capabilities described in the model are supported by any major | that the basic capabilities described in the model are supported by | |||
now-existing implementation, and that the configuration of all | any major now-existing implementation and that the configuration of | |||
implementations meeting the specifications is easy to express through | all implementations meeting the specifications is easy to express | |||
some combination of the optional features in the model and simple vendor | through some combination of the optional features in the model and | |||
augmentations. | simple vendor augmentations. | |||
There is also value in widely supported features being standardized, to | There is also value in widely supported features being standardized | |||
provide a standardized way to access these features, to save work for | to provide a standardized way to access these features, to save work | |||
individual vendors, and so that mapping between different vendors' | for individual vendors, and to ensure that mapping between different | |||
configuration is not needlessly complicated. Therefore, this model | vendors' configuration is not needlessly complicated. Therefore, | |||
declares a number of features representing capabilities that not all | this model declares a number of features representing capabilities | |||
deployed devices support. | that not all deployed devices support. | |||
The extensive use of feature declarations should also substantially | The extensive use of feature declarations should also substantially | |||
simplify the capability negotiation process for a vendor's IGMP and MLD | simplify the capability negotiation process for a vendor's IGMP and | |||
Snooping implementations. | MLD snooping implementations. | |||
On the other hand, operational state parameters are not so widely | On the other hand, operational state parameters are not so widely | |||
designated as features, as there are many cases where the defaulting | designated as features, as there are many cases where the defaulting | |||
of an operational state parameter would not cause any harm to the | of an operational state parameter would not cause any harm to the | |||
system, and it is much more likely that an implementation without | system, and it is much more likely that an implementation without | |||
native support for a piece of operational state would be able to derive | intrinsic support for a piece of operational state would be able to | |||
a suitable value for a state variable that is not natively supported. | derive a suitable value for a state variable that is not | |||
intrinsically supported. | ||||
2.3. Position of Address Family in Hierarchy | 2.3. Position of Address Family in Hierarchy | |||
IGMP Snooping only supports IPv4, while MLD Snooping only supports IPv6. | IGMP snooping only supports IPv4, while MLD snooping only supports | |||
The data model defined in this document can be used for both IPv4 and | IPv6. The data model defined in this document can be used for both | |||
IPv6 address families. | IPv4 and IPv6 address families. | |||
This document defines IGMP Snooping and MLD Snooping as separate schema | This document defines IGMP snooping and MLD snooping as separate | |||
branches in the structure. The benefits are: | schema branches in the structure. The benefits are: | |||
* The model can support IGMP Snooping (IPv4), MLD Snooping (IPv6), or | * The model can support IGMP snooping (IPv4), MLD snooping (IPv6), | |||
both optionally and independently. Such flexibility cannot be achieved | or both optionally and independently. Such flexibility cannot be | |||
cleanly with a combined branch. | achieved cleanly with a combined branch. | |||
* The structure is consistent with other YANG data models such as | * The structure is consistent with other YANG data models such as | |||
[RFC8652], which uses separate branches for IPv4 and IPv6. | [RFC8652], which uses separate branches for IPv4 and IPv6. | |||
* Having separate branches for IGMP Snooping and MLD Snooping allows | * Having separate branches for IGMP snooping and MLD snooping allows | |||
minor differences in their behavior to be modelled more simply and | minor differences in their behavior to be modeled more simply and | |||
cleanly. The two branches can better support different features and node | cleanly. The two branches can better support different features | |||
types. | and node types. | |||
3. Module Structure | 3. Module Structure | |||
This model augments the core routing data model specified in [RFC8349]. | This model augments the core routing data model specified in | |||
[RFC8349]. | ||||
+--rw routing | +--rw routing | |||
+--rw router-id? | +--rw router-id? | |||
+--rw control-plane-protocols | +--rw control-plane-protocols | |||
| +--rw control-plane-protocol* [type name] | | +--rw control-plane-protocol* [type name] | |||
| +--rw type | | +--rw type | |||
| +--rw name | | +--rw name | |||
| +--rw igmp-snooping-instance <= Augmented by this Model | | +--rw igmp-snooping-instance <= Augmented by this Model | |||
... | ... | |||
| +--rw mld-snooping-instance <= Augmented by this Model | | +--rw mld-snooping-instance <= Augmented by this Model | |||
... | ... | |||
The "igmp-snooping-instance" container instantiates an IGMP Snooping | ||||
Instance. The "mld-snooping-instance" container instantiates an MLD | ||||
Snooping Instance. | ||||
The YANG data model defined in this document conforms to the Network | ||||
Management Datastore Architecture (NMDA) [RFC8342]. The operational | ||||
state data is combined with the associated configuration data in the | ||||
same hierarchy [RFC8407]. | ||||
3.1. IGMP Snooping Instances | ||||
The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- | ||||
plane-protocols/rt:control-plane-protocol to add the igmp-snooping- | ||||
instance container. | ||||
All the IGMP Snooping related attributes have been defined in the igmp- | The "igmp-snooping-instance" container instantiates an IGMP snooping | |||
snooping-instance. The read-write attributes represent configurable | instance. The "mld-snooping-instance" container instantiates an MLD | |||
data. The read-only attributes represent state data. | snooping instance. | |||
One igmp-snooping-instance could be used in one BRIDGE [dot1Qcp] | ||||
instance, and it corresponds to one BRIDGE instance. | ||||
Currently the value of l2-service-type in igmp-snooping-instance could | ||||
only be set bridge. After it is set, igmp-snooping-instance could be | ||||
used in the BRIDGE service. | ||||
The values of bridge-mrouter-interface is filled by the snooping device | ||||
dynamically. It is different from static-bridge-mrouter-interface which | ||||
is configured. | ||||
The attributes under the interfaces show the statistics of IGMP Snooping | ||||
related packets. | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol: | ||||
+--rw igmp-snooping-instance {igmp-snooping}? | ||||
+--rw l2-service-type? l2-service-type | ||||
+--rw enable? boolean | ||||
+--rw forwarding-table-type? enumeration | ||||
+--rw explicit-tracking? boolean | ||||
| {explicit-tracking}? | ||||
+--rw lite-exclude-filter? empty | ||||
| {lite-exclude-filter}? | ||||
+--rw send-query? boolean | ||||
+--rw fast-leave? empty {fast-leave}? | ||||
+--rw last-member-query-interval? uint16 | ||||
+--rw query-interval? uint16 | ||||
+--rw query-max-response-time? uint16 | ||||
+--rw require-router-alert? boolean | ||||
| {require-router-alert}? | ||||
+--rw robustness-variable? uint8 | ||||
+--rw static-bridge-mrouter-interface* if:interface-ref | ||||
| {static-mrouter-interface}? | ||||
+--rw igmp-version? uint8 | ||||
+--rw querier-source? inet:ipv4-address | ||||
+--rw static-l2-multicast-group* [group source-addr] | ||||
| {static-l2-multicast-group}? | ||||
| +--rw group | ||||
| | rt-types:ipv4-multicast-group-address | ||||
| +--rw source-addr | ||||
| | rt-types:ipv4-multicast-source-address | ||||
| +--rw bridge-outgoing-interface* if:interface-ref | ||||
+--ro entries-count? yang:gauge32 | ||||
+--ro bridge-mrouter-interface* if:interface-ref | ||||
+--ro group* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv4-multicast-group-address | ||||
| +--ro mac-address? yang:phys-address | ||||
| +--ro expire? rt-types:timer-value-seconds16 | ||||
| +--ro up-time uint32 | ||||
| +--ro last-reporter? inet:ipv4-address | ||||
| +--ro source* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv4-multicast-source-address | ||||
| +--ro bridge-outgoing-interface* if:interface-ref | ||||
| +--ro up-time uint32 | ||||
| +--ro expire? | ||||
| | rt-types:timer-value-seconds16 | ||||
| +--ro host-count? yang:gauge32 | ||||
| | {explicit-tracking}? | ||||
| +--ro last-reporter? inet:ipv4-address | ||||
| +--ro host* [address] {explicit-tracking}? | ||||
| +--ro address inet:ipv4-address | ||||
| +--ro filter-mode filter-mode-type | ||||
+--ro interfaces | ||||
+--ro interface* [name] | ||||
+--ro name if:interface-ref | ||||
+--ro statistics | ||||
+--ro discontinuity-time? yang:date-and-time | ||||
+--ro received | ||||
| +--ro query-count? yang:counter64 | ||||
| +--ro membership-report-v1-count? yang:counter64 | ||||
| +--ro membership-report-v2-count? yang:counter64 | ||||
| +--ro membership-report-v3-count? yang:counter64 | ||||
| +--ro leave-count? yang:counter64 | ||||
| +--ro pim-hello-count? yang:counter64 | ||||
+--ro sent | ||||
+--ro query-count? yang:counter64 | ||||
+--ro membership-report-v1-count? yang:counter64 | ||||
+--ro membership-report-v2-count? yang:counter64 | ||||
+--ro membership-report-v3-count? yang:counter64 | ||||
+--ro leave-count? yang:counter64 | ||||
+--ro pim-hello-count? yang:counter64 | ||||
3.2. MLD Snooping Instances | ||||
The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- | ||||
plane-protocols/rt:control-plane-protocol to add the mld-snooping- | ||||
instance container. The mld-snooping-instance could be used in the | ||||
BRIDGE [dot1Qcp] service to enable MLD Snooping. | ||||
All the MLD Snooping related attributes have been defined in the mld- | ||||
snooping-instance. The read-write attributes represent configurable | ||||
data. The read-only attributes represent state data. | ||||
The mld-snooping-instance has similar structure as IGMP snooping. Some | ||||
of leaves are protocol related. The mld-snooping-instance uses IPv6 | ||||
addresses and mld-version, while igmp-snooping-instance uses IPv4 | ||||
addresses and igmp-version. Statistic counters in each of the above | ||||
snooping instances are also tailored to the specific protocol type. One | ||||
mld-snooping-instance could be used in one BRIDGE instance, and it | ||||
corresponds to one BRIDGE instance. | ||||
Currently the value of l2-service-type in mld-snooping-instance could | ||||
only be set bridge. After it is set, mld-snooping-instance could be used | ||||
in the BRIDGE service. | ||||
The value of bridge-mrouter-interface is filled by the snooping device | ||||
dynamically. It is different from static-bridge-mrouter-interface which | ||||
is configured. | ||||
The attributes under the interfaces show the statistics of MLD Snooping | ||||
related packets. | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol: | ||||
+--rw mld-snooping-instance {mld-snooping}? | ||||
+--rw l2-service-type? l2-service-type | ||||
+--rw enable? boolean | ||||
+--rw forwarding-table-type? enumeration | ||||
+--rw explicit-tracking? boolean | ||||
| {explicit-tracking}? | ||||
+--rw lite-exclude-filter? empty | ||||
| {lite-exclude-filter}? | ||||
+--rw send-query? boolean | ||||
+--rw fast-leave? empty {fast-leave}? | ||||
+--rw last-member-query-interval? uint16 | ||||
+--rw query-interval? uint16 | ||||
+--rw query-max-response-time? uint16 | ||||
+--rw require-router-alert? boolean | ||||
| {require-router-alert}? | ||||
+--rw robustness-variable? uint8 | ||||
+--rw static-bridge-mrouter-interface* if:interface-ref | ||||
| {static-mrouter-interface}? | ||||
+--rw mld-version? uint8 | ||||
+--rw querier-source? inet:ipv6-address | ||||
+--rw static-l2-multicast-group* [group source-addr] | ||||
| {static-l2-multicast-group}? | ||||
| +--rw group | ||||
| | rt-types:ipv6-multicast-group-address | ||||
| +--rw source-addr | ||||
| | rt-types:ipv6-multicast-source-address | ||||
| +--rw bridge-outgoing-interface* if:interface-ref | ||||
+--ro entries-count? yang:gauge32 | ||||
+--ro bridge-mrouter-interface* if:interface-ref | ||||
+--ro group* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv6-multicast-group-address | ||||
| +--ro mac-address? yang:phys-address | ||||
| +--ro expire? rt-types:timer-value-seconds16 | ||||
| +--ro up-time uint32 | ||||
| +--ro last-reporter? inet:ipv6-address | ||||
| +--ro source* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv6-multicast-source-address | ||||
| +--ro bridge-outgoing-interface* if:interface-ref | ||||
| +--ro up-time uint32 | ||||
| +--ro expire? | ||||
| | rt-types:timer-value-seconds16 | ||||
| +--ro host-count? yang:gauge32 | ||||
| | {explicit-tracking}? | ||||
| +--ro last-reporter? inet:ipv6-address | ||||
| +--ro host* [address] {explicit-tracking}? | ||||
| +--ro address inet:ipv6-address | ||||
| +--ro filter-mode filter-mode-type | ||||
+--ro interfaces | ||||
+--ro interface* [name] | ||||
+--ro name if:interface-ref | ||||
+--ro statistics | ||||
+--ro discontinuity-time? yang:date-and-time | ||||
+--ro received | ||||
| +--ro query-count? yang:counter64 | ||||
| +--ro report-v1-count? yang:counter64 | ||||
| +--ro report-v2-count? yang:counter64 | ||||
| +--ro done-count? yang:counter64 | ||||
| +--ro pim-hello-count? yang:counter64 | ||||
+--ro sent | ||||
+--ro query-count? yang:counter64 | ||||
+--ro report-v1-count? yang:counter64 | ||||
+--ro report-v2-count? yang:counter64 | ||||
+--ro done-count? yang:counter64 | ||||
+--ro pim-hello-count? yang:counter64 | ||||
3.3. Using IGMP and MLD Snooping Instances | ||||
The igmp-snooping-instance could be used in the service of BRIDGE | ||||
[dot1Qcp] to configure the IGMP Snooping. | ||||
For the BRIDGE service this model augments /dot1q:bridges/dot1q:bridge | The YANG data model defined in this document conforms to the NMDA | |||
to use igmp-snooping-instance. It means IGMP Snooping is enabled in the | [RFC8342]. The operational state data is combined with the | |||
whole bridge. | associated configuration data in the same hierarchy [RFC8407]. | |||
It also augments /dot1q:bridges/dot1q:bridge/dot1q:component/ | 3.1. IGMP Snooping Instances | |||
dot1q:bridge-vlan/dot1q:vlan to use igmp-snooping-instance. It means | ||||
IGMP Snooping is enabled in the specified VLAN on the bridge. | ||||
The mld-snooping-instance could be used in concurrence with igmp- | The YANG module ietf-igmp-mld-snooping augments /rt:routing/ | |||
snooping-instance to configure the MLD Snooping. | rt:control-plane-protocols/rt:control-plane-protocol to add the igmp- | |||
snooping-instance container. | ||||
augment /dot1q:bridges/dot1q:bridge: | All the IGMP snooping-related attributes have been defined in the | |||
+--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref | igmp-snooping-instance. The read-write attributes represent | |||
+--rw mld-snooping-instance? igmp-mld-snooping-instance-ref | configurable data. The read-only attributes represent state data. | |||
augment /dot1q:bridges/dot1q:bridge/dot1q:component | One igmp-snooping-instance could be used in one bridge [dot1Qcp] | |||
/dot1q:bridge-vlan/dot1q:vlan: | instance, and it corresponds to one bridge instance. | |||
+--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref | ||||
+--rw mld-snooping-instance? igmp-mld-snooping-instance-ref | ||||
3.4. IGMP and MLD Snooping Actions | Currently, the value of l2-service-type in igmp-snooping-instance | |||
could only be set to 'bridge'. After it is set, igmp-snooping- | ||||
instance could be used in the bridge service. | ||||
IGMP and MLD Snooping actions clear the specified IGMP and MLD Snooping | The values of bridge-mrouter-interface are filled by the snooping | |||
group tables. If both source X and group Y are specified, only source X | device dynamically. It is different from static-bridge-mrouter- | |||
from group Y in that specific instance will be cleared. | interface, which is configured. | |||
augment /rt:routing/rt:control-plane-protocols | The attributes under the interfaces show the statistics of IGMP | |||
/rt:control-plane-protocol: | snooping-related packets. | |||
+--rw igmp-snooping-instance {igmp-snooping}? | ||||
+---x clear-igmp-snooping-groups {action-clear-groups}? | ||||
+---w input | ||||
+---w group union | ||||
+---w source rt-types:ipv4-multicast-source-address | ||||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw mld-snooping-instance {mld-snooping}? | +--rw igmp-snooping-instance {igmp-snooping}? | |||
+---x clear-mld-snooping-groups {action-clear-groups}? | +--rw l2-service-type? l2-service-type | |||
+---w input | +--rw enabled? boolean | |||
+---w group union | +--rw forwarding-table-type? enumeration | |||
+---w source rt-types:ipv6-multicast-source-address | +--rw explicit-tracking? boolean | |||
| {explicit-tracking}? | ||||
4. IGMP and MLD Snooping YANG Module | +--rw lite-exclude-filter? empty | |||
| {lite-exclude-filter}? | ||||
This module references [RFC1112],[RFC2236],[RFC2710],[RFC3376], | +--rw send-query? boolean | |||
[RFC3810],[RFC4541],[RFC5790],[RFC6636],[RFC6991],[RFC7761], | +--rw fast-leave? empty {fast-leave}? | |||
[RFC8343],[dot1Qcp]. | +--rw last-member-query-interval? uint16 | |||
+--rw query-interval? uint16 | ||||
<CODE BEGINS> file ietf-igmp-mld-snooping@2021-10-08.yang | +--rw query-max-response-time? uint16 | |||
module ietf-igmp-mld-snooping { | +--rw require-router-alert? boolean | |||
yang-version 1.1; | | {require-router-alert}? | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; | +--rw robustness-variable? uint8 | |||
+--rw static-bridge-mrouter-interface* if:interface-ref | ||||
prefix ims; | | {static-mrouter-interface}? | |||
+--rw igmp-version? uint8 | ||||
import ietf-inet-types { | +--rw querier-source? inet:ipv4-address | |||
prefix "inet"; | +--rw static-l2-multicast-group* [group source-addr] | |||
reference | | {static-l2-multicast-group}? | |||
"RFC 6991: Common YANG Data Types"; | | +--rw group | |||
} | | | rt-types:ipv4-multicast-group-address | |||
| +--rw source-addr | ||||
import ietf-yang-types { | | | rt-types:ipv4-multicast-source-address | |||
prefix "yang"; | | +--rw bridge-outgoing-interface* if:interface-ref | |||
reference | +--ro entries-count? yang:gauge32 | |||
"RFC 6991: Common YANG Data Types"; | +--ro bridge-mrouter-interface* if:interface-ref | |||
} | +--ro group* [address] | |||
| +--ro address | ||||
import ietf-interfaces { | | | rt-types:ipv4-multicast-group-address | |||
prefix "if"; | | +--ro mac-address? yang:phys-address | |||
reference | | +--ro expire? rt-types:timer-value-seconds16 | |||
"RFC 8343: A YANG Data Model for Interface Management"; | | +--ro up-time uint32 | |||
} | | +--ro last-reporter? inet:ipv4-address | |||
| +--ro source* [address] | ||||
import ietf-routing { | | +--ro address | |||
prefix "rt"; | | | rt-types:ipv4-multicast-source-address | |||
reference | | +--ro bridge-outgoing-interface* if:interface-ref | |||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | | +--ro up-time uint32 | |||
Version)"; | | +--ro expire? | |||
} | | | rt-types:timer-value-seconds16 | |||
| +--ro host-count? yang:gauge32 | ||||
import ietf-routing-types { | | | {explicit-tracking}? | |||
prefix "rt-types"; | | +--ro last-reporter? inet:ipv4-address | |||
reference | | +--ro host* [address] {explicit-tracking}? | |||
"RFC 8294: Common YANG Data Types for the Routing Area"; | | +--ro address inet:ipv4-address | |||
} | | +--ro filter-mode filter-mode-type | |||
+--ro interfaces | ||||
import ieee802-dot1q-bridge { | +--ro interface* [name] | |||
prefix "dot1q"; | +--ro name if:interface-ref | |||
reference | +--ro statistics | |||
"dot1Qcp: IEEE 802.1Qcp-2018 Bridges and Bridged Networks | +--ro discontinuity-time? yang:date-and-time | |||
- Amendment: YANG Data Model"; | +--ro received | |||
} | | +--ro query-count? yang:counter64 | |||
| +--ro membership-report-v1-count? yang:counter64 | ||||
organization | | +--ro membership-report-v2-count? yang:counter64 | |||
"IETF PIM Working Group"; | | +--ro membership-report-v3-count? yang:counter64 | |||
| +--ro leave-count? yang:counter64 | ||||
contact | | +--ro pim-hello-count? yang:counter64 | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | +--ro sent | |||
WG List: <mailto:pim@ietf.org> | +--ro query-count? yang:counter64 | |||
+--ro membership-report-v1-count? yang:counter64 | ||||
Editors: Hongji Zhao | +--ro membership-report-v2-count? yang:counter64 | |||
<mailto:hongji.zhao@ericsson.com> | +--ro membership-report-v3-count? yang:counter64 | |||
+--ro leave-count? yang:counter64 | ||||
Xufeng Liu | +--ro pim-hello-count? yang:counter64 | |||
<mailto:xufeng.liu.ietf@gmail.com> | ||||
Yisong Liu | ||||
<mailto:liuyisong@chinamobile.com> | ||||
Anish Peter | ||||
<mailto:anish.ietf@gmail.com> | ||||
Mahesh Sivakumar | ||||
<mailto:sivakumar.mahesh@gmail.com> | ||||
"; | ||||
description | ||||
"The module defines a collection of YANG definitions common for | ||||
all devices that implement Internet Group Management Protocol | ||||
(IGMP) and Multicast Listener Discovery (MLD) Snooping which is | ||||
described in RFC 4541. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject to | ||||
the license terms contained in, the Simplified BSD License set | ||||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see the | ||||
RFC itself for full legal notices."; | ||||
revision 2021-10-08 { | ||||
description | ||||
"Initial revision."; | ||||
reference | ||||
"RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; | ||||
} | ||||
/* | ||||
* Features | ||||
*/ | ||||
feature igmp-snooping { | ||||
description | ||||
"Support IGMP snooping."; | ||||
reference | ||||
"RFC 4541"; | ||||
} | ||||
feature mld-snooping { | ||||
description | ||||
"Support MLD snooping."; | ||||
reference | ||||
"RFC 4541"; | ||||
} | ||||
feature fast-leave { | ||||
description | ||||
"Support configuration of fast leave. The fast leave feature | ||||
does not send last member query messages to hosts."; | ||||
reference | ||||
"RFC 3376"; | ||||
} | ||||
feature static-l2-multicast-group { | ||||
description | ||||
"Support configuration of static L2 multicast group."; | ||||
} | ||||
feature static-mrouter-interface { | ||||
description | ||||
"Support multicast router interface explicitly configured | ||||
by management"; | ||||
reference | ||||
"RFC 4541"; | ||||
} | ||||
feature action-clear-groups { | ||||
description | ||||
"Support clearing statistics by action for IGMP & MLD snooping."; | ||||
} | ||||
feature require-router-alert { | ||||
description | ||||
"Support configuration of require-router-alert."; | ||||
reference | ||||
"RFC 3376"; | ||||
} | ||||
feature lite-exclude-filter { | ||||
description | ||||
"Enable the support of the simplified EXCLUDE filter."; | ||||
reference | ||||
"RFC 5790"; | ||||
} | ||||
feature explicit-tracking { | ||||
description | ||||
"Support configuration of per instance explicit-tracking."; | ||||
reference | ||||
"RFC 6636"; | ||||
} | ||||
/* identities */ | 3.2. MLD Snooping Instances | |||
identity l2-service-type { | ||||
description | ||||
"Base identity for L2 service type in IGMP & MLD snooping"; | ||||
} | ||||
identity bridge { | The YANG module ietf-igmp-mld-snooping augments /rt:routing/ | |||
base l2-service-type; | rt:control-plane-protocols/rt:control-plane-protocol to add the mld- | |||
description | snooping-instance container. The mld-snooping-instance could be used | |||
"This identity represents BRIDGE service."; | in the bridge [dot1Qcp] service to enable MLD snooping. | |||
} | ||||
identity filter-mode { | All the MLD snooping-related attributes have been defined in the mld- | |||
description | snooping-instance. The read-write attributes represent configurable | |||
"Base identity for filter mode in IGMP & MLD snooping"; | data. The read-only attributes represent state data. | |||
} | ||||
identity include { | The mld-snooping-instance has a similar structure to IGMP snooping. | |||
base filter-mode; | Some leaves are protocol related. The mld-snooping-instance uses | |||
description | IPv6 addresses and mld-version, while igmp-snooping-instance uses | |||
"This identity represents include mode."; | IPv4 addresses and igmp-version. Statistic counters in each of the | |||
} | above snooping instances are also tailored to the specific protocol | |||
type. One mld-snooping-instance could be used in one bridge instance | ||||
and corresponds to one bridge instance. | ||||
identity exclude { | Currently, the value of l2-service-type in mld-snooping-instance | |||
base filter-mode; | could only be set to 'bridge'. After it is set, mld-snooping- | |||
description | instance could be used in the bridge service. | |||
"This identity represents exclude mode."; | ||||
} | ||||
identity igmp-snooping { | The value of bridge-mrouter-interface is filled by the snooping | |||
base rt:control-plane-protocol; | device dynamically. It is different from static-bridge-mrouter- | |||
description | interface, which is configured. | |||
"IGMP snooping"; | ||||
} | ||||
identity mld-snooping { | The attributes under the interfaces show the statistics of MLD | |||
base rt:control-plane-protocol; | snooping-related packets. | |||
description | ||||
"MLD snooping"; | ||||
} | ||||
/* | augment /rt:routing/rt:control-plane-protocols | |||
* Typedefs | /rt:control-plane-protocol: | |||
*/ | +--rw mld-snooping-instance {mld-snooping}? | |||
+--rw l2-service-type? l2-service-type | ||||
+--rw enabled? boolean | ||||
+--rw forwarding-table-type? enumeration | ||||
+--rw explicit-tracking? boolean | ||||
| {explicit-tracking}? | ||||
+--rw lite-exclude-filter? empty | ||||
| {lite-exclude-filter}? | ||||
+--rw send-query? boolean | ||||
+--rw fast-leave? empty {fast-leave}? | ||||
+--rw last-member-query-interval? uint16 | ||||
+--rw query-interval? uint16 | ||||
+--rw query-max-response-time? uint16 | ||||
+--rw require-router-alert? boolean | ||||
| {require-router-alert}? | ||||
+--rw robustness-variable? uint8 | ||||
+--rw static-bridge-mrouter-interface* if:interface-ref | ||||
| {static-mrouter-interface}? | ||||
+--rw mld-version? uint8 | ||||
+--rw querier-source? inet:ipv6-address | ||||
+--rw static-l2-multicast-group* [group source-addr] | ||||
| {static-l2-multicast-group}? | ||||
| +--rw group | ||||
| | rt-types:ipv6-multicast-group-address | ||||
| +--rw source-addr | ||||
| | rt-types:ipv6-multicast-source-address | ||||
| +--rw bridge-outgoing-interface* if:interface-ref | ||||
+--ro entries-count? yang:gauge32 | ||||
+--ro bridge-mrouter-interface* if:interface-ref | ||||
+--ro group* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv6-multicast-group-address | ||||
| +--ro mac-address? yang:phys-address | ||||
| +--ro expire? rt-types:timer-value-seconds16 | ||||
| +--ro up-time uint32 | ||||
| +--ro last-reporter? inet:ipv6-address | ||||
| +--ro source* [address] | ||||
| +--ro address | ||||
| | rt-types:ipv6-multicast-source-address | ||||
| +--ro bridge-outgoing-interface* if:interface-ref | ||||
| +--ro up-time uint32 | ||||
| +--ro expire? | ||||
| | rt-types:timer-value-seconds16 | ||||
| +--ro host-count? yang:gauge32 | ||||
| | {explicit-tracking}? | ||||
| +--ro last-reporter? inet:ipv6-address | ||||
| +--ro host* [address] {explicit-tracking}? | ||||
| +--ro address inet:ipv6-address | ||||
| +--ro filter-mode filter-mode-type | ||||
+--ro interfaces | ||||
+--ro interface* [name] | ||||
+--ro name if:interface-ref | ||||
+--ro statistics | ||||
+--ro discontinuity-time? yang:date-and-time | ||||
+--ro received | ||||
| +--ro query-count? yang:counter64 | ||||
| +--ro report-v1-count? yang:counter64 | ||||
| +--ro report-v2-count? yang:counter64 | ||||
| +--ro done-count? yang:counter64 | ||||
| +--ro pim-hello-count? yang:counter64 | ||||
+--ro sent | ||||
+--ro query-count? yang:counter64 | ||||
+--ro report-v1-count? yang:counter64 | ||||
+--ro report-v2-count? yang:counter64 | ||||
+--ro done-count? yang:counter64 | ||||
+--ro pim-hello-count? yang:counter64 | ||||
typedef l2-service-type { | 3.3. Using IGMP and MLD Snooping Instances | |||
type identityref { | ||||
base "l2-service-type"; | ||||
} | ||||
description "The L2 service type used with IGMP & MLD snooping "; | ||||
} | ||||
typedef filter-mode-type { | ||||
type identityref { | ||||
base "filter-mode"; | ||||
} | ||||
description "The host filter mode"; | ||||
} | ||||
typedef igmp-mld-snooping-instance-ref { | The igmp-snooping-instance could be used in the service of bridge | |||
type leafref { | [dot1Qcp] to configure the IGMP snooping. | |||
path "/rt:routing/rt:control-plane-protocols"+ | ||||
"/rt:control-plane-protocol/rt:name"; | ||||
} | ||||
description | ||||
"This type is used by data models which need to | ||||
reference IGMP & MLD snooping instance."; | ||||
} | ||||
/* | For the bridge service, this model augments /dot1q:bridges/ | |||
* Groupings | dot1q:bridge to use igmp-snooping-instance. It means IGMP snooping | |||
*/ | is enabled in the bridge. | |||
grouping instance-config-attributes-igmp-mld-snooping { | It also augments /dot1q:bridges/dot1q:bridge/dot1q:component/ | |||
description | dot1q:bridge-vlan/dot1q:vlan to use igmp-snooping-instance. It means | |||
"IGMP and MLD snooping configuration of each VLAN."; | IGMP snooping is enabled in the specified VLAN on the bridge. | |||
leaf enable { | The mld-snooping-instance could be used in concurrence with igmp- | |||
type boolean; | snooping-instance to configure the MLD snooping. | |||
default false; | ||||
description | ||||
"Set the value to true to enable IGMP & MLD snooping."; | ||||
} | ||||
leaf forwarding-table-type { | augment /dot1q:bridges/dot1q:bridge: | |||
type enumeration { | +--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref | |||
enum "mac" { | +--rw mld-snooping-instance? igmp-mld-snooping-instance-ref | |||
description | ||||
"MAC-based lookup mode"; | ||||
} | ||||
enum "ip" { | ||||
description | ||||
"IP-based lookup mode"; | ||||
} | ||||
} | ||||
default "ip"; | ||||
description "The default forwarding table type is ip"; | ||||
} | ||||
leaf explicit-tracking { | augment /dot1q:bridges/dot1q:bridge/dot1q:component | |||
if-feature explicit-tracking; | /dot1q:bridge-vlan/dot1q:vlan: | |||
type boolean; | +--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref | |||
default false; | +--rw mld-snooping-instance? igmp-mld-snooping-instance-ref | |||
description | ||||
"Track the IGMPv3 and MLDv2 snooping membership reports | ||||
from individual hosts. It contributes to saving network | ||||
resources and shortening leave latency."; | ||||
} | ||||
leaf lite-exclude-filter { | 3.4. IGMP and MLD Snooping Actions | |||
if-feature lite-exclude-filter; | ||||
type empty; | ||||
description | ||||
"For IGMP Snooping, the presence of this | ||||
leaf enables the support of the simplified EXCLUDE filter | ||||
in the Lightweight IGMPv3 protocol, which simplifies the | ||||
standard versions of IGMPv3. | ||||
For MLD Snooping, the presence of this | ||||
leaf enables the support of the simplified EXCLUDE filter | ||||
in the Lightweight MLDv2 protocol, which simplifies the | ||||
standard versions of MLDv2."; | ||||
reference | ||||
"RFC 5790"; | ||||
} | ||||
leaf send-query { | IGMP and MLD snooping actions clear the specified IGMP and MLD | |||
type boolean; | snooping group tables. If both source X and group Y are specified, | |||
default false; | only source X from group Y in that specific instance will be cleared. | |||
description | ||||
"When it is true, this switch will send out periodic | ||||
IGMP General Query Message or MLD General Query Message."; | ||||
} | ||||
leaf fast-leave { | augment /rt:routing/rt:control-plane-protocols | |||
if-feature fast-leave; | /rt:control-plane-protocol: | |||
type empty; | +--rw igmp-snooping-instance {igmp-snooping}? | |||
description | +---x clear-igmp-snooping-groups {action-clear-groups}? | |||
"When immediate leave is enabled, the IGMP software assumes | +---w input | |||
that no more than one host is present on each VLAN port."; | +---w group union | |||
} | +---w source rt-types:ipv4-multicast-source-address | |||
leaf last-member-query-interval { | augment /rt:routing/rt:control-plane-protocols | |||
type uint16 { | /rt:control-plane-protocol: | |||
range "10..10230"; | +--rw mld-snooping-instance {mld-snooping}? | |||
} | +---x clear-mld-snooping-groups {action-clear-groups}? | |||
units deciseconds; | +---w input | |||
default 10; | +---w group union | |||
description | +---w source rt-types:ipv6-multicast-source-address | |||
"Last Member Query Interval, which may be tuned to modify | ||||
the leave latency of the network. | ||||
It is represented in units of 1/10 second."; | ||||
reference "RFC 3376. Sec. 8.8."; | ||||
} | ||||
leaf query-interval { | ||||
type uint16; | ||||
units seconds; | ||||
default 125; | ||||
description | ||||
"The Query Interval is the interval between General Queries | ||||
sent by the Querier."; | ||||
reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; | ||||
} | ||||
leaf query-max-response-time { | 4. IGMP and MLD Snooping YANG Module | |||
type uint16; | ||||
units deciseconds; | ||||
default 100; | ||||
description | ||||
"Query maximum response time specifies the maximum time | ||||
allowed before sending a responding report. | ||||
It is represented in units of 1/10 second."; | ||||
reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; | ||||
} | ||||
leaf require-router-alert { | This module references [RFC1112], [RFC2236], [RFC2710], [RFC3376], | |||
if-feature require-router-alert; | [RFC3810], [RFC4541], [RFC5790], [RFC6636], [RFC6991], [RFC7761], | |||
type boolean; | [RFC8343], and [dot1Qcp]. | |||
default false; | ||||
description | ||||
"When the value is true, router alert should exist | ||||
in the IP header of IGMP or MLD packet. If it doesn't exist, | ||||
the IGMP or MLD packet will be ignored."; | ||||
reference "RFC 3376. Sec. 9.1, 9.2, 9.3."; | ||||
} | ||||
leaf robustness-variable { | <CODE BEGINS> file "ietf-igmp-mld-snooping@2021-12-20.yang" | |||
type uint8 { | module ietf-igmp-mld-snooping { | |||
range "1..7"; | yang-version 1.1; | |||
} | namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; | |||
default 2; | prefix ims; | |||
description | ||||
"Querier's Robustness Variable allows tuning for the | ||||
expected packet loss on a network."; | ||||
reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; | ||||
} | ||||
leaf-list static-bridge-mrouter-interface { | import ietf-inet-types { | |||
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; | prefix inet; | |||
if-feature static-mrouter-interface; | reference | |||
type if:interface-ref; | "RFC 6991: Common YANG Data Types"; | |||
description "static mrouter interface in BRIDGE forwarding"; | } | |||
} | import ietf-yang-types { | |||
} // instance-config-attributes-igmp-mld-snooping | prefix yang; | |||
grouping instance-state-group-attributes-igmp-mld-snooping { | reference | |||
description | "RFC 6991: Common YANG Data Types"; | |||
"Attributes for both IGMP and MLD snooping groups."; | } | |||
import ietf-interfaces { | ||||
prefix if; | ||||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | ||||
import ietf-routing-types { | ||||
prefix rt-types; | ||||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | ||||
import ieee802-dot1q-bridge { | ||||
prefix dot1q; | ||||
reference | ||||
"dot1Qcp: IEEE 802.1Qcp-2018 Standard for Local and | ||||
Metropolitan area networks--Bridges and Bridged Networks | ||||
--Amendment 30: YANG Data Model"; | ||||
} | ||||
leaf mac-address { | organization | |||
type yang:phys-address; | "IETF PIM Working Group"; | |||
description "Destination MAC address for L2 multicast."; | contact | |||
} | "WG Web: <http://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | ||||
leaf expire { | Editors: Hongji Zhao | |||
type rt-types:timer-value-seconds16; | <mailto:hongji.zhao@ericsson.com> | |||
units seconds; | ||||
description | ||||
"The time left before multicast group timeout."; | ||||
} | ||||
leaf up-time { | Xufeng Liu | |||
type uint32; | <mailto:xufeng.liu.ietf@gmail.com> | |||
units seconds; | ||||
mandatory true; | ||||
description | ||||
"The time elapsed since L2 multicast record created."; | ||||
} | ||||
} // instance-state-group-attributes-igmp-mld-snooping | ||||
grouping instance-state-attributes-igmp-mld-snooping { | Yisong Liu | |||
<mailto:liuyisong@chinamobile.com> | ||||
description | Anish Peter | |||
"State attributes for IGMP & MLD snooping instance."; | <mailto:anish.ietf@gmail.com> | |||
leaf entries-count { | Mahesh Sivakumar | |||
type yang:gauge32; | <mailto:sivakumar.mahesh@gmail.com> | |||
config false; | ||||
description | ||||
"The number of L2 multicast entries in IGMP & MLD snooping"; | ||||
} | ||||
leaf-list bridge-mrouter-interface { | "; | |||
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; | description | |||
type if:interface-ref; | "The module defines a collection of YANG definitions common for | |||
config false; | all devices that implement Internet Group Management Protocol | |||
description | (IGMP) and Multicast Listener Discovery (MLD) snooping, which is | |||
"Indicates a list of mrouter interfaces dynamically learned in a | described in RFC 4541. | |||
bridge. When this switch receives IGMP/MLD queries from a | ||||
multicast router on an interface, the interface will become | ||||
mrouter interface for IGMP/MLD snooping."; | ||||
} | ||||
} // instance-config-attributes-igmp-mld-snooping | ||||
grouping instance-state-source-attributes-igmp-mld-snooping { | Copyright (c) 2021 IETF Trust and the persons identified as | |||
description | authors of the code. All rights reserved. | |||
"State attributes for IGMP & MLD snooping instance."; | ||||
leaf-list bridge-outgoing-interface { | Redistribution and use in source and binary forms, with or | |||
when 'derived-from-or-self(../../../l2-service- | without modification, is permitted pursuant to, and subject to | |||
type,"ims:bridge")'; | the license terms contained in, the Simplified BSD License set | |||
type if:interface-ref; | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
description "Outgoing interface in BRIDGE forwarding"; | Relating to IETF Documents | |||
} | (http://trustee.ietf.org/license-info). | |||
leaf up-time { | This version of this YANG module is part of RFC 9166; see the | |||
type uint32; | RFC itself for full legal notices."; | |||
units seconds; | ||||
mandatory true; | ||||
description | ||||
"The time elapsed since L2 multicast record created"; | ||||
} | ||||
leaf expire { | revision 2021-12-20 { | |||
type rt-types:timer-value-seconds16; | description | |||
units seconds; | "Initial revision."; | |||
description | reference | |||
"The time left before multicast group timeout."; | "RFC 9166: A YANG Data Model for Internet Group Management | |||
} | Protocol (IGMP) and Multicast Listener Discovery (MLD) | |||
Snooping"; | ||||
} | ||||
leaf host-count { | /* | |||
if-feature explicit-tracking; | * Features | |||
type yang:gauge32; | */ | |||
description | ||||
"The number of host addresses."; | ||||
} | ||||
} // instance-state-source-attributes-igmp-mld-snooping | ||||
grouping igmp-snooping-statistics { | feature igmp-snooping { | |||
description | description | |||
"The statistics attributes for IGMP snooping."; | "Support IGMP snooping."; | |||
reference | ||||
"RFC 4541: Considerations for Internet Group Management | ||||
Protocol (IGMP) and Multicast Listener Discovery (MLD) | ||||
Snooping Switches"; | ||||
} | ||||
leaf query-count { | feature mld-snooping { | |||
type yang:counter64; | description | |||
description | "Support MLD snooping."; | |||
"The number of Membership Query messages."; | reference | |||
reference | "RFC 4541: Considerations for Internet Group Management | |||
"RFC 2236"; | Protocol (IGMP) and Multicast Listener Discovery (MLD) | |||
} | Snooping Switches"; | |||
leaf membership-report-v1-count { | } | |||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Membership Report messages."; | ||||
reference | ||||
"RFC 1112"; | ||||
} | ||||
leaf membership-report-v2-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 2 Membership Report messages."; | ||||
reference | ||||
"RFC 2236"; | ||||
} | ||||
leaf membership-report-v3-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 3 Membership Report messages."; | ||||
reference | ||||
"RFC 3376"; | ||||
} | ||||
leaf leave-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Leave Group messages."; | ||||
reference | ||||
"RFC 2236"; | ||||
} | ||||
leaf pim-hello-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of PIM hello messages."; | ||||
reference | ||||
"RFC 7761"; | ||||
} | ||||
} // igmp-snooping-statistics | ||||
grouping mld-snooping-statistics { | feature fast-leave { | |||
description | description | |||
"The statistics attributes for MLD snooping."; | "Support configuration of fast leave. The fast leave feature | |||
does not send last member query messages to hosts."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3"; | ||||
} | ||||
leaf query-count { | feature static-l2-multicast-group { | |||
type yang:counter64; | description | |||
description | "Support configuration of static L2 multicast group."; | |||
"The number of Multicast Listener Query messages."; | } | |||
reference | ||||
"RFC 3810"; | ||||
} | ||||
leaf report-v1-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Multicast Listener Report."; | ||||
reference | ||||
"RFC 2710"; | ||||
} | ||||
leaf report-v2-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 2 Multicast Listener Report."; | ||||
reference | ||||
"RFC 3810"; | ||||
} | ||||
leaf done-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Multicast Listener Done."; | ||||
reference | ||||
"RFC 2710"; | ||||
} | ||||
leaf pim-hello-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of PIM hello messages."; | ||||
reference | ||||
"RFC 7761"; | ||||
} | ||||
} // mld-snooping-statistics | ||||
augment "/rt:routing/rt:control-plane-protocols"+ | feature static-mrouter-interface { | |||
"/rt:control-plane-protocol" { | description | |||
when 'derived-from-or-self(rt:type, "ims:igmp-snooping")' { | "Support multicast router interface explicitly configured | |||
description | by management."; | |||
"This container is only valid for IGMP snooping."; | reference | |||
} | "RFC 4541: Considerations for Internet Group Management | |||
description | Protocol (IGMP) and Multicast Listener Discovery (MLD) | |||
"IGMP snooping augmentation to control plane protocol | Snooping Switches"; | |||
configuration and state."; | } | |||
container igmp-snooping-instance { | feature action-clear-groups { | |||
if-feature igmp-snooping; | description | |||
description | "Support clearing statistics by action for IGMP and MLD | |||
"IGMP snooping instance to configure igmp-snooping."; | snooping."; | |||
} | ||||
leaf l2-service-type { | feature require-router-alert { | |||
type l2-service-type; | description | |||
default bridge; | "Support configuration of require-router-alert."; | |||
description | reference | |||
"It indicates BRIDGE or other services."; | "RFC 3376: Internet Group Management Protocol, Version 3"; | |||
} | } | |||
uses instance-config-attributes-igmp-mld-snooping; | feature lite-exclude-filter { | |||
description | ||||
"Enable the support of the simplified EXCLUDE filter."; | ||||
reference | ||||
"RFC 5790: Lightweight Internet Group Management Protocol | ||||
Version 3 (IGMPv3) and Multicast Listener Discovery Version | ||||
2 (MLDv2) Protocols"; | ||||
} | ||||
leaf igmp-version { | feature explicit-tracking { | |||
type uint8 { | description | |||
range "1..3"; | "Support configuration of per-instance explicit-tracking."; | |||
} | reference | |||
default 2; | "RFC 6636: Tuning the Behavior of the Internet Group Management | |||
description "IGMP version."; | Protocol (IGMP) and Multicast Listener Discovery (MLD) for | |||
} | Routers in Mobile and Wireless Networks"; | |||
leaf querier-source { | } | |||
type inet:ipv4-address; | ||||
description | ||||
"The source address of IGMP General Query message, | ||||
which is sent out by this switch."; | ||||
} | ||||
list static-l2-multicast-group { | /* identities */ | |||
if-feature static-l2-multicast-group; | ||||
key "group source-addr"; | ||||
description | ||||
"A static multicast route, (*,G) or (S,G)."; | ||||
leaf group { | identity l2-service-type { | |||
type rt-types:ipv4-multicast-group-address; | description | |||
description | "Base identity for L2 service type in IGMP and MLD snooping."; | |||
"Multicast group IPv4 address"; | } | |||
} | ||||
leaf source-addr { | identity bridge { | |||
type rt-types:ipv4-multicast-source-address; | base l2-service-type; | |||
description | description | |||
"Multicast source IPv4 address."; | "This identity represents bridge service."; | |||
} | } | |||
leaf-list bridge-outgoing-interface { | identity filter-mode { | |||
when 'derived-from-or-self(../../l2-service- | description | |||
type,"ims:bridge")'; | "Base identity for filter mode in IGMP and MLD snooping."; | |||
type if:interface-ref; | } | |||
description "Outgoing interface in BRIDGE forwarding"; | ||||
} | ||||
} // static-l2-multicast-group | ||||
uses instance-state-attributes-igmp-mld-snooping; | identity include { | |||
base filter-mode; | ||||
description | ||||
"This identity represents include mode."; | ||||
} | ||||
list group { | identity exclude { | |||
base filter-mode; | ||||
description | ||||
"This identity represents exclude mode."; | ||||
} | ||||
key "address"; | identity igmp-snooping { | |||
base rt:control-plane-protocol; | ||||
description | ||||
"IGMP snooping."; | ||||
} | ||||
config false; | identity mld-snooping { | |||
base rt:control-plane-protocol; | ||||
description | ||||
"MLD snooping."; | ||||
} | ||||
description "IGMP snooping information"; | /* | |||
* Typedefs | ||||
*/ | ||||
leaf address { | typedef l2-service-type { | |||
type rt-types:ipv4-multicast-group-address; | type identityref { | |||
description | base l2-service-type; | |||
"Multicast group IPv4 address"; | } | |||
} | description | |||
"The L2 service type used with IGMP and MLD | ||||
snooping."; | ||||
} | ||||
uses instance-state-group-attributes-igmp-mld-snooping; | typedef filter-mode-type { | |||
leaf last-reporter { | type identityref { | |||
type inet:ipv4-address; | base filter-mode; | |||
description | } | |||
"Address of the last host which has sent report to join | description | |||
the multicast group."; | "The host filter mode."; | |||
} | } | |||
list source { | typedef igmp-mld-snooping-instance-ref { | |||
key "address"; | type leafref { | |||
description "Source IPv4 address for multicast stream"; | path "/rt:routing/rt:control-plane-protocols" | |||
+ "/rt:control-plane-protocol/rt:name"; | ||||
} | ||||
description | ||||
"This type is used by data models that need to | ||||
reference IGMP or MLD snooping instance."; | ||||
} | ||||
leaf address { | /* | |||
type rt-types:ipv4-multicast-source-address; | * Groupings | |||
description "Source IPv4 address for multicast stream"; | */ | |||
} | ||||
uses instance-state-source-attributes-igmp-mld-snooping; | grouping instance-config-attributes-igmp-mld-snooping { | |||
description | ||||
"IGMP and MLD snooping configuration of each VLAN."; | ||||
leaf enabled { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Set the value to true to enable IGMP and MLD snooping."; | ||||
} | ||||
leaf forwarding-table-type { | ||||
type enumeration { | ||||
enum mac { | ||||
description | ||||
"MAC-based lookup mode."; | ||||
} | ||||
enum ip { | ||||
description | ||||
"IP-based lookup mode."; | ||||
} | ||||
} | ||||
default "ip"; | ||||
description | ||||
"The default forwarding table type is ip."; | ||||
} | ||||
leaf explicit-tracking { | ||||
if-feature "explicit-tracking"; | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Track the IGMPv3 and MLDv2 snooping membership reports | ||||
from individual hosts. It contributes to saving network | ||||
resources and shortening leave latency."; | ||||
} | ||||
leaf lite-exclude-filter { | ||||
if-feature "lite-exclude-filter"; | ||||
type empty; | ||||
description | ||||
"For IGMP snooping, the presence of this | ||||
leaf enables the support of the simplified EXCLUDE filter | ||||
in the Lightweight IGMPv3 protocol, which simplifies the | ||||
standard versions of IGMPv3. | ||||
For MLD Snooping, the presence of this | ||||
leaf enables the support of the simplified EXCLUDE filter | ||||
in the Lightweight MLDv2 protocol, which simplifies the | ||||
standard versions of MLDv2."; | ||||
reference | ||||
"RFC 5790: Lightweight Internet Group Management Protocol | ||||
Version 3 (IGMPv3) and Multicast Listener Discovery Version | ||||
2 (MLDv2) Protocols"; | ||||
} | ||||
leaf send-query { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"When it is true, this switch will send out a periodic IGMP | ||||
General Query Message or MLD General Query Message."; | ||||
} | ||||
leaf fast-leave { | ||||
if-feature "fast-leave"; | ||||
type empty; | ||||
description | ||||
"When fast leave is enabled, the software assumes | ||||
that no more than one host is present on each VLAN port."; | ||||
} | ||||
leaf last-member-query-interval { | ||||
type uint16 { | ||||
range "10..10230"; | ||||
} | ||||
units "deciseconds"; | ||||
default "10"; | ||||
description | ||||
"Last Member Query Interval, which may be tuned to modify | ||||
the leave latency of the network. | ||||
It is represented in units of 1/10 second."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3, | ||||
Section 8.8"; | ||||
} | ||||
leaf query-interval { | ||||
type uint16; | ||||
units "seconds"; | ||||
default "125"; | ||||
description | ||||
"The Query Interval is the interval between General Queries | ||||
sent by the Querier."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3, | ||||
Sections 4.1.7, 8.2, and 8.14.2"; | ||||
} | ||||
leaf query-max-response-time { | ||||
type uint16; | ||||
units "deciseconds"; | ||||
default "100"; | ||||
description | ||||
"Query maximum response time specifies the maximum time | ||||
allowed before sending a responding report. | ||||
It is represented in units of 1/10 second."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3, | ||||
Sections 4.1.1, 8.3, and 8.14.3"; | ||||
} | ||||
leaf require-router-alert { | ||||
if-feature "require-router-alert"; | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"When the value is true, a router alert should exist | ||||
in the IP header of the IGMP or MLD packet. If it | ||||
doesn't exist, the IGMP or MLD packet will be ignored."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3, | ||||
Sections 9.1, 9.2, and 9.3"; | ||||
} | ||||
leaf robustness-variable { | ||||
type uint8 { | ||||
range "1..7"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"Querier's Robustness Variable allows tuning for the | ||||
expected packet loss on a network."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3, | ||||
Sections 4.1.6, 8.1, and 8.14.1"; | ||||
} | ||||
leaf-list static-bridge-mrouter-interface { | ||||
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; | ||||
if-feature "static-mrouter-interface"; | ||||
type if:interface-ref; | ||||
description | ||||
"Static mrouter interface in bridge forwarding"; | ||||
} | ||||
} // instance-config-attributes-igmp-mld-snooping | ||||
leaf last-reporter { | grouping instance-state-group-attributes-igmp-mld-snooping { | |||
type inet:ipv4-address; | description | |||
description | "Attributes for both IGMP and MLD snooping groups."; | |||
"Address of the last host which has sent report | leaf mac-address { | |||
to join the multicast group."; | type yang:phys-address; | |||
} | description | |||
"Destination MAC address for L2 multicast."; | ||||
} | ||||
leaf expire { | ||||
type rt-types:timer-value-seconds16; | ||||
units "seconds"; | ||||
description | ||||
"The time left before multicast group timeout."; | ||||
} | ||||
leaf up-time { | ||||
type uint32; | ||||
units "seconds"; | ||||
mandatory true; | ||||
description | ||||
"The time elapsed since the L2 multicast record was | ||||
created."; | ||||
} | ||||
} // instance-state-group-attributes-igmp-mld-snooping | ||||
list host { | grouping instance-state-attributes-igmp-mld-snooping { | |||
if-feature explicit-tracking; | description | |||
key "address"; | "State attributes for IGMP or MLD snooping instance."; | |||
description | leaf entries-count { | |||
"List of multicast membership hosts | type yang:gauge32; | |||
of the specific multicast source-group."; | config false; | |||
description | ||||
"The number of L2 multicast entries in IGMP and MLD | ||||
snooping."; | ||||
} | ||||
leaf-list bridge-mrouter-interface { | ||||
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; | ||||
type if:interface-ref; | ||||
config false; | ||||
description | ||||
"Indicates a list of mrouter interfaces dynamically learned | ||||
in a bridge. When this switch receives IGMP/MLD queries | ||||
from a multicast router on an interface, the interface will | ||||
become an mrouter interface for IGMP/MLD snooping."; | ||||
} | ||||
} // instance-config-attributes-igmp-mld-snooping | ||||
leaf address { | grouping instance-state-source-attributes-igmp-mld-snooping { | |||
type inet:ipv4-address; | description | |||
description | "State attributes for IGMP or MLD snooping instance."; | |||
"Multicast membership host address."; | leaf-list bridge-outgoing-interface { | |||
} | when 'derived-from-or-self(../../../l2-service-type, | |||
leaf filter-mode { | "ims:bridge")'; | |||
type filter-mode-type; | type if:interface-ref; | |||
mandatory true; | description | |||
description | "Outgoing interface in bridge forwarding."; | |||
"Filter mode for a multicast membership | } | |||
host may be either include or exclude."; | leaf up-time { | |||
} | type uint32; | |||
}// list host | units "seconds"; | |||
} // list source | mandatory true; | |||
} // list group | description | |||
"The time elapsed since L2 multicast record was created."; | ||||
} | ||||
leaf expire { | ||||
type rt-types:timer-value-seconds16; | ||||
units "seconds"; | ||||
description | ||||
"The time left before multicast group timeout."; | ||||
} | ||||
leaf host-count { | ||||
if-feature "explicit-tracking"; | ||||
type yang:gauge32; | ||||
description | ||||
"The number of host addresses."; | ||||
} | ||||
} // instance-state-source-attributes-igmp-mld-snooping | ||||
container interfaces { | grouping igmp-snooping-statistics { | |||
config false; | description | |||
"The statistics attributes for IGMP snooping."; | ||||
leaf query-count { | ||||
type yang:counter64; | ||||
description | description | |||
"Contains the interfaces associated with the IGMP snooping | "The number of Membership Query messages."; | |||
instance"; | reference | |||
"RFC 2236: Internet Group Management Protocol, Version 2"; | ||||
} | ||||
leaf membership-report-v1-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Membership Report messages."; | ||||
reference | ||||
"RFC 1112: Host extensions for IP multicasting"; | ||||
} | ||||
leaf membership-report-v2-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 2 Membership Report messages."; | ||||
reference | ||||
"RFC 2236: Internet Group Management Protocol, Version 2"; | ||||
} | ||||
leaf membership-report-v3-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 3 Membership Report messages."; | ||||
reference | ||||
"RFC 3376: Internet Group Management Protocol, Version 3"; | ||||
} | ||||
leaf leave-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Leave Group messages."; | ||||
reference | ||||
"RFC 2236: Internet Group Management Protocol, Version 2"; | ||||
} | ||||
leaf pim-hello-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of PIM hello messages."; | ||||
reference | ||||
"RFC 7761: Protocol Independent Multicast - Sparse Mode | ||||
(PIM-SM): Protocol Specification (Revised)"; | ||||
} | ||||
} // igmp-snooping-statistics | ||||
list interface { | grouping mld-snooping-statistics { | |||
key "name"; | description | |||
"The statistics attributes for MLD snooping."; | ||||
leaf query-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Multicast Listener Query messages."; | ||||
reference | ||||
"RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | ||||
for IPv6"; | ||||
} | ||||
leaf report-v1-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Multicast Listener Report."; | ||||
reference | ||||
"RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | ||||
} | ||||
leaf report-v2-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 2 Multicast Listener Report."; | ||||
reference | ||||
"RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | ||||
for IPv6"; | ||||
} | ||||
leaf done-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of Version 1 Multicast Listener Done."; | ||||
reference | ||||
"RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | ||||
} | ||||
leaf pim-hello-count { | ||||
type yang:counter64; | ||||
description | ||||
"The number of PIM hello messages."; | ||||
reference | ||||
"RFC 7761: Protocol Independent Multicast - Sparse Mode | ||||
(PIM-SM): Protocol Specification (Revised)"; | ||||
} | ||||
} // mld-snooping-statistics | ||||
augment "/rt:routing/rt:control-plane-protocols" | ||||
+ "/rt:control-plane-protocol" { | ||||
when 'derived-from-or-self(rt:type, "ims:igmp-snooping")' { | ||||
description | ||||
"This container is only valid for IGMP snooping."; | ||||
} | ||||
description | ||||
"IGMP snooping augmentation to control-plane protocol | ||||
configuration and state."; | ||||
container igmp-snooping-instance { | ||||
if-feature "igmp-snooping"; | ||||
description | ||||
"IGMP snooping instance to configure igmp-snooping."; | ||||
leaf l2-service-type { | ||||
type l2-service-type; | ||||
default "bridge"; | ||||
description | description | |||
"A list of interfaces associated with the IGMP snooping | "It indicates bridge or other services."; | |||
instance"; | } | |||
uses instance-config-attributes-igmp-mld-snooping; | ||||
leaf name { | leaf igmp-version { | |||
type uint8 { | ||||
range "1..3"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"IGMP version."; | ||||
} | ||||
leaf querier-source { | ||||
type inet:ipv4-address; | ||||
description | ||||
"The source address of the IGMP General Query message, | ||||
which is sent out by this switch."; | ||||
} | ||||
list static-l2-multicast-group { | ||||
if-feature "static-l2-multicast-group"; | ||||
key "group source-addr"; | ||||
description | ||||
"A static multicast route, (*,G) or (S,G)."; | ||||
leaf group { | ||||
type rt-types:ipv4-multicast-group-address; | ||||
description | ||||
"Multicast group IPv4 address."; | ||||
} | ||||
leaf source-addr { | ||||
type rt-types:ipv4-multicast-source-address; | ||||
description | ||||
"Multicast source IPv4 address."; | ||||
} | ||||
leaf-list bridge-outgoing-interface { | ||||
when 'derived-from-or-self(../../l2-service-type, | ||||
"ims:bridge")'; | ||||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The name of interface"; | "Outgoing interface in bridge forwarding."; | |||
} | } | |||
} // static-l2-multicast-group | ||||
container statistics { | uses instance-state-attributes-igmp-mld-snooping; | |||
list group { | ||||
key "address"; | ||||
config false; | ||||
description | ||||
"IGMP snooping information."; | ||||
leaf address { | ||||
type rt-types:ipv4-multicast-group-address; | ||||
description | description | |||
"The interface statistics for IGMP snooping"; | "Multicast group IPv4 address."; | |||
} | ||||
leaf discontinuity-time { | uses instance-state-group-attributes-igmp-mld-snooping; | |||
type yang:date-and-time; | leaf last-reporter { | |||
type inet:ipv4-address; | ||||
description | ||||
"Address of the last host that has sent a report to join | ||||
the multicast group."; | ||||
} | ||||
list source { | ||||
key "address"; | ||||
description | ||||
"Source IPv4 address for multicast stream."; | ||||
leaf address { | ||||
type rt-types:ipv4-multicast-source-address; | ||||
description | description | |||
"The time on the most recent occasion at which any one | "Source IPv4 address for multicast stream."; | |||
or more of the statistic counters suffered a | ||||
discontinuity. If no such discontinuities have | ||||
occurred since the last re-initialization of the local | ||||
management subsystem, then this node contains the time | ||||
the local management subsystem re-initialized | ||||
itself."; | ||||
} | } | |||
container received { | uses instance-state-source-attributes-igmp-mld-snooping; | |||
leaf last-reporter { | ||||
type inet:ipv4-address; | ||||
description | description | |||
"Number of received snooped IGMP packets"; | "Address of the last host that has sent a report | |||
to join the multicast group."; | ||||
uses igmp-snooping-statistics; | ||||
} | } | |||
container sent { | list host { | |||
if-feature "explicit-tracking"; | ||||
key "address"; | ||||
description | description | |||
"Number of sent snooped IGMP packets"; | "List of multicast membership hosts | |||
of the specific multicast source group."; | ||||
uses igmp-snooping-statistics; | leaf address { | |||
type inet:ipv4-address; | ||||
description | ||||
"Multicast membership host address."; | ||||
} | ||||
leaf filter-mode { | ||||
type filter-mode-type; | ||||
mandatory true; | ||||
description | ||||
"Filter mode for a multicast membership | ||||
host may be either include or exclude."; | ||||
} | ||||
} // list host | ||||
} // list source | ||||
} // list group | ||||
container interfaces { | ||||
config false; | ||||
description | ||||
"Contains the interfaces associated with the IGMP snooping | ||||
instance."; | ||||
list interface { | ||||
key "name"; | ||||
description | ||||
"A list of interfaces associated with the IGMP snooping | ||||
instance."; | ||||
leaf name { | ||||
type if:interface-ref; | ||||
description | ||||
"The name of the interface."; | ||||
} | ||||
container statistics { | ||||
description | ||||
"The interface statistics for IGMP snooping."; | ||||
leaf discontinuity-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"The time on the most recent occasion at which any | ||||
one or more of the statistic counters suffered a | ||||
discontinuity. If no such discontinuities have | ||||
occurred since the last re-initialization of the | ||||
local management subsystem, then this node contains | ||||
the time the local management subsystem | ||||
re-initialized itself."; | ||||
} | ||||
container received { | ||||
description | ||||
"Number of received snooped IGMP packets."; | ||||
uses igmp-snooping-statistics; | ||||
} | ||||
container sent { | ||||
description | ||||
"Number of sent snooped IGMP packets."; | ||||
uses igmp-snooping-statistics; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
} | action clear-igmp-snooping-groups { | |||
if-feature "action-clear-groups"; | ||||
action clear-igmp-snooping-groups { | ||||
if-feature action-clear-groups; | ||||
description | ||||
"Clear IGMP snooping cache tables."; | ||||
input { | ||||
leaf group { | ||||
type union { | ||||
type enumeration { | ||||
enum 'all-groups' { | ||||
description | ||||
"All multicast group addresses."; | ||||
} | ||||
} | ||||
type rt-types:ipv4-multicast-group-address; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Multicast group IPv4 address. If value 'all-groups' is | ||||
specified, all IGMP snooping group entries are cleared | ||||
for specified source address."; | ||||
} | ||||
leaf source { | ||||
type rt-types:ipv4-multicast-source-address; | ||||
mandatory true; | ||||
description | ||||
"Multicast source IPv4 address. If value '*' is specified, | ||||
all IGMP snooping source-group tables are cleared."; | ||||
} | ||||
} | ||||
} // action clear-igmp-snooping-groups | ||||
} // igmp-snooping-instance | ||||
} // augment | ||||
augment "/rt:routing/rt:control-plane-protocols"+ | ||||
"/rt:control-plane-protocol" { | ||||
when 'derived-from-or-self(rt:type, "ims:mld-snooping")' { | ||||
description | ||||
"This container is only valid for MLD snooping."; | ||||
} | ||||
description | ||||
"MLD snooping augmentation to control plane protocol | ||||
configuration and state."; | ||||
container mld-snooping-instance { | ||||
if-feature mld-snooping; | ||||
description | ||||
"MLD snooping instance to configure mld-snooping."; | ||||
leaf l2-service-type { | ||||
type l2-service-type; | ||||
default bridge; | ||||
description | ||||
"It indicates BRIDGE or other services."; | ||||
} | ||||
uses instance-config-attributes-igmp-mld-snooping; | ||||
leaf mld-version { | ||||
type uint8 { | ||||
range "1..2"; | ||||
} | ||||
default 2; | ||||
description "MLD version."; | ||||
} | ||||
leaf querier-source { | ||||
type inet:ipv6-address; | ||||
description | ||||
"The source address of MLD General Query message, | ||||
which is sent out by this switch."; | ||||
} | ||||
list static-l2-multicast-group { | ||||
if-feature static-l2-multicast-group; | ||||
key "group source-addr"; | ||||
description | ||||
"A static multicast route, (*,G) or (S,G)."; | ||||
leaf group { | ||||
type rt-types:ipv6-multicast-group-address; | ||||
description | ||||
"Multicast group IPv6 address"; | ||||
} | ||||
leaf source-addr { | ||||
type rt-types:ipv6-multicast-source-address; | ||||
description | ||||
"Multicast source IPv6 address."; | ||||
} | ||||
leaf-list bridge-outgoing-interface { | ||||
when 'derived-from-or-self(../../l2-service- | ||||
type,"ims:bridge")'; | ||||
type if:interface-ref; | ||||
description "Outgoing interface in BRIDGE forwarding"; | ||||
} | ||||
} // static-l2-multicast-group | ||||
uses instance-state-attributes-igmp-mld-snooping; | ||||
list group { | ||||
key "address"; | ||||
config false; | ||||
description "MLD snooping statistics information"; | ||||
leaf address { | ||||
type rt-types:ipv6-multicast-group-address; | ||||
description | ||||
"Multicast group IPv6 address"; | ||||
} | ||||
uses instance-state-group-attributes-igmp-mld-snooping; | ||||
leaf last-reporter { | ||||
type inet:ipv6-address; | ||||
description | ||||
"Address of the last host which has sent report | ||||
to join the multicast group."; | ||||
} | ||||
list source { | ||||
key "address"; | ||||
description "Source IPv6 address for multicast stream"; | ||||
leaf address { | ||||
type rt-types:ipv6-multicast-source-address; | ||||
description "Source IPv6 address for multicast stream"; | ||||
} | ||||
uses instance-state-source-attributes-igmp-mld-snooping; | ||||
leaf last-reporter { | ||||
type inet:ipv6-address; | ||||
description | description | |||
"Address of the last host which has sent report | "Clear IGMP snooping cache tables."; | |||
to join the multicast group."; | input { | |||
} | leaf group { | |||
type union { | ||||
list host { | type enumeration { | |||
if-feature explicit-tracking; | enum all-groups { | |||
key "address"; | description | |||
description | "All multicast group addresses."; | |||
"List of multicast membership hosts | } | |||
of the specific multicast source-group."; | } | |||
type rt-types:ipv4-multicast-group-address; | ||||
leaf address { | } | |||
type inet:ipv6-address; | mandatory true; | |||
description | description | |||
"Multicast membership host address."; | "Multicast group IPv4 address. If value | |||
} | 'all-groups' is specified, all IGMP snooping | |||
leaf filter-mode { | group entries are cleared for the specified source | |||
type filter-mode-type; | address."; | |||
mandatory true; | } | |||
description | leaf source { | |||
"Filter mode for a multicast membership | type rt-types:ipv4-multicast-source-address; | |||
host may be either include or exclude."; | mandatory true; | |||
} | description | |||
}// list host | "Multicast source IPv4 address. If value '*' is | |||
} // list source | specified, all IGMP snooping source-group tables | |||
} // list group | are cleared."; | |||
} | ||||
container interfaces { | } | |||
config false; | } // action clear-igmp-snooping-groups | |||
} // igmp-snooping-instance | ||||
} // augment | ||||
augment "/rt:routing/rt:control-plane-protocols" | ||||
+ "/rt:control-plane-protocol" { | ||||
when 'derived-from-or-self(rt:type, "ims:mld-snooping")' { | ||||
description | description | |||
"Contains the interfaces associated with the MLD snooping | "This container is only valid for MLD snooping."; | |||
instance"; | } | |||
description | ||||
list interface { | "MLD snooping augmentation to control-plane protocol | |||
key "name"; | configuration and state."; | |||
container mld-snooping-instance { | ||||
if-feature "mld-snooping"; | ||||
description | ||||
"MLD snooping instance to configure mld-snooping."; | ||||
leaf l2-service-type { | ||||
type l2-service-type; | ||||
default "bridge"; | ||||
description | description | |||
"A list of interfaces associated with the MLD snooping | "It indicates bridge or other services."; | |||
instance"; | } | |||
uses instance-config-attributes-igmp-mld-snooping; | ||||
leaf name { | leaf mld-version { | |||
type uint8 { | ||||
range "1..2"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"MLD version."; | ||||
} | ||||
leaf querier-source { | ||||
type inet:ipv6-address; | ||||
description | ||||
"The source address of MLD General Query message, which | ||||
is sent out by this switch."; | ||||
} | ||||
list static-l2-multicast-group { | ||||
if-feature "static-l2-multicast-group"; | ||||
key "group source-addr"; | ||||
description | ||||
"A static multicast route, (*,G) or (S,G)."; | ||||
leaf group { | ||||
type rt-types:ipv6-multicast-group-address; | ||||
description | ||||
"Multicast group IPv6 address."; | ||||
} | ||||
leaf source-addr { | ||||
type rt-types:ipv6-multicast-source-address; | ||||
description | ||||
"Multicast source IPv6 address."; | ||||
} | ||||
leaf-list bridge-outgoing-interface { | ||||
when 'derived-from-or-self(../../l2-service-type, | ||||
"ims:bridge")'; | ||||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The name of interface"; | "Outgoing interface in bridge forwarding."; | |||
} | } | |||
} // static-l2-multicast-group | ||||
container statistics { | uses instance-state-attributes-igmp-mld-snooping; | |||
list group { | ||||
key "address"; | ||||
config false; | ||||
description | ||||
"MLD snooping statistics information."; | ||||
leaf address { | ||||
type rt-types:ipv6-multicast-group-address; | ||||
description | description | |||
"The interface statistics for MLD snooping"; | "Multicast group IPv6 address."; | |||
} | ||||
leaf discontinuity-time { | uses instance-state-group-attributes-igmp-mld-snooping; | |||
type yang:date-and-time; | leaf last-reporter { | |||
type inet:ipv6-address; | ||||
description | ||||
"Address of the last host that has sent report | ||||
to join the multicast group."; | ||||
} | ||||
list source { | ||||
key "address"; | ||||
description | ||||
"Source IPv6 address for multicast stream."; | ||||
leaf address { | ||||
type rt-types:ipv6-multicast-source-address; | ||||
description | description | |||
"The time on the most recent occasion at which any one | "Source IPv6 address for multicast stream."; | |||
or more of the statistic counters suffered a | ||||
discontinuity. If no such discontinuities have | ||||
occurred since the last re-initialization of the local | ||||
management subsystem, then this node contains the time | ||||
the local management subsystem re-initialized | ||||
itself."; | ||||
} | } | |||
container received { | uses instance-state-source-attributes-igmp-mld-snooping; | |||
leaf last-reporter { | ||||
type inet:ipv6-address; | ||||
description | description | |||
"Number of received snooped MLD packets"; | "Address of the last host that has sent report | |||
to join the multicast group."; | ||||
uses mld-snooping-statistics; | ||||
} | } | |||
container sent { | list host { | |||
if-feature "explicit-tracking"; | ||||
key "address"; | ||||
description | description | |||
"Number of sent snooped MLD packets"; | "List of multicast membership hosts | |||
of the specific multicast source group."; | ||||
uses mld-snooping-statistics; | leaf address { | |||
type inet:ipv6-address; | ||||
description | ||||
"Multicast membership host address."; | ||||
} | ||||
leaf filter-mode { | ||||
type filter-mode-type; | ||||
mandatory true; | ||||
description | ||||
"Filter mode for a multicast membership | ||||
host may be either include or exclude."; | ||||
} | ||||
} // list host | ||||
} // list source | ||||
} // list group | ||||
container interfaces { | ||||
config false; | ||||
description | ||||
"Contains the interfaces associated with the MLD snooping | ||||
instance."; | ||||
list interface { | ||||
key "name"; | ||||
description | ||||
"A list of interfaces associated with the MLD snooping | ||||
instance."; | ||||
leaf name { | ||||
type if:interface-ref; | ||||
description | ||||
"The name of the interface."; | ||||
} | ||||
container statistics { | ||||
description | ||||
"The interface statistics for MLD snooping."; | ||||
leaf discontinuity-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"The time on the most recent occasion at which | ||||
any one or more of the statistic counters suffered | ||||
a discontinuity. If no such discontinuities have | ||||
occurred since the last re-initialization of the | ||||
local management subsystem, then this node contains | ||||
the time the local management subsystem | ||||
re-initialized itself."; | ||||
} | ||||
container received { | ||||
description | ||||
"Number of received snooped MLD packets."; | ||||
uses mld-snooping-statistics; | ||||
} | ||||
container sent { | ||||
description | ||||
"Number of sent snooped MLD packets."; | ||||
uses mld-snooping-statistics; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
} | action clear-mld-snooping-groups { | |||
if-feature "action-clear-groups"; | ||||
action clear-mld-snooping-groups { | description | |||
if-feature action-clear-groups; | "Clear MLD snooping cache tables."; | |||
description | input { | |||
"Clear MLD snooping cache tables."; | leaf group { | |||
type union { | ||||
input { | type enumeration { | |||
leaf group { | enum all-groups { | |||
type union { | description | |||
type enumeration { | "All multicast group addresses."; | |||
enum 'all-groups' { | } | |||
description | } | |||
"All multicast group addresses."; | type rt-types:ipv6-multicast-group-address; | |||
} | } | |||
} | mandatory true; | |||
type rt-types:ipv6-multicast-group-address; | description | |||
} | "Multicast group IPv6 address. If value 'all-groups' | |||
mandatory true; | is specified, all MLD snooping group entries are | |||
description | cleared for the specified source address."; | |||
"Multicast group IPv6 address. If value 'all-groups' is | } | |||
specified, all MLD snooping group entries are cleared | leaf source { | |||
for specified source address."; | type rt-types:ipv6-multicast-source-address; | |||
} | mandatory true; | |||
leaf source { | description | |||
type rt-types:ipv6-multicast-source-address; | "Multicast source IPv6 address. If value '*' is | |||
mandatory true; | specified, all MLD snooping source-group tables | |||
description | are cleared."; | |||
"Multicast source IPv6 address. If value '*' is specified, | } | |||
all MLD snooping source-group tables are cleared."; | } | |||
} | } // action clear-mld-snooping-groups | |||
} | } // mld-snooping-instance | |||
} // action clear-mld-snooping-groups | } // augment | |||
}// mld-snooping-instance | ||||
} // augment | ||||
augment "/dot1q:bridges/dot1q:bridge" { | ||||
description | ||||
"Use IGMP & MLD snooping instance in BRIDGE."; | ||||
leaf igmp-snooping-instance { | ||||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure IGMP snooping instance under bridge view"; | ||||
} | ||||
leaf mld-snooping-instance { | ||||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure MLD snooping instance under bridge view"; | ||||
} | ||||
} | ||||
augment "/dot1q:bridges/dot1q:bridge"+ | augment "/dot1q:bridges/dot1q:bridge" { | |||
"/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" { | description | |||
description | "Use IGMP or MLD snooping instance in bridge."; | |||
"Use IGMP & MLD snooping instance in certain VLAN of BRIDGE"; | leaf igmp-snooping-instance { | |||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure IGMP snooping instance under bridge view."; | ||||
} | ||||
leaf mld-snooping-instance { | ||||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure MLD snooping instance under bridge view."; | ||||
} | ||||
} | ||||
leaf igmp-snooping-instance { | augment "/dot1q:bridges/dot1q:bridge" | |||
type igmp-mld-snooping-instance-ref; | + "/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" { | |||
description | description | |||
"Configure IGMP snooping instance under VLAN view"; | "Use IGMP or MLD snooping instance in a certain VLAN | |||
} | of bridge."; | |||
leaf igmp-snooping-instance { | ||||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure IGMP snooping instance under VLAN view."; | ||||
} | ||||
leaf mld-snooping-instance { | ||||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure MLD snooping instance under VLAN view."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
leaf mld-snooping-instance { | 5. Security Considerations | |||
type igmp-mld-snooping-instance-ref; | ||||
description | ||||
"Configure MLD snooping instance under VLAN view"; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
5. Security Considerations | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | ||||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | ||||
is the secure transport layer, and the mandatory-to-implement secure | ||||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | ||||
is HTTPS, and the mandatory-to-implement secure transport is TLS | ||||
[RFC8446]. | ||||
The YANG module specified in this document defines a schema for data | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
that is designed to be accessed via network management protocols such as | provides the means to restrict access for particular NETCONF or | |||
NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
secure transport layer, and the mandatory-to-implement secure transport | RESTCONF protocol operations and content. | |||
is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and | ||||
the mandatory-to-implement secure transport is TLS [RFC8446]. | ||||
The Network Configuration Access Control Model (NACM) [RFC8341] provides | There are a number of data nodes defined in this YANG module that are | |||
the means to restrict access for particular NETCONF or RESTCONF users to | writable/creatable/deletable (i.e., config true, which is the | |||
a preconfigured subset of all available NETCONF or RESTCONF protocol | default). These data nodes may be considered sensitive or vulnerable | |||
operations and content. | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | ||||
effect on network operations. These are the subtrees and data nodes | ||||
and their sensitivity/vulnerability: | ||||
There are a number of data nodes defined in this YANG module that are | Under /rt:routing/rt:control-plane-protocols/rt:control-plane- | |||
writable/creatable/deletable (i.e., config true, which is the default). | protocol:/ | |||
These data nodes may be considered sensitive or vulnerable in some | ||||
network environments. Write operations (e.g., edit-config) to these data | ||||
nodes without proper protection can have a negative effect on network | ||||
operations. These are the subtrees and data nodes and their | ||||
sensitivity/vulnerability: | ||||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | ims:igmp-snooping-instance | |||
ims:igmp-snooping-instance | ims:mld-snooping-instance | |||
ims:mld-snooping-instance | The subtrees under /dot1q:bridges/dot1q:bridge | |||
The subtrees under /dot1q:bridges/dot1q:bridge | ims:igmp-snooping-instance | |||
ims:igmp-snooping-instance | ims:mld-snooping-instance | |||
ims:mld-snooping-instance | The subtrees under /dot1q:bridges/dot1q:bridge/dot1q:component/ | |||
dot1q:bridge-vlan/dot1q:vlan | ||||
The subtrees under /dot1q:bridges/dot1q:bridge/dot1q:component | ims:igmp-snooping-instance | |||
/dot1q:bridge-vlan/dot1q:vlan | ||||
ims:igmp-snooping-instance | ims:mld-snooping-instance | |||
ims:mld-snooping-instance | Unauthorized access to any data node of these subtrees can adversely | |||
affect the IGMP and MLD snooping subsystem of both the local device | ||||
and the network. This may lead to network malfunctions, delivery of | ||||
packets to inappropriate destinations, and other problems. | ||||
Unauthorized access to any data node of these subtrees can adversely | Some of the readable data nodes in this YANG module may be considered | |||
affect the IGMP & MLD Snooping subsystem of both the local device and | sensitive or vulnerable in some network environments. It is thus | |||
the network. This may lead to network malfunctions, delivery of packets | important to control read access (e.g., via get, get-config, or | |||
to inappropriate destinations, and other problems. | notification) to these data nodes. These are the subtrees and data | |||
nodes and their sensitivity/vulnerability: | ||||
Some of the readable data nodes in this YANG module may be considered | Under /rt:routing/rt:control-plane-protocols/rt:control-plane- | |||
sensitive or vulnerable in some network environments. It is thus | protocol:/ | |||
important to control read access (e.g., via get, get-config, or | ||||
notification) to these data nodes. These are the subtrees and data nodes | ||||
and their sensitivity/vulnerability: | ||||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | ims:igmp-snooping-instance | |||
ims:igmp-snooping-instance | ims:mld-snooping-instance | |||
ims:mld-snooping-instance | Unauthorized access to any data node of these subtrees can disclose | |||
the operational state information of IGMP and MLD snooping on this | ||||
device. The group/source/host information may expose multicast group | ||||
memberships and, transitively, the associations between the user on | ||||
the host and the contents from the source, which could be privately | ||||
sensitive. Some of the action operations in this YANG module may be | ||||
considered sensitive or vulnerable in some network environments. It | ||||
is thus important to control access to these operations. These are | ||||
the operations and their sensitivity/vulnerability: | ||||
Unauthorized access to any data node of these subtrees can disclose the | Under /rt:routing/rt:control-plane-protocols/rt:control-plane- | |||
operational state information of IGMP & MLD Snooping on this device. The | protocol:/ | |||
group/source/host information may expose multicast group memberships, | ||||
and transitively the associations between the user on the host and the | ||||
contents from the source which could be privately sensitive. Some of the | ||||
action operations in this YANG module may be considered sensitive or | ||||
vulnerable in some network environments. It is thus important to control | ||||
access to these operations. These are the operations and their | ||||
sensitivity/vulnerability: | ||||
Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ | ims:igmp-snooping-instance/ims:clear-igmp-snooping-groups | |||
ims:igmp-snooping-instance/ims:clear-igmp-snooping-groups | ims:mld-snooping-instance/ims:clear-mld-snooping-groups | |||
ims:mld-snooping-instance/ims:clear-mld-snooping-groups | Some of the actions in this YANG module may be considered sensitive | |||
Some of the actions in this YANG module may be considered sensitive or | or vulnerable in some network environments. The IGMP and MLD | |||
vulnerable in some network environments. The IGMP & MLD Snooping YANG | snooping YANG module supports the "clear-igmp-snooping-groups" and | |||
module supports the "clear-igmp-snooping-groups" and "clear-mld- | "clear-mld-snooping-groups" actions. If unauthorized action is | |||
snooping-groups" actions. If unauthorized action is invoked, the IGMP | invoked, the IGMP and MLD snooping group tables will be cleared | |||
and MLD Snooping group tables will be cleared unexpectedly. Especially | unexpectedly. Especially when using wildcard, all the multicast | |||
when using wildcard, all the multicast traffic will be flooded in the | traffic will be flooded in the broadcast domain. The devices that | |||
broadcast domain. The devices that use this YANG module should heed the | use this YANG module should heed the security considerations in | |||
Security Considerations in [RFC4541]. | [RFC4541]. | |||
6. IANA Considerations | 6. IANA Considerations | |||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | 6.1. XML Registry | |||
actual RFC number (and remove this note). | ||||
6.1. XML Registry | This document registers the following namespace URI in the "IETF XML | |||
Registry" [RFC3688]: | ||||
This document registers the following namespace URIs in the IETF XML | URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping | |||
Registrant Contact: The IETF. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
registry [RFC3688]: | 6.2. YANG Module Names Registry | |||
URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping | This document registers the following YANG module in the "YANG Module | |||
Registrant Contact: The IETF. | Names" registry [RFC7950]: | |||
XML: N/A, the requested URI is an XML namespace. | ||||
6.2. YANG Module Names Registry | Name: ietf-igmp-mld-snooping | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping | ||||
Prefix: ims | ||||
Reference: RFC 9166 | ||||
This document registers the following YANG modules in the YANG Module | 7. References | |||
Names registry [RFC7950]: | ||||
name: ietf-igmp-mld-snooping | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping | ||||
prefix: ims | ||||
reference: RFC XXXX | ||||
7. References | ||||
7.1. Normative References | 7.1. Normative References | |||
[dot1Qcp] IEEE, "Standard for Local and metropolitan area networks-- | [dot1Qcp] IEEE, "Standard for Local and metropolitan area networks-- | |||
Bridges and Bridged Networks--Amendment 30: YANG Data | Bridges and Bridged Networks--Amendment 30: YANG Data | |||
Model", IEEE Std 802.1Qcp-2018 (Revision of IEEE Std | Model", IEEE Std 802.1Qcp-2018, | |||
802.1Q-2014), September 2018, | DOI 10.1109/IEEESTD.2018.8467507, September 2018, | |||
<https://ieeexplore.ieee.org/servlet/opac?punumber=8467505> | <https://ieeexplore.ieee.org/servlet/ | |||
opac?punumber=8467505>. | ||||
[RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | |||
RFC 1112, August 1989. | RFC 1112, DOI 10.17487/RFC1112, August 1989, | |||
<https://www.rfc-editor.org/info/rfc1112>. | ||||
[RFC2236] W. Fenner, "Internet Group Management Protocol, Version 2", | [RFC2236] Fenner, W., "Internet Group Management Protocol, Version | |||
RFC 2236, November 1997. | 2", RFC 2236, DOI 10.17487/RFC2236, November 1997, | |||
<https://www.rfc-editor.org/info/rfc2236>. | ||||
[RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast | [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast | |||
Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. | Listener Discovery (MLD) for IPv6", RFC 2710, | |||
DOI 10.17487/RFC2710, October 1999, | ||||
<https://www.rfc-editor.org/info/rfc2710>. | ||||
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | |||
Thyagarajan, "Internet Group Management Protocol, Version | Thyagarajan, "Internet Group Management Protocol, Version | |||
3", RFC 3376, October 2002. | 3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | |||
<https://www.rfc-editor.org/info/rfc3376>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
2004. | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | ||||
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery | [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | |||
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. | Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | |||
DOI 10.17487/RFC3810, June 2004, | ||||
<https://www.rfc-editor.org/info/rfc3810>. | ||||
[RFC4286] B. Haberman and J. Martin, "Multicast Router Discovery", | [RFC4286] Haberman, B. and J. Martin, "Multicast Router Discovery", | |||
RFC 4286, December 2005. | RFC 4286, DOI 10.17487/RFC4286, December 2005, | |||
<https://www.rfc-editor.org/info/rfc4286>. | ||||
[RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations | [RFC4541] Christensen, M., Kimball, K., and F. Solensky, | |||
for Internet Group Management Protocol (IGMP) and Multicast | "Considerations for Internet Group Management Protocol | |||
Listener Discovery (MLD) Snooping Switches", RFC 4541, May | (IGMP) and Multicast Listener Discovery (MLD) Snooping | |||
2006. | Switches", RFC 4541, DOI 10.17487/RFC4541, May 2006, | |||
<https://www.rfc-editor.org/info/rfc4541>. | ||||
[RFC5790] H. Liu, W. Cao, H. Asaeda, "Lightweight Internet Group | [RFC5790] Liu, H., Cao, W., and H. Asaeda, "Lightweight Internet | |||
Management Protocol Version 3 (IGMPv3) and Multicast | Group Management Protocol Version 3 (IGMPv3) and Multicast | |||
Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, | Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, | |||
February 2010. | DOI 10.17487/RFC5790, February 2010, | |||
<https://www.rfc-editor.org/info/rfc5790>. | ||||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
October 2010. | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed., A. | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
Bierman, Ed., "Network Configuration Protocol (NETCONF)", | and A. Bierman, Ed., "Network Configuration Protocol | |||
RFC 6241, June 2011. | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC6636] H. Asaeda, H. Liu, Q. Wu, "Tuning the Behavior of the | [RFC6636] Asaeda, H., Liu, H., and Q. Wu, "Tuning the Behavior of | |||
Internet Group Management Protocol (IGMP) and Multicast | the Internet Group Management Protocol (IGMP) and | |||
Listener Discovery (MLD) for Routers in Mobile and Wireless | Multicast Listener Discovery (MLD) for Routers in Mobile | |||
Networks", RFC 6636, May 2012. | and Wireless Networks", RFC 6636, DOI 10.17487/RFC6636, | |||
May 2012, <https://www.rfc-editor.org/info/rfc6636>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
July 2013. | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | ||||
[RFC7761] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, R. Parekh, | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
Z. Zhang, L. Zheng, "Protocol Independent Multicast - | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Sparse Mode (PIM-SM): Protocol Specification (Revised)", | Multicast - Sparse Mode (PIM-SM): Protocol Specification | |||
RFC 7761, March 2016. | (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | |||
2016, <https://www.rfc-editor.org/info/rfc7761>. | ||||
[RFC7950] M. Bjorklund, Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, August 2016. | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | ||||
[RFC8040] A. Bierman, M. Bjorklund, K. Watsen, "RESTCONF Protocol", | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
RFC 8040, January 2017. | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
[RFC8294] X. Liu, Y. Qu, A. Lindem, C. Hopps, L. Berger, "Common YANG | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
Data Types for the Routing Area", RFC 8294, December 2017. | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
DOI 10.17487/RFC8294, December 2017, | ||||
<https://www.rfc-editor.org/info/rfc8294>. | ||||
[RFC8340] M. Bjorklund, and L. Berger, Ed., "YANG Tree Diagrams", RFC | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
8340, March 2018. | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | ||||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Control Model", RFC 8341, March 2018. | Access Control Model", STD 91, RFC 8341, | |||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8342] M. Bjorklund and J. Schoenwaelder, "Network Management | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
Datastore Architecture (NMDA)", RFC 8342, March 2018. | and R. Wilton, "Network Management Datastore Architecture | |||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8342>. | ||||
[RFC8343] M. Bjorklund, "A YANG Data Model for Interface Management", | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
RFC 8343, March 2018. | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8343>. | ||||
[RFC8349] L. Lhotka, A. Lindem, Y. Qu, "A YANG Data Model for Routing | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
Management (NMDA Version)", RFC 8349, March 2018. | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8349>. | ||||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, August 2018. | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
7.2. Informative References | 7.2. Informative References | |||
[RFC7951] L. Lhotka, "JSON Encoding of Data Modeled with YANG", RFC | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
7951, August 2016. | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7951>. | ||||
[RFC8407] A. Bierman, "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
Documents Containing YANG Data Models", RFC 8407, October | Documents Containing YANG Data Models", BCP 216, RFC 8407, | |||
2018. | DOI 10.17487/RFC8407, October 2018, | |||
<https://www.rfc-editor.org/info/rfc8407>. | ||||
[RFC8652] X. Liu, F. Guo, M. Sivakumar, P. McAllister, A. Peter, "A | [RFC8652] Liu, X., Guo, F., Sivakumar, M., McAllister, P., and A. | |||
YANG Data Model for the Internet Group Management Protocol | Peter, "A YANG Data Model for the Internet Group | |||
(IGMP) and Multicast Listener Discovery (MLD)", RFC 8652, | Management Protocol (IGMP) and Multicast Listener | |||
November 2019. | Discovery (MLD)", RFC 8652, DOI 10.17487/RFC8652, November | |||
2019, <https://www.rfc-editor.org/info/rfc8652>. | ||||
Appendix A. Data Tree Example | Appendix A. Data Tree Example | |||
This section contains an example for bridge service in the JSON encoding | This section contains an example of bridge service in the JSON | |||
[RFC7951], containing both configuration and state data. | encoding [RFC7951], containing both configuration and state data. | |||
+-----------+ | +-----------+ | |||
+ Source + | + Source + | |||
+-----+-----+ | +-----+-----+ | |||
| | | | |||
-----------------+---------------------------- | -----------------+---------------------------- | |||
|eth1/1 | |eth1/1 | |||
+---+---+ | +---+---+ | |||
+ R1 + | + R1 + | |||
+-+---+-+ | +-+---+-+ | |||
skipping to change at page 36, line 42 ¶ | skipping to change at line 1752 ¶ | |||
+---+---+ +--+---+ | +---+---+ +--+---+ | |||
eth2/2 | | eth3/2 | eth2/2 | | eth3/2 | |||
| | | | | | |||
---------------+----------+------------------- | ---------------+----------+------------------- | |||
| | | | | | |||
| | | | | | |||
+--------+--+ +---+--------+ | +--------+--+ +---+--------+ | |||
+ Receiver1 + + Receiver2 + | + Receiver1 + + Receiver2 + | |||
+-----------+ +------------+ | +-----------+ +------------+ | |||
The configuration data for R1 in the above figure could be as follows: | The configuration data for R1 in the above figure could be as | |||
follows: | ||||
{ | ||||
"ietf-interfaces:interfaces":{ | ||||
"interface":[ | ||||
{ | { | |||
"name":"eth1/1", | "ietf-interfaces:interfaces":{ | |||
"type":"iana-if-type:ethernetCsmacd" | "interface":[ | |||
} | { | |||
] | "name":"eth1/1", | |||
"type":"iana-if-type:ethernetCsmacd" | ||||
}, | } | |||
"ietf-routing:routing":{ | ] | |||
"control-plane-protocols":{ | }, | |||
"control-plane-protocol":[ | "ietf-routing:routing":{ | |||
{ | "control-plane-protocols":{ | |||
"type":"ietf-igmp-mld-snooping:igmp-snooping", | "control-plane-protocol":[ | |||
"name":"bis1", | { | |||
"ietf-igmp-mld-snooping:igmp-snooping-instance":{ | "type":"ietf-igmp-mld-snooping:igmp-snooping", | |||
"l2-service-type":"ietf-igmp-mld-snooping:bridge", | "name":"bis1", | |||
"enable":true | "ietf-igmp-mld-snooping:igmp-snooping-instance":{ | |||
"l2-service-type":"ietf-igmp-mld-snooping:bridge", | ||||
"enabled":true | ||||
} | ||||
} | ||||
] | ||||
} | } | |||
} | }, | |||
] | "ieee802-dot1q-bridge:bridges":{ | |||
} | "bridge":[ | |||
}, | { | |||
"ieee802-dot1q-bridge:bridges":{ | "name":"isp1", | |||
"bridge":[ | "address":"00-23-ef-a5-77-12", | |||
{ | "bridge-type":"ieee802-dot1q-bridge:customer-vlan-bridge", | |||
"name":"isp1", | "component":[ | |||
"address":"00-23-ef-a5-77-12", | ||||
"bridge-type":"ieee802-dot1q-bridge:customer-vlan-bridge", | ||||
"component":[ | ||||
{ | ||||
"name":"comp1", | ||||
"type":"ieee802-dot1q-bridge:c-vlan-component", | ||||
"bridge-vlan":{ | ||||
"vlan":[ | ||||
{ | { | |||
"vid":101, | "name":"comp1", | |||
"ietf-igmp-mld-snooping:igmp-snooping-instance":"bis1" | "type":"ieee802-dot1q-bridge:c-vlan-component", | |||
"bridge-vlan":{ | ||||
"vlan":[ | ||||
{ | ||||
"vid":101, | ||||
"ietf-igmp-mld-snooping:igmp-snooping-instance":"bis1" | ||||
} | ||||
] | ||||
} | ||||
} | } | |||
] | ] | |||
} | } | |||
} | ] | |||
] | } | |||
} | } | |||
] | ||||
} | ||||
} | ||||
The corresponding operational state data for R1 could be as follows: | The corresponding operational state data for R1 could be as follows: | |||
{ | ||||
"ietf-interfaces:interfaces": { | ||||
"interface": [ | ||||
{ | { | |||
"name": "eth1/1", | "ietf-interfaces:interfaces": { | |||
"type": "iana-if-type:ethernetCsmacd", | "interface": [ | |||
"oper-status": "up", | { | |||
"statistics": { | "name": "eth1/1", | |||
"discontinuity-time": "2018-05-23T12:34:56-05:00" | "type": "iana-if-type:ethernetCsmacd", | |||
"oper-status": "up", | ||||
} | "statistics": { | |||
} | "discontinuity-time": "2018-05-23T12:34:56-05:00" | |||
] | } | |||
}, | } | |||
"ietf-routing:routing": { | ] | |||
"control-plane-protocols": { | }, | |||
"control-plane-protocol": [ | "ietf-routing:routing": { | |||
{ | "control-plane-protocols": { | |||
"type": "ietf-igmp-mld-snooping:igmp-snooping", | "control-plane-protocol": [ | |||
"name": "bis1", | { | |||
"ietf-igmp-mld-snooping:igmp-snooping-instance": { | "type": "ietf-igmp-mld-snooping:igmp-snooping", | |||
"l2-service-type": "ietf-igmp-mld-snooping:bridge", | "name": "bis1", | |||
"enable": true | "ietf-igmp-mld-snooping:igmp-snooping-instance": { | |||
"l2-service-type": "ietf-igmp-mld-snooping:bridge", | ||||
"enabled": true | ||||
} | ||||
} | ||||
] | ||||
} | } | |||
} | }, | |||
] | "ieee802-dot1q-bridge:bridges": { | |||
} | "bridge": [ | |||
}, | { | |||
"ieee802-dot1q-bridge:bridges": { | "name": "isp1", | |||
"bridge": [ | "address": "00-23-ef-a5-77-12", | |||
{ | "bridge-type": "ieee802-dot1q-bridge:customer-vlan-bridge", | |||
"name": "isp1", | "component": [ | |||
"address": "00-23-ef-a5-77-12", | ||||
"bridge-type": "ieee802-dot1q-bridge:customer-vlan-bridge", | ||||
"component": [ | ||||
{ | ||||
"name": "comp1", | ||||
"type": "ieee802-dot1q-bridge:c-vlan-component", | ||||
"bridge-vlan": { | ||||
"vlan": [ | ||||
{ | { | |||
"vid": 101, | "name": "comp1", | |||
"ietf-igmp-mld-snooping:igmp-snooping-instance": "bis1" | "type": "ieee802-dot1q-bridge:c-vlan-component", | |||
"bridge-vlan": { | ||||
"vlan": [ | ||||
{ | ||||
"vid": 101, | ||||
"ietf-igmp-mld-snooping:igmp-snooping-instance": "bis1" | ||||
} | ||||
] | ||||
} | ||||
} | } | |||
] | ] | |||
} | } | |||
} | ] | |||
] | } | |||
} | } | |||
] | ||||
} | ||||
} | ||||
The following action is to clear all the entries whose group address is | ||||
225.1.1.1 for igmp-snooping-instance bis1. | ||||
POST /restconf/operations/ietf-routing:routing/control-plane-protocols/\ | The following action is to clear all the entries whose group address | |||
control-plane-protocol=ietf-igmp-mld-snooping:igmp-snooping,bis1/\ | is 225.1.1.1 for igmp-snooping-instance bis1. | |||
ietf-igmp-mld-snooping:igmp-snooping-instance/\ | ||||
clear-igmp-snooping-groups HTTP/1.1 | POST /restconf/operations/ietf-routing:routing/\ | |||
Host: example.com | control-plane-protocols/\ | |||
Content-Type: application/yang-data+json | control-plane-protocol=ietf-igmp-mld-snooping:igmp-snooping,bis1/\ | |||
{ | ietf-igmp-mld-snooping:igmp-snooping-instance/\ | |||
"ietf-igmp-mld-snooping:input" : { | clear-igmp-snooping-groups HTTP/1.1 | |||
"group": "225.1.1.1", | Host: example.com | |||
"source": "*" | Content-Type: application/yang-data+json | |||
} | ||||
} | { | |||
"ietf-igmp-mld-snooping:input" : { | ||||
"group": "225.1.1.1", | ||||
"source": "*" | ||||
} | ||||
} | ||||
Authors' Addresses | Authors' Addresses | |||
Hongji Zhao | Hongji Zhao | |||
Ericsson (China) Communications Company Ltd. | Ericsson (China) Communications Company Ltd. | |||
Ericsson Tower, No. 5 Lize East Street, | Ericsson Tower, No. 5 Lize East Street | |||
Chaoyang District Beijing 100102, China | Beijing | |||
100102 | ||||
China | ||||
Email: hongji.zhao@ericsson.com | Email: hongji.zhao@ericsson.com | |||
Xufeng Liu | Xufeng Liu | |||
Volta Networks | IBM Corporation | |||
USA | 2300 Dulles Station Blvd. | |||
Herndon, VA 20171 | ||||
United States of America | ||||
EMail: xufeng.liu.ietf@gmail.com | Email: xufeng.liu.ietf@gmail.com | |||
Yisong Liu | Yisong Liu | |||
China Mobile | China Mobile | |||
China | China | |||
Email: liuyisong@chinamobile.com | Email: liuyisong@chinamobile.com | |||
Anish Peter | Anish Peter | |||
Individual | Individual | |||
EMail: anish.ietf@gmail.com | Email: anish.ietf@gmail.com | |||
Mahesh Sivakumar | Mahesh Sivakumar | |||
Juniper Networks | Juniper Networks | |||
1133 Innovation Way | 1133 Innovation Way | |||
Sunnyvale, California | Sunnyvale, CA | |||
USA | United States of America | |||
EMail: sivakumar.mahesh@gmail.com | Email: sivakumar.mahesh@gmail.com | |||
End of changes. 241 change blocks. | ||||
1601 lines changed or deleted | 1596 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |