idnits 2.17.1 draft-zhao-pim-igmp-mld-snooping-yang-03.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 41 instances of too long lines in the document, the longest one being 14 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (October 26, 2017) is 2368 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 95, but not defined == Missing Reference: 'RFC6241' is mentioned on line 145, but not defined == Missing Reference: 'RFC8040' is mentioned on line 145, but not defined == Missing Reference: 'RFC7950' is mentioned on line 146, but not defined == Unused Reference: 'RFC6021' is defined on line 1884, but no explicit reference was found in the text == Unused Reference: 'RFC2236' is defined on line 1892, but no explicit reference was found in the text == Unused Reference: 'RFC2710' is defined on line 1895, but no explicit reference was found in the text == Unused Reference: 'RFC3376' is defined on line 1898, but no explicit reference was found in the text == Unused Reference: 'RFC3810' is defined on line 1902, but no explicit reference was found in the text == Unused Reference: 'RFC4604' is defined on line 1905, but no explicit reference was found in the text == Unused Reference: 'RFC4607' is defined on line 1910, 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 (~~), 13 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 X. Liu 4 Expires: April 2018 Jabil 5 Y. Liu 6 Huawei 7 M. Sivakumar 8 Cisco 9 A. Peter 10 Individual 12 October 26, 2017 14 A Yang Data Model for IGMP and MLD Snooping 15 draft-zhao-pim-igmp-mld-snooping-yang-03.txt 17 Abstract 19 This document defines a YANG data model that can be used to 20 configure and manage Internet Group Management Protocol (IGMP) and 21 Multicast Listener Discovery (MLD) Snooping devices. 23 Status of this Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF), its areas, and its working groups. Note that 30 other groups may also distribute working documents as Internet- 31 Drafts. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 The list of current Internet-Drafts can be accessed at 39 http://www.ietf.org/ietf/1id-abstracts.txt 41 The list of Internet-Draft Shadow Directories can be accessed at 42 http://www.ietf.org/shadow.html 44 This Internet-Draft will expire on April 26, 2018. 46 Copyright Notice 48 Copyright (c) 2017 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction...................................................2 64 1.1. Terminology...............................................3 65 1.2. Tree Diagrams.............................................3 66 2. Design of Data Model...........................................3 67 2.1. Overview..................................................4 68 2.2. IGMP and MLD Snooping Instances...........................4 69 2.3. IGMP and MLD Snooping References.........................10 70 2.4. IGMP and MLD Snooping RPC................................13 71 3. IGMP and MLD Snooping YANG Module.............................13 72 4. Security Considerations.......................................42 73 5. IANA Considerations...........................................42 74 6. Normative References..........................................42 76 1. Introduction 78 This document defines a YANG [RFC6020] data model for the management 79 of Internet Group Management Protocol (IGMP) and Multicast Listener 80 Discovery (MLD) Snooping devices. 82 This data model follows the Guidelines for YANG Module Authors 83 NMDA)[draft-dsdt-nmda-guidelines-01]. The "Network Management 84 Datastore Architecture" (NMDA) adds the ability to inspect the 85 current operational values for configuration, allowing clients to use 86 identical paths for retrieving the configured values and the 87 operational values. 89 1.1. Terminology 91 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 92 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 93 "OPTIONAL" in this document are to be interpreted as described in BCP 94 14 [RFC2119]. 96 The terminology for describing YANG data models is found in[RFC6020]. 98 1.2. Tree Diagrams 100 A simplified graphical representation of the data model is used in 101 this document. The meaning of the symbols in these diagrams is as 102 follows: 104 o Brackets "[" and "]" enclose list keys. 106 o Abbreviations before data node names: "rw" means configuration 107 (read-write), and "ro" means state data (read-only). 109 o Symbols after data node names: "?" means an optional node, "!" 110 means a presence container, and "*" denotes a list and leaf-list. 112 o Parentheses enclose choice and case nodes, and case nodes are also 113 marked with a colon (":"). 115 o Ellipsis ("...") stands for contents of subtrees that are not 116 shown. 118 2. Design of Data Model 120 The model covers Considerations for Internet Group Management 121 Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping 122 Switches [RFC4541]. 124 The goal of this document is to define a data model that provides a 125 common user interface to IGMP and MLD Snooping. There is very 126 information that is designated as "mandatory", providing freedom for 127 vendors to adapt this data model to their respective product 128 implementations. 130 2.1. Overview 132 The IGMP and MLD Snooping YANG module defined in this document has 133 all the common building blocks for the IGMP and MLD Snooping 134 protocol. 136 The YANG module includes IGMP and MLD Snooping instances 137 definition, instance references in the scenario of BRIDGE, VPLS. The 138 module also includes the RPC methods for clearing the specified IGMP 139 and MLD Snooping. 141 This YANG model follows the Guidelines for YANG Module Authors 142 (NMDA) [draft-dsdt-nmda-guidelines-01]. This NMDA ("Network 143 Management Datastore Architecture") architecture provides an 144 architectural framework for datastores as they are used by network 145 management protocols such as NETCONF [RFC6241], RESTCONF [RFC8040] 146 and the YANG [RFC7950] data modeling language.. 148 2.2. IGMP and MLD Snooping Instances 150 The YANG module defines IGMP and MLD Snooping instance. The instance 151 will be referenced in all kinds of scenarios to configure IGMP and MLD 152 Snooping. The attribute who could be read and written shows 153 configuration data. The read-only attribute shows state data. The key 154 attribute is name. 156 module: ietf-igmp-mld-snooping 158 +--rw igmp-snooping-instances 160 | +--rw igmp-snooping-instance* [name] 162 | +--rw name string 164 | +--rw id? uint32 166 | +--rw type? enumeration 168 | +--rw enable? boolean {admin-enable}? 170 | +--rw forwarding-mode? enumeration 172 | +--rw explicit-tracking? boolean {explicit-tracking}? 174 | +--rw exclude-lite? boolean {exclude-lite}? 175 | +--rw send-query? boolean 177 | +--rw fast-leave? empty {fast-leave}? 179 | +--rw last-member-query-interval? uint16 181 | +--rw query-interval? uint16 183 | +--rw query-max-response-time? uint16 185 | +--rw require-router-alert? boolean {require-router-alert}? 187 | +--rw robustness-variable? uint8 189 | +--rw version? uint8 191 | +--rw static-bridge-mrouter-interface* if:interface-ref {static-l2- 192 multicast-group}? 194 | +--rw static-vpls-mrouter-interface* l2vpn-instance-pw-ref {static- 195 l2-multicast-group}? 197 | +--rw querier-source? inet:ipv4-address 199 | +--rw static-l2-multicast-group* [group source-addr] {static-l2- 200 multicast-group}? 202 | | +--rw group inet:ipv4-address 204 | | +--rw source-addr source-ipv4-addr-type 206 | | +--rw bridge-outgoing-interface* if:interface-ref 208 | | +--rw vpls-outgoing-ac* l2vpn-instance-ac-ref 210 | | +--rw vpls-outgoing-pw* l2vpn-instance-pw-ref 212 | +--ro entries-count? uint32 214 | +--ro bridge-mrouter-interface* if:interface-ref 216 | +--ro vpls-mrouter-interface* l2vpn-instance-pw-ref 218 | +--ro group* [address] 220 | | +--ro address inet:ipv4-address 221 | | +--ro mac-address? yang:phys-address 223 | | +--ro expire? uint32 225 | | +--ro up-time? uint32 227 | | +--ro last-reporter? inet:ipv4-address 229 | | +--ro source* [address] 231 | | +--ro address inet:ipv4-address 233 | | +--ro bridge-outgoing-interface* if:interface-ref 235 | | +--ro vpls-outgoing-ac* l2vpn-instance-ac-ref 237 | | +--ro vpls-outgoing-pw* l2vpn-instance-pw-ref 239 | | +--ro up-time? uint32 241 | | +--ro expire? uint32 243 | | +--ro host-count? uint32 {explicit-tracking}? 245 | | +--ro last-reporter? inet:ipv4-address 247 | | +--ro host* [host-address] {explicit-tracking}? 249 | | +--ro host-address inet:ipv4-address 251 | | +--ro host-filter-mode? enumeration 253 | +--ro statistics 255 | +--ro received 257 | | +--ro query? yang:counter64 259 | | +--ro membership-report-v1? yang:counter64 261 | | +--ro membership-report-v2? yang:counter64 263 | | +--ro membership-report-v3? yang:counter64 265 | | +--ro leave? yang:counter64 267 | | +--ro pim? yang:counter64 268 | +--ro sent 270 | +--ro query? yang:counter64 272 | +--ro membership-report-v1? yang:counter64 274 | +--ro membership-report-v2? yang:counter64 276 | +--ro membership-report-v3? yang:counter64 278 | +--ro leave? yang:counter64 280 | +--ro pim? yang:counter64 282 +--rw mld-snooping-instances 284 | +--rw mld-snooping-instance* [name] 286 | +--rw name string 288 | +--rw id? uint32 290 | +--rw type? enumeration 292 | +--rw enable? boolean {admin-enable}? 294 | +--rw forwarding-mode? enumeration 296 | +--rw explicit-tracking? boolean {explicit-tracking}? 298 | +--rw exclude-lite? boolean {exclude-lite}? 300 | +--rw send-query? boolean 302 | +--rw fast-leave? empty {fast-leave}? 304 | +--rw last-member-query-interval? uint16 306 | +--rw query-interval? uint16 308 | +--rw query-max-response-time? uint16 310 | +--rw require-router-alert? boolean {require-router-alert}? 312 | +--rw robustness-variable? uint8 314 | +--rw version? uint8 315 | +--rw static-bridge-mrouter-interface* if:interface-ref {static-l2- 316 multicast-group}? 318 | +--rw static-vpls-mrouter-interface* l2vpn-instance-pw-ref {static- 319 l2-multicast-group}? 321 | +--rw querier-source? inet:ipv6-address 323 | +--rw static-l2-multicast-group* [group source-addr] {static-l2- 324 multicast-group}? 326 | | +--rw group inet:ipv6-address 328 | | +--rw source-addr source-ipv6-addr-type 330 | | +--rw bridge-outgoing-interface* if:interface-ref 332 | | +--rw vpls-outgoing-ac* l2vpn-instance-ac-ref 334 | | +--rw vpls-outgoing-pw* l2vpn-instance-pw-ref 336 | +--ro entries-count? uint32 338 | +--ro bridge-mrouter-interface* if:interface-ref 340 | +--ro vpls-mrouter-interface* l2vpn-instance-pw-ref 342 | +--ro group* [address] 344 | | +--ro address inet:ipv6-address 346 | | +--ro mac-address? yang:phys-address 348 | | +--ro expire? uint32 350 | | +--ro up-time? uint32 352 | | +--ro last-reporter? inet:ipv6-address 354 | | +--ro source* [address] 356 | | +--ro address inet:ipv6-address 358 | | +--ro bridge-outgoing-interface* if:interface-ref 360 | | +--ro vpls-outgoing-ac* l2vpn-instance-ac-ref 361 | | +--ro vpls-outgoing-pw* l2vpn-instance-pw-ref 363 | | +--ro up-time? uint32 365 | | +--ro expire? uint32 367 | | +--ro host-count? uint32 {explicit-tracking}? 369 | | +--ro last-reporter? inet:ipv6-address 371 | | +--ro host* [host-address] {explicit-tracking}? 373 | | +--ro host-address inet:ipv6-address 375 | | +--ro host-filter-mode? enumeration 377 | +--ro statistics 379 | +--ro received 381 | | +--ro query? yang:counter64 383 | | +--ro membership-report-v1? yang:counter64 385 | | +--ro membership-report-v2? yang:counter64 387 | | +--ro membership-report-v3? yang:counter64 389 | | +--ro leave? yang:counter64 391 | | +--ro pim? yang:counter64 393 | +--ro sent 395 | +--ro query? yang:counter64 397 | +--ro membership-report-v1? yang:counter64 399 | +--ro membership-report-v2? yang:counter64 401 | +--ro membership-report-v3? yang:counter64 403 | +--ro leave? yang:counter64 405 | +--ro pim? yang:counter64 407 2.3. IGMP and MLD Snooping References 409 The IGMP and MLD Snooping instance could be referenced in the scenario 410 of bridge, VPLS to configure the IGMP and MLD Snooping. The name of the 411 instance is the key attribute. 413 The type of the instance indicates the scenario which is bridge or 414 VPLS. When referenced in bridge, the id of instance means VLAN id. 415 When referenced in VPLS, the id means VSI id. 417 module: ietf-igmp-mld-snooping 419 ... 421 +--rw bridges 423 | +--rw bridge* [name] 425 | +--rw name dot1qtypes:name-type 427 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 429 | +--rw mld-snooping-instance? mld-snooping-instance-ref 431 | +--rw component* [name] 433 | +--rw name string 435 | +--rw bridge-vlan 437 | +--rw vlan* [vid] 439 | +--rw vid dot1qtypes:vlan-index-type 441 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 443 | +--rw mld-snooping-instance? mld-snooping-instance-ref 445 | +--rw interfaces 447 | +--rw interface* [name] 449 | +--rw name string 451 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 452 | +--rw mld-snooping-instance? mld-snooping-instance-ref 454 +--rw l2vpn-instances 456 +--rw l2vpn-instance* [name] 458 +--rw name string 460 +--rw igmp-snooping-instance? igmp-snooping-instance-ref 462 +--rw mld-snooping-instance? mld-snooping-instance-ref 464 +--rw endpoint* [name] 466 +--rw name string 468 +--rw igmp-snooping-instance? igmp-snooping-instance-ref 470 +--rw mld-snooping-instance? mld-snooping-instance-ref 472 +--rw (ac-or-pw-or-redundancy-grp)? 474 +--:(ac) 476 | +--rw ac* [name] 478 | +--rw name string 480 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 482 | +--rw mld-snooping-instance? mld-snooping-instance-ref 484 +--:(pw) 486 | +--rw pw* [name] 488 | +--rw name string 490 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 492 | +--rw mld-snooping-instance? mld-snooping-instance-ref 494 +--:(redundancy-grp) 496 +--rw (primary) 498 | +--:(primary-ac) 499 | | +--rw primary-ac 501 | | +--rw name? string 503 | | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 505 | | +--rw mld-snooping-instance? mld-snooping-instance-ref 507 | +--:(primary-pw) 509 | +--rw primary-pw* [name] 511 | +--rw name string 513 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 515 | +--rw mld-snooping-instance? mld-snooping-instance-ref 517 +--rw (backup)? 519 +--:(backup-ac) 521 | +--rw backup-ac 523 | +--rw name? string 525 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 527 | +--rw mld-snooping-instance? mld-snooping-instance-ref 529 +--:(backup-pw) 531 +--rw backup-pw* [name] 533 +--rw name string 535 +--rw igmp-snooping-instance? igmp-snooping-instance-ref 537 +--rw mld-snooping-instance? mld-snooping-instance-ref 539 2.4. IGMP and MLD Snooping RPC 541 IGMP and MLD Snooping RPC clears the specified IGMP and MLD Snooping 542 group tables. 544 rpcs: 545 +---x clear-igmp-snooping-groups {rpc-clear-groups}? 546 | +---w input 547 | +---w id? uint32 548 | +---w group? inet:ipv4-address 549 | +---w source? inet:ipv4-address 550 +---x clear-mld-snooping-groups {rpc-clear-groups}? 551 +---w input 552 +---w id? uint32 553 +---w group? inet:ipv6-address 554 +---w source? inet:ipv6-address 556 3. IGMP and MLD Snooping YANG Module 558 file "ietf-igmp-mld-snooping@2017-10-25.yang" 559 module ietf-igmp-mld-snooping { 560 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; 561 // replace with IANA namespace when assigned 562 prefix ims; 564 import ietf-inet-types { 565 prefix "inet"; 566 } 568 import ietf-yang-types { 569 prefix "yang"; 570 } 572 import ietf-interfaces { 573 prefix "if"; 574 } 576 import ietf-l2vpn { 577 prefix "l2vpn"; 578 } 580 organization 581 "IETF PIM Working Group"; 583 contact 584 "WG Web: 585 WG List: 587 WG Chair: Stig Venaas 588 590 WG Chair: Mike McBride 591 593 Editors: Hongji Zhao 594 596 Xufeng Liu 597 599 Yisong Liu 600 602 Anish Peter 603 605 Mahesh Sivakumar 606 608 "; 610 description 611 "The module defines a collection of YANG definitions common for 612 IGMP and MLD Snooping."; 614 revision 2017-10-25 { 615 description 616 "Change model definition to fit NMDA standard."; 617 reference 618 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 619 } 621 revision 2017-08-14 { 622 description 623 "using profile to cooperate with ieee-dot1Q-bridge module"; 624 reference 625 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 626 } 628 revision 2017-06-28 { 629 description 630 "augment /rt:routing/rt:control-plane-protocols 632 augment /rt:routing-state/rt:control-plane-protocols"; 633 reference 634 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 635 } 637 revision 2017-02-05 { 638 description 639 "Initial revision."; 640 reference 641 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 642 } 644 /* 645 * Features 646 */ 648 feature admin-enable { 649 description 650 "Support configuration to enable or disable IGMP and MLD 651 Snooping."; 652 } 654 feature fast-leave { 655 description 656 "Support configuration of fast-leave."; 657 } 659 feature join-group { 660 description 661 "Support configuration of join-group."; 662 } 664 feature require-router-alert { 665 description 666 "Support configuration of require-router-alert."; 667 } 669 feature static-l2-multicast-group { 670 description 671 "Support configuration of L2 multicast static-group."; 672 } 674 feature per-instance-config { 675 description 676 "Support configuration of each VLAN or VPLS instance or EVPN 677 instance."; 678 } 680 feature rpc-clear-groups { 681 description 682 "Support to clear statistics by RPC for IGMP and MLD 683 Snooping."; 684 } 686 feature explicit-tracking { 687 description 688 "Support configuration of per instance explicit-tracking 689 hosts."; 690 } 692 feature exclude-lite { 693 description 694 "Support configuration of per instance exclude-lite."; 695 } 697 /* 698 * Typedefs 699 */ 700 typedef name-type { 701 type string { 702 length "0..32"; 703 } 704 description 705 "A text string of up to 32 characters, of locally determined 706 significance."; 707 } 708 typedef vlan-index-type { 709 type uint32 { 710 range "1..4094 | 4096..4294967295"; 711 } 712 description 713 "A value used to index per-VLAN tables. Values of 0 and 4095 714 are not permitted. The range of valid VLAN indices. If the 715 value is greater than 4095, then it represents a VLAN with 716 scope local to the particular agent, i.e., one without a 717 global VLAN-ID assigned to it. Such VLANs are outside the 718 scope of IEEE 802.1Q, but it is convenient to be able to 719 manage them in the same way using this YANG module."; 720 reference 721 "IEEE Std 802.1Q-2014: Virtual Bridged Local Area Networks."; 722 } 723 typedef igmp-snooping-instance-ref { 724 type leafref { 725 path "/igmp-snooping-instances/igmp-snooping-instance/name"; 726 } 727 description 728 "This type is used by data models that need to reference igmp 729 snooping instance."; 730 } 732 typedef mld-snooping-instance-ref { 733 type leafref { 734 path "/mld-snooping-instances/mld-snooping-instance/name"; 735 } 736 description 737 "This type is used by data models that need to reference mld 738 snooping instance."; 739 } 741 typedef l2vpn-instance-ac-ref { 742 type leafref { 743 path "/l2vpn:l2vpn/l2vpn:instances" + 744 "/l2vpn:instance/l2vpn:endpoint/l2vpn:ac/l2vpn:name"; 745 } 746 description "l2vpn-instance-ac-ref"; 747 } 749 typedef l2vpn-instance-pw-ref { 750 type leafref { 751 path "/l2vpn:l2vpn/l2vpn:instances" + 752 "/l2vpn:instance/l2vpn:endpoint/l2vpn:pw/l2vpn:name"; 753 } 754 description "l2vpn-instance-pw-ref"; 755 } 757 typedef source-ipv4-addr-type { 758 type union { 759 type enumeration { 760 enum '*' { 761 description 762 "Any source address."; 763 } 764 } 765 type inet:ipv4-address; 766 } 767 description 768 "Multicast source IP address type."; 769 } // source-ipv4-addr-type 771 typedef source-ipv6-addr-type { 772 type union { 773 type enumeration { 774 enum '*' { 775 description 776 "Any source address."; 777 } 778 } 779 type inet:ipv6-address; 780 } 781 description 782 "Multicast source IP address type."; 783 } // source-ipv6-addr-type 785 /* 786 * Identities 787 */ 789 /* 790 * Groupings 791 */ 793 grouping general-state-attributes { 794 description "Statistics of IGMP and MLD Snooping "; 796 container statistics { 797 config false; 798 description 799 "The statistics of IGMP and MLD Snooping related packets."; 801 container received { 802 description "Statistics of received messages."; 803 uses general-statistics-sent-received; 804 } 805 container sent { 806 description "Statistics of sent messages."; 807 uses general-statistics-sent-received; 808 } 809 } // statistics 811 } // general-state-attributes 812 grouping instance-config-attributes-igmp-snooping { 813 description "IGMP snooping configuration for each VLAN or VPLS 814 instance or EVPN instance."; 816 uses instance-config-attributes-igmp-mld-snooping; 818 leaf querier-source { 819 type inet:ipv4-address; 820 description "Use the IGMP snooping querier to support IGMP 821 snooping in a VLAN where PIM and IGMP are not configured. 822 The IP address is used as the source address in 823 messages."; 824 } 826 list static-l2-multicast-group { 827 if-feature static-l2-multicast-group; 828 key "group source-addr"; 829 description 830 "A static multicast route, (*,G) or (S,G)."; 832 leaf group { 833 type inet:ipv4-address; 834 description 835 "Multicast group IP address"; 836 } 838 leaf source-addr { 839 type source-ipv4-addr-type; 840 description 841 "Multicast source IP address."; 842 } 844 leaf-list bridge-outgoing-interface { 845 when "ims:type = 'bridge'"; 846 type if:interface-ref; 847 description "Outgoing interface in bridge fowarding"; 849 } 851 leaf-list vpls-outgoing-ac { 852 when "ims:type = 'vpls'"; 853 type l2vpn-instance-ac-ref; 854 description "Outgoing ac in vpls fowarding"; 856 } 857 leaf-list vpls-outgoing-pw { 858 when "ims:type = 'vpls'"; 859 type l2vpn-instance-pw-ref; 860 description "Outgoing pw in vpls fowarding"; 862 } 864 } // static-l2-multicast-group 866 } // instance-config-attributes-igmp-snooping 868 grouping instance-config-attributes-igmp-mld-snooping { 869 description 870 "IGMP and MLD Snooping configuration of each VLAN."; 872 leaf enable { 873 if-feature admin-enable; 874 type boolean; 875 description 876 "Set the value to true to enable IGMP and MLD Snooping in 877 the VLAN instance."; 878 } 880 leaf forwarding-mode { 881 type enumeration { 882 enum "mac" { 883 description 884 ""; 885 } 886 enum "ip" { 887 description 888 ""; 889 } 890 } 891 description "The default forwarding mode for IGMP and MLD 892 Snooping is ip. 893 cisco command is as below 894 Router(config-vlan-config)# multicast snooping lookup 895 { ip | mac } "; 896 } 898 leaf explicit-tracking { 899 if-feature explicit-tracking; 900 type boolean; 901 description "Tracks IGMP & MLD Snooping v3 membership reports 902 from individual hosts for each port of each VLAN or VSI."; 903 } 905 leaf exclude-lite { 906 if-feature exclude-lite; 907 type boolean; 908 description 909 "lightweight IGMPv3 and MLDv2 protocols, which simplify the 910 standard versions of IGMPv3 and MLDv2."; 911 reference "RFC5790"; 912 } 914 leaf send-query { 915 type boolean; 916 default true; 917 description "Enable quick response for topo changes. 918 To support IGMP snooping in a VLAN where PIM and IGMP are 919 not configured. 920 It cooperates with param querier-source. "; 921 } 923 /** 924 leaf mrouter-aging-time { 925 type uint16 ; 926 default 180; 927 description "Aging time for mrouter interface"; 928 } 929 **/ 931 leaf fast-leave { 932 if-feature fast-leave; 933 type empty; 934 description 935 "When fast leave is enabled, the IGMP software assumes that 936 no more than one host is present on each VLAN port."; 937 } 939 leaf last-member-query-interval { 940 type uint16 { 941 range "1..65535"; 942 } 943 units seconds; 944 default 1; 945 description 946 "Last Member Query Interval, which may be tuned to modify 947 the 948 leave latency of the network."; 949 reference "RFC3376. Sec. 8.8."; 950 } 952 leaf query-interval { 954 type uint16; 955 units seconds; 956 default 125; 957 description 958 "The Query Interval is the interval between General 959 Queries 960 sent by the Querier."; 961 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 962 } 964 leaf query-max-response-time { 966 type uint16; 967 units seconds; 968 default 10; 969 description 970 "Query maximum response time specifies the maximum time 971 allowed before sending a responding report."; 972 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 974 } 976 leaf require-router-alert { 977 if-feature require-router-alert; 978 type boolean; 979 default false; 980 description 981 "When the value is true, router alert exists in the IP head 982 of IGMP or MLD packet."; 983 } 985 leaf robustness-variable { 986 type uint8 { 987 range "2..7"; 988 } 989 default 2; 990 description 991 "Querier's Robustness Variable allows tuning for the 992 expected 993 packet loss on a network."; 994 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 996 } 998 leaf version { 999 type uint8 { 1000 range "1..3"; 1001 } 1002 description "IGMP and MLD Snooping version."; 1003 } 1005 leaf-list static-bridge-mrouter-interface { 1007 when "ims:type = 'bridge'"; 1008 if-feature static-l2-multicast-group; 1009 type if:interface-ref; 1010 description "static mrouter interface in bridge fowarding"; 1012 } 1014 leaf-list static-vpls-mrouter-interface { 1016 when "ims:type = 'vpls'"; 1017 if-feature static-l2-multicast-group; 1018 type l2vpn-instance-pw-ref; 1019 description "static mrouter interface in vpls fowarding"; 1021 } 1023 } // instance-config-attributes-igmp-mld-snooping 1025 grouping instance-config-attributes-mld-snooping { 1026 description "MLD snooping configuration of each VLAN."; 1028 uses instance-config-attributes-igmp-mld-snooping; 1030 leaf querier-source { 1031 type inet:ipv6-address; 1032 description 1033 "Use the MLD snooping querier to support MLD snooping where PIM 1034 and MLD are not configured. 1035 The IP address is used as the source address in messages."; 1036 } 1038 list static-l2-multicast-group { 1039 if-feature static-l2-multicast-group; 1040 key "group source-addr"; 1041 description 1042 "A static multicast route, (*,G) or (S,G)."; 1044 leaf group { 1045 type inet:ipv6-address; 1046 description 1047 "Multicast group IP address"; 1048 } 1050 leaf source-addr { 1051 type source-ipv6-addr-type; 1052 description 1053 "Multicast source IP address."; 1054 } 1056 leaf-list bridge-outgoing-interface { 1057 when "ims:type = 'bridge'"; 1058 type if:interface-ref; 1059 description "Outgoing interface in bridge fowarding"; 1061 } 1063 leaf-list vpls-outgoing-ac { 1064 when "ims:type = 'vpls'"; 1065 type l2vpn-instance-ac-ref; 1066 description "Outgoing ac in vpls fowarding"; 1068 } 1070 leaf-list vpls-outgoing-pw { 1071 when "ims:type = 'vpls'"; 1072 type l2vpn-instance-pw-ref; 1073 description "Outgoing pw in vpls fowarding"; 1075 } 1077 } // static-l2-multicast-group 1079 } // instance-config-attributes-mld-snooping 1081 grouping instance-state-group-attributes-igmp-mld-snooping { 1082 description 1083 "Attributes for both IGMP and MLD snooping groups."; 1085 leaf mac-address { 1086 type yang:phys-address; 1087 description "Destination mac address for L2 multicast 1088 forwarding."; 1089 } 1091 leaf expire { 1092 type uint32; 1093 units seconds; 1094 description 1095 "The time left before multicast group timeout."; 1096 } 1098 leaf up-time { 1099 type uint32; 1100 units seconds; 1101 description 1102 "The time after the device created L2 multicast record."; 1103 } 1105 } // instance-state-group-attributes-igmp-mld-snooping 1107 grouping instance-state-attributes-igmp-snooping { 1109 description 1110 "State attributes for IGMP snooping for each VLAN or VPLS 1111 instance or EVPN instance."; 1113 uses instance-state-attributes-igmp-mld-snooping; 1115 list group { 1117 key "address"; 1119 config false; 1121 description "IGMP snooping information"; 1123 leaf address { 1124 type inet:ipv4-address; 1125 description 1126 "Multicast group IP address"; 1127 } 1129 uses instance-state-group-attributes-igmp-mld-snooping; 1130 leaf last-reporter { 1131 type inet:ipv4-address; 1132 description 1133 "The last host address which has sent the 1134 report to join the multicast group."; 1135 } 1137 list source { 1138 key "address"; 1139 description "Source IP address for multicast stream"; 1140 leaf address { 1141 type inet:ipv4-address; 1142 description "Source IP address for multicast stream"; 1143 } 1145 uses instance-state-source-attributes-igmp-mld-snooping; 1147 leaf last-reporter { 1148 type inet:ipv4-address; 1149 description 1150 "The last host address which has sent the 1151 report to join the multicast source and group."; 1152 } 1154 list host { 1155 if-feature explicit-tracking; 1156 key "host-address"; 1157 description 1158 "List of multicast membership hosts 1159 of the specific multicast source-group."; 1161 leaf host-address { 1162 type inet:ipv4-address; 1163 description 1164 "Multicast membership host address."; 1165 } 1166 leaf host-filter-mode { 1167 type enumeration { 1168 enum "include" { 1169 description 1170 "In include mode"; 1171 } 1172 enum "exclude" { 1173 description 1174 "In exclude mode."; 1175 } 1176 } 1177 description 1178 "Filter mode for a multicast membership 1179 host may be either include or exclude."; 1180 } 1181 }// list host 1183 } // list source 1184 } // list group 1186 // statistics 1187 uses general-state-attributes; 1189 } // instance-state-attributes-igmp-snooping 1191 grouping instance-state-attributes-igmp-mld-snooping { 1193 description 1194 "State attributes for both IGMP and MLD Snooping of each 1195 VLAN or VPLS instance or EVPN instance."; 1197 leaf entries-count { 1198 type uint32; 1199 config false; 1200 description 1201 "The number of L2 multicast entries in IGMP and MLD 1202 Snooping."; 1203 } 1205 leaf-list bridge-mrouter-interface { 1207 when "ims:type = 'bridge'"; 1208 type if:interface-ref; 1209 config false; 1210 description " mrouter interface in bridge fowarding"; 1212 } 1214 leaf-list vpls-mrouter-interface { 1216 when "ims:type = 'vpls'"; 1217 type l2vpn-instance-pw-ref; 1218 config false; 1219 description " mrouter interface in vpls fowarding"; 1221 } 1223 } // instance-config-attributes-igmp-mld-snooping 1225 grouping instance-state-attributes-mld-snooping { 1226 description 1227 "State attributes for MLD snooping of each VLAN."; 1229 uses instance-state-attributes-igmp-mld-snooping; 1231 list group { 1233 key "address"; 1235 config false; 1237 description "MLD snooping statistics information"; 1239 leaf address { 1240 type inet:ipv6-address; 1241 description 1242 "Multicast group IP address"; 1243 } 1245 uses instance-state-group-attributes-igmp-mld-snooping; 1247 leaf last-reporter { 1248 type inet:ipv6-address; 1249 description 1250 "The last host address which has sent the 1251 report to join the multicast group."; 1252 } 1254 list source { 1255 key "address"; 1256 description "Source IP address for multicast stream"; 1258 leaf address { 1259 type inet:ipv6-address; 1260 description "Source IP address for multicast stream"; 1261 } 1263 uses instance-state-source-attributes-igmp-mld-snooping; 1265 leaf last-reporter { 1266 type inet:ipv6-address; 1267 description 1268 "The last host address which has sent the report to join 1269 the multicast source and group."; 1270 } 1272 list host { 1273 if-feature explicit-tracking; 1274 key "host-address"; 1275 description 1276 "List of multicast membership hosts 1277 of the specific multicast source-group."; 1279 leaf host-address { 1280 type inet:ipv6-address; 1281 description 1282 "Multicast membership host address."; 1283 } 1284 leaf host-filter-mode { 1285 type enumeration { 1286 enum "include" { 1287 description 1288 "In include mode"; 1289 } 1290 enum "exclude" { 1291 description 1292 "In exclude mode."; 1293 } 1294 } 1295 description 1296 "Filter mode for a multicast membership 1297 host may be either include or exclude."; 1298 } 1299 }// list host 1301 } // list source 1302 } // list group 1304 // statistics 1305 uses general-state-attributes; 1307 } // instance-state-attributes-mld-snooping 1309 grouping instance-state-source-attributes-igmp-mld-snooping { 1310 description 1311 "State attributes for both IGMP and MLD Snooping of each VLAN 1312 or VPLS instance or EVPN instance."; 1313 leaf-list bridge-outgoing-interface { 1314 when "ims:type = 'bridge'"; 1315 type if:interface-ref; 1316 description "Outgoing interface in bridge fowarding"; 1318 } 1320 leaf-list vpls-outgoing-ac { 1321 when "ims:type = 'vpls'"; 1322 type l2vpn-instance-ac-ref; 1323 description "Outgoing ac in vpls fowarding"; 1325 } 1327 leaf-list vpls-outgoing-pw { 1328 when "ims:type = 'vpls'"; 1329 type l2vpn-instance-pw-ref; 1330 description "Outgoing pw in vpls fowarding"; 1332 } 1334 leaf up-time { 1335 type uint32; 1336 units seconds; 1337 description "The time after the device created L2 multicast 1338 record"; 1339 } 1341 leaf expire { 1342 type uint32; 1343 units seconds; 1344 description 1345 "The time left before multicast group timeout."; 1346 } 1348 leaf host-count { 1349 if-feature explicit-tracking; 1350 type uint32; 1351 description 1352 "The number of host addresses."; 1353 } 1355 } // instance-state-source-attributes-igmp-mld-snooping 1357 grouping general-statistics-error { 1358 description 1359 "A grouping defining statistics attributes for errors."; 1361 leaf checksum { 1362 type yang:counter64; 1363 description 1364 "The number of checksum errors."; 1365 } 1366 leaf too-short { 1367 type yang:counter64; 1368 description 1369 "The number of messages that are too short."; 1370 } 1371 } // general-statistics-error 1373 grouping general-statistics-sent-received { 1374 description 1375 "A grouping defining statistics attributes."; 1377 leaf query { 1378 type yang:counter64; 1379 description 1380 "The number of query messages."; 1381 } 1382 leaf membership-report-v1 { 1383 type yang:counter64; 1384 description 1385 "The number of membership report v1 messages."; 1386 } 1387 leaf membership-report-v2 { 1388 type yang:counter64; 1389 description 1390 "The number of membership report v2 messages."; 1391 } 1392 leaf membership-report-v3 { 1393 type yang:counter64; 1394 description 1395 "The number of membership report v3 messages."; 1396 } 1397 leaf leave { 1398 type yang:counter64; 1399 description 1400 "The number of leave messages."; 1401 } 1402 leaf pim { 1403 type yang:counter64; 1404 description 1405 "The number of pim hello messages."; 1407 } 1408 } // general-statistics-sent-received 1410 grouping endpoint-grp { 1411 description "A grouping that defines the structure of " + 1412 "an endpoint"; 1413 choice ac-or-pw-or-redundancy-grp { 1414 description "A choice of attachment circuit or " + 1415 "pseudowire or redundancy group"; 1416 case ac { 1417 description "Attachment circuit(s) as an endpoint"; 1418 list ac { 1419 key "name"; 1420 leaf name { 1421 type string; 1422 description "Name of attachment circuit. " + 1423 "This field is intended to " + 1424 "reference standardized " + 1425 "layer-2 definitions."; 1426 } 1427 leaf igmp-snooping-instance { 1428 type igmp-snooping-instance-ref; 1429 description "Configure igmp-snooping instance under 1430 the bridge view"; 1431 } 1432 leaf mld-snooping-instance { 1433 type mld-snooping-instance-ref; 1434 description "Configure mld-snooping instance under the 1435 bridge view"; 1436 } 1438 description "An L2VPN instance's " + 1439 "attachment circuit list"; 1440 } 1441 } 1442 case pw { 1443 description "Pseudowire(s) as an endpoint"; 1444 list pw { 1445 key "name"; 1446 leaf name { 1447 type string; 1448 description "Name of Pseudowire."; 1449 } 1450 leaf igmp-snooping-instance { 1451 type igmp-snooping-instance-ref; 1452 description "Configure igmp-snooping instance under 1453 the bridge view"; 1454 } 1455 leaf mld-snooping-instance { 1456 type mld-snooping-instance-ref; 1457 description "Configure mld-snooping instance under the 1458 bridge view"; 1459 } 1461 description "An L2VPN instance's " + 1462 "pseudowire(s) list"; 1463 } 1464 } 1465 case redundancy-grp { 1466 description "Redundancy group as an endpoint"; 1467 choice primary { 1468 mandatory true; 1469 description "primary options"; 1470 case primary-ac { 1471 description "primary-ac"; 1472 container primary-ac { 1473 description "Primary AC"; 1474 leaf name { 1475 type string; 1476 description "Name of attachment circuit. "; 1477 } 1478 leaf igmp-snooping-instance { 1479 type igmp-snooping-instance-ref; 1480 description "Configure igmp-snooping instance 1481 under the bridge view"; 1482 } 1483 leaf mld-snooping-instance { 1484 type mld-snooping-instance-ref; 1485 description "Configure mld-snooping instance 1486 under the bridge view"; 1487 } 1488 }// primary-ac 1489 }// primary-ac 1491 case primary-pw { 1493 list primary-pw { 1494 key "name"; 1495 leaf name { 1496 type string; 1497 description "Name of Pseudowire."; 1498 } 1499 leaf igmp-snooping-instance { 1500 type igmp-snooping-instance-ref; 1501 description "Configure igmp-snooping instance 1502 under the bridge view"; 1503 } 1504 leaf mld-snooping-instance { 1505 type mld-snooping-instance-ref; 1506 description "Configure mld-snooping instance 1507 under the bridge view"; 1508 } 1510 description "primary-pw"; 1512 } //primary-pw 1513 }//primary-pw 1514 } 1515 choice backup { 1516 description "backup options"; 1517 case backup-ac { 1518 description "backup-ac"; 1519 container backup-ac { 1520 description "Backup AC"; 1521 leaf name { 1522 type string; 1523 description "Name of attachment circuit. "; 1524 } 1525 leaf igmp-snooping-instance { 1526 type igmp-snooping-instance-ref; 1527 description "Configure igmp-snooping instance 1528 under the bridge view"; 1529 } 1530 leaf mld-snooping-instance { 1531 type mld-snooping-instance-ref; 1532 description "Configure mld-snooping instance 1533 under the bridge view"; 1534 } 1535 }// backup-ac 1536 }// backup-ac 1537 case backup-pw { 1538 description "backup-pw"; 1539 list backup-pw { 1540 key "name"; 1541 leaf name { 1542 type string; 1543 description "Name of Pseudowire."; 1544 } 1545 leaf igmp-snooping-instance { 1546 type igmp-snooping-instance-ref; 1547 description "Configure igmp-snooping instance 1548 under the bridge view"; 1549 } 1550 leaf mld-snooping-instance { 1551 type mld-snooping-instance-ref; 1552 description "Configure mld-snooping instance 1553 under the bridge view"; 1554 } 1556 description "backup-pw"; 1557 } //backup-pw 1558 } 1559 } 1560 } 1561 } 1562 } 1564 /* 1565 * igmp-snooping-instance 1566 */ 1567 container igmp-snooping-instances { 1568 description 1569 "igmp-snooping-instance list"; 1571 list igmp-snooping-instance { 1572 key "name"; 1573 description 1574 "IGMP Snooping instance to configure the igmp- 1575 snooping."; 1577 leaf name { 1578 type string; 1579 description 1580 "Name of the igmp-snooping-instance to configure the igmp 1581 snooping."; 1582 } 1584 leaf id { 1585 type uint32; 1586 description 1587 "It is vlan_id or vpls_id. 1588 When igmp-snooping-instance is applied under bridge view, its 1589 value is 0."; 1590 } 1592 leaf type { 1593 type enumeration { 1594 enum "bridge" { 1595 description "bridge"; 1596 } 1597 enum "vpls" { 1598 description "vpls"; 1599 } 1600 } 1601 description "The type indicates bridge or vpls."; 1602 } 1604 uses instance-config-attributes-igmp-snooping { 1605 if-feature per-instance-config; 1606 } 1608 uses instance-state-attributes-igmp-snooping; 1610 } //igmp-snooping-instance 1611 } //igmp-snooping-instances 1613 /* 1614 * mld-snooping-instance 1615 */ 1616 container mld-snooping-instances { 1617 description 1618 "mld-snooping-instance list"; 1620 list mld-snooping-instance { 1621 key "name"; 1622 description 1623 "MLD Snooping instance to configure the mld-snooping."; 1625 leaf name { 1626 type string; 1627 description 1628 "Name of the mld-snooping-instance to configure the mld 1629 snooping."; 1630 } 1632 leaf id { 1633 type uint32; 1634 description 1635 "It is vlan_id or vpls_id. 1636 When mld-snooping-instance is applied under bridge view, its 1637 value is 0."; 1638 } 1640 leaf type { 1641 type enumeration { 1642 enum "bridge" { 1643 description "bridge"; 1644 } 1645 enum "vpls" { 1646 description "vpls"; 1647 } 1648 } 1649 description "The type indicates bridge or vpls."; 1650 } 1652 uses instance-config-attributes-mld-snooping { 1653 if-feature per-instance-config; 1654 } 1656 uses instance-state-attributes-mld-snooping; 1658 } //mld-snooping-instance 1659 } //mld-snooping-instances 1661 container bridges { 1662 description 1663 "Apply igmp-mld-snooping instance in the bridge scenario"; 1665 list bridge { 1666 key name; 1668 description 1669 "bridge list"; 1671 leaf name { 1672 type name-type; 1673 description 1674 "bridge name"; 1676 } 1677 leaf igmp-snooping-instance { 1678 type igmp-snooping-instance-ref; 1679 description "Configure igmp-snooping instance under the 1680 bridge view"; 1681 } 1682 leaf mld-snooping-instance { 1683 type mld-snooping-instance-ref; 1684 description "Configure mld-snooping instance under the 1685 bridge view"; 1686 } 1687 list component { 1688 key "name"; 1689 description 1690 " "; 1692 leaf name { 1693 type string; 1694 description 1695 "The name of the Component."; 1696 } 1697 container bridge-vlan { 1698 description "bridge vlan"; 1699 list vlan { 1700 key "vid"; 1701 description 1702 ""; 1704 leaf vid { 1705 type vlan-index-type; 1706 description 1707 "The VLAN identifier to which this entry 1708 applies."; 1710 } 1711 leaf igmp-snooping-instance { 1712 type igmp-snooping-instance-ref; 1713 description "Configure igmp-snooping instance 1714 under the vlan view"; 1715 } 1716 leaf mld-snooping-instance { 1717 type mld-snooping-instance-ref; 1718 description "Configure mld-snooping instance 1719 under the vlan view"; 1720 } 1721 container interfaces { 1722 description 1723 "Interface configuration parameters."; 1724 list interface { 1725 key "name"; 1727 description 1728 "The list of configured interfaces on the 1729 device."; 1731 leaf name { 1732 type string; 1733 description 1734 "The name of the interface."; 1735 } 1736 leaf igmp-snooping-instance { 1737 type igmp-snooping-instance-ref; 1738 description "Configure igmp-snooping 1739 instance under the interface view"; 1740 } 1741 leaf mld-snooping-instance { 1742 type mld-snooping-instance-ref; 1743 description "Configure mld-snooping 1744 instance under the interface view"; 1745 } 1746 } 1747 }//interfaces 1748 }//vlan 1749 }//bridge-vlan 1750 }//component 1751 }//bridge 1752 } //bridges 1754 container l2vpn-instances { 1755 description "Apply igmp-mld-snooping instance in the vpls 1756 scenario"; 1758 list l2vpn-instance { 1759 key "name"; 1760 description "An VPLS service instance"; 1762 leaf name { 1763 type string; 1764 description "Name of VPLS service instance"; 1765 } 1766 leaf igmp-snooping-instance { 1767 type igmp-snooping-instance-ref; 1768 description "Configure igmp-snooping instance under the 1769 l2vpn-instance view"; 1770 } 1771 leaf mld-snooping-instance { 1772 type mld-snooping-instance-ref; 1773 description "Configure mld-snooping instance under the 1774 l2vpn-instance view"; 1775 } 1777 list endpoint { 1778 key "name"; 1779 description "An endpoint"; 1780 leaf name { 1781 type string; 1782 description "endpoint name"; 1783 } 1784 leaf igmp-snooping-instance { 1785 type igmp-snooping-instance-ref; 1786 description "Configure igmp-snooping instance under the 1787 interface view"; 1788 } 1789 leaf mld-snooping-instance { 1790 type mld-snooping-instance-ref; 1791 description "Configure mld-snooping instance under the 1792 interface view"; 1793 } 1795 uses endpoint-grp; 1797 } //endpoint 1798 } 1799 } 1801 /* 1802 * RPCs 1803 */ 1805 rpc clear-igmp-snooping-groups { 1806 if-feature rpc-clear-groups; 1807 description 1808 "Clears the specified IGMP Snooping cache tables."; 1810 input { 1811 leaf id { 1812 type uint32; 1813 description 1814 "VLAN ID, VPLS ID, or EVPN ID"; 1815 } 1817 leaf group { 1818 type inet:ipv4-address; 1819 description 1820 "Multicast group IPv4 address. 1821 If it is not specified, all IGMP snooping group tables 1822 are 1823 cleared."; 1824 } 1826 leaf source { 1827 type inet:ipv4-address; 1828 description 1829 "Multicast source IPv4 address. 1830 If it is not specified, all IGMP snooping source-group 1831 tables are 1832 cleared."; 1833 } 1834 } 1835 } // rpc clear-igmp-snooping-groups 1837 rpc clear-mld-snooping-groups { 1838 if-feature rpc-clear-groups; 1839 description 1840 "Clears the specified MLD Snooping cache tables."; 1842 input { 1843 leaf id { 1844 type uint32; 1845 description 1846 "VLAN ID, VPLS ID, or EVPN ID"; 1847 } 1849 leaf group { 1850 type inet:ipv6-address; 1851 description 1852 "Multicast group IPv6 address. 1853 If it is not specified, all MLD snooping group tables are 1854 cleared."; 1855 } 1857 leaf source { 1858 type inet:ipv6-address; 1859 description 1860 "Multicast source IPv6 address. 1861 If it is not specified, all MLD snooping source-group 1862 tables are 1863 cleared."; 1864 } 1865 } 1866 } // rpc clear-mld-snooping-groups 1867 } 1868 1870 4. Security Considerations 1872 The data model defined does not create any security implications. 1874 5. IANA Considerations 1876 This draft does not request any IANA action. 1878 6. Normative References 1880 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1881 the Network Configuration Protocol (NETCONF)", RFC 6020, 1882 October 2010. 1884 [RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6021, 1885 October 2010. 1887 [RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations 1888 for Internet Group Management Protocol (IGMP) and Multicast 1889 Listener Discovery (MLD) Snooping Switches", RFC 4541, May 1890 2006. 1892 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1893 2", RFC 2236, November 1997. 1895 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1896 Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. 1898 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1899 Thyagarajan, "Internet Group Management Protocol, Version 1900 3", RFC 3376, October 2002. 1902 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1903 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1905 [RFC4604] Holbrook, H., Cain, B., and B. Haberman, "Using 1906 InternetGroup Management Protocol Version 3 (IGMPv3) and 1907 Multicast Listener Discovery Protocol Version 2 (MLDv2) for 1908 Source-Specific Multicast", RFC 4604, August 2006. 1910 [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for 1911 IP", RFC 4607, August 2006. 1913 [draft-ietf-pim-igmp-mld-yang-01] X. Liu, F. Guo, M. Sivakumar, P. 1914 McAllister, A. Peter, "A YANG data model for Internet Group 1915 Management Protocol (IGMP) and Multicast Listener Discovery 1916 (MLD)", draft-ietf-pim-igmp-mld-yang-01, October 28, 2016. 1918 [draft-ietf-pim-igmp-mld-yang-03] X. Liu, F. Guo, M. Sivakumar, P. 1919 McAllister, A. Peter, "A YANG data model for Internet Group 1920 Management Protocol (IGMP) and Multicast Listener Discovery 1921 (MLD)", draft-ietf-pim-igmp-mld-yang-03, March 13, 2017. 1923 [draft-dsdt-nmda-guidelines-01] M. Bjorklund, J. Schoenwaelder, P. 1924 Shafer, K. Watsen, R. Wilton, "Guidelines for YANG Module 1925 Authors (NMDA)", draft-dsdt-nmda-guidelines-01, May 2017 1927 [draft-bjorklund-netmod-rfc7223bis-00] M. Bjorklund, "A YANG Data 1928 Model for Interface Management", draft-bjorklund-netmod- 1929 rfc7223bis-00, August 21, 2017 1931 [draft-bjorklund-netmod-rfc7277bis-00] M. Bjorklund, "A YANG Data 1932 Model for IP Management", draft-bjorklund-netmod- 1933 rfc7277bis-00, August 21, 2017 1935 [draft-ietf-netmod-revised-datastores-03] M. Bjorklund, J. 1936 Schoenwaelder, P. Shafer, K. Watsen, R. Wilton, "Network 1937 Management Datastore Architecture", draft-ietf-netmod- 1938 revised-datastores-03, July 3, 2017 1940 [draft-ietf-bess-evpn-yang-02] P.Brissette, A. Sajassi, H. Shah, Z. 1941 Li, H. Chen, K. Tiruveedhula, I. Hussain, J. Rabadan, "Yang 1942 Data Model for EVPN", draft-ietf-bess-evpn-yang-02, March 1943 13, 2017 1945 [draft-ietf-bess-l2vpn-yang-06] H. Shah, P. Brissette, I. Chen, I. 1946 Hussain, B. Wen, K. Tiruveedhula, "YANG Data Model for 1947 MPLS-based L2VPN", draft-ietf-bess-l2vpn-yang-06.txt, June 1948 30, 2017 1950 Authors' Addresses 1952 Hongji Zhao 1953 Ericsson (China) Communications Company Ltd. 1954 Ericsson Tower, No. 5 Lize East Street, 1955 Chaoyang District Beijing 100102, P.R. China 1957 Email: hongji.zhao@ericsson.com 1959 Xufeng Liu 1960 Jabil 1961 8281 Greensboro Drive, Suite 200 1962 McLean VA 22102 1963 USA 1965 EMail: Xufeng_Liu@jabil.com 1967 Yisong Liu 1968 Huawei Technologies 1969 Huawei Bld., No.156 Beiqing Rd. 1970 Beijing 100095 1971 China 1973 Email: liuyisong@huawei.com 1975 Anish Peter 1976 Individual 1978 EMail: anish.ietf@gmail.com 1980 Mahesh Sivakumar 1981 Cisco Systems 1982 510 McCarthy Boulevard 1983 Milpitas, California 1984 USA 1985 EMail: masivaku@cisco.com