idnits 2.17.1 draft-ietf-pim-igmp-mld-snooping-yang-01.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 32 instances of too long lines in the document, the longest one being 15 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 437 has weird spacing: '...address ine...' == Line 444 has weird spacing: '...address ine...' == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (February 24, 2018) is 2252 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 96, but not defined == Missing Reference: 'RFC6241' is mentioned on line 146, but not defined == Missing Reference: 'RFC8040' is mentioned on line 146, but not defined == Missing Reference: 'RFC7950' is mentioned on line 147, but not defined == Unused Reference: 'RFC6021' is defined on line 1978, but no explicit reference was found in the text == Unused Reference: 'RFC2236' is defined on line 1986, but no explicit reference was found in the text == Unused Reference: 'RFC2710' is defined on line 1989, but no explicit reference was found in the text == Unused Reference: 'RFC3376' is defined on line 1992, but no explicit reference was found in the text == Unused Reference: 'RFC3810' is defined on line 1996, but no explicit reference was found in the text == Unused Reference: 'RFC4604' is defined on line 1999, but no explicit reference was found in the text == Unused Reference: 'RFC4607' is defined on line 2004, 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 (~~), 15 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 PIM Working Group H. Zhao 2 Internet Draft Ericsson 3 Intended status: Standards Track X. Liu 4 Expires: August 23, 2018 Jabil 5 Y. Liu 6 Huawei 7 M. Sivakumar 8 Cisco 9 A. Peter 10 Individual 12 February 24, 2018 14 A Yang Data Model for IGMP and MLD Snooping 15 draft-ietf-pim-igmp-mld-snooping-yang-01.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 August 23, 2018. 46 Copyright Notice 48 Copyright (c) 2018 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..........................9 70 2.4. Augment /if:interfaces/if:interface......................10 71 2.5. IGMP and MLD Snooping RPC................................12 72 3. IGMP and MLD Snooping YANG Module.............................13 73 4. Security Considerations.......................................42 74 5. IANA Considerations...........................................42 75 6. Normative References..........................................43 77 1. Introduction 79 This document defines a YANG [RFC6020] data model for the management 80 of Internet Group Management Protocol (IGMP) and Multicast Listener 81 Discovery (MLD) Snooping devices. 83 This data model follows the Guidelines for YANG Module Authors 84 NMDA)[draft-dsdt-nmda-guidelines-01]. The "Network Management 85 Datastore Architecture" (NMDA) adds the ability to inspect the 86 current operational values for configuration, allowing clients to use 87 identical paths for retrieving the configured values and the 88 operational values. 90 1.1. Terminology 92 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 93 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 94 "OPTIONAL" in this document are to be interpreted as described in BCP 95 14 [RFC2119]. 97 The terminology for describing YANG data models is found in[RFC6020]. 99 1.2. Tree Diagrams 101 A simplified graphical representation of the data model is used in 102 this document. The meaning of the symbols in these diagrams is as 103 follows: 105 o Brackets "[" and "]" enclose list keys. 107 o Abbreviations before data node names: "rw" means configuration 108 (read-write), and "ro" means state data (read-only). 110 o Symbols after data node names: "?" means an optional node, "!" 111 means a presence container, and "*" denotes a list and leaf-list. 113 o Parentheses enclose choice and case nodes, and case nodes are also 114 marked with a colon (":"). 116 o Ellipsis ("...") stands for contents of subtrees that are not 117 shown. 119 2. Design of Data Model 121 The model covers Considerations for Internet Group Management 122 Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping 123 Switches [RFC4541]. 125 The goal of this document is to define a data model that provides a 126 common user interface to IGMP and MLD Snooping. There is very 127 information that is designated as "mandatory", providing freedom for 128 vendors to adapt this data model to their respective product 129 implementations. 131 2.1. Overview 133 The IGMP and MLD Snooping YANG module defined in this document has 134 all the common building blocks for the IGMP and MLD Snooping 135 protocol. 137 The YANG module includes IGMP and MLD Snooping instances 138 definition, instance references in the scenario of BRIDGE, VPLS. The 139 module also includes the RPC methods for clearing the specified IGMP 140 and MLD Snooping. 142 This YANG model follows the Guidelines for YANG Module Authors 143 (NMDA) [draft-dsdt-nmda-guidelines-01]. This NMDA ("Network 144 Management Datastore Architecture") architecture provides an 145 architectural framework for datastores as they are used by network 146 management protocols such as NETCONF [RFC6241], RESTCONF [RFC8040] 147 and the YANG [RFC7950] data modeling language.. 149 2.2. IGMP and MLD Snooping Instances 151 The YANG module defines IGMP and MLD Snooping instance. The instance 152 will be referenced in all kinds of scenarios to configure IGMP and MLD 153 Snooping. The attribute who could be read and written shows 154 configuration data. The read-only attribute shows state data. The key 155 attribute is name. 157 module: ietf-igmp-mld-snooping 159 +--rw igmp-snooping-instances 161 | +--rw igmp-snooping-instance* [name] 163 | +--rw name string 165 | +--rw type? enumeration 167 | +--rw enable? boolean {admin-enable}? 169 | +--rw forwarding-mode? enumeration 171 | +--rw explicit-tracking? boolean {explicit-tracking}? 173 | +--rw exclude-lite? boolean {exclude-lite}? 175 | +--rw send-query? boolean 177 | +--rw immediate-leave? empty {immediate-leave}? 178 | +--rw last-member-query-interval? uint16 180 | +--rw query-interval? uint16 182 | +--rw query-max-response-time? uint16 184 | +--rw require-router-alert? boolean {require-router- 185 alert}? 187 | +--rw robustness-variable? uint8 189 | +--rw version? uint8 191 | +--rw static-bridge-mrouter-interface* if:interface-ref {static- 192 mrouter-interface}? 194 | +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref {static- 195 mrouter-interface}? 197 | +--rw static-l2vpn-mrouter-interface-pw* l2vpn-instance-pw-ref 198 {static-mrouter-interface}? 200 | +--rw querier-source? inet:ipv4-address 202 | +--rw static-l2-multicast-group* [group source-addr] {static-l2- 203 multicast-group}? 205 | | +--rw group inet:ipv4-address 207 | | +--rw source-addr source-ipv4-addr-type 209 | | +--rw bridge-outgoing-interface* if:interface-ref 211 | | +--rw l2vpn-outgoing-ac* l2vpn-instance-ac-ref 213 | | +--rw l2vpn-outgoing-pw* l2vpn-instance-pw-ref 215 | +--ro entries-count? uint32 217 | +--ro bridge-mrouter-interface* if:interface-ref 219 | +--ro l2vpn-mrouter-interface-ac* if:interface-ref 221 | +--ro l2vpn-mrouter-interface-pw* l2vpn-instance-pw-ref 223 | +--ro group* [address] 225 | +--ro address inet:ipv4-address 227 | +--ro mac-address? yang:phys-address 228 | +--ro expire? uint32 230 | +--ro up-time? uint32 232 | +--ro last-reporter? inet:ipv4-address 234 | +--ro source* [address] 236 | +--ro address inet:ipv4-address 238 | +--ro bridge-outgoing-interface* if:interface-ref 240 | +--ro l2vpn-outgoing-ac* l2vpn-instance-ac-ref 242 | +--ro l2vpn-outgoing-pw* l2vpn-instance-pw-ref 244 | +--ro up-time? uint32 246 | +--ro expire? uint32 248 | +--ro host-count? uint32 {explicit-tracking}? 250 | +--ro last-reporter? inet:ipv4-address 252 | +--ro host* [host-address] {explicit-tracking}? 254 | +--ro host-address inet:ipv4-address 256 | +--ro host-filter-mode? enumeration 258 +--rw mld-snooping-instances 260 | +--rw mld-snooping-instance* [name] 262 | +--rw name string 264 | +--rw type? enumeration 266 | +--rw enable? boolean {admin-enable}? 268 | +--rw forwarding-mode? enumeration 270 | +--rw explicit-tracking? boolean {explicit-tracking}? 272 | +--rw exclude-lite? boolean {exclude-lite}? 274 | +--rw send-query? boolean 276 | +--rw immediate-leave? empty {immediate-leave}? 277 | +--rw last-member-query-interval? uint16 279 | +--rw query-interval? uint16 281 | +--rw query-max-response-time? uint16 283 | +--rw require-router-alert? boolean {require-router- 284 alert}? 286 | +--rw robustness-variable? uint8 288 | +--rw version? uint8 290 | +--rw static-bridge-mrouter-interface* if:interface-ref {static- 291 mrouter-interface}? 293 | +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref {static- 294 mrouter-interface}? 296 | +--rw static-l2vpn-mrouter-interface-pw* l2vpn-instance-pw-ref 297 {static-mrouter-interface}? 299 | +--rw querier-source? inet:ipv6-address 301 | +--rw static-l2-multicast-group* [group source-addr] {static-l2- 302 multicast-group}? 304 | | +--rw group inet:ipv6-address 306 | | +--rw source-addr source-ipv6-addr-type 308 | | +--rw bridge-outgoing-interface* if:interface-ref 310 | | +--rw l2vpn-outgoing-ac* l2vpn-instance-ac-ref 312 | | +--rw l2vpn-outgoing-pw* l2vpn-instance-pw-ref 314 | +--ro entries-count? uint32 316 | +--ro bridge-mrouter-interface* if:interface-ref 318 | +--ro l2vpn-mrouter-interface-ac* if:interface-ref 320 | +--ro l2vpn-mrouter-interface-pw* l2vpn-instance-pw-ref 322 | +--ro group* [address] 324 | +--ro address inet:ipv6-address 326 | +--ro mac-address? yang:phys-address 327 | +--ro expire? uint32 329 | +--ro up-time? uint32 331 | +--ro last-reporter? inet:ipv6-address 333 | +--ro source* [address] 335 | +--ro address inet:ipv6-address 337 | +--ro bridge-outgoing-interface* if:interface-ref 339 | +--ro l2vpn-outgoing-ac* l2vpn-instance-ac-ref 341 | +--ro l2vpn-outgoing-pw* l2vpn-instance-pw-ref 343 | +--ro up-time? uint32 345 | +--ro expire? uint32 347 | +--ro host-count? uint32 {explicit-tracking}? 349 | +--ro last-reporter? inet:ipv6-address 351 | +--ro host* [host-address] {explicit-tracking}? 353 | +--ro host-address inet:ipv6-address 355 | +--ro host-filter-mode? Enumeration 357 2.3. IGMP and MLD Snooping References 359 The IGMP and MLD Snooping instance could be referenced in the scenario 360 of bridge, L2VPN to configure the IGMP and MLD Snooping. The name of the 361 instance is the key attribute. 363 +--rw bridges 365 | +--rw bridge* [name] 367 | +--rw name name-type 369 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 371 | +--rw mld-snooping-instance? mld-snooping-instance-ref 373 | +--rw component* [name] 375 | +--rw name string 377 | +--rw bridge-vlan 379 | +--rw vlan* [vid] 381 | +--rw vid vlan-index-type 383 | +--rw igmp-snooping-instance? igmp-snooping-instance-ref 385 | +--rw mld-snooping-instance? mld-snooping-instance-ref 387 +--rw l2vpn-instances 389 +--rw l2vpn-instance* [name] 391 +--rw name string 393 +--rw igmp-snooping-instance? igmp-snooping-instance-ref 395 +--rw mld-snooping-instance? mld-snooping-instance-ref 397 2.4. Augment /if:interfaces/if:interface 399 Augment /if:interfaces/if:interface then add the IGMP MLD SNOOPING 400 related attributes under it. It includes enable, version, static- 401 mrouter-interface, etc. 403 augment /if:interfaces/if:interface: 405 +--rw igmp-mld-snooping 407 +--rw enable? boolean {admin-enable}? 409 +--rw version? uint8 411 +--rw type? enumeration 413 +--rw static-mrouter-interface 415 | +--rw (static-mrouter-interface)? 417 | +--:(bridge) 419 | | +--rw bridge-name? string 421 | | +--rw vlan-id* uint32 423 | +--:(l2vpn) 425 | +--rw l2vpn-instance-name? string 427 +--rw static-l2-multicast-group 429 | +--rw (static-l2-multicast-group)? 431 | +--:(bridge) 433 | | +--rw bridgename? string 435 | | +--rw bridge-group-v4* [address] 437 | | | +--rw address inet:ipv4-address 439 | | | +--rw source* inet:ipv4-address 441 | | | +--rw vlan-id* uint32 443 | | +--rw bridge-group-v6* [address] 444 | | +--rw address inet:ipv6-address 446 | | +--rw source* inet:ipv6-address 448 | | +--rw vlan-id* uint32 450 | +--:(l2vpn) 452 | +--rw l2vpn-group-v4* [address] 454 | | +--rw address inet:ipv4-address 456 | | +--rw source* inet:ipv4-address 458 | | +--rw l2vpn-instance-name? string 460 | +--rw l2vpn-group-v6* [address] 462 | +--rw address inet:ipv6-address 464 | +--rw source* inet:ipv6-address 466 | +--rw l2vpn-instance-name? string 468 +--ro statistics 470 +--ro received 472 | +--ro query? yang:counter64 474 | +--ro membership-report-v1? yang:counter64 476 | +--ro membership-report-v2? yang:counter64 478 | +--ro membership-report-v3? yang:counter64 480 | +--ro leave? yang:counter64 482 | +--ro non-member-leave? yang:counter64 484 | +--ro pim? yang:counter64 486 +--ro sent 488 +--ro query? yang:counter64 490 +--ro membership-report-v1? yang:counter64 492 +--ro membership-report-v2? yang:counter64 493 +--ro membership-report-v3? yang:counter64 495 +--ro leave? yang:counter64 497 +--ro non-member-leave? yang:counter64 499 +--ro pim? yang:counter64 501 2.5. IGMP and MLD Snooping RPC 503 IGMP and MLD Snooping RPC clears the specified IGMP and MLD Snooping 504 group tables. 506 rpcs: 507 +---x clear-igmp-snooping-groups {rpc-clear-groups}? 508 | +---w input 509 | +---w name? string 510 | +---w group? inet:ipv4-address 511 | +---w source? inet:ipv4-address 512 +---x clear-mld-snooping-groups {rpc-clear-groups}? 513 +---w input 514 +---w name? string 515 +---w group? inet:ipv6-address 516 +---w source? inet:ipv6-address 518 3. IGMP and MLD Snooping YANG Module 520 file "ietf-igmp-mld-snooping@2018-02-26.yang" 521 module ietf-igmp-mld-snooping { 522 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; 523 // replace with IANA namespace when assigned 524 prefix ims; 526 import ietf-inet-types { 527 prefix "inet"; 528 } 530 import ietf-yang-types { 531 prefix "yang"; 532 } 534 import ietf-interfaces { 535 prefix "if"; 536 } 538 import ietf-l2vpn { 539 prefix "l2vpn"; 540 } 542 import ietf-network-instance { 543 prefix "ni"; 544 } 546 organization 547 "IETF PIM Working Group"; 549 contact 550 "WG Web: 551 WG List: 553 WG Chair: Stig Venaas 554 556 WG Chair: Mike McBride 557 559 Editors: Hongji Zhao 560 562 Xufeng Liu 563 565 Yisong Liu 566 567 Anish Peter 568 570 Mahesh Sivakumar 571 573 "; 575 description 576 "The module defines a collection of YANG definitions common for 577 IGMP and MLD Snooping."; 579 revision 2018-02-26 { 580 description 581 "augment /if:interfaces/if:interface"; 582 reference 583 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 584 } 586 revision 2017-10-24 { 587 description 588 "Change model definition to fit NMDA standard."; 589 reference 590 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 591 } 593 revision 2017-08-14 { 594 description 595 "using profile to cooperate with ieee-dot1Q-bridge module"; 596 reference 597 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 598 } 600 revision 2017-06-28 { 601 description 602 "augment /rt:routing/rt:control-plane-protocols 603 augment /rt:routing-state/rt:control-plane-protocols"; 604 reference 605 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 606 } 608 revision 2017-02-05 { 609 description 610 "Initial revision."; 611 reference 612 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 613 } 615 /* 616 * Features 617 */ 619 feature admin-enable { 620 description 621 "Support configuration to enable or disable IGMP and MLD 622 Snooping."; 623 } 625 feature immediate-leave { 626 description 627 "Support configuration of immediate-leave."; 628 } 630 feature join-group { 631 description 632 "Support configuration of join-group."; 633 } 635 feature require-router-alert { 636 description 637 "Support configuration of require-router-alert."; 638 } 640 feature static-l2-multicast-group { 641 description 642 "Support configuration of L2 multicast static-group."; 643 } 645 feature static-mrouter-interface { 646 description 647 "Support configuration of mrouter interface."; 648 } 650 feature per-instance-config { 651 description 652 "Support configuration of each VLAN or l2vpn instance or EVPN 653 instance."; 654 } 656 feature rpc-clear-groups { 657 description 658 "Support to clear statistics by RPC for IGMP and MLD 659 Snooping."; 660 } 662 feature explicit-tracking { 663 description 664 "Support configuration of per instance explicit-tracking 665 hosts."; 666 } 668 feature exclude-lite { 669 description 670 "Support configuration of per instance exclude-lite."; 671 } 673 /* 674 * Typedefs 675 */ 676 typedef name-type { 677 type string { 678 length "0..32"; 679 } 680 description 681 "A text string of up to 32 characters, of locally determined 682 significance."; 683 } 684 typedef vlan-index-type { 685 type uint32 { 686 range "1..4094 | 4096..4294967295"; 687 } 688 description 689 "A value used to index per-VLAN tables. Values of 0 and 4095 690 are not permitted. The range of valid VLAN indices. If the 691 value is greater than 4095, then it represents a VLAN with 692 scope local to the particular agent, i.e., one without a 693 global VLAN-ID assigned to it. Such VLANs are outside the 694 scope of IEEE 802.1Q, but it is convenient to be able to 695 manage them in the same way using this YANG module."; 696 reference 697 "IEEE Std 802.1Q-2014: Virtual Bridged Local Area Networks."; 698 } 700 typedef igmp-snooping-instance-ref { 701 type leafref { 702 path "/igmp-snooping-instances/igmp-snooping-instance/name"; 703 } 704 description 705 "This type is used by data models that need to reference igmp 706 snooping instance."; 707 } 709 typedef mld-snooping-instance-ref { 710 type leafref { 711 path "/mld-snooping-instances/mld-snooping-instance/name"; 712 } 713 description 714 "This type is used by data models that need to reference mld 715 snooping instance."; 716 } 718 typedef l2vpn-instance-ac-ref { 719 type leafref { 720 path "/ni:network-instances/ni:network-instance/l2vpn:endpoint/l2vpn:name"; 722 } 723 description "l2vpn-instance-ac-ref"; 724 } 726 typedef l2vpn-instance-pw-ref { 727 type leafref { 728 path "/ni:network-instances/ni:network-instance/l2vpn:endpoint/l2vpn:name"; 729 } 730 description "l2vpn-instance-pw-ref"; 731 } 733 typedef source-ipv4-addr-type { 734 type union { 735 type enumeration { 736 enum '*' { 737 description 738 "Any source address."; 739 } 740 } 741 type inet:ipv4-address; 742 } 743 description 744 "Multicast source IP address type."; 745 } // source-ipv4-addr-type 747 typedef source-ipv6-addr-type { 748 type union { 749 type enumeration { 750 enum '*' { 751 description 752 "Any source address."; 753 } 754 } 755 type inet:ipv6-address; 756 } 757 description 758 "Multicast source IP address type."; 759 } // source-ipv6-addr-type 760 /* 761 * Identities 762 */ 764 /* 765 * Groupings 766 */ 768 grouping general-state-attributes { 770 description "General State attributes"; 772 container received { 773 config false; 774 description "Statistics of received IGMP and MLD Snooping 775 related packets."; 776 uses general-statistics-sent-received; 777 } 778 container sent { 779 config false; 780 description "Statistics of sent IGMP and MLD Snooping related 781 packets."; 782 uses general-statistics-sent-received; 783 } 785 } // general-state-attributes 787 grouping instance-config-attributes-igmp-snooping { 788 description "IGMP snooping configuration for each VLAN or l2vpn 789 instance or EVPN instance."; 791 uses instance-config-attributes-igmp-mld-snooping; 793 leaf querier-source { 794 type inet:ipv4-address; 795 description "Use the IGMP snooping querier to support IGMP 796 snooping in a VLAN where PIM and IGMP are not configured. 797 The IP address is used as the source address in 798 messages."; 799 } 801 list static-l2-multicast-group { 802 if-feature static-l2-multicast-group; 803 key "group source-addr"; 804 description 805 "A static multicast route, (*,G) or (S,G)."; 807 leaf group { 808 type inet:ipv4-address; 809 description 810 "Multicast group IP address"; 811 } 813 leaf source-addr { 814 type source-ipv4-addr-type; 815 description 816 "Multicast source IP address."; 817 } 819 leaf-list bridge-outgoing-interface { 820 when "../../type = 'bridge'"; 821 type if:interface-ref; 822 description "Outgoing interface in bridge fowarding"; 824 } 826 leaf-list l2vpn-outgoing-ac { 827 when "../../type = 'l2vpn'"; 828 type l2vpn-instance-ac-ref; 829 description "Outgoing ac in l2vpn fowarding"; 831 } 833 leaf-list l2vpn-outgoing-pw { 834 when "../../type = 'l2vpn'"; 835 type l2vpn-instance-pw-ref; 836 description "Outgoing pw in l2vpn fowarding"; 838 } 840 } // static-l2-multicast-group 842 } // instance-config-attributes-igmp-snooping 844 grouping instance-config-attributes-igmp-mld-snooping { 845 description 846 "IGMP and MLD Snooping configuration of each VLAN."; 848 leaf enable { 849 if-feature admin-enable; 850 type boolean; 851 description 852 "Set the value to true to enable IGMP and MLD Snooping in 853 the VLAN instance."; 854 } 856 leaf forwarding-mode { 857 type enumeration { 858 enum "mac" { 859 description 860 ""; 861 } 862 enum "ip" { 863 description 864 ""; 865 } 866 } 867 description "The default forwarding mode for IGMP and MLD 868 Snooping is ip. 869 cisco command is as below 870 Router(config-vlan-config)# multicast snooping lookup 871 { ip | mac } "; 872 } 874 leaf explicit-tracking { 875 if-feature explicit-tracking; 876 type boolean; 877 description "Tracks IGMP & MLD Snooping v3 membership reports 878 from individual hosts for each port of each VLAN or VSI."; 879 } 881 leaf exclude-lite { 882 if-feature exclude-lite; 883 type boolean; 884 description 885 "lightweight IGMPv3 and MLDv2 protocols, which simplify the 886 standard versions of IGMPv3 and MLDv2."; 887 reference "RFC5790"; 888 } 890 leaf send-query { 891 type boolean; 892 default true; 893 description "Enable quick response for topo changes. 894 To support IGMP snooping in a VLAN where PIM and IGMP are 895 not configured. 896 It cooperates with param querier-source. "; 897 } 899 /** 900 leaf mrouter-aging-time { 901 type uint16 ; 902 default 180; 903 description "Aging time for mrouter interface"; 904 } 905 **/ 907 leaf immediate-leave { 908 if-feature immediate-leave; 909 type empty; 910 description 911 "When fast leave is enabled, the IGMP software assumes that 912 no more than one host is present on each VLAN port."; 913 } 915 leaf last-member-query-interval { 916 type uint16 { 917 range "1..65535"; 918 } 919 units seconds; 920 default 1; 921 description 922 "Last Member Query Interval, which may be tuned to modify 923 the 924 leave latency of the network."; 925 reference "RFC3376. Sec. 8.8."; 926 } 928 leaf query-interval { 930 type uint16; 931 units seconds; 932 default 125; 933 description 934 "The Query Interval is the interval between General 935 Queries 936 sent by the Querier."; 937 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 938 } 940 leaf query-max-response-time { 942 type uint16; 943 units seconds; 944 default 10; 945 description 946 "Query maximum response time specifies the maximum time 947 allowed before sending a responding report."; 948 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 950 } 952 leaf require-router-alert { 953 if-feature require-router-alert; 954 type boolean; 956 default false; 957 description 958 "When the value is true, router alert exists in the IP head 959 of IGMP or MLD packet."; 960 } 962 leaf robustness-variable { 963 type uint8 { 964 range "2..7"; 965 } 966 default 2; 967 description 968 "Querier's Robustness Variable allows tuning for the 969 expected 970 packet loss on a network."; 971 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 972 } 974 leaf version { 975 type uint8 { 976 range "1..3"; 977 } 978 description "IGMP and MLD Snooping version."; 979 } 981 leaf-list static-bridge-mrouter-interface { 983 when "../type = 'bridge'"; 984 if-feature static-mrouter-interface; 985 type if:interface-ref; 986 description "static mrouter interface in bridge fowarding"; 988 } 990 leaf-list static-l2vpn-mrouter-interface-ac { 992 when "../type = 'l2vpn'"; 993 if-feature static-mrouter-interface; 994 type if:interface-ref; 995 description "static mrouter interface whose type is interface 996 in l2vpn forwarding"; 998 } 1000 leaf-list static-l2vpn-mrouter-interface-pw { 1002 when "../type = 'l2vpn'"; 1003 if-feature static-mrouter-interface; 1004 type l2vpn-instance-pw-ref; 1005 description "static mrouter interface whose type is pw in l2vpn 1006 forwarding"; 1008 } 1010 } // instance-config-attributes-igmp-mld-snooping 1012 grouping instance-config-attributes-mld-snooping { 1013 description "MLD snooping configuration of each VLAN."; 1015 uses instance-config-attributes-igmp-mld-snooping; 1017 leaf querier-source { 1018 type inet:ipv6-address; 1019 description 1020 "Use the MLD snooping querier to support MLD snooping where PIM 1021 and MLD are not configured. 1022 The IP address is used as the source address in messages."; 1023 } 1025 list static-l2-multicast-group { 1026 if-feature static-l2-multicast-group; 1027 key "group source-addr"; 1028 description 1029 "A static multicast route, (*,G) or (S,G)."; 1031 leaf group { 1032 type inet:ipv6-address; 1033 description 1034 "Multicast group IP address"; 1035 } 1037 leaf source-addr { 1038 type source-ipv6-addr-type; 1039 description 1040 "Multicast source IP address."; 1041 } 1043 leaf-list bridge-outgoing-interface { 1044 when "../../type = 'bridge'"; 1045 type if:interface-ref; 1046 description "Outgoing interface in bridge fowarding"; 1048 } 1050 leaf-list l2vpn-outgoing-ac { 1051 when "../../type = 'l2vpn'"; 1052 type l2vpn-instance-ac-ref; 1053 description "Outgoing ac in l2vpn fowarding"; 1055 } 1057 leaf-list l2vpn-outgoing-pw { 1058 when "../../type = 'l2vpn'"; 1059 type l2vpn-instance-pw-ref; 1060 description "Outgoing pw in l2vpn fowarding"; 1062 } 1064 } // static-l2-multicast-group 1066 } // instance-config-attributes-mld-snooping 1068 grouping instance-state-group-attributes-igmp-mld-snooping { 1069 description 1070 "Attributes for both IGMP and MLD snooping groups."; 1072 leaf mac-address { 1073 type yang:phys-address; 1074 description "Destination mac address for L2 multicast 1075 forwarding."; 1076 } 1078 leaf expire { 1079 type uint32; 1080 units seconds; 1081 description 1082 "The time left before multicast group timeout."; 1083 } 1085 leaf up-time { 1086 type uint32; 1087 units seconds; 1088 description 1089 "The time after the device created L2 multicast record."; 1090 } 1092 } // instance-state-group-attributes-igmp-mld-snooping 1094 grouping instance-state-attributes-igmp-snooping { 1096 description 1097 "State attributes for IGMP snooping for each VLAN or l2vpn 1098 instance or EVPN instance."; 1100 uses instance-state-attributes-igmp-mld-snooping; 1101 list group { 1103 key "address"; 1105 config false; 1107 description "IGMP snooping information"; 1109 leaf address { 1110 type inet:ipv4-address; 1111 description 1112 "Multicast group IP address"; 1113 } 1115 uses instance-state-group-attributes-igmp-mld-snooping; 1117 leaf last-reporter { 1118 type inet:ipv4-address; 1119 description 1120 "The last host address which has sent the 1121 report to join the multicast group."; 1122 } 1124 list source { 1125 key "address"; 1126 description "Source IP address for multicast stream"; 1127 leaf address { 1128 type inet:ipv4-address; 1129 description "Source IP address for multicast stream"; 1130 } 1132 uses instance-state-source-attributes-igmp-mld-snooping; 1134 leaf last-reporter { 1135 type inet:ipv4-address; 1136 description 1137 "The last host address which has sent the 1138 report to join the multicast source and group."; 1139 } 1141 list host { 1142 if-feature explicit-tracking; 1143 key "host-address"; 1144 description 1145 "List of multicast membership hosts 1146 of the specific multicast source-group."; 1148 leaf host-address { 1149 type inet:ipv4-address; 1150 description 1151 "Multicast membership host address."; 1152 } 1153 leaf host-filter-mode { 1154 type enumeration { 1155 enum "include" { 1156 description 1157 "In include mode"; 1158 } 1159 enum "exclude" { 1160 description 1161 "In exclude mode."; 1162 } 1163 } 1164 description 1165 "Filter mode for a multicast membership 1166 host may be either include or exclude."; 1167 } 1168 }// list host 1170 } // list source 1171 } // list group 1173 } // instance-state-attributes-igmp-snooping 1175 grouping instance-state-attributes-igmp-mld-snooping { 1177 description 1178 "State attributes for both IGMP and MLD Snooping of each 1179 VLAN or l2vpn instance or EVPN instance."; 1181 leaf entries-count { 1182 type uint32; 1183 config false; 1184 description 1185 "The number of L2 multicast entries in IGMP and MLD 1186 Snooping."; 1187 } 1189 leaf-list bridge-mrouter-interface { 1191 when "../type = 'bridge'"; 1192 type if:interface-ref; 1193 config false; 1194 description " mrouter interface in bridge fowarding"; 1196 } 1198 leaf-list l2vpn-mrouter-interface-ac { 1199 when "../type = 'l2vpn'"; 1200 type if:interface-ref; 1201 config false; 1202 description " mrouter interface whose type is interface in 1203 l2vpn fowarding"; 1205 } 1207 leaf-list l2vpn-mrouter-interface-pw { 1209 when "../type = 'l2vpn'"; 1210 type l2vpn-instance-pw-ref; 1211 config false; 1212 description " mrouter interface whose type is pw in l2vpn 1213 fowarding"; 1215 } 1217 } // instance-config-attributes-igmp-mld-snooping 1219 grouping instance-state-attributes-mld-snooping { 1220 description 1221 "State attributes for MLD snooping of each VLAN."; 1223 uses instance-state-attributes-igmp-mld-snooping; 1225 list group { 1227 key "address"; 1229 config false; 1231 description "MLD snooping statistics information"; 1233 leaf address { 1234 type inet:ipv6-address; 1235 description 1236 "Multicast group IP address"; 1237 } 1239 uses instance-state-group-attributes-igmp-mld-snooping; 1241 leaf last-reporter { 1242 type inet:ipv6-address; 1243 description 1244 "The last host address which has sent the 1245 report to join the multicast group."; 1246 } 1247 list source { 1248 key "address"; 1249 description "Source IP address for multicast stream"; 1251 leaf address { 1252 type inet:ipv6-address; 1253 description "Source IP address for multicast stream"; 1254 } 1256 uses instance-state-source-attributes-igmp-mld-snooping; 1258 leaf last-reporter { 1259 type inet:ipv6-address; 1260 description 1261 "The last host address which has sent the report to join 1262 the multicast source and group."; 1263 } 1265 list host { 1266 if-feature explicit-tracking; 1267 key "host-address"; 1268 description 1269 "List of multicast membership hosts 1270 of the specific multicast source-group."; 1272 leaf host-address { 1273 type inet:ipv6-address; 1274 description 1275 "Multicast membership host address."; 1276 } 1277 leaf host-filter-mode { 1278 type enumeration { 1279 enum "include" { 1280 description 1281 "In include mode"; 1282 } 1283 enum "exclude" { 1284 description 1285 "In exclude mode."; 1286 } 1287 } 1288 description 1289 "Filter mode for a multicast membership 1290 host may be either include or exclude."; 1291 } 1292 }// list host 1294 } // list source 1295 } // list group 1297 } // instance-state-attributes-mld-snooping 1299 grouping instance-state-source-attributes-igmp-mld-snooping { 1300 description 1301 "State attributes for both IGMP and MLD Snooping of each VLAN 1302 or l2vpn instance or EVPN instance."; 1304 leaf-list bridge-outgoing-interface { 1305 when "../../../type = 'bridge'"; 1306 type if:interface-ref; 1307 description "Outgoing interface in bridge fowarding"; 1309 } 1311 leaf-list l2vpn-outgoing-ac { 1312 when "../../../type = 'l2vpn'"; 1313 type l2vpn-instance-ac-ref; 1314 description "Outgoing ac in l2vpn fowarding"; 1316 } 1318 leaf-list l2vpn-outgoing-pw { 1319 when "../../../type = 'l2vpn'"; 1320 type l2vpn-instance-pw-ref; 1321 description "Outgoing pw in l2vpn fowarding"; 1323 } 1325 leaf up-time { 1326 type uint32; 1327 units seconds; 1328 description "The time after the device created L2 multicast 1329 record"; 1330 } 1332 leaf expire { 1333 type uint32; 1334 units seconds; 1335 description 1336 "The time left before multicast group timeout."; 1337 } 1339 leaf host-count { 1340 if-feature explicit-tracking; 1341 type uint32; 1342 description 1343 "The number of host addresses."; 1344 } 1346 } // instance-state-source-attributes-igmp-mld-snooping 1348 grouping general-statistics-error { 1349 description 1350 "A grouping defining statistics attributes for errors."; 1352 leaf checksum { 1353 type yang:counter64; 1354 description 1355 "The number of checksum errors."; 1356 } 1357 leaf too-short { 1358 type yang:counter64; 1359 description 1360 "The number of messages that are too short."; 1361 } 1362 } // general-statistics-error 1364 grouping general-statistics-sent-received { 1365 description 1366 "A grouping defining statistics attributes."; 1368 leaf query { 1369 type yang:counter64; 1370 description 1371 "The number of query messages."; 1372 } 1373 leaf membership-report-v1 { 1374 type yang:counter64; 1375 description 1376 "The number of membership report v1 messages."; 1377 } 1378 leaf membership-report-v2 { 1379 type yang:counter64; 1380 description 1381 "The number of membership report v2 messages."; 1382 } 1383 leaf membership-report-v3 { 1384 type yang:counter64; 1385 description 1386 "The number of membership report v3 messages."; 1387 } 1388 leaf leave { 1389 type yang:counter64; 1390 description 1391 "The number of leave messages."; 1392 } 1393 leaf non-member-leave { 1394 type yang:counter64; 1395 description 1396 "The number of non member leave messages."; 1397 } 1398 leaf pim { 1399 type yang:counter64; 1400 description 1401 "The number of pim hello messages."; 1402 } 1403 } // general-statistics-sent-received 1405 grouping interface-endpoint-attributes-igmp-snooping { 1407 description "interface attributes for igmp snooping"; 1409 list host { 1411 if-feature explicit-tracking; 1413 key "host-address"; 1415 config false; 1417 description 1418 "List of multicast membership hosts 1419 of the specific multicast source-group."; 1421 leaf host-address { 1422 type inet:ipv4-address; 1423 description 1424 "Multicast membership host address."; 1425 } 1426 leaf host-filter-mode { 1427 type enumeration { 1428 enum "include" { 1429 description 1430 "In include mode"; 1431 } 1432 enum "exclude" { 1433 description 1434 "In exclude mode."; 1435 } 1436 } 1437 description 1438 "Filter mode for a multicast membership 1439 host may be either include or exclude."; 1440 } 1441 }// list host 1442 } // interface-endpoint-attributes-igmp-snooping 1443 grouping interface-endpoint-attributes-mld-snooping { 1445 description "interface endpoint attributes mld snooping"; 1447 list host { 1449 if-feature explicit-tracking; 1451 key "host-address"; 1453 config false; 1455 description 1456 "List of multicast membership hosts 1457 of the specific multicast source-group."; 1459 leaf host-address { 1460 type inet:ipv6-address; 1461 description 1462 "Multicast membership host address."; 1463 } 1464 leaf host-filter-mode { 1465 type enumeration { 1466 enum "include" { 1467 description 1468 "In include mode"; 1469 } 1470 enum "exclude" { 1471 description 1472 "In exclude mode."; 1473 } 1474 } 1475 description 1476 "Filter mode for a multicast membership 1477 host may be either include or exclude."; 1478 } 1479 }// list host 1480 } // interface-endpoint-attributes-mld-snooping 1482 /* 1483 * igmp-snooping-instance 1484 */ 1485 container igmp-snooping-instances { 1486 description 1487 "igmp-snooping-instance list"; 1489 list igmp-snooping-instance { 1490 key "name"; 1491 description 1492 "IGMP Snooping instance to configure the igmp- 1493 snooping."; 1495 leaf name { 1496 type string; 1497 description 1498 "Name of the igmp-snooping-instance to configure the igmp 1499 snooping."; 1500 } 1502 leaf type { 1503 type enumeration { 1504 enum "bridge" { 1505 description "bridge"; 1506 } 1507 enum "l2vpn" { 1508 description "l2vpn"; 1509 } 1510 } 1511 description "The type indicates bridge or l2vpn."; 1512 } 1514 uses instance-config-attributes-igmp-snooping { 1515 if-feature per-instance-config; 1516 } 1518 uses instance-state-attributes-igmp-snooping; 1520 } //igmp-snooping-instance 1521 } //igmp-snooping-instances 1523 /* 1524 * mld-snooping-instance 1525 */ 1526 container mld-snooping-instances { 1527 description 1528 "mld-snooping-instance list"; 1530 list mld-snooping-instance { 1531 key "name"; 1532 description 1533 "MLD Snooping instance to configure the mld-snooping."; 1535 leaf name { 1536 type string; 1537 description 1538 "Name of the mld-snooping-instance to configure the mld 1539 snooping."; 1540 } 1542 leaf type { 1543 type enumeration { 1544 enum "bridge" { 1545 description "bridge"; 1546 } 1547 enum "l2vpn" { 1548 description "l2vpn"; 1549 } 1550 } 1551 description "The type indicates bridge or l2vpn."; 1552 } 1554 uses instance-config-attributes-mld-snooping { 1555 if-feature per-instance-config; 1556 } 1558 uses instance-state-attributes-mld-snooping; 1560 } //mld-snooping-instance 1561 } //mld-snooping-instances 1563 container bridges { 1564 description 1565 "Apply igmp-mld-snooping instance in the bridge scenario"; 1567 list bridge { 1568 key name; 1570 description 1571 "bridge list"; 1573 leaf name { 1574 type name-type; 1575 description 1576 "bridge name"; 1578 } 1579 leaf igmp-snooping-instance { 1580 type igmp-snooping-instance-ref; 1581 description "Configure igmp-snooping instance under the 1582 bridge view"; 1583 } 1584 leaf mld-snooping-instance { 1585 type mld-snooping-instance-ref; 1586 description "Configure mld-snooping instance under the 1587 bridge view"; 1588 } 1589 list component { 1590 key "name"; 1591 description 1592 " "; 1594 leaf name { 1595 type string; 1596 description 1597 "The name of the Component."; 1598 } 1599 container bridge-vlan { 1600 description "bridge vlan"; 1601 list vlan { 1602 key "vid"; 1603 description 1604 ""; 1606 leaf vid { 1607 type vlan-index-type; 1608 description 1609 "The VLAN identifier to which this entry 1610 applies."; 1612 } 1613 leaf igmp-snooping-instance { 1614 type igmp-snooping-instance-ref; 1615 description "Configure igmp-snooping instance 1616 under the vlan view"; 1617 } 1618 leaf mld-snooping-instance { 1619 type mld-snooping-instance-ref; 1620 description "Configure mld-snooping instance 1621 under the vlan view"; 1622 } 1624 }//vlan 1625 }//bridge-vlan 1626 }//component 1627 }//bridge 1628 } //bridges 1630 container l2vpn-instances { 1631 description "Apply igmp-mld-snooping instance in the l2vpn 1632 scenario"; 1634 list l2vpn-instance { 1635 key "name"; 1636 description "An l2vpn service instance"; 1638 leaf name { 1639 type string; 1640 description "Name of l2vpn service instance"; 1641 } 1643 leaf igmp-snooping-instance { 1644 type igmp-snooping-instance-ref; 1645 description "Configure igmp-snooping instance under the 1646 l2vpn-instance view"; 1647 } 1648 leaf mld-snooping-instance { 1649 type mld-snooping-instance-ref; 1650 description "Configure mld-snooping instance under the 1651 l2vpn-instance view"; 1652 } 1654 } 1655 } 1657 /* augments */ 1659 augment "/if:interfaces/if:interface" { 1660 description "Augment interface for referencing attributes which 1661 only fit for interface view."; 1663 container igmp-mld-snooping { 1664 description 1665 "igmp-mld-snooping related attributes under interface view"; 1667 leaf enable { 1668 if-feature admin-enable; 1669 type boolean; 1670 description 1671 "Set the value to true to enable IGMP and MLD Snooping in 1672 the VLAN instance."; 1673 } 1675 leaf version { 1676 type uint8 { 1677 range "1..3"; 1678 } 1679 description "IGMP and MLD Snooping version."; 1681 } 1683 leaf type { 1684 type enumeration { 1685 enum "bridge" { 1686 description "bridge"; 1687 } 1688 enum "l2vpn" { 1689 description "l2vpn"; 1690 } 1691 } 1692 description "The type indicates bridge or l2vpn."; 1693 } 1695 container static-mrouter-interface { 1696 description 1697 "Container for choice static-mrouter-interface"; 1699 choice static-mrouter-interface { 1700 description 1701 "Configure static multicast router interface under the 1702 interface view"; 1704 case bridge { 1705 when "type = 'bridge'" { 1706 description 1707 "Applies to bridge scenario."; 1708 } 1709 description 1710 "Applies to bridge scenario."; 1712 leaf bridge-name { 1713 type string; 1714 description 1715 "bridge name."; 1717 } 1718 leaf-list vlan-id { 1719 type uint32; 1720 description 1721 "vlan id."; 1722 } 1724 } 1725 case l2vpn { 1726 when "type = 'l2vpn'" { 1727 description 1728 "Applies to l2vpn scenario."; 1729 } 1730 description 1731 "Applies to l2vpn scenario."; 1733 leaf l2vpn-instance-name { 1734 type string; 1735 description 1736 "The l2vpn instance name applied in the 1737 interface"; 1739 } 1740 } 1742 } // choice static-mrouter-interface 1743 } // container static-mrouter-interface 1745 container static-l2-multicast-group { 1746 description 1747 "Container for static-l2-multicast-group"; 1749 choice static-l2-multicast-group { 1750 description 1751 "Configure static l2 multicast group under the 1752 interface view"; 1754 case bridge { 1755 when "type = 'bridge'" { 1756 description 1757 "Applies to bridge scenario."; 1758 } 1759 description 1760 "Applies to bridge scenario."; 1762 leaf bridgename { 1763 type string; 1764 description 1765 "bridge name."; 1767 } 1769 list bridge-group-v4 { 1771 key "address"; 1773 description ""; 1775 leaf address { 1776 type inet:ipv4-address; 1777 description 1778 "Multicast group IPV4 address"; 1780 } 1782 leaf-list source { 1783 type inet:ipv4-address; 1784 description "Source IPV4 address for multicast 1785 stream"; 1786 } 1788 leaf-list vlan-id { 1789 type uint32; 1790 description 1791 "vlan id."; 1792 } 1794 } 1796 list bridge-group-v6 { 1797 key "address"; 1798 description ""; 1799 leaf address { 1800 type inet:ipv6-address; 1801 description 1802 "Multicast group IPv6 address"; 1803 } 1805 leaf-list source { 1806 type inet:ipv6-address; 1807 description "Source IPv6 address for multicast 1808 stream"; 1809 } 1811 leaf-list vlan-id { 1812 type uint32; 1813 description 1814 "vlan id."; 1815 } 1817 } 1819 } 1820 case l2vpn { 1822 when "type = 'l2vpn'" { 1823 description 1824 "Applies to l2vpn scenario."; 1825 } 1826 description 1827 "Applies to l2vpn scenario."; 1829 list l2vpn-group-v4 { 1830 key "address"; 1831 description ""; 1832 leaf address { 1833 type inet:ipv4-address; 1834 description 1835 "Multicast group IP address"; 1836 } 1838 leaf-list source { 1839 type inet:ipv4-address; 1840 description "Source IP address for multicast 1841 stream"; 1842 } 1844 leaf l2vpn-instance-name { 1845 type string; 1846 description 1847 "The l2vpn instance name applied in the 1848 interface"; 1850 } 1851 } 1852 list l2vpn-group-v6 { 1853 key "address"; 1854 description ""; 1856 leaf address { 1857 type inet:ipv6-address; 1858 description 1859 "Multicast group IP address"; 1860 } 1862 leaf-list source { 1863 type inet:ipv6-address; 1864 description "Source IP address for multicast 1865 stream"; 1866 } 1868 leaf l2vpn-instance-name { 1869 type string; 1870 description 1871 "The l2vpn instance name applied in the 1872 interface"; 1874 } 1875 } 1876 } 1878 } //choice static-l2-multicast-group 1880 } // container static-l2-multicast-group 1882 container statistics { 1883 config false; 1884 description 1885 "A collection of interface-related statistics objects."; 1887 uses general-state-attributes; 1889 } 1891 } 1893 } 1895 /* RPCs */ 1897 rpc clear-igmp-snooping-groups { 1898 if-feature rpc-clear-groups; 1899 description 1900 "Clears the specified IGMP Snooping cache tables."; 1902 input { 1904 leaf name { 1905 type string; 1906 description 1907 "Name of the igmp-snooping-instance"; 1908 } 1910 leaf group { 1911 type inet:ipv4-address; 1912 description 1913 "Multicast group IPv4 address. 1914 If it is not specified, all IGMP snooping group tables 1915 are 1916 cleared."; 1917 } 1919 leaf source { 1920 type inet:ipv4-address; 1921 description 1922 "Multicast source IPv4 address. 1923 If it is not specified, all IGMP snooping source-group 1924 tables are 1925 cleared."; 1926 } 1928 } 1929 } // rpc clear-igmp-snooping-groups 1931 rpc clear-mld-snooping-groups { 1932 if-feature rpc-clear-groups; 1933 description 1934 "Clears the specified MLD Snooping cache tables."; 1936 input { 1937 leaf name { 1938 type string; 1939 description 1940 "Name of the mld-snooping-instance"; 1941 } 1943 leaf group { 1944 type inet:ipv6-address; 1945 description 1946 "Multicast group IPv6 address. 1947 If it is not specified, all MLD snooping group tables are 1948 cleared."; 1949 } 1951 leaf source { 1952 type inet:ipv6-address; 1953 description 1954 "Multicast source IPv6 address. 1955 If it is not specified, all MLD snooping source-group 1956 tables are 1957 cleared."; 1958 } 1959 } 1960 } // rpc clear-mld-snooping-groups 1961 } 1962 1964 4. Security Considerations 1966 The data model defined does not create any security implications. 1968 5. IANA Considerations 1970 This draft does not request any IANA action. 1972 6. Normative References 1974 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1975 the Network Configuration Protocol (NETCONF)", RFC 6020, 1976 October 2010. 1978 [RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6021, 1979 October 2010. 1981 [RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations 1982 for Internet Group Management Protocol (IGMP) and Multicast 1983 Listener Discovery (MLD) Snooping Switches", RFC 4541, May 1984 2006. 1986 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1987 2", RFC 2236, November 1997. 1989 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1990 Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. 1992 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1993 Thyagarajan, "Internet Group Management Protocol, Version 1994 3", RFC 3376, October 2002. 1996 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1997 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1999 [RFC4604] Holbrook, H., Cain, B., and B. Haberman, "Using 2000 InternetGroup Management Protocol Version 3 (IGMPv3) and 2001 Multicast Listener Discovery Protocol Version 2 (MLDv2) for 2002 Source-Specific Multicast", RFC 4604, August 2006. 2004 [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for 2005 IP", RFC 4607, August 2006. 2007 [draft-ietf-pim-igmp-mld-yang-01] X. Liu, F. Guo, M. Sivakumar, P. 2008 McAllister, A. Peter, "A YANG data model for Internet Group 2009 Management Protocol (IGMP) and Multicast Listener Discovery 2010 (MLD)", draft-ietf-pim-igmp-mld-yang-01, October 28, 2016. 2012 [draft-ietf-pim-igmp-mld-yang-03] X. Liu, F. Guo, M. Sivakumar, P. 2013 McAllister, A. Peter, "A YANG data model for Internet Group 2014 Management Protocol (IGMP) and Multicast Listener Discovery 2015 (MLD)", draft-ietf-pim-igmp-mld-yang-03, March 13, 2017. 2017 [draft-dsdt-nmda-guidelines-01] M. Bjorklund, J. Schoenwaelder, P. 2018 Shafer, K. Watsen, R. Wilton, "Guidelines for YANG Module 2019 Authors (NMDA)", draft-dsdt-nmda-guidelines-01, May 2017 2021 [draft-bjorklund-netmod-rfc7223bis-00] M. Bjorklund, "A YANG Data 2022 Model for Interface Management", draft-bjorklund-netmod- 2023 rfc7223bis-00, August 21, 2017 2025 [draft-bjorklund-netmod-rfc7277bis-00] M. Bjorklund, "A YANG Data 2026 Model for IP Management", draft-bjorklund-netmod- 2027 rfc7277bis-00, August 21, 2017 2029 [draft-ietf-netmod-revised-datastores-03] M. Bjorklund, J. 2030 Schoenwaelder, P. Shafer, K. Watsen, R. Wilton, "Network 2031 Management Datastore Architecture", draft-ietf-netmod- 2032 revised-datastores-03, July 3, 2017 2034 [draft-ietf-bess-evpn-yang-02] P.Brissette, A. Sajassi, H. Shah, Z. 2035 Li, H. Chen, K. Tiruveedhula, I. Hussain, J. Rabadan, "Yang 2036 Data Model for EVPN", draft-ietf-bess-evpn-yang-02, March 2037 13, 2017 2039 [draft-ietf-bess-l2vpn-yang-06] H. Shah, P. Brissette, I. Chen, I. 2040 Hussain, B. Wen, K. Tiruveedhula, "YANG Data Model for 2041 MPLS-based L2VPN", draft-ietf-bess-l2vpn-yang-06.txt, June 2042 30, 2017 2044 Authors' Addresses 2046 Hongji Zhao 2047 Ericsson (China) Communications Company Ltd. 2048 Ericsson Tower, No. 5 Lize East Street, 2049 Chaoyang District Beijing 100102, P.R. China 2051 Email: hongji.zhao@ericsson.com 2053 Xufeng Liu 2054 Jabil 2055 8281 Greensboro Drive, Suite 200 2056 McLean VA 22102 2057 USA 2059 EMail: Xufeng_Liu@jabil.com 2060 Yisong Liu 2061 Huawei Technologies 2062 Huawei Bld., No.156 Beiqing Rd. 2063 Beijing 100095 2064 China 2066 Email: liuyisong@huawei.com 2068 Anish Peter 2069 Individual 2071 EMail: anish.ietf@gmail.com 2073 Mahesh Sivakumar 2074 Cisco Systems 2075 510 McCarthy Boulevard 2076 Milpitas, California 2077 USA 2079 EMail: masivaku@cisco.com