draft-ietf-pim-igmp-mld-yang-14.txt | draft-ietf-pim-igmp-mld-yang-15.txt | |||
---|---|---|---|---|
PIM Working Group X. Liu | PIM Working Group X. Liu | |||
Internet-Draft Volta Networks | Internet-Draft Volta Networks | |||
Intended Status: Standard Track F. Guo | Intended Status: Standard Track F. Guo | |||
Expires: November 29, 2019 Huawei | Expires: December 14, 2019 Huawei | |||
M. Sivakumar | M. Sivakumar | |||
Juniper | Juniper | |||
P. McAllister | P. McAllister | |||
Metaswitch Networks | Metaswitch Networks | |||
A. Peter | A. Peter | |||
Individual | Individual | |||
May 29, 2019 | June 14, 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-14 | draft-ietf-pim-igmp-mld-yang-15 | |||
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 November 29, 2019. | This Internet-Draft will expire on December 14, 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 41 ¶ | skipping to change at page 2, line 41 ¶ | |||
2.1. Scope of Model............................................4 | 2.1. Scope of Model............................................4 | |||
2.1.1. Parameters Not Covered at Global Level..................5 | 2.1.1. Parameters Not Covered at Global Level..................5 | |||
2.1.2. Parameters Not Covered at Interface Level...............5 | 2.1.2. Parameters Not Covered at Interface Level...............5 | |||
2.2. Optional Capabilities.....................................6 | 2.2. Optional Capabilities.....................................6 | |||
2.3. Position of Address Family in Hierarchy...................6 | 2.3. Position of Address Family in Hierarchy...................6 | |||
3. Module Structure...............................................7 | 3. Module Structure...............................................7 | |||
3.1. IGMP Configuration and Operational State..................7 | 3.1. IGMP Configuration and Operational State..................7 | |||
3.2. MLD Configuration and Operational State..................10 | 3.2. MLD Configuration and Operational State..................10 | |||
3.3. IGMP and MLD Actions.....................................13 | 3.3. IGMP and MLD Actions.....................................13 | |||
4. IGMP and MLD YANG Module......................................13 | 4. IGMP and MLD YANG Module......................................13 | |||
5. Security Considerations.......................................39 | 5. Security Considerations.......................................43 | |||
6. IANA Considerations...........................................42 | 6. IANA Considerations...........................................45 | |||
7. Acknowledgments...............................................42 | 7. Acknowledgments...............................................46 | |||
8. Contributing Authors..........................................43 | 8. Contributing Authors..........................................46 | |||
9. References....................................................43 | 9. References....................................................46 | |||
9.1. Normative References.....................................43 | 9.1. Normative References.....................................46 | |||
9.2. Informative References...................................44 | 9.2. Informative References...................................48 | |||
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 command line interfaces (CLIs). | wider management interfaces, such as command line interfaces (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 | |||
skipping to change at page 13, line 50 ¶ | skipping to change at page 13, line 50 ¶ | |||
| | +---w interface-name? leafref | | | +---w interface-name? leafref | |||
| +--:(all) | | +--:(all) | |||
| +---w all-interfaces? empty | | +---w all-interfaces? empty | |||
+---w group-address? union | +---w group-address? union | |||
+---w source-address? | +---w source-address? | |||
rt-types:ipv6-multicast-source-address | rt-types:ipv6-multicast-source-address | |||
4. IGMP and MLD YANG Module | 4. IGMP and MLD YANG Module | |||
This module references [RFC1112], [RFC2236], [RFC2710], [RFC3376], | This module references [RFC1112], [RFC2236], [RFC2710], [RFC3376], | |||
[RFC3810], [RFC5790], [RFC6991], [RFC8294], [RFC8343], [RFC8344], | [RFC3810], [RFC5790], [RFC6636], [RFC6991], [RFC8294], [RFC8343], | |||
[RFC8349], and [RFC8519]. | [RFC8344], [RFC8349], and [RFC8519]. | |||
<CODE BEGINS> file "ietf-igmp-mld@2019-05-21.yang" | <CODE BEGINS> file "ietf-igmp-mld@2019-06-07.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"; | |||
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"; | reference "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
skipping to change at page 15, line 44 ¶ | skipping to change at page 15, line 44 ¶ | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove | // RFC Ed.: replace XXXX with actual RFC number and remove | |||
// this note | // this note | |||
revision 2019-05-29 { | revision 2019-06-07 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for IGMP and MLD"; | "RFC XXXX: A YANG Data Model for IGMP and MLD"; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
skipping to change at page 17, line 39 ¶ | skipping to change at page 17, line 39 ¶ | |||
feature intf-verify-source-subnet { | feature intf-verify-source-subnet { | |||
description | description | |||
"Support configuration of interface verify-source-subnet."; | "Support configuration of interface verify-source-subnet."; | |||
} | } | |||
feature intf-explicit-tracking { | feature intf-explicit-tracking { | |||
description | description | |||
"Support configuration of interface explicit-tracking hosts."; | "Support configuration of interface explicit-tracking hosts."; | |||
} | } | |||
feature intf-exclude-lite { | feature intf-lite-exclude-filter { | |||
description | description | |||
"Support configuration of interface exclude-lite."; | "Support configuration of interface lite-exclude-filter."; | |||
} | } | |||
feature per-interface-config { | feature per-interface-config { | |||
description | description | |||
"Support per interface configuration."; | "Support per interface configuration."; | |||
} | } | |||
feature action-clear-groups { | feature action-clear-groups { | |||
description | description | |||
"Support actions to clear groups."; | "Support actions to clear groups."; | |||
skipping to change at page 22, line 34 ¶ | skipping to change at page 22, line 34 ¶ | |||
grouping interface-common-config-attributes { | grouping interface-common-config-attributes { | |||
description | description | |||
"Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
level and interface level."; | level and interface level."; | |||
leaf last-member-query-interval { | leaf last-member-query-interval { | |||
type uint16 { | type uint16 { | |||
range "1..1023"; | range "1..1023"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 1; | ||||
description | description | |||
"Last Member Query Interval, which may be tuned to modify the | "When used in IGMP schema, this leaf indicates the Last | |||
leave latency of the network."; | Member Query Interval, which may be tuned to modify the | |||
reference "RFC 3376. Sec. 8.8."; | leave latency of the network; | |||
when used in MLD schema, this leaf indicates the Last | ||||
Listener Query Interval, which may be tuned to modify the | ||||
leave latency of the network. | ||||
This leaf is not applicable for version 1 of the IGMP. For | ||||
version 2 and version 3 of the IGMP, and for all versions of | ||||
the MLD, the default value of this leaf is 1. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference | ||||
"RFC 2236. Sec. 8.8. RFC 3376. Sec. 8.8. | ||||
RFC 2710. Sec. 7.8. RFC 3810. Sec. 9.8."; | ||||
} | } | |||
leaf query-interval { | leaf query-interval { | |||
type uint16 { | type uint16 { | |||
range "1..31744"; | range "1..31744"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 125; | ||||
description | description | |||
"The Query Interval is the interval between General Queries | "The Query Interval is the interval between General Queries | |||
sent by the Querier. In RFC 3376, the Querier's Query | sent by the Querier. In RFC 3376, the Querier's Query | |||
Interval(QQI) is represented from the Querier's Query | Interval(QQI) is represented from the Querier's Query | |||
Interval Code in query message as follows: | Interval Code in query message as follows: | |||
If QQIC < 128, QQI = QQIC. | If QQIC < 128, QQI = QQIC. | |||
If QQIC >= 128, QQIC represents a floating-point value as | If QQIC >= 128, QQIC represents a floating-point value as | |||
follows: | follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|1| exp | mant | | |1| exp | mant | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
QQI = (mant | 0x10) << (exp + 3). | QQI = (mant | 0x10) << (exp + 3). | |||
The maximum value of QQI is 31744."; | The maximum value of QQI is 31744. | |||
The default value is 125. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; | reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; | |||
} | } | |||
leaf query-max-response-time { | leaf query-max-response-time { | |||
type uint16 { | type uint16 { | |||
range "1..1023"; | range "1..1023"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 10; | ||||
description | description | |||
"Query maximum response time specifies the maximum time | "Query maximum response time specifies the maximum time | |||
allowed before sending a responding report."; | allowed before sending a responding report. | |||
The default value is 10. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; | reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; | |||
} | } | |||
leaf require-router-alert { | leaf require-router-alert { | |||
if-feature intf-require-router-alert; | if-feature intf-require-router-alert; | |||
type boolean; | type boolean; | |||
default false; | ||||
description | description | |||
"Protocol packets should contain router alert IP option."; | "Protocol packets should contain router alert IP option. | |||
When this node is not configured, the server uses the | ||||
following rules to determine the operational value of this | ||||
node: | ||||
if this grouping is used in IGMP schema and the value of the | ||||
node 'version' is 1, the value 'false' is operationally used | ||||
by the server; | ||||
if this grouping is used in IGMP schema and the value of the | ||||
node 'version' is 2 or 3, the value 'true' is operationally | ||||
used by the server; | ||||
if this grouping is used in MLD schema, the value 'true' is | ||||
operationally used by the server. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
} | } | |||
leaf robustness-variable { | leaf robustness-variable { | |||
type uint8 { | type uint8 { | |||
range "1..7"; | range "1..7"; | |||
} | } | |||
default 2; | description | |||
description | "Querier's Robustness Variable allows tuning for the | |||
"Querier's Robustness Variable allows tuning for the | expected packet loss on a network. | |||
expected packet loss on a network."; | The default value is 2. | |||
reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; | This leaf may be configured at the interface level or the | |||
} | interface-global level, with precedence given to the value | |||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; | ||||
} | ||||
} // interface-common-config-attributes | } // interface-common-config-attributes | |||
grouping interface-common-config-attributes-igmp { | grouping interface-common-config-attributes-igmp { | |||
description | description | |||
"Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
level and interface level for IGMP."; | level and interface level for IGMP."; | |||
uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
leaf version { | leaf version { | |||
type uint8 { | type uint8 { | |||
range "1..3"; | range "1..3"; | |||
} | } | |||
default 2; | description | |||
description "IGMP version."; | "IGMP version. | |||
The default value is 2. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference "RFC 1112, RFC 2236, RFC 3376."; | reference "RFC 1112, RFC 2236, RFC 3376."; | |||
} | } | |||
} | } | |||
grouping interface-common-config-attributes-mld { | grouping interface-common-config-attributes-mld { | |||
description | description | |||
"Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
level and interface level for MLD."; | level and interface level for MLD."; | |||
uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
leaf version { | leaf version { | |||
type uint8 { | type uint8 { | |||
range "1..2"; | range "1..2"; | |||
} | } | |||
skipping to change at page 24, line 20 ¶ | skipping to change at page 25, line 14 ¶ | |||
grouping interface-common-config-attributes-mld { | grouping interface-common-config-attributes-mld { | |||
description | description | |||
"Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
level and interface level for MLD."; | level and interface level for MLD."; | |||
uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
leaf version { | leaf version { | |||
type uint8 { | type uint8 { | |||
range "1..2"; | range "1..2"; | |||
} | } | |||
default 2; | description | |||
description "MLD version."; | "MLD version. | |||
The default value is 2. | ||||
This leaf may be configured at the interface level or the | ||||
interface-global level, with precedence given to the value | ||||
at the interface level. If the leaf is not configured at | ||||
either level, the default value is used."; | ||||
reference "RFC 2710, RFC 3810."; | reference "RFC 2710, RFC 3810."; | |||
} | } | |||
} | } | |||
grouping interfaces-config-attributes-igmp { | grouping interfaces-config-attributes-igmp { | |||
description | description | |||
"Configuration attributes applied to the interface-global | "Configuration attributes applied to the interface-global | |||
level for IGMP."; | level for IGMP."; | |||
uses interface-common-config-attributes-igmp; | uses interface-common-config-attributes-igmp; | |||
skipping to change at page 26, line 38 ¶ | skipping to change at page 27, line 36 ¶ | |||
If this leaf is not specified, the number of group sources | If this leaf is not specified, the number of group sources | |||
is not limited."; | is not limited."; | |||
} | } | |||
leaf source-policy { | leaf source-policy { | |||
if-feature intf-source-policy; | if-feature intf-source-policy; | |||
type leafref { | type leafref { | |||
path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
} | } | |||
description | description | |||
"Name of the access policy used to filter sources. | "Name of the access policy used to filter sources. | |||
A device can restrict the length and value of this name, | The value space of this leaf is restricted to the existing | |||
with the possibility that space and certain special | policy instances defined by the referenced schema RFC 8519. | |||
characters are not allowed. | As specified by RFC 8519, the length of the name is between | |||
1 and 64; a device MAY further restrict the length of this | ||||
name; space and special characters are not allowed. | ||||
If this leaf is not specified, no policy is applied, and | If this leaf is not specified, no policy is applied, and | |||
all packets received from this interface are accepted."; | all packets received from this interface are accepted."; | |||
} | } | |||
leaf verify-source-subnet { | leaf verify-source-subnet { | |||
if-feature intf-verify-source-subnet; | if-feature intf-verify-source-subnet; | |||
type empty; | type empty; | |||
description | description | |||
"If present, the interface accepts packets with matching | "If present, the interface accepts packets with matching | |||
source IP subnet only."; | source IP subnet only."; | |||
} | } | |||
skipping to change at page 27, line 15 ¶ | skipping to change at page 28, line 16 ¶ | |||
"When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
leaf enables IGMP-based explicit membership tracking | leaf enables IGMP-based explicit membership tracking | |||
function for multicast routers and IGMP proxy devices | function for multicast routers and IGMP proxy devices | |||
supporting IGMPv3. | supporting IGMPv3. | |||
When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
leaf enables MLD-based explicit membership tracking | leaf enables MLD-based explicit membership tracking | |||
function for multicast routers and MLD proxy devices | function for multicast routers and MLD proxy devices | |||
supporting MLDv2. | supporting MLDv2. | |||
The explicit membership tracking function contributes to | The explicit membership tracking function contributes to | |||
saving network resources and shortening leave latency."; | saving network resources and shortening leave latency."; | |||
reference | ||||
"RFC 6636. Sec 3."; | ||||
} | } | |||
leaf exclude-lite { | leaf lite-exclude-filter { | |||
if-feature intf-exclude-lite; | if-feature intf-lite-exclude-filter; | |||
type empty; | type empty; | |||
description | description | |||
"When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
in the Lightweight IGMPv3 protocol, which simplifies the | in the Lightweight IGMPv3 protocol, which simplifies the | |||
standard versions of IGMPv3. | standard versions of IGMPv3. | |||
When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
in the Lightweight MLDv2 protocol, which simplifies the | in the Lightweight MLDv2 protocol, which simplifies the | |||
standard versions of MLDv2."; | standard versions of MLDv2."; | |||
skipping to change at page 27, line 46 ¶ | skipping to change at page 28, line 49 ¶ | |||
uses interface-common-config-attributes-igmp; | uses interface-common-config-attributes-igmp; | |||
uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
leaf-list join-group { | leaf-list join-group { | |||
if-feature intf-join-group; | if-feature intf-join-group; | |||
type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
description | description | |||
"The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
} | } | |||
list ssm-map { | list ssm-map { | |||
if-feature intf-ssm-map; | if-feature intf-ssm-map; | |||
must "../version = 3 or " | ||||
+ "(not(../version) and (../../version = 3))" { | ||||
error-message | ||||
"The version of IGMP must be 3 to support the source " | ||||
+ "specific parameters."; | ||||
} | ||||
key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
description "The policy for (*,G) mapping to (S,G)."; | description "The policy for (*,G) mapping to (S,G)."; | |||
leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
type ssm-map-ipv4-addr-type; | type ssm-map-ipv4-addr-type; | |||
description | description | |||
"Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
} | } | |||
leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
type string; | type string; | |||
description | description | |||
"Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
A device can restrict the length | A device can restrict the length | |||
and value of this name, possibly space and special | and value of this name, possibly space and special | |||
characters are not allowed. "; | characters are not allowed. "; | |||
} | } | |||
} | } | |||
skipping to change at page 28, line 19 ¶ | skipping to change at page 29, line 27 ¶ | |||
"Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
A device can restrict the length | A device can restrict the length | |||
and value of this name, possibly space and special | and value of this name, possibly space and special | |||
characters are not allowed. "; | characters are not allowed. "; | |||
} | } | |||
} | } | |||
list static-group { | list static-group { | |||
if-feature intf-static-group; | if-feature intf-static-group; | |||
key "group-addr source-addr"; | key "group-addr source-addr"; | |||
description | description | |||
"A static multicast route, (*,G) or (S,G)."; | "A static multicast route, (*,G) or (S,G). | |||
The version of IGMP must be 3 to support (S,G)."; | ||||
leaf group-addr { | leaf group-addr { | |||
type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
description | description | |||
"Multicast group IPv4 address."; | "Multicast group IPv4 address."; | |||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
description | description | |||
"Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
skipping to change at page 28, line 48 ¶ | skipping to change at page 30, line 8 ¶ | |||
uses interface-common-config-attributes-mld; | uses interface-common-config-attributes-mld; | |||
uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
leaf-list join-group { | leaf-list join-group { | |||
if-feature intf-join-group; | if-feature intf-join-group; | |||
type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
description | description | |||
"The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
} | } | |||
list ssm-map { | list ssm-map { | |||
if-feature intf-ssm-map; | if-feature intf-ssm-map; | |||
must "../version = 2 or " | ||||
+ "(not(../version) and (../../version = 2))" { | ||||
error-message | ||||
"The version of MLD must be 2 to support the source " | ||||
+ "specific parameters."; | ||||
} | ||||
key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
description "The policy for (*,G) mapping to (S,G)."; | description "The policy for (*,G) mapping to (S,G)."; | |||
leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
type ssm-map-ipv6-addr-type; | type ssm-map-ipv6-addr-type; | |||
description | description | |||
"Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
} | } | |||
leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
type string; | type string; | |||
description | description | |||
"Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
A device can restrict the length | A device can restrict the length | |||
and value of this name, possibly space and special | and value of this name, possibly space and special | |||
characters are not allowed."; | characters are not allowed."; | |||
} | } | |||
} | } | |||
skipping to change at page 29, line 19 ¶ | skipping to change at page 30, line 34 ¶ | |||
"Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
A device can restrict the length | A device can restrict the length | |||
and value of this name, possibly space and special | and value of this name, possibly space and special | |||
characters are not allowed."; | characters are not allowed."; | |||
} | } | |||
} | } | |||
list static-group { | list static-group { | |||
if-feature intf-static-group; | if-feature intf-static-group; | |||
key "group-addr source-addr"; | key "group-addr source-addr"; | |||
description | description | |||
"A static multicast route, (*,G) or (S,G)."; | "A static multicast route, (*,G) or (S,G). | |||
The version of MLD must be 2 to support (S,G)."; | ||||
leaf group-addr { | leaf group-addr { | |||
type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
description | description | |||
"Multicast group IPv6 address."; | "Multicast group IPv6 address."; | |||
} | } | |||
leaf source-addr { | leaf source-addr { | |||
type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
description | description | |||
"Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
skipping to change at page 35, line 35 ¶ | skipping to change at page 36, line 52 ¶ | |||
uses global-config-attributes; | uses global-config-attributes; | |||
uses global-state-attributes; | uses global-state-attributes; | |||
} | } | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of interfaces."; | "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; | |||
refine query-interval { | ||||
default 125; | ||||
} | ||||
refine query-max-response-time { | ||||
default 10; | ||||
} | ||||
refine robustness-variable { | ||||
default 2; | ||||
} | ||||
refine version { | ||||
default 2; | ||||
} | ||||
} | } | |||
list interface { | list interface { | |||
key "interface-name"; | key "interface-name"; | |||
description | description | |||
"List of IGMP interfaces."; | "List of IGMP interfaces."; | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "/if:interfaces/if:interface[if:name = current()]/" | must "/if:interfaces/if:interface[if:name = current()]/" | |||
+ "ip:ipv4" { | + "ip:ipv4" { | |||
description | error-message | |||
"The interface must have IPv4 configured, either | "The interface must have IPv4 configured, either " | |||
enabled or disabled."; | + "enabled or disabled."; | |||
} | } | |||
description | description | |||
"Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
} | } | |||
uses interface-config-attributes-igmp { | uses interface-config-attributes-igmp { | |||
if-feature per-interface-config; | if-feature "per-interface-config"; | |||
refine last-member-query-interval { | ||||
must "../version != 1 or " | ||||
+ "(not(../version) and " | ||||
+ "(not(../../version) or ../../version != 1))" { | ||||
error-message | ||||
"IGMPv1 does not support " | ||||
+ "last-member-query-interval."; | ||||
} | ||||
} | ||||
refine max-group-sources { | ||||
must "../version = 3 or " | ||||
+ "(not(../version) and (../../version = 3))" { | ||||
error-message | ||||
"The version of IGMP must be 3 to support the " | ||||
+ "source specific parameters."; | ||||
} | ||||
} | ||||
refine source-policy { | ||||
must "../version = 3 or " | ||||
+ "(not(../version) and (../../version = 3))" { | ||||
error-message | ||||
"The version of IGMP must be 3 to support the " | ||||
+ "source specific parameters."; | ||||
} | ||||
} | ||||
refine explicit-tracking { | ||||
must "../version = 3 or " | ||||
+ "(not(../version) and (../../version = 3))" { | ||||
error-message | ||||
"The version of IGMP must be 3 to support the " | ||||
+ "explicit tracking function."; | ||||
} | ||||
} | ||||
refine lite-exclude-filter { | ||||
must "../version = 3 or " | ||||
+ "(not(../version) and (../../version = 3))" { | ||||
error-message | ||||
"The version of IGMP must be 3 to support the " | ||||
+ "simplified EXCLUDE filter in the Lightweight " | ||||
+ "IGMPv3 protocol."; | ||||
} | ||||
} | ||||
} | } | |||
uses interface-state-attributes-igmp; | uses interface-state-attributes-igmp; | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
/* | /* | |||
* Actions | * Actions | |||
*/ | */ | |||
action clear-groups { | action clear-groups { | |||
if-feature action-clear-groups; | if-feature action-clear-groups; | |||
skipping to change at page 38, line 4 ¶ | skipping to change at page 40, line 26 ¶ | |||
uses global-config-attributes; | uses global-config-attributes; | |||
uses global-state-attributes; | uses global-state-attributes; | |||
} | } | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of interfaces."; | "Containing a list of interfaces."; | |||
uses interfaces-config-attributes-mld { | uses interfaces-config-attributes-mld { | |||
if-feature global-interface-config; | if-feature global-interface-config; | |||
refine last-member-query-interval { | ||||
default 1; | ||||
} | ||||
refine query-interval { | ||||
default 125; | ||||
} | ||||
refine query-max-response-time { | ||||
default 10; | ||||
} | ||||
refine require-router-alert { | ||||
default true; | ||||
} | ||||
refine robustness-variable { | ||||
default 2; | ||||
} | ||||
refine version { | ||||
default 2; | ||||
} | ||||
} | } | |||
list interface { | list interface { | |||
key "interface-name"; | key "interface-name"; | |||
description | description | |||
"List of MLD interfaces."; | "List of MLD interfaces."; | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "/if:interfaces/if:interface[if:name = current()]/" | must "/if:interfaces/if:interface[if:name = current()]/" | |||
+ "ip:ipv6" { | + "ip:ipv6" { | |||
description | error-message | |||
"The interface must have IPv6 configured, either | "The interface must have IPv6 configured, either " | |||
enabled or disabled."; | + "enabled or disabled."; | |||
} | } | |||
description | description | |||
"Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
} | } | |||
uses interface-config-attributes-mld { | uses interface-config-attributes-mld { | |||
if-feature per-interface-config; | if-feature per-interface-config; | |||
refine max-group-sources { | ||||
must "../version = 2 or " | ||||
+ "(not(../version) and (../../version = 2))" { | ||||
error-message | ||||
"The version of MLD must be 2 to support the " | ||||
+ "source specific parameters."; | ||||
} | ||||
} | ||||
refine source-policy { | ||||
must "../version = 2 or " | ||||
+ "(not(../version) and (../../version = 2))" { | ||||
error-message | ||||
"The version of MLD must be 2 to support the " | ||||
+ "source specific parameters."; | ||||
} | ||||
} | ||||
refine explicit-tracking { | ||||
must "../version = 2 or " | ||||
+ "(not(../version) and (../../version = 2))" { | ||||
error-message | ||||
"The version of MLD must be 2 to support the " | ||||
+ "explicit tracking function."; | ||||
} | ||||
} | ||||
refine lite-exclude-filter { | ||||
must "../version = 2 or " | ||||
+ "(not(../version) and (../../version = 2))" { | ||||
error-message | ||||
"The version of MLD must be 2 to support the " | ||||
+ "simplified EXCLUDE filter in the Lightweight " | ||||
+ "MLDv2 protocol."; | ||||
} | ||||
} | ||||
} | } | |||
uses interface-state-attributes-mld; | uses interface-state-attributes-mld; | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
/* | /* | |||
* Actions | * Actions | |||
*/ | */ | |||
action clear-groups { | action clear-groups { | |||
if-feature action-clear-groups; | if-feature action-clear-groups; | |||
skipping to change at page 45, line 19 ¶ | skipping to change at page 48, line 34 ¶ | |||
[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. | |||
[RFC6636] H. Asaeda, H. Liu and Q. Wu, "Tuning the Behavior of the | ||||
Internet Group Management Protocol (IGMP) and Multicast | ||||
Listener Discovery (MLD) for Routers in Mobile and | ||||
Wireless Networks", RFC 6636, May 2012. | ||||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, March 2018. | BCP 215, RFC 8340, March 2018. | |||
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
Documents Containing YANG Data Models", RFC 8407, October | Documents Containing YANG Data Models", RFC 8407, October | |||
2018. | 2018. | |||
[I-D.ietf-netconf-subscribed-notifications] | [I-D.ietf-netconf-subscribed-notifications] | |||
Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and | Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and | |||
End of changes. 38 change blocks. | ||||
55 lines changed or deleted | 227 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |