idnits 2.17.1 draft-zhao-pim-igmp-mld-snooping-yang-02.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 82 instances of too long lines in the document, the longest one being 13 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 271 has weird spacing: '...-prefix ine...' == Line 278 has weird spacing: '...ce-addr sou...' == Line 412 has weird spacing: '...-prefix ine...' == Line 419 has weird spacing: '...ce-addr sou...' == Line 575 has weird spacing: '...-prefix ine...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (August 3, 2017) is 2458 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: 'RFC2119' is mentioned on line 83, but not defined == Unused Reference: 'RFC6021' is defined on line 1928, but no explicit reference was found in the text == Unused Reference: 'RFC2236' is defined on line 1936, but no explicit reference was found in the text == Unused Reference: 'RFC2710' is defined on line 1939, but no explicit reference was found in the text == Unused Reference: 'RFC3376' is defined on line 1942, but no explicit reference was found in the text == Unused Reference: 'RFC3810' is defined on line 1946, but no explicit reference was found in the text == Unused Reference: 'RFC4604' is defined on line 1949, but no explicit reference was found in the text == Unused Reference: 'RFC4607' is defined on line 1954, but no explicit reference was found in the text ** Obsolete normative reference: RFC 6021 (Obsoleted by RFC 6991) ** Downref: Normative reference to an Informational RFC: RFC 4541 Summary: 3 errors (**), 0 flaws (~~), 16 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Internet Engineering Task Force H. Zhao 2 Internet Draft Ericsson 3 Intended status: Standards Track August 3, 2017 4 Expires: February 2018 6 A Yang Data Model for IGMP and MLD Snooping 7 draft-zhao-pim-igmp-mld-snooping-yang-02.txt 9 Abstract 11 This document defines a YANG data model that can be used to 12 configure and manage Internet Group Management Protocol (IGMP) and 13 Multicast Listener Discovery (MLD) Snooping devices. 15 Status of this Memo 17 This Internet-Draft is submitted in full conformance with the 18 provisions of BCP 78 and BCP 79. 20 Internet-Drafts are working documents of the Internet Engineering 21 Task Force (IETF), its areas, and its working groups. Note that 22 other groups may also distribute working documents as Internet- 23 Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress." 30 The list of current Internet-Drafts can be accessed at 31 http://www.ietf.org/ietf/1id-abstracts.txt 33 The list of Internet-Draft Shadow Directories can be accessed at 34 http://www.ietf.org/shadow.html 36 This Internet-Draft will expire on Feb 3, 2018. 38 Copyright Notice 40 Copyright (c) 2017 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction...................................................2 56 1.1. Terminology...............................................2 57 1.2. Tree Diagrams.............................................3 58 2. Design of Data Model...........................................3 59 2.1. Overview..................................................3 60 2.2. IGMP and MLD Snooping Configuration.......................3 61 2.3. IGMP and MLD Snooping Operational State..................10 62 2.4. IGMP and MLD Snooping RPC................................18 63 3. IGMP and MLD Snooping YANG Module.............................18 64 4. Security Considerations.......................................42 65 5. IANA Considerations...........................................42 66 6. Normative References..........................................42 68 1. Introduction 70 This document defines a YANG [RFC6020] data model for the management 71 of Internet Group Management Protocol (IGMP) and Multicast Listener 72 Discovery (MLD) Snooping devices. 74 This data model includes configuration data and state data (status 75 information and counters for the collection of statistics). 77 1.1. Terminology 79 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 80 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 81 "OPTIONAL" in this document are to be interpreted as described in BCP 82 14 [RFC2119]. 84 The terminology for describing YANG data models is found in[RFC6020]. 86 1.2. Tree Diagrams 88 A simplified graphical representation of the data model is used in 89 this document. The meaning of the symbols in these diagrams is as 90 follows: 92 o Brackets "[" and "]" enclose list keys. 94 o Abbreviations before data node names: "rw" means configuration 95 (read-write), and "ro" means state data (read-only). 97 o Symbols after data node names: "?" means an optional node, "!" 98 means a presence container, and "*" denotes a list and leaf-list. 100 o Parentheses enclose choice and case nodes, and case nodes are also 101 marked with a colon (":"). 103 o Ellipsis ("...") stands for contents of subtrees that are not 104 shown. 106 2. Design of Data Model 108 The model covers Considerations for Internet Group Management 109 Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping 110 Switches [RFC4541]. 112 The goal of this document is to define a data model that provides a 113 common user interface to IGMP and MLD Snooping. There is very 114 information that is designated as "mandatory", providing freedom for 115 vendors to adapt this data model to their respective product 116 implementations. 118 2.1. Overview 120 The IGMP and MLD Snooping YANG module defined in this document has 121 all the common building blocks for the IGMP and MLD Snooping 122 protocol. The YANG module includes IGMP and MLD Snooping 123 configuration data, Operational state data, and the RPC method for 124 clearing the specified IGMP and MLD Snooping statistics. 126 2.2. IGMP and MLD Snooping Configuration 128 The IGMP and MLD Snooping modules define the configuration in a 129 three-level hierarchy as listed below: 131 Global level: IGMP MLD Snooping configuration attributes for the 132 entire routing instance 134 VLANs-level: IGMP MLD configuration attributes specific to all VLANs. 136 VLAN-level: IGMP MLD configuration attributes specific to the given 137 VLAN. 139 module: ietf-igmp-mld-snooping 141 augment /rt:routing/rt:control-plane-protocols: 143 +--rw igmp-snooping 145 +--rw global 147 | +--rw enable? boolean {global-admin-enable}? 149 +--rw vlans 151 +--rw (last-member-query-interval)? 153 | +--:(last-member-query-interval-basic) 155 | | +--rw last-member-query-interval-basic? uint16 157 | +--:(last-member-query-interval-extended) 159 | +--rw last-member-query-interval-extended? uint16 {vlan-last- 160 member-query-interval-extended}? 162 +--rw (query-interval)? 164 | +--:(query-interval-basic) 166 | | +--rw query-interval-basic? uint16 168 | +--:(query-interval-extended) 170 | +--rw query-interval-extended? uint16 {vlan-query- 171 interval-extended}? 173 +--rw (query-max-response-time)? 175 | +--:(query-max-response-time-basic) 176 | | +--rw query-max-response-time-basic? uint16 178 | +--:(query-max-response-time-extended) 180 | +--rw query-max-response-time-extended? uint16 {vlan-query- 181 max-response-time-extended}? 183 +--rw require-router-alert? boolean {require-router- 184 alert}? 186 +--rw (robustness-variable)? 188 | +--:(robustness-variable-basic) 190 | | +--rw robustness-variable-basic? uint8 192 | +--:(robustness-variable-extended) 194 | +--rw robustness-variable-extended? uint8 {vlan- 195 robustness-variable-extended}? 197 +--rw version? uint8 199 +--rw vlan* [vlan-id] 201 +--rw vlan-id uint16 203 +--rw enable? boolean {admin-enable}? 205 +--rw forwarding-mode? enumeration 207 +--rw explicit-tracking? string 209 +--rw send-query? boolean 211 +--rw mrouter-aging-time? uint16 213 +--rw fast-leave? empty {fast-leave}? 215 +--rw (last-member-query-interval)? 217 | +--:(last-member-query-interval-basic) 219 | | +--rw last-member-query-interval-basic? uint16 221 | +--:(last-member-query-interval-extended) 222 | +--rw last-member-query-interval-extended? uint16 {vlan-last- 223 member-query-interval-extended}? 225 +--rw (query-interval)? 227 | +--:(query-interval-basic) 229 | | +--rw query-interval-basic? uint16 231 | +--:(query-interval-extended) 233 | +--rw query-interval-extended? uint16 {vlan- 234 query-interval-extended}? 236 +--rw (query-max-response-time)? 238 | +--:(query-max-response-time-basic) 240 | | +--rw query-max-response-time-basic? uint16 242 | +--:(query-max-response-time-extended) 244 | +--rw query-max-response-time-extended? uint16 {vlan- 245 query-max-response-time-extended}? 247 +--rw require-router-alert? boolean {require-router- 248 alert}? 250 +--rw (robustness-variable)? 252 | +--:(robustness-variable-basic) 254 | | +--rw robustness-variable-basic? uint8 256 | +--:(robustness-variable-extended) 258 | +--rw robustness-variable-extended? uint8 {vlan- 259 robustness-variable-extended}? 261 +--rw version? uint8 263 +--rw static-mrouter-interface* if:interface-ref 264 {static-l2-multicast-group}? 266 +--rw querier? inet:ipv4-address 268 +--rw ssm-map* [source-addr group-addr-prefix] {ssm-map}? 269 | +--rw source-addr ssm-map-ipv4-addr-type 271 | +--rw group-addr-prefix inet:ipv4-prefix 273 +--rw static-l2-multicast-group* [group source-addr] {static-l2- 274 multicast-group}? 276 +--rw group inet:ipv4-address 278 +--rw source-addr source-ipv4-addr-type 280 +--rw interface? if:interface-ref 282 augment /rt:routing/rt:control-plane-protocols: 284 +--rw mld-snooping 286 +--rw global 288 | +--rw enable? boolean {global-admin-enable}? 290 +--rw vlans 292 +--rw (last-member-query-interval)? 294 | +--:(last-member-query-interval-basic) 296 | | +--rw last-member-query-interval-basic? uint16 298 | +--:(last-member-query-interval-extended) 300 | +--rw last-member-query-interval-extended? uint16 {vlan-last- 301 member-query-interval-extended}? 303 +--rw (query-interval)? 305 | +--:(query-interval-basic) 307 | | +--rw query-interval-basic? uint16 309 | +--:(query-interval-extended) 311 | +--rw query-interval-extended? uint16 {vlan-query- 312 interval-extended}? 314 +--rw (query-max-response-time)? 315 | +--:(query-max-response-time-basic) 317 | | +--rw query-max-response-time-basic? uint16 319 | +--:(query-max-response-time-extended) 321 | +--rw query-max-response-time-extended? uint16 {vlan-query- 322 max-response-time-extended}? 324 +--rw require-router-alert? boolean {require-router- 325 alert}? 327 +--rw (robustness-variable)? 329 | +--:(robustness-variable-basic) 331 | | +--rw robustness-variable-basic? uint8 333 | +--:(robustness-variable-extended) 335 | +--rw robustness-variable-extended? uint8 {vlan- 336 robustness-variable-extended}? 338 +--rw version? uint8 340 +--rw vlan* [vlan-id] 342 +--rw vlan-id uint16 344 +--rw enable? boolean {admin-enable}? 346 +--rw forwarding-mode? enumeration 348 +--rw explicit-tracking? string 350 +--rw send-query? boolean 352 +--rw mrouter-aging-time? uint16 354 +--rw fast-leave? empty {fast-leave}? 356 +--rw (last-member-query-interval)? 358 | +--:(last-member-query-interval-basic) 360 | | +--rw last-member-query-interval-basic? uint16 361 | +--:(last-member-query-interval-extended) 363 | +--rw last-member-query-interval-extended? uint16 {vlan-last- 364 member-query-interval-extended}? 366 +--rw (query-interval)? 368 | +--:(query-interval-basic) 370 | | +--rw query-interval-basic? uint16 372 | +--:(query-interval-extended) 374 | +--rw query-interval-extended? uint16 {vlan- 375 query-interval-extended}? 377 +--rw (query-max-response-time)? 379 | +--:(query-max-response-time-basic) 381 | | +--rw query-max-response-time-basic? uint16 383 | +--:(query-max-response-time-extended) 385 | +--rw query-max-response-time-extended? uint16 {vlan- 386 query-max-response-time-extended}? 388 +--rw require-router-alert? boolean {require-router- 389 alert}? 391 +--rw (robustness-variable)? 393 | +--:(robustness-variable-basic) 395 | | +--rw robustness-variable-basic? uint8 397 | +--:(robustness-variable-extended) 399 | +--rw robustness-variable-extended? uint8 {vlan- 400 robustness-variable-extended}? 402 +--rw version? uint8 404 +--rw static-mrouter-interface* if:interface-ref 405 {static-l2-multicast-group}? 407 +--rw querier? inet:ipv6-address 408 +--rw ssm-map* [source-addr group-addr-prefix] {ssm-map}? 410 | +--rw source-addr ssm-map-ipv6-addr-type 412 | +--rw group-addr-prefix inet:ipv6-prefix 414 +--rw static-l2-multicast-group* [group source-addr] {static-l2- 415 multicast-group}? 417 +--rw group inet:ipv6-address 419 +--rw source-addr source-ipv6-addr-type 421 +--rw interface? if:interface-ref 423 2.3. IGMP and MLD Snooping Operational State 425 The IGMP and MLD Snooping module contains operational state 426 information also in a three-level hierarchy as mentioned earlier. 428 Global level: IGMP MLD Snooping operational state attributes for the 429 entire routing instance 431 VLANs-level: IGMP MLD Snooping operational state attributes for all 432 VLANs. 434 VLAN-level: IGMP MLD Snooping operational state attributes specific 435 to the given VLAN. 437 module: ietf-igmp-mld-snooping 439 +--rw configuration 441 ... 443 augment /rt:routing-state/rt:control-plane-protocols: 445 +--ro igmp-snooping 447 +--ro global 449 | +--ro enable? boolean {global-admin-enable}? 451 | +--ro entries-count? uint32 453 +--ro vlans 454 +--ro (last-member-query-interval)? 456 | +--:(last-member-query-interval-basic) 458 | | +--ro last-member-query-interval-basic? uint16 460 | +--:(last-member-query-interval-extended) 462 | +--ro last-member-query-interval-extended? uint16 {vlan-last- 463 member-query-interval-extended}? 465 +--ro (query-interval)? 467 | +--:(query-interval-basic) 469 | | +--ro query-interval-basic? uint16 471 | +--:(query-interval-extended) 473 | +--ro query-interval-extended? uint16 {vlan-query- 474 interval-extended}? 476 +--ro (query-max-response-time)? 478 | +--:(query-max-response-time-basic) 480 | | +--ro query-max-response-time-basic? uint16 482 | +--:(query-max-response-time-extended) 484 | +--ro query-max-response-time-extended? uint16 {vlan-query- 485 max-response-time-extended}? 487 +--ro require-router-alert? boolean {require-router- 488 alert}? 490 +--ro (robustness-variable)? 492 | +--:(robustness-variable-basic) 494 | | +--ro robustness-variable-basic? uint8 496 | +--:(robustness-variable-extended) 498 | +--ro robustness-variable-extended? uint8 {vlan- 499 robustness-variable-extended}? 500 +--ro version? uint8 502 +--ro vlan* [vlan-id] 504 +--ro vlan-id uint16 506 +--ro enable? boolean {admin-enable}? 508 +--ro forwarding-mode? enumeration 510 +--ro explicit-tracking? string 512 +--ro send-query? boolean 514 +--ro mrouter-aging-time? uint16 516 +--ro fast-leave? empty {fast-leave}? 518 +--ro (last-member-query-interval)? 520 | +--:(last-member-query-interval-basic) 522 | | +--ro last-member-query-interval-basic? uint16 524 | +--:(last-member-query-interval-extended) 526 | +--ro last-member-query-interval-extended? uint16 {vlan-last- 527 member-query-interval-extended}? 529 +--ro (query-interval)? 531 | +--:(query-interval-basic) 533 | | +--ro query-interval-basic? uint16 535 | +--:(query-interval-extended) 537 | +--ro query-interval-extended? uint16 {vlan- 538 query-interval-extended}? 540 +--ro (query-max-response-time)? 542 | +--:(query-max-response-time-basic) 544 | | +--ro query-max-response-time-basic? uint16 546 | +--:(query-max-response-time-extended) 547 | +--ro query-max-response-time-extended? uint16 {vlan- 548 query-max-response-time-extended}? 550 +--ro require-router-alert? boolean {require-router- 551 alert}? 553 +--ro (robustness-variable)? 555 | +--:(robustness-variable-basic) 557 | | +--ro robustness-variable-basic? uint8 559 | +--:(robustness-variable-extended) 561 | +--ro robustness-variable-extended? uint8 {vlan- 562 robustness-variable-extended}? 564 +--ro version? uint8 566 +--ro static-mrouter-interface* if:interface-ref 567 {static-l2-multicast-group}? 569 +--ro querier? inet:ipv4-address 571 +--ro ssm-map* [source-addr group-addr-prefix] {ssm-map}? 573 | +--ro source-addr ssm-map-ipv4-addr-type 575 | +--ro group-addr-prefix inet:ipv4-prefix 577 +--ro static-l2-multicast-group* [group source-addr] {static-l2- 578 multicast-group}? 580 | +--ro group inet:ipv4-address 582 | +--ro source-addr source-ipv4-addr-type 584 | +--ro interface? if:interface-ref 586 +--ro mrouter-interface* if:interface-ref 588 +--ro port-info* if:interface-ref 590 +--ro mac-address* yang:phys-address 592 +--ro group* [address] 593 +--ro address inet:ipv4-address 595 +--ro expire? uint32 597 +--ro up-time? uint32 599 +--ro interface? if:interface-ref 601 +--ro last-reporter? inet:ipv4-address 603 +--ro source* [address] 605 +--ro address inet:ipv4-address 607 +--ro up-time? uint32 609 +--ro expire? uint32 611 +--ro last-reporter? inet:ipv4-address 613 augment /rt:routing-state/rt:control-plane-protocols: 615 +--ro mld-snooping 617 +--ro global 619 | +--ro enable? boolean {global-admin-enable}? 621 | +--ro entries-count? uint32 623 +--ro vlans 625 +--ro (last-member-query-interval)? 627 | +--:(last-member-query-interval-basic) 629 | | +--ro last-member-query-interval-basic? uint16 631 | +--:(last-member-query-interval-extended) 633 | +--ro last-member-query-interval-extended? uint16 {vlan-last- 634 member-query-interval-extended}? 636 +--ro (query-interval)? 638 | +--:(query-interval-basic) 639 | | +--ro query-interval-basic? uint16 641 | +--:(query-interval-extended) 643 | +--ro query-interval-extended? uint16 {vlan-query- 644 interval-extended}? 646 +--ro (query-max-response-time)? 648 | +--:(query-max-response-time-basic) 650 | | +--ro query-max-response-time-basic? uint16 652 | +--:(query-max-response-time-extended) 654 | +--ro query-max-response-time-extended? uint16 {vlan-query- 655 max-response-time-extended}? 657 +--ro require-router-alert? boolean {require-router- 658 alert}? 660 +--ro (robustness-variable)? 662 | +--:(robustness-variable-basic) 664 | | +--ro robustness-variable-basic? uint8 666 | +--:(robustness-variable-extended) 668 | +--ro robustness-variable-extended? uint8 {vlan- 669 robustness-variable-extended}? 671 +--ro version? uint8 673 +--ro vlan* [vlan-id] 675 +--ro vlan-id uint16 677 +--ro enable? boolean {admin-enable}? 679 +--ro forwarding-mode? enumeration 681 +--ro explicit-tracking? string 683 +--ro send-query? boolean 685 +--ro mrouter-aging-time? uint16 686 +--ro fast-leave? empty {fast-leave}? 688 +--ro (last-member-query-interval)? 690 | +--:(last-member-query-interval-basic) 692 | | +--ro last-member-query-interval-basic? uint16 694 | +--:(last-member-query-interval-extended) 696 | +--ro last-member-query-interval-extended? uint16 {vlan-last- 697 member-query-interval-extended}? 699 +--ro (query-interval)? 701 | +--:(query-interval-basic) 703 | | +--ro query-interval-basic? uint16 705 | +--:(query-interval-extended) 707 | +--ro query-interval-extended? uint16 {vlan- 708 query-interval-extended}? 710 +--ro (query-max-response-time)? 712 | +--:(query-max-response-time-basic) 714 | | +--ro query-max-response-time-basic? uint16 716 | +--:(query-max-response-time-extended) 718 | +--ro query-max-response-time-extended? uint16 {vlan- 719 query-max-response-time-extended}? 721 +--ro require-router-alert? boolean {require-router- 722 alert}? 724 +--ro (robustness-variable)? 726 | +--:(robustness-variable-basic) 728 | | +--ro robustness-variable-basic? uint8 730 | +--:(robustness-variable-extended) 731 | +--ro robustness-variable-extended? uint8 {vlan- 732 robustness-variable-extended}? 734 +--ro version? uint8 736 +--ro static-mrouter-interface* if:interface-ref 737 {static-l2-multicast-group}? 739 +--ro querier? inet:ipv6-address 741 +--ro ssm-map* [source-addr group-addr-prefix] {ssm-map}? 743 | +--ro source-addr ssm-map-ipv6-addr-type 745 | +--ro group-addr-prefix inet:ipv6-prefix 747 +--ro static-l2-multicast-group* [group source-addr] {static-l2- 748 multicast-group}? 750 | +--ro group inet:ipv6-address 752 | +--ro source-addr source-ipv6-addr-type 754 | +--ro interface? if:interface-ref 756 +--ro mrouter-interface* if:interface-ref 758 +--ro port-info* if:interface-ref 760 +--ro mac-address* yang:phys-address 762 +--ro group* [address] 764 +--ro address inet:ipv6-address 766 +--ro expire? uint32 768 +--ro up-time? uint32 770 +--ro interface? if:interface-ref 772 +--ro last-reporter? inet:ipv6-address 774 +--ro source* [address] 776 +--ro address inet:ipv6-address 777 +--ro up-time? uint32 779 +--ro expire? uint32 781 +--ro last-reporter? inet:ipv6-address 783 2.4. IGMP and MLD Snooping RPC 785 IGMP and MLD Snooping RPC clears the specified IGMP and MLD Snooping 786 statistics. 788 rpcs: 789 +---x clear-igmp-snooping-statistics {rpc-clear-statistics}? 790 | +---w input 791 | +---w vlan-id? uint16 792 | +---w group? inet:ipv4-address 793 | +---w source? inet:ipv4-address 794 +---x clear-mld-snooping-statistics {rpc-clear-statistics}? 795 +---w input 796 +---w vlan-id? uint16 797 +---w group? inet:ipv6-address 798 +---w source? inet:ipv6-address 800 3. IGMP and MLD Snooping YANG Module 802 file "ietf-igmp-mld-snooping@2017-05-05.yang" 803 module ietf-igmp-mld-snooping { 804 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; 805 // replace with IANA namespace when assigned 806 prefix igmp-mld-snooping; 808 import ietf-inet-types { 809 prefix "inet"; 810 } 812 import ietf-yang-types { 813 prefix "yang"; 814 } 816 import ietf-interfaces { 817 prefix "if"; 818 } 820 import ietf-routing { 821 prefix "rt"; 822 } 824 organization 825 "IETF PIM Working Group"; 827 contact 828 "WG Web: 829 WG List: 831 WG Chair: Stig Venaas 832 834 WG Chair: Mike McBride 835 837 Editors: Hongji Zhao 838 "; 840 description 841 "The module defines a collection of YANG definitions common 842 for 843 IGMP and MLD Snooping."; 845 revision 2017-05-05 { 846 description 847 "augment /rt:routing/rt:control-plane-protocols 848 augment /rt:routing-state/rt:control-plane-protocols"; 849 reference 850 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 851 } 853 revision 2017-02-05 { 854 description 855 "Initial revision."; 856 reference 857 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 858 } 860 /* 861 * Features 862 */ 863 feature global-admin-enable { 864 description 865 "Support global configuration to enable or disable IGMP and 866 MLD Snooping."; 867 } 869 feature global-vlan-config { 870 description 871 "Support global configuration applied for all vlans."; 872 } 874 feature admin-enable { 875 description 876 "Support configuration to enable or disable protocol under 877 VLAN instance."; 878 } 880 feature fast-leave { 881 description 882 "Support configuration of fast-leave."; 883 } 885 feature join-group { 886 description 887 "Support configuration of join-group."; 888 } 890 feature require-router-alert { 891 description 892 "Support configuration of require-router-alert."; 893 } 895 feature ssm-map { 896 description 897 "Support configuration of ssm-map."; 898 } 900 feature static-l2-multicast-group { 901 description 902 "Support configuration of L2 multicast static-group."; 903 } 905 feature per-vlan-config { 906 description 907 "Support configuration of each VLAN."; 908 } 910 feature rpc-clear-statistics { 911 description 912 "Support to clear statistics by RPC for IGMP and MLD 913 Snooping."; 914 } 916 feature vlan-last-member-query-interval-extended { 917 description 918 "Support configuration of vlan last member query interval 919 different value range."; 920 } 922 feature vlan-query-interval-extended { 923 description 924 "Support configuration of vlan query interval 925 different value range."; 926 } 928 feature vlan-query-max-response-time-extended { 929 description 930 "Support configuration of vlan query max response time 931 different value range."; 932 } 934 feature vlan-robustness-variable-extended { 935 description 936 "Support configuration of vlan robustness-variable 937 different value range."; 938 } 940 /* 941 * Typedefs 942 */ 943 typedef ssm-map-ipv4-addr-type { 944 type union { 945 type enumeration { 946 enum 'policy' { 947 description 948 "Source address in SSM map policy."; 949 } 950 } 951 type inet:ipv4-address; 952 } 953 description 954 "Source IPV4 address type for SSM map."; 955 } // ssm-map-ipv4-addr-type 957 typedef ssm-map-ipv6-addr-type { 958 type union { 959 type enumeration { 960 enum 'policy' { 961 description 962 "Source address in SSM map policy."; 963 } 964 } 965 type inet:ipv6-address; 966 } 967 description 968 "Source IPV6 address type for SSM map."; 969 } // ssm-map-ipv6-addr-type 971 typedef source-ipv4-addr-type { 972 type union { 973 type enumeration { 974 enum '*' { 975 description 976 "Any source address."; 977 } 978 } 979 type inet:ipv4-address; 980 } 981 description 982 "Multicast source IP address type."; 983 } // source-ipv4-addr-type 985 typedef source-ipv6-addr-type { 986 type union { 987 type enumeration { 988 enum '*' { 989 description 990 "Any source address."; 991 } 992 } 993 type inet:ipv6-address; 994 } 995 description 996 "Multicast source IP address type."; 997 } // source-ipv6-addr-type 999 /* 1000 * Identities 1001 */ 1003 /* 1004 * Groupings 1005 */ 1006 grouping global-config-attributes { 1007 description "Global configuration of IGMP and MLD Snooping."; 1009 leaf enable { 1010 if-feature global-admin-enable; 1011 type boolean; 1013 description 1014 "Set the value to true to enable IGMP or MLD Snooping in the 1015 global view"; 1016 } 1018 } // global-config-attributes 1020 grouping global-state-attributes { 1021 description "Global attributes of IGMP and MLD Snooping 1022 state"; 1023 leaf entries-count { 1024 type uint32; 1025 description 1026 "The number of L2 multicast entries in IGMP and MLD 1027 Snooping."; 1028 } 1030 } // global-state-attributes 1032 grouping vlans-config-attributes-igmp-mld-snooping { 1033 description 1034 "Configuration attributes applied to vlans whose 1035 per vlan attributes are not existing."; 1037 choice last-member-query-interval { 1038 description 1039 "Different vendors can restrict different range to the 1040 Last Member Query Interval parameter."; 1042 leaf last-member-query-interval-basic { 1043 type uint16 { 1044 range "1..65535"; 1045 } 1046 units seconds; 1047 default 1; 1048 description 1049 "Last Member Query Interval, which may be tuned to 1050 modify the 1051 leave latency of the network."; 1052 reference "RFC3376. Sec. 8.8."; 1053 } 1054 leaf last-member-query-interval-extended { 1055 if-feature vlan-last-member-query-interval-extended; 1056 type uint16; 1057 units seconds; 1058 default 1; 1059 description 1060 "Last Member Query Interval, which may be tuned to 1061 modify the 1062 leave latency of the network."; 1063 reference "RFC3376. Sec. 8.8."; 1064 } 1065 } 1067 choice query-interval { 1068 description 1069 "Different vendors can restrict different range to the 1070 Query Interval parameter."; 1072 leaf query-interval-basic { 1073 type uint16 { 1074 range "1..31744"; 1075 } 1076 units seconds; 1077 default 125; 1078 description 1079 "The Query Interval is the interval between General 1080 Queries 1081 sent by the Querier."; 1082 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 1083 } 1084 leaf query-interval-extended { 1085 if-feature vlan-query-interval-extended; 1086 type uint16; 1087 units seconds; 1088 default 125; 1089 description 1090 "The Query Interval is the interval between General 1091 Queries 1092 sent by the Querier."; 1093 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 1094 } 1095 } 1097 choice query-max-response-time { 1098 description 1099 "Different vendors can restrict different range to the 1100 Query maximum response time parameter."; 1102 leaf query-max-response-time-basic { 1103 type uint16 { 1104 range "1..65535"; 1105 } 1106 units seconds; 1107 default 10; 1108 description 1109 "Query maximum response time specifies the maximum time 1110 allowed before sending a responding report."; 1111 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 1112 } 1113 leaf query-max-response-time-extended { 1114 if-feature vlan-query-max-response-time-extended; 1115 type uint16; 1116 units seconds; 1117 default 10; 1118 description 1119 "Query maximum response time specifies the maximum time 1120 allowed before sending a responding report."; 1121 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 1122 } 1123 } 1125 leaf require-router-alert { 1126 if-feature require-router-alert; 1127 type boolean; 1128 default false; 1129 description 1130 "When the value is true, router alert exists in the IP 1131 head of IGMP or MLD packet."; 1132 } 1134 choice robustness-variable { 1135 description 1136 "Different vendors can restrict different range to the 1137 Robustness Variable parameter."; 1139 leaf robustness-variable-basic { 1140 type uint8 { 1141 range "2..7"; 1142 } 1143 default 2; 1144 description 1145 "Querier's Robustness Variable allows tuning for the 1146 expected 1147 packet loss on a network."; 1148 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 1149 } 1150 leaf robustness-variable-extended { 1151 if-feature vlan-robustness-variable-extended; 1152 type uint8; 1153 default 2; 1154 description 1155 "Querier's Robustness Variable allows tuning for the 1156 expected 1157 packet loss on a network."; 1158 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 1159 } 1160 } 1162 leaf version { 1163 type uint8 { 1164 range "1..3"; 1165 } 1166 description "IGMP and MLD Snooping version."; 1167 } 1169 } // vlans-config-attributes-igmp-mld-snooping 1171 grouping vlan-config-attributes-igmp-snooping { 1172 description "IGMP snooping configuration of each VLAN."; 1174 uses vlan-config-attributes-igmp-mld-snooping; 1176 leaf querier { 1177 type inet:ipv4-address; 1178 description "Use the IGMP snooping querier to support IGMP 1179 snooping in a VLAN where PIM and IGMP are not configured. 1180 The IP address is used as the source address in 1181 messages."; 1182 } 1184 list ssm-map { 1186 if-feature ssm-map; 1187 key "source-addr group-addr-prefix"; 1188 description "SSM mapping list for igmp snooping"; 1190 leaf source-addr { 1191 type ssm-map-ipv4-addr-type; 1192 description 1193 "Source IP address."; 1194 } 1195 leaf group-addr-prefix { 1196 type inet:ipv4-prefix; 1197 description 1198 "Multicast group IP address for ssm-map in the format 1199 of x.x.x.x/x "; 1200 } 1201 } 1203 list static-l2-multicast-group { 1204 if-feature static-l2-multicast-group; 1205 key "group source-addr"; 1206 description 1207 "A static multicast route, (*,G) or (S,G)."; 1209 leaf group { 1210 type inet:ipv4-address; 1211 description 1212 "Multicast group IP address"; 1213 } 1215 leaf source-addr { 1216 type source-ipv4-addr-type; 1217 description 1218 "Multicast source IP address."; 1219 } 1221 leaf interface { 1222 type if:interface-ref; 1223 description 1224 "Interface for static multicast group"; 1225 } 1227 } // static-l2-multicast-group 1229 } // vlan-config-attributes-igmp-snooping 1231 grouping vlan-config-attributes-igmp-mld-snooping { 1232 description 1233 "IGMP and MLD Snooping configuration of each VLAN."; 1235 leaf enable { 1236 if-feature admin-enable; 1237 type boolean; 1238 description 1239 "Set the value to true to enable IGMP and MLD Snooping in 1240 the VLAN instance."; 1241 } 1243 leaf forwarding-mode { 1244 type enumeration { 1245 enum "mac" { 1246 description 1247 ""; 1248 } 1249 enum "ip" { 1250 description 1251 ""; 1252 } 1253 } 1254 description "The default forwarding mode for IGMP and MLD 1255 Snooping is ip."; 1256 } 1258 leaf explicit-tracking { 1259 when "../version = 3"; 1260 type string; 1261 description "Tracks IGMPv3 membership reports from 1262 individual hosts for each port of each VLAN. "; 1263 } 1265 leaf send-query { 1266 type boolean; 1267 default true; 1268 description "Enable quick response for topo changes"; 1269 } 1271 leaf mrouter-aging-time { 1272 type uint16 ; 1273 default 180; 1274 description "Aging time for mrouter interface"; 1275 } 1277 leaf fast-leave { 1278 if-feature fast-leave; 1279 type empty; 1280 description 1281 "When fast leave is enabled, the IGMP software assumes 1282 that no more than one host is present on each VLAN port."; 1283 } 1285 choice last-member-query-interval { 1286 description 1287 "Different vendors can restrict different range to the 1288 Last Member Query Interval parameter."; 1290 leaf last-member-query-interval-basic { 1291 type uint16 { 1292 range "1..65535"; 1293 } 1294 units seconds; 1295 default 1; 1296 description 1297 "Last Member Query Interval, which may be tuned to 1298 modify the 1299 leave latency of the network."; 1300 reference "RFC3376. Sec. 8.8."; 1301 } 1302 leaf last-member-query-interval-extended { 1303 if-feature vlan-last-member-query-interval-extended; 1304 type uint16; 1305 units seconds; 1306 default 1; 1307 description 1308 "Last Member Query Interval, which may be tuned to 1309 modify the 1310 leave latency of the network."; 1311 reference "RFC3376. Sec. 8.8."; 1312 } 1313 } 1315 choice query-interval { 1316 description 1317 "Different vendors can restrict different range to the 1318 Query Interval parameter."; 1320 leaf query-interval-basic { 1321 type uint16 { 1322 range "1..31744"; 1323 } 1324 units seconds; 1325 default 125; 1326 description 1327 "The Query Interval is the interval between General 1328 Queries 1329 sent by the Querier."; 1331 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 1332 } 1333 leaf query-interval-extended { 1334 if-feature vlan-query-interval-extended; 1335 type uint16; 1336 units seconds; 1337 default 125; 1338 description 1339 "The Query Interval is the interval between General 1340 Queries 1341 sent by the Querier."; 1342 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 1343 } 1344 } 1346 choice query-max-response-time { 1347 description 1348 "Different vendors can restrict different range to the 1349 Query maximum response time parameter."; 1351 leaf query-max-response-time-basic { 1352 type uint16 { 1353 range "1..65535"; 1354 } 1355 units seconds; 1356 default 10; 1357 description 1358 "Query maximum response time specifies the maximum time 1359 allowed before sending a responding report."; 1360 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 1361 } 1362 leaf query-max-response-time-extended { 1363 if-feature vlan-query-max-response-time-extended; 1364 type uint16; 1365 units seconds; 1366 default 10; 1367 description 1368 "Query maximum response time specifies the maximum time 1369 allowed before sending a responding report."; 1370 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 1371 } 1372 } 1374 leaf require-router-alert { 1375 if-feature require-router-alert; 1376 type boolean; 1377 default false; 1378 description 1379 "When the value is true, router alert exists in the IP 1380 head of IGMP or MLD packet."; 1381 } 1383 choice robustness-variable { 1384 description 1385 "Different vendors can restrict different range to the 1386 Robustness Variable parameter."; 1388 leaf robustness-variable-basic { 1389 type uint8 { 1390 range "2..7"; 1391 } 1392 default 2; 1393 description 1394 "Querier's Robustness Variable allows tuning for the 1395 expected 1396 packet loss on a network."; 1397 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 1398 } 1399 leaf robustness-variable-extended { 1400 if-feature vlan-robustness-variable-extended; 1401 type uint8; 1402 default 2; 1403 description 1404 "Querier's Robustness Variable allows tuning for the 1405 expected 1406 packet loss on a network."; 1407 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 1408 } 1409 } 1411 leaf version { 1412 type uint8 { 1413 range "1..3"; 1414 } 1415 description "IGMP and MLD Snooping version."; 1416 } 1418 leaf-list static-mrouter-interface { 1419 if-feature static-l2-multicast-group; 1420 type if:interface-ref; 1421 description "Multicast Router Interface. The interface to 1422 the router must be in the selected VLAN, and it is specified by type 1423 and number."; 1424 } 1426 } // vlan-config-attributes-igmp-mld-snooping 1428 grouping vlan-config-attributes-mld-snooping { 1429 description "MLD snooping configuration of each VLAN."; 1431 uses vlan-config-attributes-igmp-mld-snooping; 1433 leaf querier { 1434 type inet:ipv6-address; 1435 description 1436 "Use the IGMP snooping querier to support IGMP snooping in a 1437 VLAN where PIM and IGMP are not configured. 1438 The IP address is used as the source address in messages."; 1439 } 1441 list ssm-map { 1442 if-feature ssm-map; 1443 key "source-addr group-addr-prefix"; 1444 description "SSM mapping list for MLD snooping"; 1445 leaf source-addr { 1446 type ssm-map-ipv6-addr-type; 1447 description 1448 "Source IP address."; 1449 } 1450 leaf group-addr-prefix { 1451 type inet:ipv6-prefix; 1452 description 1453 "Multicast group IP address for ssm-map"; 1454 } 1455 } 1457 list static-l2-multicast-group { 1458 if-feature static-l2-multicast-group; 1459 key "group source-addr"; 1460 description 1461 "A static multicast route, (*,G) or (S,G)."; 1463 leaf group { 1464 type inet:ipv6-address; 1465 description 1466 "Multicast group IPv6 address."; 1467 } 1468 leaf source-addr { 1469 type source-ipv6-addr-type; 1470 description 1471 "Multicast source IPv6 address."; 1473 } 1475 leaf interface { 1476 type if:interface-ref; 1477 description 1478 "Interface for static multicast group"; 1479 } 1481 } // static-l2-multicast-group 1483 } // vlan-config-attributes-mld-snooping 1485 grouping vlan-state-group-attributes-igmp-mld-snooping { 1486 description 1487 "Per vlan state attributes for both IGMP and MLD snooping 1488 groups."; 1490 leaf expire { 1491 type uint32; 1492 units seconds; 1493 description 1494 "The time left before multicast group timeout."; 1495 } 1497 leaf up-time { 1498 type uint32; 1499 units seconds; 1500 description 1501 "The time after the device created L2 multicast record."; 1502 } 1504 leaf interface { 1505 type if:interface-ref; 1506 description 1507 "The outgoing interface for L2 multicast stream."; 1508 } 1510 } // vlan-state-group-attributes-igmp-mld-snooping 1512 grouping vlan-state-attributes-igmp-snooping { 1513 description 1514 "State attributes for IGMP snooping of each VLAN."; 1516 uses vlan-state-attributes-igmp-mld-snooping; 1518 list group { 1519 key "address"; 1520 description "IGMP snooping information"; 1522 leaf address { 1523 type inet:ipv4-address; 1524 description 1525 "Multicast group IP address"; 1526 } 1528 uses vlan-state-group-attributes-igmp-mld-snooping; 1530 leaf last-reporter { 1531 type inet:ipv4-address; 1532 description 1533 "The last host address which has sent the 1534 report to join the multicast group."; 1535 } 1537 list source { 1538 key "address"; 1539 description "Source IP address for multicast stream"; 1540 leaf address { 1541 type inet:ipv4-address; 1542 description "Source IP address for multicast stream"; 1543 } 1545 uses vlan-state-source-attributes-igmp-mld-snooping; 1547 leaf last-reporter { 1548 type inet:ipv4-address; 1549 description 1550 "The last host address which has sent the 1551 report to join the multicast source and group."; 1552 } 1554 } // list source 1555 } // list group 1556 } // vlan-state-attributes-igmp-snooping 1558 grouping vlan-state-attributes-igmp-mld-snooping { 1559 description 1560 "State attributes for both IGMP and MLD Snooping of each 1561 VLAN."; 1563 leaf-list mrouter-interface { 1564 type if:interface-ref; 1565 description "Multicast Router Interface which is the 1566 interface that connect to the multicast router"; 1567 } 1569 leaf-list port-info { 1570 type if:interface-ref; 1571 description "The port-info shows the interfaces that attach 1572 the hosts, which join in the multicast group"; 1573 } 1575 leaf-list mac-address { 1576 type yang:phys-address; 1577 description "Destination mac address for L2 multicast 1578 forwarding."; 1579 } 1581 } // vlan-config-attributes-igmp-mld-snooping 1583 grouping vlan-state-attributes-mld-snooping { 1584 description 1585 "State attributes for MLD snooping of each VLAN."; 1587 uses vlan-state-attributes-igmp-mld-snooping; 1589 list group { 1590 key "address"; 1591 description "MLD snooping statistics information"; 1593 leaf address { 1594 type inet:ipv6-address; 1595 description 1596 "Multicast group IP address"; 1597 } 1599 uses vlan-state-group-attributes-igmp-mld-snooping; 1601 leaf last-reporter { 1602 type inet:ipv6-address; 1603 description 1604 "The last host address which has sent the 1605 report to join the multicast group."; 1606 } 1608 list source { 1609 key "address"; 1610 description "Source IP address for multicast stream"; 1611 leaf address { 1612 type inet:ipv6-address; 1613 description "Source IP address for multicast stream"; 1614 } 1616 uses vlan-state-source-attributes-igmp-mld-snooping; 1618 leaf last-reporter { 1619 type inet:ipv6-address; 1620 description 1621 "The last host address which has sent the report to 1622 join the multicast source and group."; 1623 } 1625 } // list source 1626 } // list group 1627 } // vlan-state-attributes-mld-snooping 1629 grouping vlan-state-source-attributes-igmp-mld-snooping { 1630 description 1631 "State attributes for both IGMP and MLD Snooping of each 1632 VLAN."; 1634 leaf up-time { 1635 type uint32; 1636 units seconds; 1637 description "The time after the device created L2 multicast 1638 record"; 1639 } 1641 leaf expire { 1642 type uint32; 1643 units seconds; 1644 description 1645 "The time left before multicast group timeout."; 1646 } 1648 } // vlan-state-source-attributes-igmp-mld-snooping 1650 /* 1651 * Configuration data nodes 1652 */ 1653 augment "/rt:routing/rt:control-plane-protocols" 1654 { 1655 description 1656 "IGMP snooping augmentation to routing control plane 1657 protocol configuration."; 1659 container igmp-snooping { 1660 description 1661 "IGMP Snooping configuration data."; 1663 container global { 1664 description 1665 "Global attributes."; 1666 uses global-config-attributes; 1667 } 1669 container vlans { 1670 description 1671 "List of VLANs that enable IGMP Snooping."; 1673 uses vlans-config-attributes-igmp-mld-snooping { 1674 if-feature global-vlan-config; 1675 } 1677 list vlan { 1678 key "vlan-id"; 1679 description 1680 "IGMP Snooping config-attributes for each VLAN."; 1681 leaf vlan-id { 1682 type uint16 { 1683 range "1 .. 4094"; 1684 } 1685 description 1686 "VLAN ID, the range of which is 1 to 4094."; 1687 } 1688 uses vlan-config-attributes-igmp-snooping { 1689 if-feature per-vlan-config; 1690 } 1692 } // vlan 1693 } // vlans 1694 } // igmp-snooping 1695 } // augment 1697 augment "/rt:routing/rt:control-plane-protocols" 1698 { 1699 description 1700 "MLD snooping augmentation to routing control plane 1701 protocol configuration."; 1703 container mld-snooping { 1704 description 1705 "MLD Snooping configuration data."; 1707 container global { 1708 description 1709 "Global attributes."; 1710 uses global-config-attributes; 1711 } 1713 container vlans { 1714 description 1715 "List of VLANs that enable IGMP Snooping."; 1717 uses vlans-config-attributes-igmp-mld-snooping { 1718 if-feature global-vlan-config; 1719 } 1721 list vlan { 1722 key "vlan-id"; 1723 description 1724 "IGMP Snooping configuration attributes for each 1725 VLAN."; 1727 leaf vlan-id { 1728 type uint16 { 1729 range "1 .. 4094"; 1730 } 1731 description 1732 "VLAN ID, the range of which is 1 to 4094"; 1733 } 1735 uses vlan-config-attributes-mld-snooping { 1736 if-feature per-vlan-config; 1737 } 1739 } // vlan 1740 } // vlans 1741 } // mld-snooping 1742 } // augment 1744 /* 1745 * Operational state data nodes 1746 */ 1748 augment "/rt:routing-state/rt:control-plane-protocols" 1749 { 1750 description 1751 "IGMP Snooping state data."; 1753 container igmp-snooping { 1754 description 1755 "IGMP Snooping operational state data."; 1757 container global { 1758 description 1759 "Global attributes."; 1760 uses global-config-attributes; 1761 uses global-state-attributes; 1762 } 1764 container vlans{ 1765 description 1766 " List of VLANs that enable IGMP Snooping."; 1768 uses vlans-config-attributes-igmp-mld-snooping { 1769 if-feature global-vlan-config; 1770 } 1772 list vlan { 1773 key "vlan-id"; 1774 description 1775 "IGMP Snooping state-attributes for each VLAN."; 1776 leaf vlan-id { 1777 type uint16 { 1778 range "1 .. 4094"; 1779 } 1780 description 1781 "VLAN ID, the range of which is 1 to 4094 "; 1782 } 1783 uses vlan-config-attributes-igmp-snooping { 1784 if-feature per-vlan-config; 1785 } 1786 uses vlan-state-attributes-igmp-snooping; 1787 } // vlan 1788 } // vlans 1789 } // igmp-snooping 1790 } // augment 1792 augment "/rt:routing-state/rt:control-plane-protocols" 1793 { 1794 description 1795 "MLD Snooping state data."; 1797 container mld-snooping { 1798 description 1799 "MLD Snooping state data."; 1801 container global { 1802 description 1803 "Global attributes."; 1804 uses global-config-attributes; 1805 uses global-state-attributes; 1806 } 1808 container vlans { 1809 description 1810 "List of VLANs that enable MLD Snooping."; 1812 uses vlans-config-attributes-igmp-mld-snooping { 1813 if-feature global-vlan-config; 1814 } 1816 list vlan { 1817 key "vlan-id"; 1818 description 1819 "MLD Snooping state-attributes for each VLAN."; 1821 leaf vlan-id { 1822 type uint16 { 1823 range "1 .. 4094"; 1824 } 1825 description 1826 "VLAN ID, the range of which is 1 to 4094 "; 1827 } 1828 uses vlan-config-attributes-mld-snooping { 1829 if-feature per-vlan-config; 1830 } 1831 uses vlan-state-attributes-mld-snooping; 1832 } // vlan 1833 } // vlans 1834 } // mld-snooping 1835 } // augment 1837 /* 1838 * RPCs 1839 */ 1840 //clear ip igmp snooping statistics interface vlan-id 1842 rpc clear-igmp-snooping-statistics { 1843 if-feature rpc-clear-statistics; 1844 description 1845 "Clears the specified IGMP Snooping statistics."; 1847 input { 1848 leaf vlan-id { 1849 type uint16 { 1850 range "1 .. 4094"; 1851 } 1852 description 1853 "VLAN ID, the range of which is 1 to 4094 "; 1854 } 1856 leaf group { 1857 type inet:ipv4-address; 1858 description 1859 "Multicast group IPv4 address. 1860 If it is not specified, all IGMP snooping group tables 1861 are 1862 cleared."; 1863 } 1865 leaf source { 1866 type inet:ipv4-address; 1867 description 1868 "Multicast source IPv4 address. 1869 If it is not specified, all IGMP snooping source-group 1870 tables are 1871 cleared."; 1872 } 1873 } 1874 } // rpc clear-igmp-snooping-statistics 1876 rpc clear-mld-snooping-statistics { 1877 if-feature rpc-clear-statistics; 1878 description 1879 "Clears the specified MLD Snooping statistics."; 1881 input { 1882 leaf vlan-id { 1883 type uint16 { 1884 range "1 .. 4094"; 1885 } 1886 description 1887 "VLAN ID, the range of which is 1 to 4094 "; 1888 } 1889 leaf group { 1890 type inet:ipv6-address; 1891 description 1892 "Multicast group IPv6 address. 1893 If it is not specified, all MLD snooping group tables 1894 are 1895 cleared."; 1896 } 1897 leaf source { 1898 type inet:ipv6-address; 1899 description 1900 "Multicast source IPv6 address. 1901 If it is not specified, all MLD snooping source-group 1902 tables are 1903 cleared."; 1904 } 1905 } 1906 } // rpc clear-mld-snooping-statistics 1908 /* 1909 * Notifications 1910 */ 1911 } 1912 1914 4. Security Considerations 1916 The data model defined does not create any security implications. 1918 5. IANA Considerations 1920 This draft does not request any IANA action. 1922 6. Normative References 1924 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1925 the Network Configuration Protocol (NETCONF)", RFC 6020, 1926 October 2010. 1928 [RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6021, 1929 October 2010. 1931 [RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations 1932 for Internet Group Management Protocol (IGMP) and Multicast 1933 Listener Discovery (MLD) Snooping Switches", RFC 4541, May 1934 2006. 1936 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1937 2", RFC 2236, November 1997. 1939 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1940 Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. 1942 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1943 Thyagarajan, "Internet Group Management Protocol, Version 1944 3", RFC 3376, October 2002. 1946 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1947 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1949 [RFC4604] Holbrook, H., Cain, B., and B. Haberman, "Using 1950 InternetGroup Management Protocol Version 3 (IGMPv3) and 1951 Multicast Listener Discovery Protocol Version 2 (MLDv2) for 1952 Source-Specific Multicast", RFC 4604, August 2006. 1954 [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for 1955 IP", RFC 4607, August 2006. 1957 [draft-ietf-pim-igmp-mld-yang-01] X. Liu, F. Guo, M. Sivakumar, P. 1958 McAllister, A. Peter, "A YANG data model for Internet Group 1959 Management Protocol (IGMP) and Multicast Listener Discovery 1960 (MLD)", draft-ietf-pim-igmp-mld-yang-01, October 28, 2016. 1962 [draft-ietf-pim-igmp-mld-yang-03] X. Liu, F. Guo, M. Sivakumar, P. 1963 McAllister, A. Peter, "A YANG data model for Internet Group 1964 Management Protocol (IGMP) and Multicast Listener Discovery 1965 (MLD)", draft-ietf-pim-igmp-mld-yang-03, March 13, 2017. 1967 Authors' Addresses 1969 Hongji Zhao 1970 Ericsson (China) Communications Company Ltd. 1971 Ericsson Tower, No. 5 Lize East Street, 1972 Chaoyang District Beijing 100102, P.R. China 1974 Email: hongji.zhao@ericsson.com