idnits 2.17.1 draft-ietf-pim-igmp-mld-yang-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 44 instances of too long lines in the document, the longest one being 16 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 255 has weird spacing: '...-policy str...' == Line 258 has weird spacing: '...ce-addr sou...' == Line 263 has weird spacing: '...address ine...' == Line 269 has weird spacing: '...address ine...' == Line 340 has weird spacing: '...-policy str...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (Oct 20, 2017) is 2352 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC3688' is mentioned on line 1537, but not defined == Unused Reference: 'RFC6087' is defined on line 1591, but no explicit reference was found in the text == Unused Reference: 'I-D.dsdt-nmda-guidelines' is defined on line 1604, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 1616, but no explicit reference was found in the text == Unused Reference: 'I-D.acee-netmod-rfc8022bis' is defined on line 1620, but no explicit reference was found in the text == Unused Reference: 'RFC5790' is defined on line 1653, but no explicit reference was found in the text ** Obsolete normative reference: RFC 6087 (Obsoleted by RFC 8407) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) ** Downref: Normative reference to an Informational draft: draft-dsdt-nmda-guidelines (ref. 'I-D.dsdt-nmda-guidelines') == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-14 == Outdated reference: A later version (-06) exists of draft-acee-netmod-rfc8022bis-02 Summary: 4 errors (**), 0 flaws (~~), 16 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 PIM Working Group X. Liu 2 Internet-Draft Jabil 3 Intended Status: Standard Track F. Guo 4 Expires: April 20, 2018 Huawei 5 M. Sivakumar 6 Cisco 7 P. McAllister 8 Metaswitch Networks 9 A. Peter 10 Juniper Networks 11 Oct 20, 2017 13 A YANG data model for Internet Group Management Protocol (IGMP) and 14 Multicast Listener Discovery (MLD) 15 draft-ietf-pim-igmp-mld-yang-06 17 Status of this Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF), its areas, and its working groups. Note that 24 other groups may also distribute working documents as Internet- 25 Drafts. 27 Internet-Drafts are draft documents valid for a maximum of six 28 months and may be updated, replaced, or obsoleted by other documents 29 at any time. It is inappropriate to use Internet-Drafts as 30 reference material or to cite them other than as "work in progress." 32 The list of current Internet-Drafts can be accessed at 33 http://www.ietf.org/ietf/1id-abstracts.txt 35 The list of Internet-Draft Shadow Directories can be accessed at 36 http://www.ietf.org/shadow.html 38 This Internet-Draft will expire on April 20, 2018. 40 Copyright Notice 42 Copyright (c) 2017 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with 50 respect to this document. Code Components extracted from this 51 document must include Simplified BSD License text as described in 52 Section 4.e of the Trust Legal Provisions and are provided without 53 warranty as described in the Simplified BSD License. 55 Abstract 57 This document defines a YANG data model that can be used to 58 configure and manage Internet Group Management Protocol (IGMP) and 59 Multicast Listener Discovery (MLD) devices. 61 Table of Contents 63 1. Introduction ................................................ 2 64 1.1. Requirements Language................................... 3 65 1.2. Terminology ............................................ 3 66 2. Design of Data model......................................... 3 67 2.1. Scope of model ......................................... 3 68 2.2. Optional capabilities................................... 3 69 2.3. Position of address family in hierarchy................. 4 70 3. Module Structure ............................................ 4 71 3.1. IGMP Configuration and Operational state................ 4 72 3.2. MLD Configuration and Operational State................. 6 73 3.3. IGMP and MLD RPC........................................ 8 74 4. IGMP and MLD YANG Modules.................................... 9 75 5. Security Considerations..................................... 32 76 6. IANA Considerations ........................................ 32 77 7. Acknowledgments ............................................ 33 78 8. Contributing Authors........................................ 33 79 9. References ................................................. 33 80 9.1. Normative References................................... 33 81 9.2. Informative References................................. 34 83 1. Introduction 85 YANG [RFC6020] [RFC7950] is a data definition language that was 86 introduced to model the configuration and running state of a device 87 managed using NETCONF [RFC6241]. YANG is now also being used as a 88 component of wider management interfaces, such as CLIs. 90 This document defines a YANG data model that can be used to 91 configure and manage Internet Group Management Protocol (IGMP) and 92 Multicast Listener Discovery (MLD) devices. This model will support 93 the core IGMP and MLD protocols, as well as many other features 94 mentioned in separate IGMP and MLD RFCs. Non-core features are 95 defined as optional in the provided data model. 97 1.1. Requirements Language 99 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 100 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 101 document are to be interpreted as described in RFC-2119 [RFC2119]. 103 1.2. Terminology 105 The terminology for describing YANG data models is found in 106 [RFC6020] [RFC7950]. 108 This document employs YANG tree diagrams, which are explained in [I- 109 D.ietf-netmod-rfc6087bis]. 111 2. Design of Data model 113 2.1. Scope of model 115 The model covers IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3 116 [RFC3376] and MLDv1 [RFC2710], MLDv2 [RFC3810]. 118 The configuration of IGMP and MLD features, and the operational 119 state fields and RPC definitions are not all included in this 120 document of the data model. This model can be extended, though the 121 structure of what has been written may be taken as representative of 122 the structure of the whole model. 124 This model does not cover other IGMP and MLD related protocols such 125 as IGMP/MLD Proxy [RFC4605] or IGMP/MLD Snooping [RFC4541] etc., 126 these will be specified in separate documents. 128 2.2. Optional capabilities 130 This model is designed to represent the capabilities of IGMP and MLD 131 devices with various specifications, including some with basic 132 subsets of the IGMP and MLD protocols. The main design goals of 133 this document are that any major now-existing implementation may be 134 said to support the basic model, and that the configuration of all 135 implementations meeting the specification is easy to express through 136 some combination of the features in the basic model and simple 137 vendor augmentations. 139 There is also value in widely-supported features being standardized, 140 to save work for individual vendors, and so that mapping between 141 different vendors' configuration is not needlessly complicated. 142 Therefore these modules declare a number of features representing 143 capabilities that not all deployed devices support. 145 The extensive use of feature declarations should also substantially 146 simplify the capability negotiation process for a vendor's IGMP and 147 MLD implementations. 149 On the other hand, operational state parameters are not so widely 150 designated as features, as there are many cases where the defaulting 151 of an operational state parameter would not cause any harm to the 152 system, and it is much more likely that an implementation without 153 native support for a piece of operational state would be able to 154 derive a suitable value for a state variable that is not natively 155 supported. 157 For the same reason, wide constant ranges (for example, timer 158 maximum and minimum) will be used in the model. It is expected that 159 vendors will augment the model with any specific restrictions that 160 might be required. Vendors may also extend the features list with 161 proprietary extensions. 163 2.3. Position of address family in hierarchy 165 The current document contains IGMP and MLD as separate schema 166 branches in the structure. The reason for this is to make it easier 167 for implementations which may optionally choose to support specific 168 address families. And the names of objects may be different between 169 the IPv4 (IGMP) and IPv6 (MLD) address families. 171 3. Module Structure 173 3.1. IGMP Configuration and Operational state 175 The IGMP YANG model follows the Guidelines for YANG Module Authors 176 (NMDA) [draft-dsdt-nmda-guidelines-01]. The IGMP module defines the 177 routing-control-plane-protocol-wide configuration and operational 178 state options separately in a three-level hierarchy as listed below: 180 Global level: IGMP configuration and operational state attributes 181 for the entire routing system. 183 Interface-global: Only including configuration data nodes now. 184 IGMP configuration attributes are applicable to all the interfaces 185 whose interface-level corresponding attributes are not existing, 186 with same attributes' value for these interfaces. 188 Interface-level: IGMP configuration and operational state 189 attributes specific to the given interface. 191 Where fields are not genuinely essential to protocol operation, they 192 are marked as optional. Some fields will be essential but have a 193 default specified, so that they need not be configured explicitly. 195 We define the IGMP model as a protocol-centric model , and the IGMP 196 model augments "/rt:routing/rt:control-plane-protocols/ rt:control- 197 plane-protocol" in [draft-acee-netmod-rfc8022bis-01] and would allow 198 a single protocol instance per VRF. 200 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 201 +--rw igmp 202 +--rw global 203 | +--rw enable? boolean {global-admin-enable}? 204 | +--rw max-entries? uint32 {global-max-entries}? 205 | +--rw max-groups? uint32 {global-max-groups}? 206 | +--ro entries-count? uint32 207 | +--ro groups-count? uint32 208 | +--ro statistics 209 | +--ro discontinuity-time? yang:date-and-time 210 | +--ro error 211 | | +--ro total? yang:counter64 212 | | +--ro query? yang:counter64 213 | | +--ro report? yang:counter64 214 | | +--ro leave? yang:counter64 215 | | +--ro checksum? yang:counter64 216 | | +--ro too-short? yang:counter64 217 | +--ro received 218 | | +--ro total? yang:counter64 219 | | +--ro query? yang:counter64 220 | | +--ro report? yang:counter64 221 | | +--ro leave? yang:counter64 222 | +--ro sent 223 | +--ro total? yang:counter64 224 | +--ro query? yang:counter64 225 | +--ro report? yang:counter64 226 | +--ro leave? yang:counter64 227 +--rw interfaces 228 +--rw last-member-query-interval? uint16 229 +--rw max-groups-per-interface? uint32 {intf-max-groups}? 230 +--rw query-interval? uint16 231 +--rw query-max-response-time? uint16 232 +--rw require-router-alert? boolean {intf-require-router-alert}? 233 +--rw robustness-variable? uint8 234 +--rw version? uint8 235 +--rw interface* [interface-name] 236 +--rw interface-name if:interface-ref 237 +--rw enable? boolean {intf-admin-enable}? 238 +--rw group-policy? string 239 +--rw immediate-leave? empty {intf-immediate-leave}? 240 +--rw last-member-query-interval? uint16 241 +--rw max-groups? uint32 {intf-max-groups}? 242 +--rw max-group-sources? uint32 {intf-max-group-sources}? 243 +--rw query-interval? uint16 244 +--rw query-max-response-time? uint16 245 +--rw require-router-alert? boolean {intf-require-router-alert}? 246 +--rw robustness-variable? uint8 247 +--rw source-policy? string {intf-source-policy}? 248 +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 249 +--rw explicit-tracking? boolean {intf-explicit-tracking}? 250 +--rw exclude-lite? boolean {intf-exclude-lite}? 251 +--rw version? uint8 252 +--rw join-group* inet:ipv4-address {intf-join-group}? 253 +--rw ssm-map* [source-addr group-policy] {intf-ssm-map}? 254 | +--rw source-addr ssm-map-ipv4-addr-type 255 | +--rw group-policy string 256 +--rw static-group* [group-addr source-addr] {intf-static-group}? 257 | +--rw group-addr inet:ipv4-address 258 | +--rw source-addr source-ipv4-addr-type 259 +--ro oper-status? enumeration 260 +--ro querier? inet:ipv4-address 261 +--ro joined-group* inet:ipv4-address {intf-join-group}? 262 +--ro group* [group-address] 263 +--ro group-address inet:ipv4-address 264 +--ro expire? uint32 265 +--ro filter-mode? enumeration 266 +--ro up-time? uint32 267 +--ro last-reporter? inet:ipv4-address 268 +--ro source* [source-address] 269 +--ro source-address inet:ipv4-address 270 +--ro expire? uint32 271 +--ro up-time? uint32 272 +--ro host-count? uint32 {intf-explicit-tracking}? 273 +--ro last-reporter? inet:ipv4-address 274 +--ro host* [host-address] {intf-explicit-tracking}? 275 +--ro host-address inet:ipv4-address 276 +--ro host-filter-mode? enumeration 278 3.2. MLD Configuration and Operational State 280 The MLD YANG model uses the same structure as IGMP YANG model. The 281 MLD module also defines the routing-control-plane-protocol-wide 282 configuration and operational state options separately in a three- 283 level hierarchy. 285 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 286 +--rw mld 287 +--rw global 288 | +--rw enable? boolean {global-admin-enable}? 289 | +--rw max-entries? uint32 {global-max-entries}? 290 | +--rw max-groups? uint32 {global-max-groups}? 291 | +--ro entries-count? uint32 292 | +--ro groups-count? uint32 293 | +--ro statistics 294 | +--ro discontinuity-time? yang:date-and-time 295 | +--ro error 296 | | +--ro total? yang:counter64 297 | | +--ro query? yang:counter64 298 | | +--ro report? yang:counter64 299 | | +--ro leave? yang:counter64 300 | | +--ro checksum? yang:counter64 301 | | +--ro too-short? yang:counter64 302 | +--ro received 303 | | +--ro total? yang:counter64 304 | | +--ro query? yang:counter64 305 | | +--ro report? yang:counter64 306 | | +--ro leave? yang:counter64 307 | +--ro sent 308 | +--ro total? yang:counter64 309 | +--ro query? yang:counter64 310 | +--ro report? yang:counter64 311 | +--ro leave? yang:counter64 312 +--rw interfaces 313 +--rw last-member-query-interval? uint16 314 +--rw max-groups-per-interface? uint32 {intf-max-groups}? 315 +--rw query-interval? uint16 316 +--rw query-max-response-time? uint16 317 +--rw require-router-alert? boolean {intf-require-router-alert}? 318 +--rw robustness-variable? uint8 319 +--rw version? uint8 320 +--rw interface* [interface-name] 321 +--rw interface-name if:interface-ref 322 +--rw enable? boolean {intf-admin-enable}? 323 +--rw group-policy? string 324 +--rw immediate-leave? empty {intf-immediate-leave}? 325 +--rw last-member-query-interval? uint16 326 +--rw max-groups? uint32 {intf-max-groups}? 327 +--rw max-group-sources? uint32 {intf-max-group-sources}? 328 +--rw query-interval? uint16 329 +--rw query-max-response-time? uint16 330 +--rw require-router-alert? boolean {intf-require-router-alert}? 331 +--rw robustness-variable? uint8 332 +--rw source-policy? string {intf-source-policy}? 333 +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 334 +--rw explicit-tracking? boolean {intf-explicit-tracking}? 335 +--rw exclude-lite? boolean {intf-exclude-lite}? 336 +--rw version? uint8 337 +--rw join-group* inet:ipv6-address {intf-join-group}? 338 +--rw ssm-map* [source-addr group-policy] {intf-ssm-map}? 339 | +--rw source-addr ssm-map-ipv6-addr-type 340 | +--rw group-policy string 341 +--rw static-group* [group source-addr] {intf-static-group}? 342 | +--rw group inet:ipv6-address 343 | +--rw source-addr source-ipv6-addr-type 344 +--ro oper-status? enumeration 345 +--ro querier? inet:ipv6-address 346 +--ro joined-group* inet:ipv6-address {intf-join-group}? 347 +--ro group* [group-address] 348 +--ro group-address inet:ipv6-address 349 +--ro expire? uint32 350 +--ro filter-mode? enumeration 351 +--ro up-time? uint32 352 +--ro last-reporter? inet:ipv6-address 353 +--ro source* [source-address] 354 +--ro source-address inet:ipv6-address 355 +--ro expire? uint32 356 +--ro up-time? uint32 357 +--ro host-count? uint32 {intf-explicit-tracking}? 358 +--ro last-reporter? inet:ipv6-address 359 +--ro host* [host-address] {intf-explicit-tracking}? 360 +--ro host-address inet:ipv6-address 361 +--ro host-filter-mode? enumeration 363 3.3. IGMP and MLD RPC 365 IGMP and MLD RPC clears the specified IGMP and MLD group membership. 367 rpcs: 369 +---x clear-igmp-groups {rpc-clear-groups}? 371 | +---w input 373 | +---w interface? string 375 | +---w group? inet:ipv4-address 377 | +---w source? inet:ipv4-address 379 +---x clear-mld-groups {rpc-clear-groups}? 381 +---w input 383 +---w interface? string 385 +---w group? inet:ipv6-address 387 +---w source? inet:ipv6-address 389 4. IGMP and MLD YANG Modules 391 file "ietf-igmp-mld@2017-10-20.yang" 392 module ietf-igmp-mld { 393 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; 394 // replace with IANA namespace when assigned 395 prefix igmp-mld; 397 import ietf-inet-types { 398 prefix "inet"; 399 } 401 import ietf-yang-types { 402 prefix "yang"; 403 } 405 import ietf-routing { 406 prefix "rt"; 407 } 409 import ietf-interfaces { 410 prefix "if"; 411 } 413 import ietf-ip { 414 prefix ip; 415 } 417 organization 418 "IETF PIM Working Group"; 420 contact 421 "WG Web: 422 WG List: 424 WG Chair: Stig Venaas 425 427 WG Chair: Mike McBride 428 430 Editor: Xufeng Liu 431 433 Editor: Feng Guo 434 436 Editor: Mahesh Sivakumar 437 439 Editor: Pete McAllister 440 442 Editor: Anish Peter 443 "; 445 description 446 "The module defines a collection of YANG definitions common for 447 IGMP and MLD."; 449 revision 2017-10-20 { 450 description 451 "Updated yang data model for adding explicit-tracking and 452 lightweight IGMPv3 and MLDv2 function."; 453 reference 454 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 455 } 457 revision 2017-09-19 { 458 description 459 "Updated yang data model for NMDA version and errata."; 460 reference 461 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 462 } 464 /* 465 * Features 466 */ 467 feature global-admin-enable { 468 description 469 "Support global configuration to enable or disable protocol."; 470 } 472 feature global-interface-config { 473 description 474 "Support global configuration applied for all interfaces."; 475 } 477 feature global-max-entries { 478 description 479 "Support configuration of global max-entries."; 480 } 482 feature global-max-groups { 483 description 484 "Support configuration of global max-groups."; 486 } 488 feature intf-admin-enable { 489 description 490 "Support configuration of interface administrative enabling."; 491 } 493 feature intf-immediate-leave { 494 description 495 "Support configuration of interface immediate-leave."; 496 } 498 feature intf-join-group { 499 description 500 "Support configuration of interface join-group."; 501 } 503 feature intf-max-groups { 504 description 505 "Support configuration of interface max-groups."; 506 } 508 feature intf-max-group-sources { 509 description 510 "Support configuration of interface max-group-sources."; 511 } 513 feature intf-require-router-alert { 514 description 515 "Support configuration of interface require-router-alert."; 516 } 518 feature intf-source-policy { 519 description 520 "Support configuration of interface source policy."; 521 } 523 feature intf-ssm-map { 524 description 525 "Support configuration of interface ssm-map."; 526 } 528 feature intf-static-group { 529 description 530 "Support configuration of interface static-group."; 531 } 533 feature intf-verify-source-subnet { 534 description 535 "Support configuration of interface verify-source-subnet."; 536 } 538 feature intf-explicit-tracking { 539 description 540 "Support configuration of interface explicit-tracking hosts."; 541 } 543 feature intf-exclude-lite { 544 description 545 "Support configuration of interface exclude-lite."; 546 } 548 feature per-interface-config { 549 description 550 "Support per interface configuration."; 551 } 553 feature rpc-clear-groups { 554 description 555 "Support rpc's to clear groups."; 556 } 558 /* 559 * Typedefs 560 */ 561 typedef ssm-map-ipv4-addr-type { 562 type union { 563 type enumeration { 564 enum 'policy' { 565 description 566 "Source address is specified in SSM map policy."; 567 } 568 } 569 type inet:ipv4-address; 570 } 571 description 572 "Multicast source IP address type for SSM map."; 573 } // source-ipv4-addr-type 575 typedef ssm-map-ipv6-addr-type { 576 type union { 577 type enumeration { 578 enum 'policy' { 579 description 580 "Source address is specified in SSM map policy."; 581 } 582 } 583 type inet:ipv6-address; 585 } 586 description 587 "Multicast source IP address type for SSM map."; 588 } // source-ipv6-addr-type 590 typedef source-ipv4-addr-type { 591 type union { 592 type enumeration { 593 enum '*' { 594 description 595 "Any source address."; 596 } 597 } 598 type inet:ipv4-address; 599 } 600 description 601 "Multicast source IP address type."; 602 } // source-ipv4-addr-type 604 typedef source-ipv6-addr-type { 605 type union { 606 type enumeration { 607 enum '*' { 608 description 609 "Any source address."; 610 } 611 } 612 type inet:ipv6-address; 613 } 614 description 615 "Multicast source IP address type."; 616 } // source-ipv6-addr-type 618 /* 619 * Identities 620 */ 622 /* 623 * Groupings 624 */ 625 grouping global-config-attributes { 626 description "Global IGMP and MLD configuration."; 628 leaf enable { 629 if-feature global-admin-enable; 630 type boolean; 631 description 632 "true to enable IGMP or MLD in the routing instance; 633 false to disable IGMP or MLD in the routing instance."; 635 } 637 leaf max-entries { 638 if-feature global-max-entries; 639 type uint32; 640 description 641 "The maximum number of entries in IGMP or MLD."; 642 } 643 leaf max-groups { 644 if-feature global-max-groups; 645 type uint32; 646 description 647 "The maximum number of groups that IGMP 648 or MLD can join."; 649 } 650 } // global-config-attributes 652 grouping global-state-attributes { 654 description "Global IGMP and MLD state attributes."; 656 leaf entries-count { 657 type uint32; 658 config false; 659 description 660 "The number of entries in IGMP or MLD."; 661 } 662 leaf groups-count { 663 type uint32; 664 config false; 665 description 666 "The number of groups that IGMP or MLD can join."; 667 } 669 container statistics { 670 config false; 671 description "Global statistics."; 673 leaf discontinuity-time { 674 type yang:date-and-time; 675 description 676 "The time on the most recent occasion at which any one 677 or more of the statistic counters suffered a 678 discontinuity. If no such discontinuities have occurred 679 since the last re-initialization of the local 680 management subsystem, then this node contains the time 681 the local management subsystem re-initialized itself."; 682 } 683 container error { 684 description "Statistics of errors."; 685 uses global-statistics-error; 686 } 688 container received { 689 description "Statistics of received messages."; 690 uses global-statistics-sent-received; 691 } 692 container sent { 693 description "Statistics of sent messages."; 694 uses global-statistics-sent-received; 695 } 696 } // statistics 697 } // global-state-attributes 699 grouping global-statistics-error { 700 description 701 "A grouping defining statistics attributes for errors."; 702 uses global-statistics-sent-received; 703 leaf checksum { 704 type yang:counter64; 705 description 706 "The number of checksum errors."; 707 } 708 leaf too-short { 709 type yang:counter64; 710 description 711 "The number of messages that are too short."; 712 } 713 } // global-statistics-error 715 grouping global-statistics-sent-received { 716 description 717 "A grouping defining statistics attributes."; 718 leaf total { 719 type yang:counter64; 720 description 721 "The number of total messages."; 722 } 723 leaf query { 724 type yang:counter64; 725 description 726 "The number of query messages."; 727 } 728 leaf report { 729 type yang:counter64; 730 description 731 "The number of report messages."; 733 } 734 leaf leave { 735 type yang:counter64; 736 description 737 "The number of leave messages."; 738 } 739 } // global-statistics-sent-received 741 grouping interfaces-config-attributes { 742 description 743 "Configuration attributes applied to the interfaces whose 744 per interface attributes are not existing."; 746 leaf last-member-query-interval { 747 type uint16 { 748 range "1..65535"; 749 } 750 units seconds; 751 default 1; 752 description 753 "Last Member Query Interval, which may be tuned to modify the 754 leave latency of the network."; 755 reference "RFC3376. Sec. 8.8."; 756 } 758 leaf max-groups-per-interface { 759 if-feature intf-max-groups; 760 type uint32; 761 description 762 "The maximum number of groups that IGMP or MLD can join."; 763 } 765 leaf query-interval { 766 type uint16 { 767 range "1..31744"; 768 } 769 units seconds; 770 default 125; 771 description 772 "The Query Interval is the interval between General Queries 773 sent by the Querier."; 774 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 775 } 777 leaf query-max-response-time { 778 type uint16 { 779 range "1..65535"; 780 } 781 units seconds; 782 default 10; 783 description 784 "Query maximum response time specifies the maximum time 785 allowed before sending a responding report."; 786 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 787 } 789 leaf require-router-alert { 790 if-feature intf-require-router-alert; 791 type boolean; 792 default false; 793 description 794 "Protocol packets should contain router alert IP option."; 795 } 797 leaf robustness-variable { 798 type uint8 { 799 range "2..7"; 800 } 801 default 2; 802 description 803 "Querier's Robustness Variable allows tuning for the expected 804 packet loss on a network."; 805 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 806 } 808 } // interfaces-config-attributes 810 grouping interfaces-config-attributes-igmp { 811 description "interfaces configuration for IGMP."; 813 uses interfaces-config-attributes; 814 leaf version { 815 type uint8 { 816 range "1..3"; 817 } 818 description "IGMP version."; 819 reference "RFC1112, RFC2236, RFC3376."; 820 } 821 } 823 grouping interfaces-config-attributes-mld { 824 description "interfaces configuration for MLD."; 826 uses interfaces-config-attributes; 827 leaf version { 828 type uint8 { 829 range "1..2"; 831 } 832 description "MLD version."; 833 reference "RFC2710, RFC3810."; 834 } 835 } 837 grouping interface-config-attributes-igmp { 838 description "Per interface configuration for IGMP."; 840 uses interface-config-attributes-igmp-mld; 842 leaf version { 843 type uint8 { 844 range "1..3"; 845 } 846 description "IGMP version."; 847 reference "RFC1112, RFC2236, RFC3376."; 848 } 849 leaf-list join-group { 850 if-feature intf-join-group; 851 type inet:ipv4-address; 852 description 853 "The router joins this multicast group on the interface."; 854 } 856 list ssm-map { 857 if-feature intf-ssm-map; 858 key "source-addr group-policy"; 859 description "The policy for (*,G) mapping to (S,G)."; 860 leaf source-addr { 861 type ssm-map-ipv4-addr-type; 862 description 863 "Multicast source IP address."; 864 } 865 leaf group-policy { 866 type string; 867 description 868 "Name of the access policy used to filter IGMP 869 membership.A device can restrict the length 870 and value of this name, possibly space and special 871 characters are not allowed. "; 872 } 873 } 875 list static-group { 876 if-feature intf-static-group; 877 key "group-addr source-addr"; 878 description 879 "A static multicast route, (*,G) or (S,G)."; 881 leaf group-addr { 882 type inet:ipv4-address; 883 description 884 "Multicast group IP address."; 885 } 886 leaf source-addr { 887 type source-ipv4-addr-type; 888 description 889 "Multicast source IP address."; 890 } 891 } 892 } // interface-config-attributes-igmp 894 grouping interface-config-attributes-igmp-mld { 895 description 896 "Per interface configuration for both IGMP and MLD."; 898 leaf enable { 899 if-feature intf-admin-enable; 900 type boolean; 901 default false; 902 description 903 "true to enable IGMP or MLD on the interface; 904 false to disable IGMP or MLD on the interface."; 905 } 906 leaf group-policy { 907 type string; 908 description 909 "Name of the access policy used to filter IGMP or MLD 910 membership.A device can restrict the length 911 and value of this name, possibly space and special 912 characters are not allowed."; 913 } 914 leaf immediate-leave { 915 if-feature intf-immediate-leave; 916 type empty; 917 description 918 "If present, IGMP or MLD perform an immediate leave upon 919 receiving an IGMPv2 or MLDv1 leave message. 920 If the router is IGMP-enabled or MLD-enabled, it sends an 921 IGMP or MLD last member query with a last member query 922 response time. However, the router does not wait for 923 the response time before it prunes off the group."; 924 } 926 leaf last-member-query-interval { 927 type uint16 { 928 range "1..65535"; 930 } 931 units seconds; 932 default 1; 933 description 934 "Last Member Query Interval, which may be tuned to modify the 935 leave latency of the network."; 936 reference "RFC3376. Sec. 8.8."; 937 } 939 leaf max-groups { 940 if-feature intf-max-groups; 941 type uint32; 942 description 943 "The maximum number of groups that IGMP ro MLD can join."; 944 } 945 leaf max-group-sources { 946 if-feature intf-max-group-sources; 947 type uint32; 948 description 949 "The maximum number of group sources."; 950 } 952 leaf query-interval { 953 type uint16 { 954 range "1..31744"; 955 } 956 units seconds; 957 default 125; 958 description 959 "The Query Interval is the interval between General Queries 960 sent by the Querier."; 961 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 962 } 964 leaf query-max-response-time { 965 type uint16 { 966 range "1..65535"; 967 } 968 units seconds; 969 default 10; 970 description 971 "Query maximum response time specifies the maximum time 972 allowed before sending a responding report."; 973 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 974 } 976 leaf require-router-alert { 977 if-feature intf-require-router-alert; 978 type boolean; 979 description 980 "Protocol packets should contain router alert IP option."; 981 } 983 leaf robustness-variable { 984 type uint8 { 985 range "2..7"; 986 } 987 default 2; 988 description 989 "Querier's Robustness Variable allows tuning for the expected 990 packet loss on a network."; 991 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 992 } 994 leaf source-policy { 995 if-feature intf-source-policy; 996 type string; 997 description 998 "Name of the access policy used to filter sources. 999 A device can restrict the length 1000 and value of this name, possibly space and special 1001 characters are not allowed."; 1002 } 1003 leaf verify-source-subnet { 1004 if-feature intf-verify-source-subnet; 1005 type empty; 1006 description 1007 "If present, the interface accepts packets with matching 1008 source IP subnet only."; 1009 } 1010 leaf explicit-tracking { 1011 if-feature intf-explicit-tracking; 1012 type boolean; 1013 description 1014 "IGMP/MLD-based explicit membership tracking function 1015 for multicast routers and IGMP/MLD proxy devices 1016 supporting IGMPv3/MLDv2. The explicit membership tracking 1017 function contributes to saving network resources and 1018 shortening leave latency."; 1019 } 1020 leaf exclude-lite { 1021 if-feature intf-exclude-lite; 1022 type boolean; 1023 description 1024 "lightweight IGMPv3 and MLDv2 protocols, which simplify the 1025 standard versions of IGMPv3 and MLDv2."; 1026 reference "RFC5790"; 1027 } 1029 } // interface-config-attributes-igmp-mld 1031 grouping interface-config-attributes-mld { 1032 description "Per interface configuration for MLD."; 1034 uses interface-config-attributes-igmp-mld; 1036 leaf version { 1037 type uint8 { 1038 range "1..2"; 1039 } 1040 description "MLD version."; 1041 reference "RFC2710, RFC3810."; 1042 } 1043 leaf-list join-group { 1044 if-feature intf-join-group; 1045 type inet:ipv6-address; 1046 description 1047 "The router joins this multicast group on the interface."; 1048 } 1050 list ssm-map { 1051 if-feature intf-ssm-map; 1052 key "source-addr group-policy"; 1053 description "The policy for (*,G) mapping to (S,G)."; 1054 leaf source-addr { 1055 type ssm-map-ipv6-addr-type; 1056 description 1057 "Multicast source IPv6 address."; 1058 } 1059 leaf group-policy { 1060 type string; 1061 description 1062 "Name of the access policy used to filter MLD 1063 membership.A device can restrict the length 1064 and value of this name, possibly space and special 1065 characters are not allowed."; 1066 } 1067 } 1069 list static-group { 1070 if-feature intf-static-group; 1071 key "group source-addr"; 1072 description 1073 "A static multicast route, (*,G) or (S,G)."; 1075 leaf group { 1076 type inet:ipv6-address; 1077 description 1078 "Multicast group IPv6 address."; 1079 } 1080 leaf source-addr { 1081 type source-ipv6-addr-type; 1082 description 1083 "Multicast source IPv6 address."; 1084 } 1085 } 1086 } // interface-config-attributes-mld 1088 grouping interface-state-attributes-igmp { 1090 description 1091 "Per interface state attributes for IGMP."; 1093 uses interface-state-attributes-igmp-mld; 1095 leaf querier { 1096 type inet:ipv4-address; 1097 config false; 1098 description "The querier address in the subnet"; 1099 } 1100 leaf-list joined-group { 1101 if-feature intf-join-group; 1102 type inet:ipv4-address; 1103 config false; 1104 description 1105 "The routers that joined this multicast group."; 1106 } 1108 list group { 1109 key "group-address"; 1110 config false; 1111 description 1112 "Multicast group membership information 1113 that joined on the interface."; 1115 leaf group-address { 1116 type inet:ipv4-address; 1117 description 1118 "Multicast group address."; 1119 } 1120 uses interface-state-group-attributes-igmp-mld; 1122 leaf last-reporter { 1123 type inet:ipv4-address; 1124 description 1125 "The last host address which has sent the 1126 report to join the multicast group."; 1127 } 1128 list source { 1129 key "source-address"; 1130 description 1131 "List of multicast source information 1132 of the multicast group."; 1134 leaf source-address { 1135 type inet:ipv4-address; 1136 description 1137 "Multicast source address"; 1138 } 1139 uses interface-state-source-attributes-igmp-mld; 1140 leaf last-reporter { 1141 type inet:ipv4-address; 1142 description 1143 "The last host address which has sent the 1144 report to join the multicast source and group."; 1145 } 1146 list host { 1147 if-feature intf-explicit-tracking; 1148 key "host-address"; 1149 description 1150 "List of multicast membership hosts 1151 of the specific multicast source-group."; 1153 leaf host-address { 1154 type inet:ipv4-address; 1155 description 1156 "Multicast membership host address."; 1157 } 1158 leaf host-filter-mode { 1159 type enumeration { 1160 enum "include" { 1161 description 1162 "In include mode"; 1163 } 1164 enum "exclude" { 1165 description 1166 "In exclude mode."; 1167 } 1168 } 1169 description 1170 "Filter mode for a multicast membership 1171 host may be either include or exclude."; 1172 } 1173 }// list host 1174 } // list source 1176 } // list group 1177 } // interface-state-attributes-igmp 1179 grouping interface-state-attributes-igmp-mld { 1180 description 1181 "Per interface state attributes for both IGMP and MLD."; 1183 leaf oper-status { 1184 type enumeration { 1185 enum up { 1186 description 1187 "Ready to pass packets."; 1188 } 1189 enum down { 1190 description 1191 "The interface does not pass any packets."; 1192 } 1193 } 1194 config false; 1195 description 1196 "interface up or down state for IGMP or MLD protocol"; 1197 } 1198 } // interface-config-attributes-igmp-mld 1200 grouping interface-state-attributes-mld { 1202 description 1203 "Per interface state attributes for MLD."; 1205 uses interface-state-attributes-igmp-mld; 1207 leaf querier { 1208 type inet:ipv6-address; 1209 config false; 1210 description 1211 "The querier address in the subnet."; 1212 } 1213 leaf-list joined-group { 1214 if-feature intf-join-group; 1215 type inet:ipv6-address; 1216 config false; 1217 description 1218 "The routers that joined this multicast group."; 1219 } 1221 list group { 1222 key "group-address"; 1223 config false; 1224 description 1225 "Multicast group membership information 1226 that joined on the interface."; 1228 leaf group-address { 1229 type inet:ipv6-address; 1230 description 1231 "Multicast group address."; 1232 } 1233 uses interface-state-group-attributes-igmp-mld; 1235 leaf last-reporter { 1236 type inet:ipv6-address; 1237 description 1238 "The last host address which has sent the 1239 report to join the multicast group."; 1240 } 1241 list source { 1242 key "source-address"; 1243 description 1244 "List of multicast source information 1245 of the multicast group."; 1247 leaf source-address { 1248 type inet:ipv6-address; 1249 description 1250 "Multicast source address"; 1251 } 1252 uses interface-state-source-attributes-igmp-mld; 1253 leaf last-reporter { 1254 type inet:ipv6-address; 1255 description 1256 "The last host address which has sent the 1257 report to join the multicast source and group."; 1258 } 1259 list host { 1260 if-feature intf-explicit-tracking; 1261 key "host-address"; 1262 description 1263 "List of multicast membership hosts 1264 of the specific multicast source-group."; 1266 leaf host-address { 1267 type inet:ipv6-address; 1268 description 1269 "Multicast membership host address."; 1270 } 1271 leaf host-filter-mode { 1272 type enumeration { 1273 enum "include" { 1274 description 1275 "In include mode"; 1276 } 1277 enum "exclude" { 1278 description 1279 "In exclude mode."; 1280 } 1281 } 1282 description 1283 "Filter mode for a multicast membership 1284 host may be either include or exclude."; 1285 } 1286 }// list host 1287 } // list source 1288 } // list group 1289 } // interface-state-attributes-mld 1291 grouping interface-state-group-attributes-igmp-mld { 1292 description 1293 "Per interface state attributes for both IGMP and MLD 1294 groups."; 1296 leaf expire { 1297 type uint32; 1298 units seconds; 1299 description 1300 "The time left before multicast group state expires."; 1301 } 1302 leaf filter-mode { 1303 type enumeration { 1304 enum "include" { 1305 description 1306 "In include mode, reception of packets sent 1307 to the specified multicast address is requested 1308 only from those IP source addresses listed in the 1309 source-list parameter"; 1310 } 1311 enum "exclude" { 1312 description 1313 "In exclude mode, reception of packets sent 1314 to the given multicast address is requested 1315 from all IP source addresses except those 1316 listed in the source-list parameter."; 1317 } 1318 } 1319 description 1320 "Filter mode for a multicast group, 1321 may be either include or exclude."; 1322 } 1323 leaf up-time { 1324 type uint32; 1325 units seconds; 1326 description 1327 "The elapsed time since the device created multicast group record."; 1328 } 1329 } // interface-state-group-attributes-igmp-mld 1331 grouping interface-state-source-attributes-igmp-mld { 1332 description 1333 "Per interface state attributes for both IGMP and MLD 1334 source-group records."; 1336 leaf expire { 1337 type uint32; 1338 units seconds; 1339 description 1340 "The time left before multicast source-group state expires."; 1341 } 1342 leaf up-time { 1343 type uint32; 1344 units seconds; 1345 description 1346 "The elapsed time since the device created multicast 1347 source-group record."; 1348 } 1349 leaf host-count { 1350 if-feature intf-explicit-tracking; 1351 type uint32; 1352 description 1353 "The number of host addresses."; 1354 } 1355 } // interface-state-source-attributes-igmp-mld 1357 /* 1358 * Configuration and Operational state data nodes (NMDA version) 1359 */ 1360 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol" 1361 { 1362 description 1363 "IGMP augmentation to routing control plane protocol 1364 configuration and state."; 1366 container igmp { 1367 description 1368 "IGMP operational state data."; 1370 container global { 1371 description 1372 "Global attributes."; 1373 uses global-config-attributes; 1374 uses global-state-attributes; 1375 } 1377 container interfaces { 1378 description 1379 "Containing a list of interfaces."; 1381 uses interfaces-config-attributes-igmp { 1382 if-feature global-interface-config; 1383 } 1385 list interface { 1386 key "interface-name"; 1387 description 1388 "List of IGMP interfaces."; 1389 leaf interface-name { 1390 type if:interface-ref; 1391 must "/if:interfaces/if:interface[if:name = current()]/" 1392 + "ip:ipv4" { 1393 description 1394 "The interface must have IPv4 enabled."; 1395 } 1396 description 1397 "Reference to an entry in the global interface list."; 1398 } 1399 uses interface-config-attributes-igmp { 1400 if-feature per-interface-config; 1401 } 1402 uses interface-state-attributes-igmp; 1403 } // interface 1404 } // interfaces 1405 } // igmp 1406 }//augment 1408 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol" 1409 { 1410 description 1411 "MLD augmentation to routing control plane protocol 1412 configuration and state."; 1414 container mld { 1415 description 1416 "MLD operational state data."; 1418 container global { 1419 description 1420 "Global attributes."; 1422 uses global-config-attributes; 1423 uses global-state-attributes; 1424 } 1426 container interfaces { 1427 description 1428 "Containing a list of interfaces."; 1430 uses interfaces-config-attributes-mld { 1431 if-feature global-interface-config; 1432 } 1434 list interface { 1435 key "interface-name"; 1436 description 1437 "List of MLD interfaces."; 1438 leaf interface-name { 1439 type if:interface-ref; 1440 must "/if:interfaces/if:interface[if:name = current()]/" 1441 + "ip:ipv6" { 1442 description 1443 "The interface must have IPv6 enabled."; 1444 } 1445 description 1446 "Reference to an entry in the global interface list."; 1447 } 1448 uses interface-config-attributes-mld { 1449 if-feature per-interface-config; 1450 } 1451 uses interface-state-attributes-mld; 1452 } // interface 1453 } // interfaces 1454 } // mld 1455 } // augment 1457 /* 1458 * RPCs 1459 */ 1460 rpc clear-igmp-groups { 1461 if-feature rpc-clear-groups; 1462 description 1463 "Clears the specified IGMP cache entries."; 1465 input { 1466 leaf interface { 1467 type string; 1468 description 1469 "Name of the IGMP interface. 1470 If it is not specified, groups from all interfaces are 1471 cleared."; 1472 } 1473 leaf group { 1474 type inet:ipv4-address; 1475 description 1476 "Multicast group IPv4 address. 1477 If it is not specified, all IGMP group entries are 1478 cleared."; 1479 } 1480 leaf source { 1481 type inet:ipv4-address; 1482 description 1483 "Multicast source IPv4 address. 1484 If it is not specified, all IGMP source-group entries are 1485 cleared."; 1486 } 1487 } 1488 } // rpc clear-igmp-groups 1490 rpc clear-mld-groups { 1491 if-feature rpc-clear-groups; 1492 description 1493 "Clears the specified MLD cache entires."; 1495 input { 1496 leaf interface { 1497 type string; 1498 description 1499 "Name of the MLD interface. 1500 If it is not specified, groups from all interfaces are 1501 cleared."; 1502 } 1503 leaf group { 1504 type inet:ipv6-address; 1505 description 1506 "Multicast group IPv6 address. 1507 If it is not specified, all MLD group entries are 1508 cleared."; 1509 } 1510 leaf source { 1511 type inet:ipv6-address; 1512 description 1513 "Multicast source IPv6 address. 1514 If it is not specified, all MLD source-group entries are 1515 cleared."; 1516 } 1517 } 1518 } // rpc clear-mld-groups 1519 /* 1520 * Notifications 1521 */ 1522 } 1523 1525 5. Security Considerations 1527 The data model defined does not introduce any security implications. 1528 This document does not change any underlying security issues 1529 inherent in [RFC8022]. 1531 6. IANA Considerations 1533 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1534 actual RFC number (and remove this note). 1536 This document registers the following namespace URIs in the IETF XML 1537 registry [RFC3688]: 1539 -------------------------------------------------------------------- 1541 URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1543 Registrant Contact: The IESG. 1545 XML: N/A, the requested URI is an XML namespace. 1547 -------------------------------------------------------------------- 1549 This document registers the following YANG modules in the YANG Module 1550 Names registry [RFC7950]: 1552 -------------------------------------------------------------------- 1554 name: ietf-igmp-mld 1556 namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1558 prefix: igmp-mld 1560 reference: RFC XXXX 1562 -------------------------------------------------------------------- 1564 7. Acknowledgments 1566 The authors would like to thank Steve Baillargeon, Hu Fangwei, 1567 Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable 1568 contributions. 1570 8. Contributing Authors 1572 Yisong Liu 1573 Huawei Technologies 1574 Huawei Bld., No.156 Beiqing Rd. 1575 Beijing 100095 1576 China 1578 Email: liuyisong@huawei.com 1580 9. References 1582 9.1. Normative References 1584 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1585 Requirement Levels", BCP 14, RFC 2119, March 1997. 1587 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1588 the Network Configuration Protocol (NETCONF)", RFC 6020, 1589 October 2010 1591 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1592 Data Model Documents", RFC 6087, January 2011 1594 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1595 and A. Bierman, Ed., "Network Configuration Protocol 1596 (NETCONF)", RFC 6241, June 2011 1598 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1599 RFC 7950, August 2016 1601 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1602 Management", RFC 8022, November 2016 1604 [I-D.dsdt-nmda-guidelines] M. Bjorklund, J. Schoenwaelder, P. 1605 Shafer, K. Watsen, R. Wilton, "Guidelines for YANG Module 1606 Authors (NMDA)", draft-dsdt-nmda-guidelines-01, May 2017 1608 [draft-bjorklund-netmod-rfc7223bis-00] M. Bjorklund, "A YANG Data 1609 Model for Interface Management", draft-bjorklund-netmod- 1610 rfc7223bis-00, August 2017 1612 [draft-bjorklund-netmod-rfc7277bis-00] M. Bjorklund, "A YANG Data 1613 Model for IP Management", draft-bjorklund-netmod- 1614 rfc7277bis-00, August 2017 1616 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1617 and Reviewers of YANG Data Model Documents", draft-ietf- 1618 netmod-rfc6087bis-14, September 2017 1620 [I-D.acee-netmod-rfc8022bis] L. Lhotka, A. Lindem and Y.Qu, "A YANG 1621 Data Model for Routing Management (NDMA Version)", draft- 1622 acee-netmod-rfc8022bis-02, September 2017 1624 9.2. Informative References 1626 [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, 1627 RFC 1112, August 1989. 1629 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1630 2", RFC 2236, November 1997. 1632 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1633 Listener Discovery (MLD) for IPv6", RFC 2710, October 1634 1999. 1636 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1637 Thyagarajan, "Internet Group Management Protocol, Version 1638 3", RFC 3376, October 2002. 1640 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1641 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1643 [RFC4541] M. Christensen, K. Kimball and F. Solensky, 1644 "Considerations for Internet Group Management Protocol 1645 (IGMP) and Multicast Listener Discovery (MLD) Snooping 1646 Switches", RFC 4541, May 2006. 1648 [RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet 1649 Group Management Protocol (IGMP) / Multicast Listener 1650 Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD 1651 Proxying")", RFC 4605, August 2006. 1653 [RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group 1654 Management Protocol Version 3 (IGMPv3) and Multicast 1655 Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, 1656 February 2010 1658 Authors' Addresses 1660 Xufeng Liu 1661 Jabil 1662 8281 Greensboro Drive, Suite 200 1663 McLean VA 22102 1664 USA 1666 EMail: Xufeng_Liu@jabil.com 1668 Feng Guo 1669 Huawei 1670 Huawei Bld., No.156 Beiqing Rd. 1671 Beijing 100095 1672 China 1674 Email: guofeng@huawei.com 1676 Mahesh Sivakumar 1677 Cisco Systems, Inc. 1678 510 McCarthy Boulevard 1679 Milpitas, California 95035 1680 USA 1682 Email: masivaku@cisco.com 1684 Pete McAllister 1685 Metaswitch Networks 1686 100 Church Street 1687 Enfield EN2 6BQ 1688 UK 1690 EMail: pete.mcallister@metaswitch.com 1692 Anish Peter 1693 Individual 1695 EMail: anish.ietf@gmail.com