idnits 2.17.1 draft-ietf-pim-igmp-mld-yang-08.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 52 instances of too long lines in the document, the longest one being 36 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 292 has weird spacing: '...-policy str...' == Line 295 has weird spacing: '...ce-addr rt-...' == Line 300 has weird spacing: '...address rt-...' == Line 306 has weird spacing: '...address ine...' == Line 313 has weird spacing: '...er-mode enu...' == (5 more instances...) -- The document date (October 15, 2018) is 2010 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) == Unused Reference: 'RFC5790' is defined on line 1793, but no explicit reference was found in the text ** Downref: Normative reference to an Informational RFC: RFC 4541 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-21) exists of draft-ietf-netmod-acl-model-19 Summary: 4 errors (**), 0 flaws (~~), 9 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 Volta 3 Intended Status: Standard Track F. Guo 4 Expires: April 15, 2019 Huawei 5 M. Sivakumar 6 Juniper 7 P. McAllister 8 Metaswitch Networks 9 A. Peter 10 Individual 11 October 15, 2018 13 A YANG data model for Internet Group Management Protocol (IGMP) and 14 Multicast Listener Discovery (MLD) 15 draft-ietf-pim-igmp-mld-yang-08 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 15, 2019. 40 Copyright Notice 42 Copyright (c) 2019 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. Terminology ............................................ 3 65 1.2. Tree Diagrams .......................................... 3 66 1.3. Prefixes in Data Node Names............................. 3 67 2. Design of Data model......................................... 4 68 2.1. Scope of model ......................................... 4 69 2.2. Optional capabilities................................... 4 70 2.3. Position of address family in hierarchy................. 5 71 3. Module Structure ............................................ 5 72 3.1. IGMP Configuration and Operational state................ 5 73 3.2. MLD Configuration and Operational State................. 7 74 3.3. IGMP and MLD RPC........................................ 9 75 4. IGMP and MLD YANG Modules................................... 10 76 5. Security Considerations..................................... 33 77 6. IANA Considerations ........................................ 35 78 7. Acknowledgments ............................................ 35 79 8. Contributing Authors........................................ 36 80 9. References ................................................. 36 81 9.1. Normative References................................... 36 82 9.2. Informative References................................. 38 84 1. Introduction 86 YANG [RFC6020] [RFC7950] is a data definition language that was 87 introduced to model the configuration and running state of a device 88 managed using network management protocols such as NETCONF [RFC6241] 89 or RESTCONF [RFC8040]. YANG is now also being used as a component of 90 wider management interfaces, such as CLIs. 92 This document defines a YANG data model that can be used to 93 configure and manage Internet Group Management Protocol (IGMP) and 94 Multicast Listener Discovery (MLD) devices. This model will support 95 the core IGMP and MLD protocols, as well as many other features 96 mentioned in separate IGMP and MLD RFCs. Non-core features are 97 defined as optional in the provided data model. 99 1.1. Terminology 101 The terminology for describing YANG data models is found in 102 [RFC6020] [RFC7950]. 104 The following abbreviations are used in this document and the 105 defined model: 107 IGMP: 109 Internet Group Management Protocol [RFC3376]. 111 MLD: 113 Multicast Listener Discovery [RFC3810]. 115 1.2. Tree Diagrams 117 Tree diagrams used in this document follow the notation defined in 118 [RFC8340]. 120 1.3. Prefixes in Data Node Names 122 In this document, names of data nodes, actions, and other data model 123 objects are often used without a prefix, as long as it is clear from 124 the context in which YANG module each name is defined. Otherwise, 125 names are prefixed using the standard prefix associated with the 127 +-----------+--------------------------+---------------------+ 129 | Prefix | YANG module | Reference | 131 +-----------+--------------------------+---------------------+ 133 | yang | ietf-yang-types | [RFC6991] | 135 | inet | ietf-inet-types | [RFC6991] | 137 | if | ietf-interfaces | [RFC8343] | 139 | ip | ietf-ip | [RFC8344] | 141 | rt | ietf-routing | [RFC8349] | 143 | rt-types | ietf-routing-types | [RFC8294] | 144 | acl | ietf-access-control-list | [I-D.ietf-acl-yang] | 146 +-----------+--------------------------+---------------------+ 148 Table 1: Prefixes and Corresponding YANG Modules 150 2. Design of Data model 152 2.1. Scope of model 154 The model covers IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3 155 [RFC3376] and MLDv1 [RFC2710], MLDv2 [RFC3810]. 157 The configuration of IGMP and MLD features, and the operational 158 state fields and RPC definitions are not all included in this 159 document of the data model. This model can be extended, though the 160 structure of what has been written may be taken as representative of 161 the structure of the whole model. 163 This model does not cover other IGMP and MLD related protocols such 164 as IGMP/MLD Proxy [RFC4605] or IGMP/MLD Snooping [RFC4541] etc., 165 these will be specified in separate documents. 167 2.2. Optional capabilities 169 This model is designed to represent the capabilities of IGMP and MLD 170 devices with various specifications, including some with basic 171 subsets of the IGMP and MLD protocols. The main design goals of 172 this document are that any major now-existing implementation may be 173 said to support the basic model, and that the configuration of all 174 implementations meeting the specification is easy to express through 175 some combination of the features in the basic model and simple 176 vendor augmentations. 178 There is also value in widely-supported features being standardized, 179 to save work for individual vendors, and so that mapping between 180 different vendors' configuration is not needlessly complicated. 181 Therefore these modules declare a number of features representing 182 capabilities that not all deployed devices support. 184 The extensive use of feature declarations should also substantially 185 simplify the capability negotiation process for a vendor's IGMP and 186 MLD implementations. 188 On the other hand, operational state parameters are not so widely 189 designated as features, as there are many cases where the defaulting 190 of an operational state parameter would not cause any harm to the 191 system, and it is much more likely that an implementation without 192 native support for a piece of operational state would be able to 193 derive a suitable value for a state variable that is not natively 194 supported. 196 2.3. Position of address family in hierarchy 198 The current document contains IGMP and MLD as separate schema 199 branches in the structure. The reason for this is to make it easier 200 for implementations which may optionally choose to support specific 201 address families. And the names of objects may be different between 202 the IPv4 (IGMP) and IPv6 (MLD) address families. 204 3. Module Structure 206 3.1. IGMP Configuration and Operational state 208 The IGMP YANG model conforms to the Network Management Datastore 209 Architecture (NMDA) [RFC8342]. The operational state data is 210 combined with the associated configuration data in the same 211 hierarchy [I-D.ietf-netmod-rfc6087bis]. The IGMP module defines in a 212 three-level hierarchy structure as listed below: 214 Global level: IGMP configuration and operational state attributes 215 for the entire routing system. 217 Interface-global: Only including configuration data nodes that 218 IGMP configuration attributes are applicable to all the interfaces 219 whose interface-level corresponding attributes are not existing, 220 with same attributes' value for these interfaces. 222 Interface-level: IGMP configuration and operational state 223 attributes specific to the given interface. 225 Where fields are not genuinely essential to protocol operation, they 226 are marked as optional. Some fields will be essential but have a 227 default specified, so that they need not be configured explicitly. 229 This model augments the core routing data model "ietf-routing" 230 specified in [RFC8349]. The IGMP model augments "/rt:routing/ 231 rt:control-plane-protocols" as opposed to augmenting "/rt:routing/ 232 rt:control-plane-protocols/rt:control-plane-protocol", as the latter 233 would allow multiple protocol instances, while the IGMP protocol is 234 designed to be enabled or disabled as a single protocol instance on 235 a network instance or a logical network element. 237 augment /rt:routing/rt:control-plane-protocols: 238 +--rw igmp {feature-igmp}? 239 +--rw global 240 | +--rw enable? boolean {global-admin-enable}? 241 | +--rw max-entries? uint32 {global-max-entries}? 242 | +--rw max-groups? uint32 {global-max-groups}? 243 | +--ro entries-count? uint32 244 | +--ro groups-count? uint32 245 | +--ro statistics 246 | +--ro discontinuity-time? yang:date-and-time 247 | +--ro error 248 | | +--ro total? yang:counter64 249 | | +--ro query? yang:counter64 250 | | +--ro report? yang:counter64 251 | | +--ro leave? yang:counter64 252 | | +--ro checksum? yang:counter64 253 | | +--ro too-short? yang:counter64 254 | +--ro received 255 | | +--ro total? yang:counter64 256 | | +--ro query? yang:counter64 257 | | +--ro report? yang:counter64 258 | | +--ro leave? yang:counter64 259 | +--ro sent 260 | +--ro total? yang:counter64 261 | +--ro query? yang:counter64 262 | +--ro report? yang:counter64 263 | +--ro leave? yang:counter64 264 +--rw interfaces 265 +--rw last-member-query-interval? uint16 266 +--rw query-interval? uint16 267 +--rw query-max-response-time? uint16 268 +--rw require-router-alert? boolean {intf-require-router-alert}? 269 +--rw robustness-variable? uint8 270 +--rw version? uint8 271 +--rw max-groups-per-interface? uint32 {intf-max-groups}? 272 +--rw interface* [interface-name] 273 +--rw interface-name if:interface-ref 274 +--rw last-member-query-interval? uint16 275 +--rw query-interval? uint16 276 +--rw query-max-response-time? uint16 277 +--rw require-router-alert? boolean {intf-require-router-alert}? 278 +--rw robustness-variable? uint8 279 +--rw version? uint8 280 +--rw enable? boolean {intf-admin-enable}? 281 +--rw group-policy? -> /acl:acls/acl/name 282 +--rw immediate-leave? empty {intf-immediate-leave}? 283 +--rw max-groups? uint32 {intf-max-groups}? 284 +--rw max-group-sources? uint32 {intf-max-group-sources}? 285 +--rw source-policy? -> /acl:acls/acl/name {intf-source-policy}? 286 +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 287 +--rw explicit-tracking? empty {intf-explicit-tracking}? 288 +--rw exclude-lite? empty {intf-exclude-lite}? 289 +--rw join-group* rt-types:ipv4-multicast-group-address {intf-join-group}? 290 +--rw ssm-map* [ssm-map-source-addr ssm-map-group-policy] {intf-ssm-map}? 291 | +--rw ssm-map-source-addr ssm-map-ipv4-addr-type 292 | +--rw ssm-map-group-policy string 293 +--rw static-group* [group-addr source-addr] {intf-static-group}? 294 | +--rw group-addr rt-types:ipv4-multicast-group-address 295 | +--rw source-addr rt-types:ipv4-multicast-source-address 296 +--ro oper-status enumeration 297 +--ro querier inet:ipv4-address 298 +--ro joined-group* rt-types:ipv4-multicast-group-address {intf-join-group}? 299 +--ro group* [group-address] 300 +--ro group-address rt-types:ipv4-multicast-group-address 301 +--ro expire uint32 302 +--ro filter-mode enumeration 303 +--ro up-time uint32 304 +--ro last-reporter? inet:ipv4-address 305 +--ro source* [source-address] 306 +--ro source-address inet:ipv4-address 307 +--ro expire uint32 308 +--ro up-time uint32 309 +--ro host-count? uint32 {intf-explicit-tracking}? 310 +--ro last-reporter? inet:ipv4-address 311 +--ro host* [host-address] {intf-explicit-tracking}? 312 +--ro host-address inet:ipv4-address 313 +--ro host-filter-mode enumeration 315 3.2. MLD Configuration and Operational State 317 The MLD YANG model uses the same structure as IGMP YANG model. The 318 MLD module also defines in a three-level hierarchy structure as 319 listed below: 321 augment /rt:routing/rt:control-plane-protocols: 322 +--rw mld {feature-mld}? 323 +--rw global 324 | +--rw enable? boolean {global-admin-enable}? 325 | +--rw max-entries? uint32 {global-max-entries}? 326 | +--rw max-groups? uint32 {global-max-groups}? 327 | +--ro entries-count? uint32 328 | +--ro groups-count? uint32 329 | +--ro statistics 330 | +--ro discontinuity-time? yang:date-and-time 331 | +--ro error 332 | | +--ro total? yang:counter64 333 | | +--ro query? yang:counter64 334 | | +--ro report? yang:counter64 335 | | +--ro leave? yang:counter64 336 | | +--ro checksum? yang:counter64 337 | | +--ro too-short? yang:counter64 338 | +--ro received 339 | | +--ro total? yang:counter64 340 | | +--ro query? yang:counter64 341 | | +--ro report? yang:counter64 342 | | +--ro leave? yang:counter64 343 | +--ro sent 344 | +--ro total? yang:counter64 345 | +--ro query? yang:counter64 346 | +--ro report? yang:counter64 347 | +--ro leave? yang:counter64 348 +--rw interfaces 349 +--rw last-member-query-interval? uint16 350 +--rw query-interval? uint16 351 +--rw query-max-response-time? uint16 352 +--rw require-router-alert? boolean {intf-require-router-alert}? 353 +--rw robustness-variable? uint8 354 +--rw version? uint8 355 +--rw max-groups-per-interface? uint32 {intf-max-groups}? 356 +--rw interface* [interface-name] 357 +--rw interface-name if:interface-ref 358 +--rw last-member-query-interval? uint16 359 +--rw query-interval? uint16 360 +--rw query-max-response-time? uint16 361 +--rw require-router-alert? boolean {intf-require-router-alert}? 362 +--rw robustness-variable? uint8 363 +--rw version? uint8 364 +--rw enable? boolean {intf-admin-enable}? 365 +--rw group-policy? -> /acl:acls/acl/name 366 +--rw immediate-leave? empty {intf-immediate-leave}? 367 +--rw max-groups? uint32 {intf-max-groups}? 368 +--rw max-group-sources? uint32 {intf-max-group-sources}? 369 +--rw source-policy? -> /acl:acls/acl/name {intf-source-policy}? 370 +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 371 +--rw explicit-tracking? empty {intf-explicit-tracking}? 372 +--rw exclude-lite? empty {intf-exclude-lite}? 373 +--rw join-group* rt-types:ipv6-multicast-group-address {intf-join-group}? 374 +--rw ssm-map* [ssm-map-source-addr ssm-map-group-policy] {intf-ssm-map}? 375 | +--rw ssm-map-source-addr ssm-map-ipv6-addr-type 376 | +--rw ssm-map-group-policy string 377 +--rw static-group* [group-addr source-addr] {intf-static-group}? 378 | +--rw group-addr rt-types:ipv6-multicast-group-address 379 | +--rw source-addr rt-types:ipv6-multicast-source-address 380 +--ro oper-status enumeration 381 +--ro querier inet:ipv6-address 382 +--ro joined-group* rt-types:ipv6-multicast-group-address {intf-join-group}? 383 +--ro group* [group-address] 384 +--ro group-address rt-types:ipv6-multicast-group-address 385 +--ro expire uint32 386 +--ro filter-mode enumeration 387 +--ro up-time uint32 388 +--ro last-reporter? inet:ipv6-address 389 +--ro source* [source-address] 390 +--ro source-address inet:ipv6-address 391 +--ro expire uint32 392 +--ro up-time uint32 393 +--ro host-count? uint32 {intf-explicit-tracking}? 394 +--ro last-reporter? inet:ipv6-address 395 +--ro host* [host-address] {intf-explicit-tracking}? 396 +--ro host-address inet:ipv6-address 397 +--ro host-filter-mode enumeration 399 3.3. IGMP and MLD RPC 401 IGMP and MLD RPC clears the specified IGMP and MLD group membership. 403 rpcs: 405 +---x clear-igmp-groups {rpc-clear-groups}? 407 | +---w input 409 | +---w interface-name? -> /rt:routing/control-plane- 410 protocols/igmp-mld:igmp/interfaces/interface/interface-name 411 {feature-igmp}? 413 | +---w group-address? rt-types:ipv4-multicast-group- 414 address 416 | +---w source-address? rt-types:ipv4-multicast-source- 417 address 419 +---x clear-mld-groups {rpc-clear-groups}? 421 +---w input 423 +---w interface-name? -> /rt:routing/control-plane- 424 protocols/igmp-mld:mld/interfaces/interface/interface-name {feature- 425 mld}? 427 +---w group-addrss? rt-types:ipv6-multicast-group- 428 address 430 +---w source-address? rt-types:ipv6-multicast-source- 431 address 433 4. IGMP and MLD YANG Modules 435 file "ietf-igmp-mld@2018-09-15.yang" 436 module ietf-igmp-mld { 437 yang-version 1.1; 438 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; 439 // replace with IANA namespace when assigned 440 prefix igmp-mld; 442 import ietf-inet-types { 443 prefix "inet"; 444 } 446 import ietf-yang-types { 447 prefix "yang"; 448 } 450 import ietf-routing-types { 451 prefix "rt-types"; 452 } 454 import ietf-access-control-list { 455 prefix "acl"; 456 } 458 import ietf-routing { 459 prefix "rt"; 460 } 462 import ietf-interfaces { 463 prefix "if"; 464 } 466 import ietf-ip { 467 prefix ip; 468 } 470 organization 471 "IETF PIM Working Group"; 473 contact 474 "WG Web: 475 WG List: 477 WG Chair: Stig Venaas 478 480 WG Chair: Mike McBride 481 483 Editor: Xufeng Liu 484 486 Editor: Feng Guo 487 489 Editor: Mahesh Sivakumar 490 492 Editor: Pete McAllister 493 495 Editor: Anish Peter 496 "; 498 description 499 "The module defines a collection of YANG definitions common for 500 IGMP and MLD."; 502 revision 2018-09-15 { 503 description 504 "Updated yang data model for default value, address type and 505 repeated leaf definition."; 506 reference 507 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 508 } 509 revision 2018-06-21 { 510 description 511 "Updated yang data model for parameter range and description."; 512 reference 513 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 514 } 515 revision 2017-10-20 { 516 description 517 "Updated yang data model for adding explicit-tracking and 518 lightweight IGMPv3 and MLDv2 function."; 519 reference 520 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 521 } 522 revision 2017-09-19 { 523 description 524 "Updated yang data model for NMDA version and errata."; 525 reference 526 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 527 } 529 /* 530 * Features 531 */ 532 feature feature-igmp { 533 description 534 "Support IGMP protocol for IPv4 group membership record."; 535 } 536 feature feature-mld { 537 description 538 "Support MLD protocol for IPv6 group membership record."; 539 } 540 feature global-admin-enable { 541 description 542 "Support global configuration to enable or disable protocol."; 543 } 545 feature global-interface-config { 546 description 547 "Support global configuration applied for all interfaces."; 548 } 550 feature global-max-entries { 551 description 552 "Support configuration of global max-entries."; 553 } 555 feature global-max-groups { 556 description 557 "Support configuration of global max-groups."; 558 } 560 feature intf-admin-enable { 561 description 562 "Support configuration of interface administrative enabling."; 563 } 565 feature intf-immediate-leave { 566 description 567 "Support configuration of interface immediate-leave."; 568 } 570 feature intf-join-group { 571 description 572 "Support configuration of interface join-group."; 573 } 575 feature intf-max-groups { 576 description 577 "Support configuration of interface max-groups."; 578 } 579 feature intf-max-group-sources { 580 description 581 "Support configuration of interface max-group-sources."; 582 } 584 feature intf-require-router-alert { 585 description 586 "Support configuration of interface require-router-alert."; 587 } 589 feature intf-source-policy { 590 description 591 "Support configuration of interface source policy."; 592 } 594 feature intf-ssm-map { 595 description 596 "Support configuration of interface ssm-map."; 597 } 599 feature intf-static-group { 600 description 601 "Support configuration of interface static-group."; 602 } 604 feature intf-verify-source-subnet { 605 description 606 "Support configuration of interface verify-source-subnet."; 607 } 609 feature intf-explicit-tracking { 610 description 611 "Support configuration of interface explicit-tracking hosts."; 612 } 614 feature intf-exclude-lite { 615 description 616 "Support configuration of interface exclude-lite."; 617 } 619 feature per-interface-config { 620 description 621 "Support per interface configuration."; 622 } 624 feature rpc-clear-groups { 625 description 626 "Support rpc's to clear groups."; 627 } 628 /* 629 * Typedefs 630 */ 631 typedef ssm-map-ipv4-addr-type { 632 type union { 633 type enumeration { 634 enum 'policy' { 635 description 636 "Source address is specified in SSM map policy."; 637 } 638 } 639 type inet:ipv4-address; 640 } 641 description 642 "Multicast source IP address type for SSM map."; 643 } // source-ipv4-addr-type 645 typedef ssm-map-ipv6-addr-type { 646 type union { 647 type enumeration { 648 enum 'policy' { 649 description 650 "Source address is specified in SSM map policy."; 651 } 652 } 653 type inet:ipv6-address; 654 } 655 description 656 "Multicast source IP address type for SSM map."; 657 } // source-ipv6-addr-type 659 /* 660 * Identities 661 */ 663 /* 664 * Groupings 665 */ 666 grouping global-config-attributes { 667 description "Global IGMP and MLD configuration."; 669 leaf enable { 670 if-feature global-admin-enable; 671 type boolean; 672 default false; 673 description 674 "true to enable IGMP or MLD in the routing instance; 675 false to disable IGMP or MLD in the routing instance."; 677 } 679 leaf max-entries { 680 if-feature global-max-entries; 681 type uint32; 682 description 683 "The maximum number of entries in IGMP or MLD."; 684 } 685 leaf max-groups { 686 if-feature global-max-groups; 687 type uint32; 688 description 689 "The maximum number of groups that IGMP 690 or MLD can join."; 691 } 692 } // global-config-attributes 694 grouping global-state-attributes { 696 description "Global IGMP and MLD state attributes."; 698 leaf entries-count { 699 type uint32; 700 config false; 701 description 702 "The number of entries in IGMP or MLD."; 703 } 704 leaf groups-count { 705 type uint32; 706 config false; 707 description 708 "The number of groups that IGMP or MLD can join."; 709 } 711 container statistics { 712 config false; 713 description "Global statistics."; 715 leaf discontinuity-time { 716 type yang:date-and-time; 717 description 718 "The time on the most recent occasion at which any one 719 or more of the statistic counters suffered a 720 discontinuity. If no such discontinuities have occurred 721 since the last re-initialization of the local 722 management subsystem, then this node contains the time 723 the local management subsystem re-initialized itself."; 724 } 725 container error { 726 description "Statistics of errors."; 727 uses global-statistics-error; 728 } 730 container received { 731 description "Statistics of received messages."; 732 uses global-statistics-sent-received; 733 } 734 container sent { 735 description "Statistics of sent messages."; 736 uses global-statistics-sent-received; 737 } 738 } // statistics 739 } // global-state-attributes 741 grouping global-statistics-error { 742 description 743 "A grouping defining statistics attributes for errors."; 744 uses global-statistics-sent-received; 745 leaf checksum { 746 type yang:counter64; 747 description 748 "The number of checksum errors."; 749 } 750 leaf too-short { 751 type yang:counter64; 752 description 753 "The number of messages that are too short."; 754 } 755 } // global-statistics-error 757 grouping global-statistics-sent-received { 758 description 759 "A grouping defining statistics attributes."; 760 leaf total { 761 type yang:counter64; 762 description 763 "The number of total messages."; 764 } 765 leaf query { 766 type yang:counter64; 767 description 768 "The number of query messages."; 769 } 770 leaf report { 771 type yang:counter64; 772 description 773 "The number of report messages."; 775 } 776 leaf leave { 777 type yang:counter64; 778 description 779 "The number of leave messages."; 780 } 781 } // global-statistics-sent-received 783 grouping interface-global-config-attributes { 784 description 785 "Configuration attributes applied to the interface global level 786 whose per interface attributes are not existing."; 788 leaf max-groups-per-interface { 789 if-feature intf-max-groups; 790 type uint32; 791 description 792 "The maximum number of groups that IGMP or MLD can join."; 793 } 794 } //interface-global-config-attributes 796 grouping interface-common-config-attributes { 797 description 798 "Configuration attributes applied to both the interface global 799 level and interface level."; 801 leaf last-member-query-interval { 802 type uint16 { 803 range "1..1023"; 804 } 805 units seconds; 806 default 1; 807 description 808 "Last Member Query Interval, which may be tuned to modify the 809 leave latency of the network."; 810 reference "RFC3376. Sec. 8.8."; 811 } 813 leaf query-interval { 814 type uint16 { 815 range "1..31744"; 816 } 817 units seconds; 818 default 125; 819 description 820 "The Query Interval is the interval between General Queries 821 sent by the Querier.In RFC3376, Querier's Query Interval(QQI) is 822 represented from the Querier's Query Interval Code in query 823 message as follows: 825 If QQIC < 128, QQI = QQIC 826 If QQIC >= 128, QQIC represents a floating-point value as follows: 827 0 1 2 3 4 5 6 7 828 +-+-+-+-+-+-+-+-+ 829 |1| exp | mant | 830 +-+-+-+-+-+-+-+-+ 831 QQI = (mant | 0x10) << (exp + 3) 832 The maximum value of QQI is 31744."; 833 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 834 } 836 leaf query-max-response-time { 837 type uint16 { 838 range "1..1023"; 839 } 840 units seconds; 841 default 10; 842 description 843 "Query maximum response time specifies the maximum time 844 allowed before sending a responding report."; 845 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 846 } 848 leaf require-router-alert { 849 if-feature intf-require-router-alert; 850 type boolean; 851 default false; 852 description 853 "Protocol packets should contain router alert IP option."; 854 } 856 leaf robustness-variable { 857 type uint8 { 858 range "1..7"; 859 } 860 default 2; 861 description 862 "Querier's Robustness Variable allows tuning for the expected 863 packet loss on a network."; 864 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 865 } 867 } // interface-common-config-attributes 869 grouping interface-common-config-attributes-igmp { 870 description 871 "Configuration attributes applied to both the interface global 872 level and interface level for IGMP."; 873 uses interface-common-config-attributes; 874 leaf version { 875 type uint8 { 876 range "1..3"; 877 } 878 default 2; 879 description "IGMP version."; 880 reference "RFC1112, RFC2236, RFC3376."; 881 } 882 } 884 grouping interface-common-config-attributes-mld { 885 description 886 "Configuration attributes applied to both the interface global 887 level and interface level for MLD."; 888 uses interface-common-config-attributes; 889 leaf version { 890 type uint8 { 891 range "1..2"; 892 } 893 default 2; 894 description "MLD version."; 895 reference "RFC2710, RFC3810."; 896 } 897 } 899 grouping interfaces-config-attributes-igmp { 900 description 901 "Configuration attributes applied to the interface global 902 level for IGMP."; 903 uses interface-common-config-attributes-igmp; 904 uses interface-global-config-attributes; 905 } 907 grouping interfaces-config-attributes-mld { 908 description 909 "Configuration attributes applied to the interface global 910 level for MLD."; 911 uses interface-common-config-attributes-mld; 912 uses interface-global-config-attributes; 913 } 915 grouping interface-specific-config-attributes { 916 description 917 "Per interface configuration attributes for both IGMP and MLD 918 whose are not existing in interface global level."; 920 leaf enable { 921 if-feature intf-admin-enable; 922 type boolean; 923 default false; 924 description 925 "true to enable IGMP or MLD on the interface; 926 false to disable IGMP or MLD on the interface."; 927 } 928 leaf group-policy { 929 type leafref { 930 path "/acl:acls/acl:acl/acl:name"; 931 } 932 description 933 "Name of the access policy used to filter IGMP or MLD 934 membership.A device can restrict the length 935 and value of this name, possibly space and special 936 characters are not allowed."; 937 } 938 leaf immediate-leave { 939 if-feature intf-immediate-leave; 940 type empty; 941 description 942 "If present, IGMP or MLD perform an immediate leave upon 943 receiving an IGMPv2 or MLDv1 leave message. 944 If the router is IGMP-enabled or MLD-enabled, it sends an 945 IGMP or MLD last member query with a last member query 946 response time. However, the router does not wait for 947 the response time before it prunes off the group."; 948 } 949 leaf max-groups { 950 if-feature intf-max-groups; 951 type uint32; 952 description 953 "The maximum number of groups that IGMP ro MLD can join."; 954 } 955 leaf max-group-sources { 956 if-feature intf-max-group-sources; 957 type uint32; 958 description 959 "The maximum number of group sources."; 960 } 962 leaf source-policy { 963 if-feature intf-source-policy; 964 type leafref { 965 path "/acl:acls/acl:acl/acl:name"; 966 } 967 description 968 "Name of the access policy used to filter sources. 969 A device can restrict the length 970 and value of this name, possibly space and special 971 characters are not allowed."; 973 } 974 leaf verify-source-subnet { 975 if-feature intf-verify-source-subnet; 976 type empty; 977 description 978 "If present, the interface accepts packets with matching 979 source IP subnet only."; 980 } 981 leaf explicit-tracking { 982 if-feature intf-explicit-tracking; 983 type empty; 984 description 985 "If present, IGMP/MLD-based explicit membership tracking function 986 for multicast routers and IGMP/MLD proxy devices 987 supporting IGMPv3/MLDv2. The explicit membership tracking 988 function contributes to saving network resources and 989 shortening leave latency."; 990 } 991 leaf exclude-lite { 992 if-feature intf-exclude-lite; 993 type empty; 994 description 995 "If present, lightweight IGMPv3 and MLDv2 protocols will run on the 996 which simplify the standard versions of IGMPv3 and MLDv2."; 997 reference "RFC5790"; 998 } 1000 } // interface-specific-config-attributes 1002 grouping interface-config-attributes-igmp { 1003 description 1004 "Per interface configuration attributes for IGMP."; 1006 uses interface-common-config-attributes-igmp; 1007 uses interface-specific-config-attributes; 1009 leaf-list join-group { 1010 if-feature intf-join-group; 1011 type rt-types:ipv4-multicast-group-address; 1012 description 1013 "The router joins this multicast group on the interface."; 1014 } 1016 list ssm-map { 1017 if-feature intf-ssm-map; 1018 key "ssm-map-source-addr ssm-map-group-policy"; 1019 description "The policy for (*,G) mapping to (S,G)."; 1020 leaf ssm-map-source-addr { 1021 type ssm-map-ipv4-addr-type; 1022 description 1023 "Multicast source IPv4 address."; 1024 } 1025 leaf ssm-map-group-policy { 1026 type string; 1027 description 1028 "Name of the policy used to define ssm-map rules. 1029 A device can restrict the length 1030 and value of this name, possibly space and special 1031 characters are not allowed. "; 1032 } 1033 } 1035 list static-group { 1036 if-feature intf-static-group; 1037 key "group-addr source-addr"; 1038 description 1039 "A static multicast route, (*,G) or (S,G)."; 1041 leaf group-addr { 1042 type rt-types:ipv4-multicast-group-address; 1043 description 1044 "Multicast group IPv4 address."; 1045 } 1046 leaf source-addr { 1047 type rt-types:ipv4-multicast-source-address; 1048 description 1049 "Multicast source IPv4 address."; 1050 } 1051 } 1052 } // interface-config-attributes-igmp 1054 grouping interface-config-attributes-mld { 1055 description 1056 "Per interface configuration attributes for MLD."; 1058 uses interface-common-config-attributes-mld; 1059 uses interface-specific-config-attributes; 1061 leaf-list join-group { 1062 if-feature intf-join-group; 1063 type rt-types:ipv6-multicast-group-address; 1064 description 1065 "The router joins this multicast group on the interface."; 1066 } 1068 list ssm-map { 1069 if-feature intf-ssm-map; 1070 key "ssm-map-source-addr ssm-map-group-policy"; 1071 description "The policy for (*,G) mapping to (S,G)."; 1072 leaf ssm-map-source-addr { 1073 type ssm-map-ipv6-addr-type; 1074 description 1075 "Multicast source IPv6 address."; 1076 } 1077 leaf ssm-map-group-policy { 1078 type string; 1079 description 1080 "Name of the policy used to define ssm-map rules. 1081 A device can restrict the length 1082 and value of this name, possibly space and special 1083 characters are not allowed."; 1084 } 1085 } 1087 list static-group { 1088 if-feature intf-static-group; 1089 key "group-addr source-addr"; 1090 description 1091 "A static multicast route, (*,G) or (S,G)."; 1093 leaf group-addr { 1094 type rt-types:ipv6-multicast-group-address; 1095 description 1096 "Multicast group IPv6 address."; 1097 } 1098 leaf source-addr { 1099 type rt-types:ipv6-multicast-source-address; 1100 description 1101 "Multicast source IPv6 address."; 1102 } 1103 } 1104 } // interface-config-attributes-mld 1106 grouping interface-state-attributes-igmp-mld { 1107 description 1108 "Per interface state attributes for both IGMP and MLD."; 1110 leaf oper-status { 1111 type enumeration { 1112 enum up { 1113 description 1114 "Ready to pass packets."; 1115 } 1116 enum down { 1117 description 1118 "The interface does not pass any packets."; 1119 } 1120 } 1121 config false; 1122 mandatory true; 1123 description 1124 "Interface up or down state for IGMP or MLD protocol"; 1125 } 1126 } // interface-config-attributes-igmp-mld 1128 grouping interface-state-attributes-igmp { 1130 description 1131 "Per interface state attributes for IGMP."; 1133 uses interface-state-attributes-igmp-mld; 1135 leaf querier { 1136 type inet:ipv4-address; 1137 config false; 1138 mandatory true; 1139 description "The querier address in the subnet"; 1140 } 1141 leaf-list joined-group { 1142 if-feature intf-join-group; 1143 type rt-types:ipv4-multicast-group-address; 1144 config false; 1145 description 1146 "The routers that joined this multicast group."; 1147 } 1149 list group { 1150 key "group-address"; 1151 config false; 1152 description 1153 "Multicast group membership information 1154 that joined on the interface."; 1156 leaf group-address { 1157 type rt-types:ipv4-multicast-group-address; 1158 description 1159 "Multicast group address."; 1160 } 1161 uses interface-state-group-attributes-igmp-mld; 1163 leaf last-reporter { 1164 type inet:ipv4-address; 1165 description 1166 "The last host address which has sent the 1167 report to join the multicast group."; 1168 } 1169 list source { 1170 key "source-address"; 1171 description 1172 "List of multicast source information 1173 of the multicast group."; 1175 leaf source-address { 1176 type inet:ipv4-address; 1177 description 1178 "Multicast source address in group record."; 1179 } 1180 uses interface-state-source-attributes-igmp-mld; 1181 leaf last-reporter { 1182 type inet:ipv4-address; 1183 description 1184 "The last host address which has sent the 1185 report to join the multicast source and group."; 1186 } 1187 list host { 1188 if-feature intf-explicit-tracking; 1189 key "host-address"; 1190 description 1191 "List of multicast membership hosts 1192 of the specific multicast source-group."; 1194 leaf host-address { 1195 type inet:ipv4-address; 1196 description 1197 "Multicast membership host address."; 1198 } 1199 uses interface-state-host-attributes-igmp-mld; 1200 }// list host 1201 } // list source 1202 } // list group 1203 } // interface-state-attributes-igmp 1205 grouping interface-state-attributes-mld { 1207 description 1208 "Per interface state attributes for MLD."; 1210 uses interface-state-attributes-igmp-mld; 1212 leaf querier { 1213 type inet:ipv6-address; 1214 config false; 1215 mandatory true; 1216 description 1217 "The querier address in the subnet."; 1218 } 1219 leaf-list joined-group { 1220 if-feature intf-join-group; 1221 type rt-types:ipv6-multicast-group-address; 1222 config false; 1223 description 1224 "The routers that joined this multicast group."; 1225 } 1227 list group { 1228 key "group-address"; 1229 config false; 1230 description 1231 "Multicast group membership information 1232 that joined on the interface."; 1234 leaf group-address { 1235 type rt-types:ipv6-multicast-group-address; 1236 description 1237 "Multicast group address."; 1238 } 1239 uses interface-state-group-attributes-igmp-mld; 1240 leaf last-reporter { 1241 type inet:ipv6-address; 1242 description 1243 "The last host address which has sent the 1244 report to join the multicast group."; 1245 } 1246 list source { 1247 key "source-address"; 1248 description 1249 "List of multicast source information 1250 of the multicast group."; 1252 leaf source-address { 1253 type inet:ipv6-address; 1254 description 1255 "Multicast source address in group record"; 1256 } 1257 uses interface-state-source-attributes-igmp-mld; 1258 leaf last-reporter { 1259 type inet:ipv6-address; 1260 description 1261 "The last host address which has sent the 1262 report to join the multicast source and group."; 1263 } 1264 list host { 1265 if-feature intf-explicit-tracking; 1266 key "host-address"; 1267 description 1268 "List of multicast membership hosts 1269 of the specific multicast source-group."; 1271 leaf host-address { 1272 type inet:ipv6-address; 1273 description 1274 "Multicast membership host address."; 1275 } 1276 uses interface-state-host-attributes-igmp-mld; 1277 }// list host 1278 } // list source 1279 } // list group 1280 } // interface-state-attributes-mld 1282 grouping interface-state-group-attributes-igmp-mld { 1283 description 1284 "Per interface state attributes for both IGMP and MLD 1285 groups."; 1287 leaf expire { 1288 type uint32; 1289 units seconds; 1290 mandatory true; 1291 description 1292 "The time left before multicast group state expires."; 1293 } 1294 leaf filter-mode { 1295 type enumeration { 1296 enum "include" { 1297 description 1298 "In include mode, reception of packets sent 1299 to the specified multicast address is requested 1300 only from those IP source addresses listed in the 1301 source-list parameter"; 1302 } 1303 enum "exclude" { 1304 description 1305 "In exclude mode, reception of packets sent 1306 to the given multicast address is requested 1307 from all IP source addresses except those 1308 listed in the source-list parameter."; 1309 } 1310 } 1311 mandatory true; 1312 description 1313 "Filter mode for a multicast group, 1314 may be either include or exclude."; 1315 } 1316 leaf up-time { 1317 type uint32; 1318 units seconds; 1319 mandatory true; 1320 description 1321 "The elapsed time since the device created multicast group record."; 1322 } 1323 } // interface-state-group-attributes-igmp-mld 1325 grouping interface-state-source-attributes-igmp-mld { 1326 description 1327 "Per interface state attributes for both IGMP and MLD 1328 source-group records."; 1330 leaf expire { 1331 type uint32; 1332 units seconds; 1333 mandatory true; 1334 description 1335 "The time left before multicast source-group state expires."; 1336 } 1337 leaf up-time { 1338 type uint32; 1339 units seconds; 1340 mandatory true; 1341 description 1342 "The elapsed time since the device created multicast 1343 source-group record."; 1344 } 1345 leaf host-count { 1346 if-feature intf-explicit-tracking; 1347 type uint32; 1348 description 1349 "The number of host addresses."; 1350 } 1351 } // interface-state-source-attributes-igmp-mld 1353 grouping interface-state-host-attributes-igmp-mld { 1354 description 1355 "Per interface state attributes for both IGMP and MLD 1356 hosts of source-group records."; 1358 leaf host-filter-mode { 1359 type enumeration { 1360 enum "include" { 1361 description 1362 "In include mode"; 1364 } 1365 enum "exclude" { 1366 description 1367 "In exclude mode."; 1368 } 1369 } 1370 mandatory true; 1371 description 1372 "Filter mode for a multicast membership 1373 host may be either include or exclude."; 1374 } 1375 }// interface-state-host-attributes-igmp-mld 1377 /* 1378 * Configuration and Operational state data nodes (NMDA version) 1379 */ 1380 augment "/rt:routing/rt:control-plane-protocols" 1381 { 1382 description 1383 "IGMP augmentation to routing control plane protocol 1384 configuration and state."; 1386 container igmp { 1387 if-feature feature-igmp; 1388 description 1389 "IGMP configuration and operational state data."; 1391 container global { 1392 description 1393 "Global attributes."; 1394 uses global-config-attributes; 1395 uses global-state-attributes; 1396 } 1398 container interfaces { 1399 description 1400 "Containing a list of interfaces."; 1402 uses interfaces-config-attributes-igmp { 1403 if-feature global-interface-config; 1404 } 1406 list interface { 1407 key "interface-name"; 1408 description 1409 "List of IGMP interfaces."; 1410 leaf interface-name { 1411 type if:interface-ref; 1412 must "/if:interfaces/if:interface[if:name = current()]/" 1413 + "ip:ipv4" { 1414 description 1415 "The interface must have IPv4 enabled."; 1416 } 1417 description 1418 "Reference to an entry in the global interface list."; 1419 } 1420 uses interface-config-attributes-igmp { 1421 if-feature per-interface-config; 1422 } 1423 uses interface-state-attributes-igmp; 1424 } // interface 1425 } // interfaces 1426 } // igmp 1427 }//augment 1429 augment "/rt:routing/rt:control-plane-protocols" 1430 { 1431 description 1432 "MLD augmentation to routing control plane protocol 1433 configuration and state."; 1435 container mld { 1436 if-feature feature-mld; 1437 description 1438 "MLD configuration and operational state data."; 1440 container global { 1441 description 1442 "Global attributes."; 1443 uses global-config-attributes; 1444 uses global-state-attributes; 1445 } 1447 container interfaces { 1448 description 1449 "Containing a list of interfaces."; 1451 uses interfaces-config-attributes-mld { 1452 if-feature global-interface-config; 1453 } 1455 list interface { 1456 key "interface-name"; 1457 description 1458 "List of MLD interfaces."; 1459 leaf interface-name { 1460 type if:interface-ref; 1461 must "/if:interfaces/if:interface[if:name = current()]/" 1462 + "ip:ipv6" { 1463 description 1464 "The interface must have IPv6 enabled."; 1465 } 1466 description 1467 "Reference to an entry in the global interface list."; 1468 } 1469 uses interface-config-attributes-mld { 1470 if-feature per-interface-config; 1471 } 1472 uses interface-state-attributes-mld; 1473 } // interface 1474 } // interfaces 1475 } // mld 1476 } // augment 1478 /* 1479 * RPCs 1480 */ 1481 rpc clear-igmp-groups { 1482 if-feature rpc-clear-groups; 1483 description 1484 "Clears the specified IGMP cache entries."; 1486 input { 1487 leaf interface-name { 1488 if-feature feature-igmp; 1489 type leafref { 1490 path "/rt:routing/rt:control-plane-protocols/" 1491 + "igmp-mld:igmp/igmp-mld:interfaces/" 1492 + "igmp-mld:interface/igmp-mld:interface-name"; 1493 } 1494 description 1495 "Name of the IGMP interface. 1496 If it is not specified, groups from all interfaces are 1497 cleared."; 1498 } 1499 leaf group-address { 1500 type rt-types:ipv4-multicast-group-address; 1501 description 1502 "Multicast group IPv4 address. 1503 If it is not specified, all IGMP group entries are 1504 cleared."; 1505 } 1506 leaf source-address { 1507 type rt-types:ipv4-multicast-source-address; 1508 description 1509 "Multicast source IPv4 address. 1510 If it is not specified, all IGMP source-group entries are 1511 cleared."; 1512 } 1513 } 1514 } // rpc clear-igmp-groups 1516 rpc clear-mld-groups { 1517 if-feature rpc-clear-groups; 1518 description 1519 "Clears the specified MLD cache entires."; 1521 input { 1522 leaf interface-name { 1523 if-feature feature-mld; 1524 type leafref { 1525 path "/rt:routing/rt:control-plane-protocols/" 1526 + "igmp-mld:mld/igmp-mld:interfaces/" 1527 + "igmp-mld:interface/igmp-mld:interface-name"; 1528 } 1529 description 1530 "Name of the MLD interface. 1531 If it is not specified, groups from all interfaces are 1532 cleared."; 1533 } 1534 leaf group-addrss { 1535 type rt-types:ipv6-multicast-group-address; 1536 description 1537 "Multicast group IPv6 address. 1538 If it is not specified, all MLD group entries are 1539 cleared."; 1540 } 1541 leaf source-address { 1542 type rt-types:ipv6-multicast-source-address; 1543 description 1544 "Multicast source IPv6 address. 1545 If it is not specified, all MLD source-group entries are 1546 cleared."; 1547 } 1548 } 1549 } // rpc clear-mld-groups 1551 /* 1552 * Notifications 1553 */ 1554 } 1555 1557 5. Security Considerations 1559 The YANG module specified in this document defines a schema for data 1560 that is designed to be accessed via network management protocols 1561 such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF 1562 layer is the secure transport layer, and the mandatory-to-implement 1563 secure transport is Secure Shell (SSH) [RFC6242]. The lowest 1564 RESTCONF layer is HTTPS, and the mandatory-to-implement secure 1565 transport is TLS [RFC5246]. 1567 The NETCONF access control model [RFC6536] provides the means to 1568 restrict access for particular NETCONF or RESTCONF users to a 1569 preconfigured subset of all available NETCONF or RESTCONF protocol 1570 operations and content. 1572 There are a number of data nodes defined in this YANG module that 1573 are writable/creatable/deletable (i.e., config true, which is the 1574 default). These data nodes may be considered sensitive or vulnerable 1575 in some network environments. Write operations (e.g., edit-config) 1576 to these data nodes without proper protection can have a negative 1577 effect on network operations. These are the subtrees and data nodes 1578 and their sensitivity/vulnerability: 1580 igmp:global 1582 This subtree specifies the configuration for the IGMP attributes 1583 at the global level on a device. Modifying the configuration can 1584 cause IGMP membership deleted or reconstructed on all the 1585 interfaces of a device. 1587 igmp:interfaces 1589 This subtree specifies the configuration for the IGMP attributes 1590 at all of the interfaces level on a device. Modifying the 1591 configuration can cause IGMP membership deleted or reconstructed 1592 on all the interfaces of a device. 1594 igmp:interfaces/interface 1596 This subtree specifies the configuration for the IGMP attributes 1597 at the interface level on a device. Modifying the configuration 1598 can cause IGMP membership deleted or reconstructed on a specific 1599 interface of a device. 1601 These subtrees are all under 1603 /rt:routing/rt:control-plane protocols/igmp: 1605 mld:global 1606 This subtree specifies the configuration for the MLD attributes at 1607 the global level on a device. Modifying the configuration can 1608 cause MLD membership deleted or reconstructed on all the 1609 interfaces of a device. 1611 mld:interfaces 1613 This subtree specifies the configuration for the MLD attributes at 1614 all of the interfaces level on a device. Modifying the 1615 configuration can cause MLD membership deleted or reconstructed on 1616 all the interfaces of a device. 1618 mld:interfaces/interface 1620 This subtree specifies the configuration for the MLD attributes at 1621 the interface level on a device. Modifying the configuration can 1622 cause MLD membership deleted or reconstructed on a specific 1623 interface of a device. 1625 These subtrees are all under 1627 /rt:routing/rt:control-plane-protocols/mld: 1629 Unauthorized access to any data node of these subtrees can adversely 1630 affect the membership records of multicast routing subsystem on the 1631 local device. This may lead to network malfunctions, delivery of 1632 packets to inappropriate destinations, and other problems. 1634 Some of the readable data nodes in this YANG module may be 1635 considered sensitive or vulnerable in some network environments. It 1636 is thus important to control read access (e.g., via get, get-config, 1637 or notification) to these data nodes. These are the subtrees and 1638 data nodes and their sensitivity/vulnerability: 1640 /rt:routing/rt:control-plane-protocols/igmp 1642 /rt:routing/rt:control-plane-protocols/mld 1644 Unauthorized access to any data node of the above subtree can 1645 disclose the operational state information of IGMP or MLD on this 1646 device. 1648 Some of the RPC operations in this YANG module may be considered 1649 sensitive or vulnerable in some network environments. It is thus 1650 important to control access to these operations. These are the 1651 operations and their sensitivity/vulnerability: 1653 clear-igmp-groups 1654 clear-mld-groups 1656 Unauthorized access to any of the above RPC operations can delete 1657 the IGMP or MLD membership records on this device. 1659 6. IANA Considerations 1661 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1662 actual RFC number (and remove this note). 1664 This document registers the following namespace URIs in the IETF XML 1665 registry [RFC3688]: 1667 -------------------------------------------------------------------- 1669 URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1671 Registrant Contact: The IESG. 1673 XML: N/A, the requested URI is an XML namespace. 1675 -------------------------------------------------------------------- 1677 This document registers the following YANG modules in the YANG Module 1678 Names registry [RFC7950]: 1680 -------------------------------------------------------------------- 1682 name: ietf-igmp-mld 1684 namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1686 prefix: igmp-mld 1688 reference: RFC XXXX 1690 -------------------------------------------------------------------- 1692 7. Acknowledgments 1694 The authors would like to thank Steve Baillargeon, Hu Fangwei, 1695 Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable 1696 contributions. 1698 8. Contributing Authors 1700 Yisong Liu 1701 Huawei Technologies 1702 Huawei Bldg., No.156 Beiqing Rd. 1703 Beijing 100095 1704 China 1706 Email: liuyisong@huawei.com 1708 9. References 1710 9.1. Normative References 1712 [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, 1713 RFC 1112, August 1989. 1715 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1716 2", RFC 2236, November 1997. 1718 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1719 Listener Discovery (MLD) for IPv6", RFC 2710, October 1720 1999. 1722 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1723 Thyagarajan, "Internet Group Management Protocol, Version 1724 3", RFC 3376, October 2002. 1726 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 1727 2004 1729 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1730 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1732 [RFC4541] M. Christensen, K. Kimball and F. Solensky, 1733 "Considerations for Internet Group Management Protocol 1734 (IGMP) and Multicast Listener Discovery (MLD) Snooping 1735 Switches", RFC 4541, May 2006. 1737 [RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet 1738 Group Management Protocol (IGMP) / Multicast Listener 1739 Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD 1740 Proxying")", RFC 4605, August 2006. 1742 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1743 (TLS) Protocol Version 1.2", RFC 5246, August 2008 1745 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1746 the Network Configuration Protocol (NETCONF)", RFC 6020, 1747 October 2010 1749 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1750 and A. Bierman, Ed., "Network Configuration Protocol 1751 (NETCONF)", RFC 6241, June 2011 1753 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1754 Shell (SSH)", RFC 6242, June 2011 1756 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1757 Protocol (NETCONF) Access Control Model", RFC 6536, April 1758 2012 1760 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1761 RFC 6991, July 2013 1763 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1764 RFC 7950, August 2016 1766 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1767 Protocol", RFC 8040, January 2017 1769 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1770 "Common YANG Data Types for the Routing Area", RFC 8294, 1771 December 2017 1773 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1774 and R. Wilton, "Network Management Datastore Architecture 1775 (NMDA)", RFC 8342, April 2018 1777 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 1778 Management", RFC 8343, April 2018 1780 [RFC8344] M. Bjorklund, "A YANG Data Model for IP Management", 1781 RFC8344, April 2018 1783 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1784 Routing Management (NMDA Version)", RFC 8349, April 2018 1786 [I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D. 1787 Blair, "Network Access Control List (ACL) YANG Data 1788 Model", draft-ietf-netmod-acl-model-19(work in progress), 1789 April 2018 1791 9.2. Informative References 1793 [RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group 1794 Management Protocol Version 3 (IGMPv3) and Multicast 1795 Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, 1796 February 2010 1798 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1799 BCP 215, RFC 8340, April 2018 1801 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1802 and Reviewers of YANG Data Model Documents", draft-ietf- 1803 netmod-rfc6087bis-20(work in progress), April 2018 1805 Authors' Addresses 1807 Xufeng Liu 1808 Volta Networks 1810 EMail: xufeng.liu.ietf@gmail.com 1812 Feng Guo 1813 Huawei Technologies 1814 Huawei Bldg., No.156 Beiqing Rd. 1815 Beijing 100095 1816 China 1818 Email: guofeng@huawei.com 1820 Mahesh Sivakumar 1821 Juniper Networks 1822 1133 Innovation Way 1823 Sunnyvale, California 1824 USA 1826 Email: sivakumar.mahesh@gmail.com 1828 Pete McAllister 1829 Metaswitch Networks 1830 100 Church Street 1831 Enfield EN2 6BQ 1832 UK 1834 EMail: pete.mcallister@metaswitch.com 1836 Anish Peter 1837 Individual 1839 EMail: anish.ietf@gmail.com