draft-ietf-pim-igmp-mld-yang-10.txt   draft-ietf-pim-igmp-mld-yang-11.txt 
PIM Working Group X. Liu PIM Working Group X. Liu
Internet-Draft Volta Internet-Draft Volta Networks
Intended Status: Standard Track F. Guo Intended Status: Standard Track F. Guo
Expires: July 19, 2019 Huawei Expires: October 26, 2019 Huawei
M. Sivakumar M. Sivakumar
Juniper Juniper
P. McAllister P. McAllister
Metaswitch Networks Metaswitch Networks
A. Peter A. Peter
Individual Individual
January 19, 2019 April 26, 2019
A YANG data model for Internet Group Management Protocol (IGMP) and A YANG data model for Internet Group Management Protocol (IGMP) and
Multicast Listener Discovery (MLD) Multicast Listener Discovery (MLD)
draft-ietf-pim-igmp-mld-yang-10 draft-ietf-pim-igmp-mld-yang-11
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress." reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on July 19, 2019. This Internet-Draft will expire on October 26, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 18 skipping to change at page 2, line 18
warranty as described in the Simplified BSD License. warranty as described in the Simplified BSD License.
Abstract Abstract
This document defines a YANG data model that can be used to This document defines a YANG data model that can be used to
configure and manage Internet Group Management Protocol (IGMP) and configure and manage Internet Group Management Protocol (IGMP) and
Multicast Listener Discovery (MLD) devices. Multicast Listener Discovery (MLD) devices.
Table of Contents Table of Contents
1. Introduction ................................................ 2 1. Introduction...................................................2
1.1. Terminology ............................................ 3 1.1. Terminology...............................................3
1.2. Tree Diagrams .......................................... 3 1.2. Tree Diagrams.............................................3
1.3. Prefixes in Data Node Names ............................ 3 1.3. Prefixes in Data Node Names...............................3
2. Design of Data model......................................... 4 2. Design of Data model...........................................4
2.1. Scope of model ......................................... 4 2.1. Scope of Model............................................4
2.2. Optional capabilities .................................. 4 2.1.1. Parameters Not Covered at Global Level..................4
2.3. Position of address family in hierarchy ................ 5 2.1.2. Parameters Not Covered at Interface Level...............5
3. Module Structure ............................................ 5 2.2. Optional Capabilities.....................................5
3.1. IGMP Configuration and Operational state ............... 5 2.3. Position of Address Family in Hierarchy...................6
3.2. MLD Configuration and Operational State ................ 8 3. Module Structure...............................................6
3.3. IGMP and MLD RPC ...................................... 10 3.1. IGMP Configuration and Operational State..................7
4. IGMP and MLD YANG Modules .................................. 11 3.2. MLD Configuration and Operational State...................9
5. Security Considerations .................................... 34 3.3. IGMP and MLD RPC.........................................12
6. IANA Considerations ........................................ 36 4. IGMP and MLD YANG Module......................................13
7. Acknowledgments ............................................ 37 5. Security Considerations.......................................38
8. Contributing Authors........................................ 37 6. IANA Considerations...........................................40
9. References ................................................. 37 7. Acknowledgments...............................................40
9.1. Normative References .................................. 37 8. Contributing Authors..........................................41
9.2. Informative References ................................ 39 9. References....................................................41
9.1. Normative References.....................................41
9.2. Informative References...................................42
1. Introduction 1. Introduction
YANG [RFC6020] [RFC7950] is a data definition language that was YANG [RFC6020] [RFC7950] is a data definition language that was
introduced to model the configuration and running state of a device introduced to model the configuration and running state of a device
managed using network management protocols such as NETCONF [RFC6241] managed using network management protocols such as NETCONF [RFC6241]
or RESTCONF [RFC8040]. YANG is now also being used as a component of or RESTCONF [RFC8040]. YANG is now also being used as a component of
wider management interfaces, such as CLIs. wider management interfaces, such as CLIs.
This document defines a YANG data model that can be used to This document defines a YANG data model that can be used to
configure and manage Internet Group Management Protocol (IGMP) and configure and manage Internet Group Management Protocol (IGMP) and
Multicast Listener Discovery (MLD) devices. This model will support Multicast Listener Discovery (MLD) devices. The protocol versions
the core IGMP and MLD protocols, as well as many other features include IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3 [RFC3376], MLDv1
mentioned in separate IGMP and MLD RFCs. Non-core features are [RFC2710], and MLDv2 [RFC3810]. The core features of the IGMP and
MLD protocols are defined as required. Non-core features are
defined as optional in the provided data model. defined as optional in the provided data model.
The YANG model in this document conforms to the Network Management
Datastore Architecture (NMDA).
1.1. Terminology 1.1. Terminology
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC6020] [RFC7950]. [RFC6020] and [RFC7950].
The following abbreviations are used in this document and the The following abbreviations are used in this document and the
defined model: defined model:
IGMP: IGMP:
Internet Group Management Protocol [RFC3376]. Internet Group Management Protocol [RFC3376].
MLD: MLD:
Multicast Listener Discovery [RFC3810]. Multicast Listener Discovery [RFC3810].
SSM:
Source-Specific Multicast service model [RFC3569] [RFC4607].
1.2. Tree Diagrams 1.2. Tree Diagrams
Tree diagrams used in this document follow the notation defined in Tree diagrams used in this document follow the notation defined in
[RFC8340]. [RFC8340].
1.3. Prefixes in Data Node Names 1.3. Prefixes in Data Node Names
In this document, names of data nodes, actions, and other data model In this document, names of data nodes, actions, and other data model
objects are often used without a prefix, as long as it is clear from objects are often used without a prefix, as long as it is clear from
the context in which YANG module each name is defined. Otherwise, the context in which YANG module each name is defined. Otherwise,
names are prefixed using the standard prefix associated with the names are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1.
+-----------+--------------------------+---------------------+ +-----------+--------------------------+---------------------+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+-----------+--------------------------+---------------------+ +-----------+--------------------------+---------------------+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
| if | ietf-interfaces | [RFC8343] | | if | ietf-interfaces | [RFC8343] |
| ip | ietf-ip | [RFC8344] | | ip | ietf-ip | [RFC8344] |
| rt | ietf-routing | [RFC8349] | | rt | ietf-routing | [RFC8349] |
| rt-types | ietf-routing-types | [RFC8294] | | rt-types | ietf-routing-types | [RFC8294] |
| acl | ietf-access-control-list | [I-D.ietf-acl-yang] | | acl | ietf-access-control-list | [RFC8519] |
+-----------+--------------------------+---------------------+ +-----------+--------------------------+---------------------+
Table 1: Prefixes and Corresponding YANG Modules Table 1: Prefixes and Corresponding YANG Modules
2. Design of Data model 2. Design of Data model
2.1. Scope of model 2.1. Scope of Model
The model covers IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3 The model covers IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3
[RFC3376] and MLDv1 [RFC2710], MLDv2 [RFC3810]. [RFC3376], MLDv1 [RFC2710], and MLDv2 [RFC3810].
The configuration of IGMP and MLD features, and the operational
state fields and RPC definitions are not all included in this
document of the data model. This model can be extended, though the
structure of what has been written may be taken as representative of
the structure of the whole model.
This model does not cover other IGMP and MLD related protocols such This model does not cover other IGMP and MLD related protocols such
as IGMP/MLD Proxy [RFC4605] or IGMP/MLD Snooping [RFC4541] etc., as IGMP/MLD Proxy [RFC4605] or IGMP/MLD Snooping [RFC4541] etc.,
these will be specified in separate documents. which will be specified in separate documents.
2.2. Optional capabilities This model can be used to configure and manage various versions of
IGMP and MLD protocols. The operational state data and statistics
can be retrieved by this model. Even though there is no protocol
specific notifications are defined in this model, the subscription
and push mechanism defined in [I-D.ietf-netconf-subscribed-
notifications] and [I-D.ietf-netconf-yang-push] can be used by the
user to subscribe notifications on the data nodes in this model.
The model contains all basic configuration parameters to operate the
protocols listed above. Depending on the implementation choices,
some systems may not allow some of the advanced parameters
configurable. The occasionally implemented parameters are modeled as
optional features in this model, while the rarely implemented
parameters are not included this model and left for augmentation.
This model can be extended, and has been structured in a way that
such extensions can be conveniently made.
The protocol parameters covered in this model can been seen from the
model structure described in Section 3.
The protocol parameters that were considered but are not covered in
this model are described in the following sections.
2.1.1. Parameters Not Covered at Global Level
The configuration parameters not covered on an IGMP instance or an
MLD instance are:
o Explicit tracking
o Maximum transmit rate
o Last member query count
o Other querier present time
o Send router alert
o Startup query interval
o Startup query count
2.1.2. Parameters Not Covered at Interface Level
The configuration parameters not covered on an IGMP interface or an
MLD interface are:
o Disable router alert check
o Drop IGMP version 1, IGMP version 2, or MLD version 1
o Last member query count
o Maximum number of sources
o Other querier present time
o Passive mode
o Promiscuous mode
o Query before immediate leave
o Send router alert
2.2. Optional Capabilities
This model is designed to represent the capabilities of IGMP and MLD This model is designed to represent the capabilities of IGMP and MLD
devices with various specifications, including some with basic devices with various specifications, including the basic capability
subsets of the IGMP and MLD protocols. The main design goals of subsets of the IGMP and MLD protocols. The main design goals of
this document are that any major now-existing implementation may be this document are that the basic capabilities described in the model
said to support the basic model, and that the configuration of all are supported by any major now-existing implementation, and that the
implementations meeting the specification is easy to express through configuration of all implementations meeting the specifications is
some combination of the features in the basic model and simple easy to express through some combination of the optional features in
vendor augmentations. the model and simple vendor augmentations.
There is also value in widely-supported features being standardized, There is also value in widely-supported features being standardized,
to save work for individual vendors, and so that mapping between to provide a standardized way to access these features, to save work
different vendors' configuration is not needlessly complicated. for individual vendors, and so that mapping between different
Therefore these modules declare a number of features representing vendors' configuration is not needlessly complicated. Therefore this
capabilities that not all deployed devices support. model declares a number of features representing capabilities 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 simplify the capability negotiation process for a vendor's IGMP and
MLD implementations. MLD 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 native support for a piece of operational state would be able to
derive a suitable value for a state variable that is not natively derive a suitable value for a state variable that is not natively
supported. supported.
2.3. Position of address family in hierarchy 2.3. Position of Address Family in Hierarchy
The current document contains IGMP and MLD as separate schema The protocol IGMP supports and only supports IPv4, while the
branches in the structure. The reason for this is to make it easier protocol MLD supports and only supports IPv6. The data model defined
in this document can be used for both IPv4 and IPv6 address
families.
The current document defines IGMP and MLD as separate schema
branches in the structure. One reason for this is to make it easier
for implementations which may optionally choose to support specific for implementations which may optionally choose to support specific
address families. And the names of objects may be different between address families. Another reason is that the names of objects may be
the IPv4 (IGMP) and IPv6 (MLD) address families. different between the IPv4 (IGMP) and IPv6 (MLD) address families.
3. Module Structure 3. Module Structure
3.1. IGMP Configuration and Operational state This model augments the core routing data model specified in
[RFC8349].
The IGMP YANG model conforms to the Network Management Datastore +--rw routing
Architecture (NMDA) [RFC8342]. The operational state data is +--rw router-id?
combined with the associated configuration data in the same +--rw control-plane-protocols
hierarchy [I-D.ietf-netmod-rfc6087bis]. The IGMP module defines in a | +--rw control-plane-protocol* [type name]
three-level hierarchy structure as listed below: | +--rw type
| +--rw name
| +--rw igmp <= Augmented by this Model
...
| +--rw mld <= Augmented by this Model
...
Global level: IGMP configuration and operational state attributes The "igmp" container instantiates an IGMP protocol of version
for the entire routing system. IGMPv1, IGMPv2, or IGMPv3. The "mld" container instantiates an MLD
protocol of version MLDv1 or MLDv2.
Interface-global: Only including configuration data nodes that The YANG data model defined in this document conforms to the Network
IGMP configuration attributes are applicable to all the interfaces Management Datastore Architecture (NMDA) [RFC8342]. The operational
whose interface-level corresponding attributes are not existing, state data is combined with the associated configuration data in the
with same attributes' value for these interfaces. same hierarchy [RFC8407].
Interface-level: IGMP configuration and operational state A configuration data node is marked as mandatory only when its value
attributes specific to the given interface. must be provided by the user. Where nodes are not essential to
protocol operation, they are marked as optional. Some other nodes
are essential but have a default specified, so that they are also
optional and need not be configured explicitly.
Where fields are not genuinely essential to protocol operation, they 3.1. IGMP Configuration and Operational State
are marked as optional. Some fields will be essential but have a
default specified, so that they need not be configured explicitly.
This model augments the core routing data model "ietf-routing" The IGMP data is modeled as a schema subtree augmenting the
specified in [RFC8349]. The IGMP model augments "/rt:routing/ "control-plane-protocol" data node under "/rt:routing/rt:control-
rt:control-plane-protocols/rt:control-plane-protocol", following the plane-protocols" in the module ietf-routing, following the
convention described in [RFC8349]. convention described in [RFC8349]. The identity "igmp" derived from
the "rt:control-plane-protocol" base identity is defined to indicate
a control-plane-protocol instance is for IGMP.
The IGMP subtree is a three-level hierarchy structure as listed
below:
Global level: Including IGMP configuration and operational state
attributes for the entire IGMP protocol instance in this router.
Interface-global level: Including configuration data nodes that
are applicable to all the interfaces whose corresponding nodes are
not defined or not configured at the interface level. For such a
node at the interface level, the system uses the same value of the
corresponding node at the interface-global level.
Interface level: Including IGMP configuration and operational
state attributes specific to the given interface. For a
configuration node at the interface level, there may exist a
corresponding configuration node with the same name at the
interface-global level. The value configured on a node at the
interface level overrides the value configured on the corresponding
node at the interface-global level.
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw igmp {feature-igmp}? +--rw igmp {feature-igmp}?
+--rw global +--rw global
| +--rw enable? boolean {global-admin-enable}? | +--rw enable? boolean {global-admin-enable}?
| +--rw max-entries? uint32 {global-max-entries}? | +--rw max-entries? uint32 {global-max-entries}?
| +--rw max-groups? uint32 {global-max-groups}? | +--rw max-groups? uint32 {global-max-groups}?
| +--ro entries-count? uint32 | +--ro entries-count? uint32
| +--ro groups-count? uint32 | +--ro groups-count? uint32
skipping to change at page 8, line 7 skipping to change at page 9, line 51
+--ro host-count? uint32 +--ro host-count? uint32
| {intf-explicit-tracking}? | {intf-explicit-tracking}?
+--ro last-reporter? inet:ipv4-address +--ro last-reporter? inet:ipv4-address
+--ro host* [host-address] +--ro host* [host-address]
{intf-explicit-tracking}? {intf-explicit-tracking}?
+--ro host-address inet:ipv4-address +--ro host-address inet:ipv4-address
+--ro host-filter-mode enumeration +--ro host-filter-mode enumeration
3.2. MLD Configuration and Operational State 3.2. MLD Configuration and Operational State
The MLD YANG model uses the same structure as IGMP YANG model. The The MLD data is modeled as a schema subtree augmenting the "control-
MLD module also defines in a three-level hierarchy structure as plane-protocol" data node under "/rt:routing/rt:control-plane-
listed below: protocols" in the module ietf-routing, following the convention
described in [RFC8349]. The identity "mld" derived from the
"rt:control-plane-protocol" base identity is defined to indicate a
control-plane-protocol instance is for MLD.
The MLD subtree is a three-level hierarchy structure as listed
below:
Global level: Including MLD configuration and operational state
attributes for the entire MLD protocol instance in this router.
Interface-global level: Including configuration data nodes that
are applicable to all the interfaces whose corresponding nodes are
not defined or not configured at the interface level. For such a
node at the interface level, the system uses the same value of the
corresponding node at the interface-global level.
Interface level: Including MLD configuration and operational
state attributes specific to the given interface. For a
configuration node at the interface level, there may exist a
corresponding configuration node with the same name at the
interface-global level. The value configured on a node at the
interface level overrides the value configured on the corresponding
node at the interface-global level.
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw mld {feature-mld}? +--rw mld {feature-mld}?
+--rw global +--rw global
| +--rw enable? boolean {global-admin-enable}? | +--rw enable? boolean {global-admin-enable}?
| +--rw max-entries? uint32 {global-max-entries}? | +--rw max-entries? uint32 {global-max-entries}?
| +--rw max-groups? uint32 {global-max-groups}? | +--rw max-groups? uint32 {global-max-groups}?
| +--ro entries-count? uint32 | +--ro entries-count? uint32
| +--ro groups-count? uint32 | +--ro groups-count? uint32
skipping to change at page 10, line 17 skipping to change at page 12, line 36
+--ro host-count? uint32 +--ro host-count? uint32
| {intf-explicit-tracking}? | {intf-explicit-tracking}?
+--ro last-reporter? inet:ipv6-address +--ro last-reporter? inet:ipv6-address
+--ro host* [host-address] +--ro host* [host-address]
{intf-explicit-tracking}? {intf-explicit-tracking}?
+--ro host-address inet:ipv6-address +--ro host-address inet:ipv6-address
+--ro host-filter-mode enumeration +--ro host-filter-mode enumeration
3.3. IGMP and MLD RPC 3.3. IGMP and MLD RPC
IGMP and MLD RPC clears the specified IGMP and MLD group membership. IGMP and MLD each have one RPC which clears the group membership
cache entries for that protocol.
rpcs: rpcs:
+---x clear-igmp-groups {feature-igmp,rpc-clear-groups}?
+---x clear-igmp-groups {rpc-clear-groups}?
| +---w input | +---w input
| +---w interface-name? leafref
| +---w interface-name? -> /rt:routing/control-plane- | +---w group-address?
protocols/igmp-mld:igmp/interfaces/interface/interface-name | | rt-types:ipv4-multicast-group-address
{feature-igmp}? | +---w source-address?
| rt-types:ipv4-multicast-source-address
| +---w group-address? rt-types:ipv4-multicast-group- +---x clear-mld-groups {feature-mld,rpc-clear-groups}?
address
| +---w source-address? rt-types:ipv4-multicast-source-
address
+---x clear-mld-groups {rpc-clear-groups}?
+---w input +---w input
+---w interface-name? leafref {feature-mld}?
+---w group-address?
| rt-types:ipv6-multicast-group-address
+---w source-address?
rt-types:ipv6-multicast-source-address
+---w interface-name? -> /rt:routing/control-plane- 4. IGMP and MLD YANG Module
protocols/igmp-mld:mld/interfaces/interface/interface-name {feature-
mld}?
+---w group-addrss? rt-types:ipv6-multicast-group-
address
+---w source-address? rt-types:ipv6-multicast-source-
address
4. IGMP and MLD YANG Modules
<CODE BEGINS> file "ietf-igmp-mld@2019-01-03.yang" <CODE BEGINS> file "ietf-igmp-mld@2019-04-03.yang"
module ietf-igmp-mld { module ietf-igmp-mld {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld";
// replace with IANA namespace when assigned prefix igmp-mld;
prefix igmp-mld;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} reference "RFC 6991: Common YANG Data Types";
}
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
} reference
"RFC 8294: Common YANG Data Types for the Routing Area";
}
import ietf-access-control-list { import ietf-access-control-list {
prefix "acl"; prefix "acl";
} reference
"RFC 8519: YANG Data Model for Network Access Control Lists
(ACLs)";
}
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)";
}
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} reference "RFC 8343: A YANG Data Model for Interface Management";
}
import ietf-ip { import ietf-ip {
prefix ip; prefix ip;
} reference "RFC 8344: A YANG Data Model for IP Management";
}
organization
"IETF PIM Working Group";
organization contact
"IETF PIM Working Group"; "WG Web: <http://tools.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org>
contact WG Chair: Stig Venaas
"WG Web: <http://tools.ietf.org/wg/pim/> <mailto:stig@venaas.com>
WG List: <mailto:pim@ietf.org>
WG Chair: Stig Venaas WG Chair: Mike McBride
<mailto:stig@venaas.com> <mailto:mmcbride7@gmail.com>
WG Chair: Mike McBride Editor: Xufeng Liu
<mailto:mmcbride7@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Xufeng Liu Editor: Feng Guo
<mailto:xufeng.liu.ietf@gmail.com> <mailto:guofeng@huawei.com>
Editor: Feng Guo Editor: Mahesh Sivakumar
<mailto:guofeng@huawei.com> <mailto:sivakumar.mahesh@gmail.com>
Editor: Mahesh Sivakumar Editor: Pete McAllister
<mailto:sivakumar.mahesh@gmail.com> <mailto:pete.mcallister@metaswitch.com>
Editor: Pete McAllister Editor: Anish Peter
<mailto:pete.mcallister@metaswitch.com> <mailto:anish.ietf@gmail.com>";
Editor: Anish Peter description
<mailto:anish.ietf@gmail.com>"; "The module defines the configuration and operational state for
the Internet Group Management Protocol (IGMP) and Multicast
Listener Discovery (MLD) protocols.
description Copyright (c) 2019 IETF Trust and the persons identified as
"The module defines a collection of YANG definitions common for authors of the code. All rights reserved.
IGMP and MLD.";
revision 2019-01-03 { Redistribution and use in source and binary forms, with or
description without modification, is permitted pursuant to, and subject to
"Updated yang data model to address the review comment to the license terms contained in, the Simplified BSD License set
augment control-plane-protocol with protocol type."; forth in Section 4.c of the IETF Trust's Legal Provisions
reference Relating to IETF Documents
"RFC XXXX: A YANG Data Model for IGMP and MLD"; (http://trustee.ietf.org/license-info).
}
revision 2018-09-15 {
description
"Updated yang data model for default value, address type and
repeated leaf definition.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD";
}
revision 2018-06-21 {
description
"Updated yang data model for parameter range and description.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD";
}
revision 2017-10-20 {
description
"Updated yang data model for adding explicit-tracking and
lightweight IGMPv3 and MLDv2 function.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD";
}
revision 2017-09-19 {
description
"Updated yang data model for NMDA version and errata.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD";
}
/* This version of this YANG module is part of RFC XXXX; see the
* Features RFC itself for full legal notices.";
*/
feature feature-igmp {
description
"Support IGMP protocol for IPv4 group membership record.";
}
feature feature-mld {
description
"Support MLD protocol for IPv6 group membership record.";
}
feature global-admin-enable {
description
"Support global configuration to enable or disable protocol.";
}
feature global-interface-config { // RFC Ed.: replace XXXX with actual RFC number and remove
description // this note
"Support global configuration applied for all interfaces."; revision 2019-04-03 {
} description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD";
}
feature global-max-entries { /*
description * Features
"Support configuration of global max-entries."; */
} feature feature-igmp {
description
"Support IGMP protocol for IPv4 group membership record.";
}
feature global-max-groups { feature feature-mld {
description description
"Support configuration of global max-groups."; "Support MLD protocol for IPv6 group membership record.";
} }
feature intf-admin-enable { feature global-admin-enable {
description description
"Support configuration of interface administrative enabling."; "Support global configuration to enable or disable protocol.";
} }
feature intf-immediate-leave { feature global-interface-config {
description description
"Support configuration of interface immediate-leave."; "Support global configuration applied for all interfaces.";
} }
feature intf-join-group { feature global-max-entries {
description description
"Support configuration of interface join-group."; "Support configuration of global max-entries.";
}
} feature global-max-groups {
description
"Support configuration of global max-groups.";
}
feature intf-max-groups { feature intf-admin-enable {
description description
"Support configuration of interface max-groups."; "Support configuration of interface administrative enabling.";
} }
feature intf-max-group-sources {
description
"Support configuration of interface max-group-sources.";
}
feature intf-require-router-alert { feature intf-immediate-leave {
description description
"Support configuration of interface require-router-alert."; "Support configuration of interface immediate-leave.";
} }
feature intf-join-group {
description
"Support configuration of interface join-group.";
}
feature intf-source-policy { feature intf-max-groups {
description description
"Support configuration of interface source policy."; "Support configuration of interface max-groups.";
} }
feature intf-ssm-map { feature intf-max-group-sources {
description description
"Support configuration of interface ssm-map."; "Support configuration of interface max-group-sources.";
} }
feature intf-static-group { feature intf-require-router-alert {
description description
"Support configuration of interface static-group."; "Support configuration of interface require-router-alert.";
} }
feature intf-verify-source-subnet { feature intf-source-policy {
description description
"Support configuration of interface verify-source-subnet."; "Support configuration of interface source policy.";
} }
feature intf-explicit-tracking { feature intf-ssm-map {
description description
"Support configuration of interface explicit-tracking hosts."; "Support configuration of interface ssm-map.";
} }
feature intf-exclude-lite { feature intf-static-group {
description description
"Support configuration of interface exclude-lite."; "Support configuration of interface static-group.";
} }
feature per-interface-config { feature intf-verify-source-subnet {
description description
"Support per interface configuration."; "Support configuration of interface verify-source-subnet.";
}
} feature intf-explicit-tracking {
description
"Support configuration of interface explicit-tracking hosts.";
}
feature rpc-clear-groups { feature intf-exclude-lite {
description description
"Support rpc's to clear groups."; "Support configuration of interface exclude-lite.";
}
/* }
* Typedefs
*/
typedef ssm-map-ipv4-addr-type {
type union {
type enumeration {
enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type for SSM map.";
} // source-ipv4-addr-type
typedef ssm-map-ipv6-addr-type { feature per-interface-config {
type union { description
type enumeration { "Support per interface configuration.";
enum 'policy' { }
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type for SSM map.";
} // source-ipv6-addr-type
/* feature rpc-clear-groups {
* Identities description
*/ "Support rpc's to clear groups.";
identity igmp { }
base "rt:control-plane-protocol";
description "IGMP protocol.";
reference
"RFC3376: Internet Group Management Protocol, Version 3.";
}
identity mld { /*
base "rt:control-plane-protocol"; * Typedefs
description "MLD protocol."; */
reference typedef ssm-map-ipv4-addr-type {
"RFC3810: Multicast Listener Discovery Version 2 (MLDv2) for type union {
IPv6."; type enumeration {
} enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type for SSM map.";
} // source-ipv4-addr-type
/* typedef ssm-map-ipv6-addr-type {
* Groupings type union {
*/ type enumeration {
grouping global-config-attributes { enum 'policy' {
description "Global IGMP and MLD configuration."; description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type for SSM map.";
} // source-ipv6-addr-type
leaf enable { /*
if-feature global-admin-enable; * Identities
type boolean; */
default false; identity igmp {
description base "rt:control-plane-protocol";
"true to enable IGMP or MLD in the routing instance; description "IGMP protocol.";
false to disable IGMP or MLD in the routing instance."; reference
} "RFC3376: Internet Group Management Protocol, Version 3.";
}
leaf max-entries { identity mld {
if-feature global-max-entries; base "rt:control-plane-protocol";
type uint32; description "MLD protocol.";
description reference
"The maximum number of entries in IGMP or MLD."; "RFC3810: Multicast Listener Discovery Version 2 (MLDv2) for
} IPv6.";
leaf max-groups { }
if-feature global-max-groups;
type uint32;
description
"The maximum number of groups that IGMP
or MLD can join.";
}
} // global-config-attributes
grouping global-state-attributes { /*
* Groupings
*/
grouping global-config-attributes {
description
"This grouping is used in either IGMP schema or MLD schema.
When used in IGMP schema, this grouping contains the global
configuration for IGMP;
when used in MLD schema, this grouping contains the global
configuration for MLD.";
description "Global IGMP and MLD state attributes."; leaf enable {
if-feature global-admin-enable;
type boolean;
default true;
description
"When this grouping is used for IGMP, this leaf indicates
whether IGMP is enabled ('true') or disabled ('false')
in the routing instance.
When this grouping is used for MLD, this leaf indicates
whether MLD is enabled ('true') or disabled ('false')
in the routing instance.";
}
leaf max-entries {
if-feature global-max-entries;
type uint32;
description
"When this grouping is used for IGMP, this leaf indicates
the maximum number of entries in the IGMP instance.
When this grouping is used for MLD, this leaf indicates
the maximum number of entries in the MLD instance.
If this leaf is not specified, the number of entries is not
limited.";
}
leaf max-groups {
if-feature global-max-groups;
type uint32;
description
"When this grouping is used for IGMP, this leaf indicates
the maximum number of groups in the IGMP instance.
When this grouping is used for MLD, this leaf indicates
the maximum number of groups in the MLD instance.
If this leaf is not specified, the number of groups is not
limited.";
}
} // global-config-attributes
leaf entries-count { grouping global-state-attributes {
type uint32; description
config false; "This grouping is used in either IGMP schema or MLD schema.
description When used in IGMP schema, this grouping contains the global
"The number of entries in IGMP or MLD."; IGMP state attributes;
} when used in MLD schema, this grouping contains the global
leaf groups-count { MLD state attributes;";
type uint32;
config false;
description
"The number of groups that IGMP or MLD can join.";
}
container statistics { leaf entries-count {
config false; type uint32;
description "Global statistics."; config false;
description
"When this grouping is used for IGMP, this leaf indicates
the number of entries in the IGMP instance.
When this grouping is used for MLD, this leaf indicates
the number of entries in the MLD instance.";
}
leaf groups-count {
type uint32;
config false;
description
"When this grouping is used for IGMP, this leaf indicates
the number of existing groups in the IGMP instance.
When this grouping is used for MLD, this leaf indicates
the number of existing groups in the MLD instance.";
}
leaf discontinuity-time { container statistics {
type yang:date-and-time; config false;
description description
"The time on the most recent occasion at which any one "When this grouping is used for IGMP, this container contains
the statistics for the IGMP instance.
When this grouping is used for MLD, this leaf indicates
the statistics for the MLD instance.";
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 or more of the statistic counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local since the last re-initialization of the local
management subsystem, then this node contains the time management subsystem, then this node contains the time
the local management subsystem re-initialized itself."; the local management subsystem re-initialized itself.";
} }
container error { container error {
description "Statistics of errors."; description "Statistics of errors.";
uses global-statistics-error; uses global-statistics-error;
} }
container received {
container received { description "Statistics of received messages.";
description "Statistics of received messages."; uses global-statistics-sent-received;
uses global-statistics-sent-received; }
} container sent {
container sent { description "Statistics of sent messages.";
description "Statistics of sent messages."; uses global-statistics-sent-received;
uses global-statistics-sent-received; }
} } // statistics
} // statistics } // global-state-attributes
} // global-state-attributes
grouping global-statistics-error {
description
"A grouping defining statistics attributes for errors.";
uses global-statistics-sent-received;
leaf checksum {
type yang:counter64;
description
"The number of checksum errors.";
}
leaf too-short {
type yang:counter64;
description
"The number of messages that are too short.";
}
} // global-statistics-error grouping global-statistics-error {
description
"A grouping defining statistics attributes for errors.";
grouping global-statistics-sent-received { uses global-statistics-sent-received;
description leaf checksum {
"A grouping defining statistics attributes."; type yang:counter64;
leaf total { description
type yang:counter64; "The number of checksum errors.";
description }
"The number of total messages."; leaf too-short {
} type yang:counter64;
leaf query { description
type yang:counter64; "The number of messages that are too short.";
description }
"The number of query messages."; } // global-statistics-error
}
leaf report {
type yang:counter64;
description
"The number of report messages.";
}
leaf leave {
type yang:counter64;
description
"The number of leave messages.";
}
} // global-statistics-sent-received
grouping interface-global-config-attributes { grouping global-statistics-sent-received {
description description
"Configuration attributes applied to the interface global level "A grouping defining statistics attributes.";
whose per interface attributes are not existing.";
leaf max-groups-per-interface { leaf total {
if-feature intf-max-groups; type yang:counter64;
type uint32; description
description "The number of total messages.";
"The maximum number of groups that IGMP or MLD can join."; }
} leaf query {
} //interface-global-config-attributes type yang:counter64;
description
"The number of query messages.";
}
leaf report {
type yang:counter64;
description
"The number of report messages.";
}
leaf leave {
type yang:counter64;
description
"The number of leave messages.";
}
} // global-statistics-sent-received
grouping interface-common-config-attributes { grouping interface-global-config-attributes {
description description
"Configuration attributes applied to both the interface global "Configuration attributes applied to the interface-global level
level and interface level."; whose per interface attributes are not configured.";
leaf last-member-query-interval { leaf max-groups-per-interface {
type uint16 { if-feature intf-max-groups;
range "1..1023"; type uint32;
} description
units seconds; "The maximum number of groups associated with each interface.
default 1; If this leaf is not specified, the number of groups is not
description limited.";
"Last Member Query Interval, which may be tuned to modify the }
leave latency of the network."; } //interface-global-config-attributes
reference "RFC3376. Sec. 8.8.";
}
leaf query-interval { grouping interface-common-config-attributes {
type uint16 { description
range "1..31744"; "Configuration attributes applied to both the interface-global
} level and interface level.";
units seconds;
default 125;
description
"The Query Interval is the interval between General Queries
sent by the Querier.In RFC3376, Querier's Query Interval(QQI) is
represented from the Querier's Query Interval Code in query
message as follows:
If QQIC < 128, QQI = QQIC
If QQIC >= 128, QQIC represents a floating-point value as follows:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+
QQI = (mant | 0x10) << (exp + 3)
The maximum value of QQI is 31744.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
}
leaf query-max-response-time { leaf last-member-query-interval {
type uint16 { type uint16 {
range "1..1023"; range "1..1023";
} }
units seconds; units seconds;
default 10; default 1;
description description
"Query maximum response time specifies the maximum time "Last Member Query Interval, which may be tuned to modify the
allowed before sending a responding report."; leave latency of the network.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC3376. Sec. 8.8.";
} }
leaf query-interval {
type uint16 {
range "1..31744";
leaf require-router-alert { }
if-feature intf-require-router-alert; units seconds;
type boolean; default 125;
default false; description
description "The Query Interval is the interval between General Queries
"Protocol packets should contain router alert IP option."; sent by the Querier.In RFC3376, Querier's Query
} Interval(QQI) is represented from the Querier's Query
leaf robustness-variable { Interval Code in query message as follows:
type uint8 { If QQIC < 128, QQI = QQIC.
range "1..7"; If QQIC >= 128, QQIC represents a floating-point value as
} follows:
default 2; 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+
QQI = (mant | 0x10) << (exp + 3).
The maximum value of QQI is 31744.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
}
leaf query-max-response-time {
type uint16 {
range "1..1023";
}
units seconds;
default 10;
description
"Query maximum response time specifies the maximum time
allowed before sending a responding report.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3.";
}
leaf require-router-alert {
if-feature intf-require-router-alert;
type boolean;
default false;
description
"Protocol packets should contain router alert IP option.";
}
leaf robustness-variable {
type uint8 {
range "1..7";
}
default 2;
description description
"Querier's Robustness Variable allows tuning for the expected "Querier's Robustness Variable allows tuning for the
packet loss on a network."; expected packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
} }
} // interface-common-config-attributes
grouping interface-common-config-attributes-igmp {
description
"Configuration attributes applied to both the interface-global
level and interface level for IGMP.";
} // interface-common-config-attributes uses interface-common-config-attributes;
leaf version {
grouping interface-common-config-attributes-igmp { type uint8 {
description range "1..3";
"Configuration attributes applied to both the interface global }
level and interface level for IGMP."; default 2;
uses interface-common-config-attributes; description "IGMP version.";
leaf version { reference "RFC1112, RFC2236, RFC3376.";
type uint8 { }
range "1..3"; }
}
default 2;
description "IGMP version.";
reference "RFC1112, RFC2236, RFC3376.";
}
}
grouping interface-common-config-attributes-mld {
description
"Configuration attributes applied to both the interface global
level and interface level for MLD.";
uses interface-common-config-attributes;
leaf version {
type uint8 {
range "1..2";
}
default 2;
description "MLD version.";
reference "RFC2710, RFC3810.";
}
}
grouping interfaces-config-attributes-igmp {
description
"Configuration attributes applied to the interface global
level for IGMP.";
uses interface-common-config-attributes-igmp;
uses interface-global-config-attributes;
}
grouping interfaces-config-attributes-mld {
description
"Configuration attributes applied to the interface global
level for MLD.";
uses interface-common-config-attributes-mld;
uses interface-global-config-attributes;
}
grouping interface-specific-config-attributes {
description
"Per interface configuration attributes for both IGMP and MLD
whose are not existing in interface global level.";
leaf enable {
if-feature intf-admin-enable;
type boolean;
default false;
description
"true to enable IGMP or MLD on the interface;
false to disable IGMP or MLD on the interface.";
}
leaf group-policy {
type leafref {
path "/acl:acls/acl:acl/acl:name";
}
description
"Name of the access policy used to filter IGMP or MLD
membership.A device can restrict the length
and value of this name, possibly space and special
characters are not allowed.";
}
leaf immediate-leave {
if-feature intf-immediate-leave;
type empty;
description
"If present, IGMP or MLD perform an immediate leave upon
receiving an IGMPv2 or MLDv1 leave message.
If the router is IGMP-enabled or MLD-enabled, it sends an
IGMP or MLD last member query with a last member query
response time. However, the router does not wait for
the response time before it prunes off the group.";
}
leaf max-groups {
if-feature intf-max-groups;
type uint32;
description
"The maximum number of groups that IGMP ro MLD can join.";
}
leaf max-group-sources {
if-feature intf-max-group-sources;
type uint32;
description
"The maximum number of group sources.";
}
leaf source-policy {
if-feature intf-source-policy;
type leafref {
path "/acl:acls/acl:acl/acl:name";
}
description
"Name of the access policy used to filter sources.
A device can restrict the length
and value of this name, possibly space and special
characters are not allowed.";
}
leaf verify-source-subnet {
if-feature intf-verify-source-subnet;
type empty;
description
"If present, the interface accepts packets with matching
source IP subnet only.";
}
leaf explicit-tracking {
if-feature intf-explicit-tracking;
type empty;
description
"If present, IGMP/MLD-based explicit membership tracking function
for multicast routers and IGMP/MLD proxy devices
supporting IGMPv3/MLDv2. The explicit membership tracking
function contributes to saving network resources and
shortening leave latency.";
}
leaf exclude-lite {
if-feature intf-exclude-lite;
type empty;
description
"If present, lightweight IGMPv3 and MLDv2 protocols will run on the
which simplify the standard versions of IGMPv3 and MLDv2.";
reference "RFC5790";
}
} // interface-specific-config-attributes
grouping interface-config-attributes-igmp {
description
"Per interface configuration attributes for IGMP.";
uses interface-common-config-attributes-igmp;
uses interface-specific-config-attributes;
leaf-list join-group { grouping interface-common-config-attributes-mld {
if-feature intf-join-group; description
type rt-types:ipv4-multicast-group-address; "Configuration attributes applied to both the interface-global
description level and interface level for MLD.";
"The router joins this multicast group on the interface.";
}
list ssm-map { uses interface-common-config-attributes;
if-feature intf-ssm-map; leaf version {
key "ssm-map-source-addr ssm-map-group-policy"; type uint8 {
description "The policy for (*,G) mapping to (S,G)."; range "1..2";
leaf ssm-map-source-addr { }
type ssm-map-ipv4-addr-type; default 2;
description description "MLD version.";
"Multicast source IPv4 address."; reference "RFC2710, RFC3810.";
} }
leaf ssm-map-group-policy { }
type string;
description
"Name of the policy used to define ssm-map rules.
A device can restrict the length
and value of this name, possibly space and special
characters are not allowed. ";
}
}
list static-group { grouping interfaces-config-attributes-igmp {
if-feature intf-static-group; description
key "group-addr source-addr"; "Configuration attributes applied to the interface-global
description level for IGMP.";
"A static multicast route, (*,G) or (S,G).";
leaf group-addr { uses interface-common-config-attributes-igmp;
type rt-types:ipv4-multicast-group-address; uses interface-global-config-attributes;
description }
"Multicast group IPv4 address.";
}
leaf source-addr {
type rt-types:ipv4-multicast-source-address;
description
"Multicast source IPv4 address.";
}
}
} // interface-config-attributes-igmp grouping interfaces-config-attributes-mld {
description
"Configuration attributes applied to the interface-global
level for MLD.";
grouping interface-config-attributes-mld { uses interface-common-config-attributes-mld;
description uses interface-global-config-attributes;
"Per interface configuration attributes for MLD."; }
grouping interface-level-config-attributes {
description
"This grouping is used in either IGMP schema or MLD schema.
When used in IGMP schema, this grouping contains the IGMP
configuration attributes that are defined at the interface
level but are not defined at the interface-global level;
when used in MLD schema, this grouping contains the MLD
configuration attributes that are defined at the interface
level but are not defined at the interface-global level.";
uses interface-common-config-attributes-mld; leaf enable {
uses interface-specific-config-attributes; if-feature intf-admin-enable;
type boolean;
default true;
description
"When this grouping is used for IGMP, this leaf indicates
whether IGMP is enabled ('true') or disabled ('false')
on the interface.
When this grouping is used for MLD, this leaf indicates
whether MLD is enabled ('true') or disabled ('false')
on the interface.";
}
leaf group-policy {
type leafref {
path "/acl:acls/acl:acl/acl:name";
}
description
"When this grouping is used for IGMP, this leaf specifies
the name of the access policy used to filter the
IGMP membership.
When this grouping is used for MLD, this leaf specifies
the name of the access policy used to filter the
MLD membership.
A device can restrict the length and value of this name,
with the possibility that space and certain special
characters are not allowed.
If this leaf is not specified, no policy is applied, and
all packets received from this interface are accepted.";
}
leaf immediate-leave {
if-feature intf-immediate-leave;
type empty;
description
"When this grouping is used for IGMP, the presence of this
leaf requests IGMP to perform an immediate leave upon
receiving an IGMPv2 leave message.
If the router is IGMP-enabled, it sends an IGMP last member
query with a last member query response time. However, the
router does not wait for the response time before it prunes
the group.
When this grouping is used for MLD, the presence of this
leaf requests MLD to perform an immediate leave upon
receiving an MLDv1 leave message.
If the router is MLD-enabled, it sends an MLD last member
query with a last member query response time. However, the
router does not wait for the response time before it prunes
the group.";
}
leaf max-groups {
if-feature intf-max-groups;
type uint32;
description
"When this grouping is used for IGMP, this leaf indicates
the maximum number of groups associated with the IGMP
interface.
When this grouping is used for MLD, this leaf indicates
the maximum number of groups associated with the MLD
interface.
If this leaf is not specified, the number of groups is not
limited.";
}
leaf max-group-sources {
if-feature intf-max-group-sources;
type uint32;
description
"The maximum number of group sources.
If this leaf is not specified, the number of group sources
is not limited.";
}
leaf source-policy {
if-feature intf-source-policy;
type leafref {
path "/acl:acls/acl:acl/acl:name";
}
description
"Name of the access policy used to filter sources.
A device can restrict the length and value of this name,
with the possibility that space and certain special
characters are not allowed.
If this leaf is not specified, no policy is applied, and
all packets received from this interface are accepted.";
}
leaf verify-source-subnet {
if-feature intf-verify-source-subnet;
type empty;
description
"If present, the interface accepts packets with matching
source IP subnet only.";
}
leaf explicit-tracking {
if-feature intf-explicit-tracking;
type empty;
description
"When this grouping is used for IGMP, the presence of this
leaf enables IGMP-based explicit membership tracking
function for multicast routers and IGMP proxy devices
supporting IGMPv3.
When this grouping is used for MLD, the presence of this
leaf enables MLD-based explicit membership tracking
function for multicast routers and MLD proxy devices
supporting MLDv2.
The explicit membership tracking function contributes to
saving network resources and shortening leave latency.";
}
leaf exclude-lite {
if-feature intf-exclude-lite;
type empty;
description
"When this grouping is used for IGMP, 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.
When this grouping is used for MLD, 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 "RFC5790";
}
} // interface-level-config-attributes
leaf-list join-group { grouping interface-config-attributes-igmp {
if-feature intf-join-group; description
type rt-types:ipv6-multicast-group-address; "Per interface configuration attributes for IGMP.";
description
"The router joins this multicast group on the interface.";
}
list ssm-map { uses interface-common-config-attributes-igmp;
if-feature intf-ssm-map; uses interface-level-config-attributes;
key "ssm-map-source-addr ssm-map-group-policy"; leaf-list join-group {
description "The policy for (*,G) mapping to (S,G)."; if-feature intf-join-group;
leaf ssm-map-source-addr { type rt-types:ipv4-multicast-group-address;
type ssm-map-ipv6-addr-type; description
description "The router joins this multicast group on the interface.";
"Multicast source IPv6 address."; }
} list ssm-map {
leaf ssm-map-group-policy { if-feature intf-ssm-map;
type string; key "ssm-map-source-addr ssm-map-group-policy";
description description "The policy for (*,G) mapping to (S,G).";
"Name of the policy used to define ssm-map rules. leaf ssm-map-source-addr {
A device can restrict the length type ssm-map-ipv4-addr-type;
and value of this name, possibly space and special description
characters are not allowed."; "Multicast source IPv4 address.";
} }
} leaf ssm-map-group-policy {
type string;
description
"Name of the policy used to define ssm-map rules.
A device can restrict the length
and value of this name, possibly space and special
characters are not allowed. ";
}
}
list static-group {
if-feature intf-static-group;
key "group-addr source-addr";
description
"A static multicast route, (*,G) or (S,G).";
list static-group { leaf group-addr {
if-feature intf-static-group; type rt-types:ipv4-multicast-group-address;
key "group-addr source-addr"; description
description "Multicast group IPv4 address.";
"A static multicast route, (*,G) or (S,G)."; }
leaf source-addr {
type rt-types:ipv4-multicast-source-address;
description
"Multicast source IPv4 address.";
}
}
} // interface-config-attributes-igmp
leaf group-addr { grouping interface-config-attributes-mld {
type rt-types:ipv6-multicast-group-address; description
description "Per interface configuration attributes for MLD.";
"Multicast group IPv6 address.";
}
leaf source-addr {
type rt-types:ipv6-multicast-source-address;
description
"Multicast source IPv6 address.";
}
}
} // interface-config-attributes-mld
grouping interface-state-attributes-igmp-mld { uses interface-common-config-attributes-mld;
description uses interface-level-config-attributes;
"Per interface state attributes for both IGMP and MLD."; leaf-list join-group {
if-feature intf-join-group;
type rt-types:ipv6-multicast-group-address;
description
"The router joins this multicast group on the interface.";
}
list ssm-map {
if-feature intf-ssm-map;
key "ssm-map-source-addr ssm-map-group-policy";
description "The policy for (*,G) mapping to (S,G).";
leaf ssm-map-source-addr {
type ssm-map-ipv6-addr-type;
description
"Multicast source IPv6 address.";
}
leaf ssm-map-group-policy {
type string;
description
"Name of the policy used to define ssm-map rules.
A device can restrict the length
and value of this name, possibly space and special
characters are not allowed.";
}
}
list static-group {
if-feature intf-static-group;
key "group-addr source-addr";
description
"A static multicast route, (*,G) or (S,G).";
leaf oper-status { leaf group-addr {
type enumeration { type rt-types:ipv6-multicast-group-address;
enum up { description
description "Multicast group IPv6 address.";
"Ready to pass packets."; }
} leaf source-addr {
enum down { type rt-types:ipv6-multicast-source-address;
description description
"The interface does not pass any packets."; "Multicast source IPv6 address.";
} }
} }
config false; } // interface-config-attributes-mld
mandatory true;
description
"Interface up or down state for IGMP or MLD protocol";
}
} // interface-config-attributes-igmp-mld
grouping interface-state-attributes-igmp { grouping interface-state-attributes-igmp-mld {
description
"Per interface state attributes for both IGMP and MLD.";
description leaf oper-status {
"Per interface state attributes for IGMP."; type enumeration {
enum up {
description
"Ready to pass packets.";
}
enum down {
description
"The interface does not pass any packets.";
}
}
config false;
mandatory true;
description
"Indicates whether the operational state of the interface
is up or down.";
}
} // interface-config-attributes-igmp-mld
uses interface-state-attributes-igmp-mld; grouping interface-state-attributes-igmp {
description
"Per interface state attributes for IGMP.";
leaf querier { uses interface-state-attributes-igmp-mld;
type inet:ipv4-address; leaf querier {
config false; type inet:ipv4-address;
mandatory true; config false;
description "The querier address in the subnet"; mandatory true;
} description "The querier address in the subnet";
leaf-list joined-group { }
if-feature intf-join-group; leaf-list joined-group {
type rt-types:ipv4-multicast-group-address; if-feature intf-join-group;
config false; type rt-types:ipv4-multicast-group-address;
description config false;
"The routers that joined this multicast group."; description
} "The routers that joined this multicast group.";
list group { }
key "group-address"; list group {
config false; key "group-address";
description config false;
"Multicast group membership information description
"Multicast group membership information
that joined on the interface."; that joined on the interface.";
leaf group-address { leaf group-address {
type rt-types:ipv4-multicast-group-address; type rt-types:ipv4-multicast-group-address;
description description
"Multicast group address."; "Multicast group address.";
} }
uses interface-state-group-attributes-igmp-mld; uses interface-state-group-attributes-igmp-mld;
leaf last-reporter {
leaf last-reporter { type inet:ipv4-address;
type inet:ipv4-address; description
description "The IPv4 address of the last host which has sent the
"The last host address which has sent the report to join the multicast group.";
report to join the multicast group."; }
} list source {
list source { key "source-address";
key "source-address"; description
description "List of multicast source information
"List of multicast source information of the multicast group.";
of the multicast group.";
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address in group record.";
}
uses interface-state-source-attributes-igmp-mld;
leaf last-reporter {
type inet:ipv4-address;
description
"The last host address which has sent the
report to join the multicast source and group.";
}
list host {
if-feature intf-explicit-tracking;
key "host-address";
description
"List of multicast membership hosts
of the specific multicast source-group.";
leaf host-address {
type inet:ipv4-address;
description
"Multicast membership host address.";
}
uses interface-state-host-attributes-igmp-mld;
}// list host
} // list source
} // list group
} // interface-state-attributes-igmp
grouping interface-state-attributes-mld {
description leaf source-address {
"Per interface state attributes for MLD."; type inet:ipv4-address;
description
"Multicast source address in group record.";
}
uses interface-state-source-attributes-igmp-mld;
leaf last-reporter {
type inet:ipv4-address;
description
"The IPv4 address of the last host which has sent the
report to join the multicast source and group.";
}
list host {
if-feature intf-explicit-tracking;
key "host-address";
description
"List of hosts with the membership for the specific
multicast source-group.";
uses interface-state-attributes-igmp-mld; leaf host-address {
type inet:ipv4-address;
description
"The IPv6 address of the host.";
}
uses interface-state-host-attributes-igmp-mld;
}// list host
} // list source
} // list group
} // interface-state-attributes-igmp
leaf querier { grouping interface-state-attributes-mld {
type inet:ipv6-address; description
config false; "Per interface state attributes for MLD.";
mandatory true;
description
"The querier address in the subnet.";
}
leaf-list joined-group {
if-feature intf-join-group;
type rt-types:ipv6-multicast-group-address;
config false;
description
"The routers that joined this multicast group.";
}
list group { uses interface-state-attributes-igmp-mld;
key "group-address"; leaf querier {
config false; type inet:ipv6-address;
description config false;
"Multicast group membership information mandatory true;
description
"The querier address in the subnet.";
}
leaf-list joined-group {
if-feature intf-join-group;
type rt-types:ipv6-multicast-group-address;
config false;
description
"The routers that joined this multicast group.";
}
list group {
key "group-address";
config false;
description
"Multicast group membership information
that joined on the interface."; that joined on the interface.";
leaf group-address { leaf group-address {
type rt-types:ipv6-multicast-group-address; type rt-types:ipv6-multicast-group-address;
description description
"Multicast group address."; "Multicast group address.";
} }
uses interface-state-group-attributes-igmp-mld; uses interface-state-group-attributes-igmp-mld;
leaf last-reporter { leaf last-reporter {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The last host address which has sent the "The IPv6 address of the last host which has sent the
report to join the multicast group."; report to join the multicast group.";
} }
list source { list source {
key "source-address"; key "source-address";
description description
"List of multicast source information "List of multicast sources of the multicast group.";
of the multicast group.";
leaf source-address { leaf source-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Multicast source address in group record"; "Multicast source address in group record";
} }
uses interface-state-source-attributes-igmp-mld; uses interface-state-source-attributes-igmp-mld;
leaf last-reporter { leaf last-reporter {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The last host address which has sent the "The IPv6 address of the last host which has sent the
report to join the multicast source and group."; report to join the multicast source and group.";
} }
list host { list host {
if-feature intf-explicit-tracking; if-feature intf-explicit-tracking;
key "host-address"; key "host-address";
description description
"List of multicast membership hosts "List of hosts with the membership for the specific
of the specific multicast source-group."; multicast source-group.";
leaf host-address {
type inet:ipv6-address;
description
"The IPv6 address of the host.";
leaf host-address {
type inet:ipv6-address;
description
"Multicast membership host address.";
} }
uses interface-state-host-attributes-igmp-mld; uses interface-state-host-attributes-igmp-mld;
}// list host }// list host
} // list source } // list source
} // list group } // list group
} // interface-state-attributes-mld } // interface-state-attributes-mld
grouping interface-state-group-attributes-igmp-mld { grouping interface-state-group-attributes-igmp-mld {
description description
"Per interface state attributes for both IGMP and MLD "Per interface state attributes for both IGMP and MLD
groups."; groups.";
leaf expire { leaf expire {
type uint32; type uint32;
units seconds; units seconds;
mandatory true; mandatory true;
description description
"The time left before multicast group state expires."; "The time left before multicast group state expires.";
} }
leaf filter-mode { leaf filter-mode {
type enumeration { type enumeration {
enum "include" { enum "include" {
description description
"In include mode, reception of packets sent "In include mode, reception of packets sent
to the specified multicast address is requested to the specified multicast address is requested
only from those IP source addresses listed in the only from those IP source addresses listed in the
source-list parameter"; source-list parameter";
} }
enum "exclude" { enum "exclude" {
description description
"In exclude mode, reception of packets sent "In exclude mode, reception of packets sent
to the given multicast address is requested to the given multicast address is requested
from all IP source addresses except those from all IP source addresses except those
listed in the source-list parameter."; listed in the source-list parameter.";
} }
} }
mandatory true; mandatory true;
description description
"Filter mode for a multicast group, "Filter mode for a multicast group,
may be either include or exclude."; may be either include or exclude.";
} }
leaf up-time { leaf up-time {
type uint32; type uint32;
units seconds; units seconds;
mandatory true; mandatory true;
description description
"The elapsed time since the device created multicast group record."; "The elapsed time since the device created multicast group
} record.";
} // interface-state-group-attributes-igmp-mld }
grouping interface-state-source-attributes-igmp-mld { } // interface-state-group-attributes-igmp-mld
description
"Per interface state attributes for both IGMP and MLD
source-group records.";
leaf expire { grouping interface-state-source-attributes-igmp-mld {
type uint32; description
units seconds; "Per interface state attributes for both IGMP and MLD
mandatory true; source-group records.";
description
"The time left before multicast source-group state expires.";
}
leaf up-time {
type uint32;
units seconds;
mandatory true;
description
"The elapsed time since the device created multicast
source-group record.";
} leaf expire {
leaf host-count { type uint32;
if-feature intf-explicit-tracking; units seconds;
type uint32; mandatory true;
description description
"The number of host addresses."; "The time left before multicast source-group state expires.";
} }
} // interface-state-source-attributes-igmp-mld leaf up-time {
type uint32;
units seconds;
mandatory true;
description
"The elapsed time since the device created multicast
source-group record.";
}
leaf host-count {
if-feature intf-explicit-tracking;
type uint32;
description
"The number of host addresses.";
}
} // interface-state-source-attributes-igmp-mld
grouping interface-state-host-attributes-igmp-mld { grouping interface-state-host-attributes-igmp-mld {
description description
"Per interface state attributes for both IGMP and MLD "Per interface state attributes for both IGMP and MLD
hosts of source-group records."; hosts of source-group records.";
leaf host-filter-mode { leaf host-filter-mode {
type enumeration { type enumeration {
enum "include" { enum "include" {
description description
"In include mode"; "In include mode";
} }
enum "exclude" { enum "exclude" {
description description
"In exclude mode."; "In exclude mode.";
} }
} }
mandatory true; mandatory true;
description description
"Filter mode for a multicast membership "Filter mode for a multicast membership
host may be either include or exclude."; host may be either include or exclude.";
} }
}// interface-state-host-attributes-igmp-mld } // interface-state-host-attributes-igmp-mld
/* /*
* Configuration and Operational state data nodes (NMDA version) * Configuration and Operational state data nodes (NMDA version)
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol" { + "rt:control-plane-protocol" {
when "derived-from-or-self(rt:type, 'igmp-mld:igmp')" { when "derived-from-or-self(rt:type, 'igmp-mld:igmp')" {
description description
"This augmentation is only valid for a control-plane "This augmentation is only valid for a control-plane
protocol instance of IGMP (type 'igmp')."; protocol instance of IGMP (type 'igmp').";
} }
description description
"IGMP augmentation to routing control plane protocol "IGMP augmentation to routing control plane protocol
configuration and state."; configuration and state.";
container igmp { container igmp {
if-feature feature-igmp; if-feature feature-igmp;
description description
"IGMP configuration and operational state data."; "IGMP configuration and operational state data.";
container global { container global {
description description
"Global attributes."; "Global attributes.";
uses global-config-attributes;
uses global-state-attributes;
}
container interfaces { uses global-config-attributes;
description uses global-state-attributes;
"Containing a list of interfaces."; }
container interfaces {
description
"Containing a list of interfaces.";
uses interfaces-config-attributes-igmp { uses interfaces-config-attributes-igmp {
if-feature global-interface-config; if-feature global-interface-config;
} }
list interface {
key "interface-name";
description
"List of IGMP interfaces.";
list interface { leaf interface-name {
key "interface-name"; type if:interface-ref;
description must "/if:interfaces/if:interface[if:name = current()]/"
"List of IGMP interfaces."; + "ip:ipv4" {
leaf interface-name { description
type if:interface-ref; "The interface must have IPv4 configured, either
must "/if:interfaces/if:interface[if:name = current()]/" enabled or disabled.";
+ "ip:ipv4" {
description
"The interface must have IPv4 enabled.";
}
description
"Reference to an entry in the global interface list.";
}
uses interface-config-attributes-igmp {
if-feature per-interface-config;
}
uses interface-state-attributes-igmp;
} // interface
} // interfaces
} // igmp
}//augment
augment "/rt:routing/rt:control-plane-protocols/" }
+ "rt:control-plane-protocol" { description
when "derived-from-or-self(rt:type, 'igmp-mld:mld')" { "Reference to an entry in the global interface list.";
description }
"This augmentation is only valid for a control-plane uses interface-config-attributes-igmp {
protocol instance of IGMP (type 'mld')."; if-feature per-interface-config;
} }
description uses interface-state-attributes-igmp;
"MLD augmentation to routing control plane protocol } // interface
configuration and state."; } // interfaces
} // igmp
} //augment
container mld { augment "/rt:routing/rt:control-plane-protocols/"
if-feature feature-mld; + "rt:control-plane-protocol" {
description when "derived-from-or-self(rt:type, 'igmp-mld:mld')" {
"MLD configuration and operational state data."; description
"This augmentation is only valid for a control-plane
protocol instance of IGMP (type 'mld').";
}
description
"MLD augmentation to routing control plane protocol
configuration and state.";
container global { container mld {
description if-feature feature-mld;
"Global attributes."; description
uses global-config-attributes; "MLD configuration and operational state data.";
uses global-state-attributes;
}
container interfaces { container global {
description description
"Containing a list of interfaces."; "Global attributes.";
uses interfaces-config-attributes-mld { uses global-config-attributes;
if-feature global-interface-config; uses global-state-attributes;
} }
container interfaces {
description
"Containing a list of interfaces.";
list interface { uses interfaces-config-attributes-mld {
key "interface-name"; if-feature global-interface-config;
description }
"List of MLD interfaces."; list interface {
leaf interface-name { key "interface-name";
type if:interface-ref; description
must "/if:interfaces/if:interface[if:name = current()]/" "List of MLD interfaces.";
+ "ip:ipv6" {
description
"The interface must have IPv6 enabled.";
}
description
"Reference to an entry in the global interface list.";
}
uses interface-config-attributes-mld {
if-feature per-interface-config;
}
uses interface-state-attributes-mld;
} // interface
} // interfaces
} // mld
} // augment
/* leaf interface-name {
* RPCs type if:interface-ref;
*/ must "/if:interfaces/if:interface[if:name = current()]/"
rpc clear-igmp-groups { + "ip:ipv6" {
if-feature rpc-clear-groups; description
description "The interface must have IPv6 configured, either
"Clears the specified IGMP cache entries."; enabled or disabled.";
}
description
"Reference to an entry in the global interface list.";
}
uses interface-config-attributes-mld {
if-feature per-interface-config;
}
uses interface-state-attributes-mld;
} // interface
} // interfaces
} // mld
} // augment
input { /*
leaf interface-name { * RPCs
if-feature feature-igmp; */
type leafref { rpc clear-igmp-groups {
path "/rt:routing/rt:control-plane-protocols/" if-feature feature-igmp;
+ "rt:control-plane-protocol/" if-feature rpc-clear-groups;
+ "igmp-mld:igmp/igmp-mld:interfaces/" description
+ "igmp-mld:interface/igmp-mld:interface-name"; "Clears the specified IGMP cache entries.";
}
description
"Name of the IGMP interface.
If it is not specified, groups from all interfaces are
cleared.";
}
leaf group-address {
type rt-types:ipv4-multicast-group-address;
description
"Multicast group IPv4 address.
If it is not specified, all IGMP group entries are
cleared.";
}
leaf source-address {
type rt-types:ipv4-multicast-source-address;
description
"Multicast source IPv4 address.
If it is not specified, all IGMP source-group entries are
cleared.";
}
}
} // rpc clear-igmp-groups
rpc clear-mld-groups { input {
if-feature rpc-clear-groups; leaf interface-name {
description type leafref {
"Clears the specified MLD cache entires."; path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/"
+ "igmp-mld:igmp/igmp-mld:interfaces/"
+ "igmp-mld:interface/igmp-mld:interface-name";
}
description
"Name of the IGMP interface.
If it is not specified, IGMP groups from all interfaces
are cleared.";
}
leaf group-address {
type rt-types:ipv4-multicast-group-address;
description
"Multicast group IPv4 address.
If it is not specified, all IGMP group entries are
cleared.";
}
leaf source-address {
type rt-types:ipv4-multicast-source-address;
description
"Multicast source IPv4 address.
If it is not specified, all IGMP source-group entries are
cleared.";
}
}
} // rpc clear-igmp-groups
input { rpc clear-mld-groups {
leaf interface-name { if-feature feature-mld;
if-feature feature-mld; if-feature rpc-clear-groups;
type leafref { description
path "/rt:routing/rt:control-plane-protocols/" "Clears the specified MLD cache entries.";
+ "rt:control-plane-protocol/"
+ "igmp-mld:mld/igmp-mld:interfaces/"
+ "igmp-mld:interface/igmp-mld:interface-name";
}
description
"Name of the MLD interface.
If it is not specified, groups from all interfaces are
cleared.";
}
leaf group-addrss {
type rt-types:ipv6-multicast-group-address;
description
"Multicast group IPv6 address.
If it is not specified, all MLD group entries are
cleared.";
}
leaf source-address {
type rt-types:ipv6-multicast-source-address;
description
"Multicast source IPv6 address.
If it is not specified, all MLD source-group entries are
cleared.";
}
}
} // rpc clear-mld-groups
/* input {
* Notifications leaf interface-name {
*/ if-feature feature-mld;
} type leafref {
path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/"
+ "igmp-mld:mld/igmp-mld:interfaces/"
+ "igmp-mld:interface/igmp-mld:interface-name";
}
description
"Name of the MLD interface.
If it is not specified, MLD groups from all interfaces
are cleared.";
}
leaf group-address {
type rt-types:ipv6-multicast-group-address;
description
"Multicast group IPv6 address.
If it is not specified, all MLD group entries are
cleared.";
}
leaf source-address {
type rt-types:ipv6-multicast-source-address;
description
"Multicast source IPv6 address.
If it is not specified, all MLD source-group entries are
cleared.";
}
}
} // rpc clear-mld-groups
}
<CODE ENDS> <CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG module specified in this document defines a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols that is designed to be accessed via network management protocols
such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF
layer is the secure transport layer, and the mandatory-to-implement layer is the secure transport layer, and the mandatory-to-implement
secure transport is Secure Shell (SSH) [RFC6242]. The lowest secure transport is Secure Shell (SSH) [RFC6242]. The lowest
RESTCONF layer is HTTPS, and the mandatory-to-implement secure RESTCONF layer is HTTPS, and the mandatory-to-implement secure
transport is TLS [RFC5246]. transport is TLS [RFC 8446].
The NETCONF access control model [RFC6536] provides the means to The Network Configuration Access Control Model (NACM) [RFC8341]
restrict access for particular NETCONF or RESTCONF users to a provides the means to restrict access for particular NETCONF or
preconfigured subset of all available NETCONF or RESTCONF protocol RESTCONF users to a preconfigured subset of all available NETCONF or
operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in this YANG module that There are a number of data nodes defined in this YANG module that
are writable/creatable/deletable (i.e., config true, which is the are writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., edit-config) in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative to these data nodes without proper protection can have a negative
effect on network operations. These are the subtrees and data nodes effect on network operations. These are the subtrees and data nodes
and their sensitivity/vulnerability: and their sensitivity/vulnerability:
igmp:global Under /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/igmp-mld:igmp,
This subtree specifies the configuration for the IGMP attributes
at the global level on a device. Modifying the configuration can
cause IGMP membership deleted or reconstructed on all the
interfaces of a device.
igmp:interfaces igmp-mld:global
This subtree specifies the configuration for the IGMP attributes This subtree specifies the configuration for the IGMP attributes
at all of the interfaces level on a device. Modifying the at the global level on an IGMP instance. Modifying the
configuration can cause IGMP membership deleted or reconstructed configuration can cause IGMP membership deleted or reconstructed
on all the interfaces of a device. on all the interfaces of an IGMP instance.
igmp:interfaces/interface igmp-mld:interfaces
This subtree specifies the configuration for the IGMP attributes This subtree specifies the configuration for the IGMP attributes
at the interface level on a device. Modifying the configuration at the interface-global level on a IGMP instance. Modifying the
can cause IGMP membership deleted or reconstructed on a specific configuration can cause IGMP membership deleted or reconstructed
interface of a device. on all the interfaces of an IGMP instance.
These subtrees are all under igmp-mold:interfaces/interface
/rt:routing/rt:control-plane-protocols This subtree specifies the configuration for the IGMP attributes
/rt:control-plane-protocol/igmp: at the interface level on an IGMP instance. Modifying the
configuration can cause IGMP membership deleted or reconstructed
on a specific interface of an IGMP instance.
mld:global Under /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/igmp-mld:mld,
igmp-mld:global
This subtree specifies the configuration for the MLD attributes at This subtree specifies the configuration for the MLD attributes at
the global level on a device. Modifying the configuration can the global level on an MLD instance. Modifying the configuration
cause MLD membership deleted or reconstructed on all the can cause MLD membership deleted or reconstructed on all the
interfaces of a device. interfaces of an MLD instance.
mld:interfaces igmp-mld:interfaces
This subtree specifies the configuration for the MLD attributes at This subtree specifies the configuration for the MLD attributes at
all of the interfaces level on a device. Modifying the the interface-global level on an MLD instance. Modifying the
configuration can cause MLD membership deleted or reconstructed on configuration can cause MLD membership deleted or reconstructed on
all the interfaces of a device. all the interfaces of an MLD instance.
mld:interfaces/interface igmp-mld:interfaces/interface
This subtree specifies the configuration for the MLD attributes at This subtree specifies the configuration for the MLD attributes at
the interface level on a device. Modifying the configuration can the interface level on a device. Modifying the configuration can
cause MLD membership deleted or reconstructed on a specific cause MLD membership deleted or reconstructed on a specific
interface of a device. interface of an MLD instance.
These subtrees are all under
/rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/mld:
Unauthorized access to any data node of these subtrees can adversely Unauthorized access to any data node of these subtrees can adversely
affect the membership records of multicast routing subsystem on the affect the membership records of multicast routing subsystem on the
local device. This may lead to network malfunctions, delivery of local device. This may lead to network malfunctions, delivery of
packets to inappropriate destinations, and other problems. packets to inappropriate destinations, and other problems.
Some of the readable data nodes in this YANG module may be Some of the readable data nodes in this YANG module may be
considered sensitive or vulnerable in some network environments. It considered sensitive or vulnerable in some network environments. It
is thus important to control read access (e.g., via get, get-config, is thus important to control read access (e.g., via get, get-config,
or notification) to these data nodes. These are the subtrees and or notification) to these data nodes. These are the subtrees and
data nodes and their sensitivity/vulnerability: data nodes and their sensitivity/vulnerability:
/rt:routing/rt:control-plane-protocols /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/igmp /rt:control-plane-protocol/igmmp-mld:igmp
/rt:routing/rt:control-plane-protocols /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/mld /rt:control-plane-protocol/igmp-mld:mld
Unauthorized access to any data node of the above subtree can Unauthorized access to any data node of the above subtree can
disclose the operational state information of IGMP or MLD on this disclose the operational state information of IGMP or MLD on this
device. device.
Some of the RPC operations in this YANG module may be considered Some of the RPC operations in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control access to these operations. These are the important to control access to these operations. These are the
operations and their sensitivity/vulnerability: operations and their sensitivity/vulnerability:
clear-igmp-groups clear-igmp-groups
clear-mld-groups clear-mld-groups
Unauthorized access to any of the above RPC operations can delete Unauthorized access to any of the above RPC operations can delete
the IGMP or MLD membership records on this device. the IGMP or MLD membership records on this device.
6. IANA Considerations 6. IANA Considerations
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number (and remove this note). actual RFC number (and remove this note).
This document registers the following namespace URIs in the IETF XML This document registers the following namespace URIs in the IETF XML
registry [RFC3688]: registry [RFC3688]:
-------------------------------------------------------------------- --------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
-------------------------------------------------------------------- --------------------------------------------------------------------
This document registers the following YANG modules in the YANG Module This document registers the following YANG modules in the YANG Module
Names registry [RFC7950]: Names registry [RFC6020]:
-------------------------------------------------------------------- --------------------------------------------------------------------
name: ietf-igmp-mld name: ietf-igmp-mld
namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld
prefix: igmp-mld prefix: igmp-mld
reference: RFC XXXX reference: RFC XXXX
-------------------------------------------------------------------- --------------------------------------------------------------------
7. Acknowledgments 7. Acknowledgments
The authors would like to thank Steve Baillargeon, Hu Fangwei, The authors would like to thank Steve Baillargeon, Hu Fangwei,
Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable
contributions. contributions.
8. Contributing Authors 8. Contributing Authors
Yisong Liu Yisong Liu
Huawei Technologies Huawei Technologies
Huawei Bldg., No.156 Beiqing Rd. Huawei Bldg., No.156 Beiqing Rd.
Beijing 100095 Beijing 100095
China China
Email: liuyisong@huawei.com Email: liuyisong@huawei.com
skipping to change at page 38, line 13 skipping to change at page 41, line 33
2", RFC 2236, November 1997. 2", RFC 2236, November 1997.
[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 Listener Discovery (MLD) for IPv6", RFC 2710, October
1999. 1999.
[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, October 2002.
[RFC3569] Bhattacharyya, S., Ed., "An Overview of Source-Specific
Multicast (SSM)", RFC 3569, July 2003.
[RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January
2004 2004.
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. Version 2 (MLDv2) for IPv6", RFC 3810, June 2004.
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for
IP", RFC 4607, August 2006.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, August 2008 (TLS) Protocol Version 1.2", RFC 5246, August 2008.
[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 October 2010.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, June 2011 (NETCONF)", RFC 6241, June 2011.
[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, June 2011.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, March Protocol (NETCONF) Access Control Model", RFC 6536, March
2012 2012.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, July 2013 RFC 6991, July 2013.
[RFC7950] Bjorklund, M., 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, August 2016.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, January 2017 Protocol", RFC 8040, January 2017.
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294, "Common YANG Data Types for the Routing Area", RFC 8294,
December 2017 December 2017.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, March 2018 (NMDA)", RFC 8342, March 2018.
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, March 2018 Management", RFC 8343, March 2018.
[RFC8344] M. Bjorklund, "A YANG Data Model for IP Management", [RFC8344] M. Bjorklund, "A YANG Data Model for IP Management",
RFC8344, March 2018 RFC8344, March 2018.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, March 2018 Routing Management (NMDA Version)", RFC 8349, March 2018.
[I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D. [I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D.
Blair, "Network Access Control List (ACL) YANG Data Blair, "Network Access Control List (ACL) YANG Data
Model", draft-ietf-netmod-acl-model-19(work in progress), Model", draft-ietf-netmod-acl-model-19(work in progress),
April 2018 April 2018.
9.2. Informative References 9.2. Informative References
[RFC4541] M. Christensen, K. Kimball and F. Solensky, [RFC4541] M. Christensen, K. Kimball and F. Solensky,
"Considerations for Internet Group Management Protocol "Considerations for Internet Group Management Protocol
(IGMP) and Multicast Listener Discovery (MLD) Snooping (IGMP) and Multicast Listener Discovery (MLD) Snooping
Switches", RFC 4541, May 2006. Switches", RFC 4541, May 2006.
[RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet [RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet
Group Management Protocol (IGMP) / Multicast Listener Group Management Protocol (IGMP) / Multicast Listener
Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD
Proxying")", RFC 4605, August 2006. Proxying")", RFC 4605, August 2006.
[RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group [RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group
Management Protocol Version 3 (IGMPv3) and Multicast 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 February 2010.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, March 2018 BCP 215, RFC 8340, March 2018
[I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of YANG
and Reviewers of YANG Data Model Documents", draft-ietf- Data Model Documents", draft-ietf-netmod-rfc6087bis-
netmod-rfc6087bis-20(work in progress), March 2018 20(work in progress), March 2018.
Authors' Addresses Authors' Addresses
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
EMail: xufeng.liu.ietf@gmail.com Email: xufeng.liu.ietf@gmail.com
Feng Guo Feng Guo
Huawei Technologies Huawei Technologies
Huawei Bldg., No.156 Beiqing Rd. Huawei Bldg., No.156 Beiqing Rd.
Beijing 100095 Beijing 100095
China China
Email: guofeng@huawei.com Email: guofeng@huawei.com
Mahesh Sivakumar Mahesh Sivakumar
skipping to change at page 40, line 34 skipping to change at page 44, line 34
USA USA
Email: sivakumar.mahesh@gmail.com Email: sivakumar.mahesh@gmail.com
Pete McAllister Pete McAllister
Metaswitch Networks Metaswitch Networks
100 Church Street 100 Church Street
Enfield EN2 6BQ Enfield EN2 6BQ
UK UK
EMail: pete.mcallister@metaswitch.com Email: pete.mcallister@metaswitch.com
Anish Peter Anish Peter
Individual Individual
EMail: anish.ietf@gmail.com Email: anish.ietf@gmail.com
 End of changes. 205 change blocks. 
1218 lines changed or deleted 1392 lines changed or added

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