idnits 2.17.1 draft-ietf-pim-igmp-mld-snooping-yang-18.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 371 has weird spacing: '...er-mode fil...' == Line 488 has weird spacing: '...er-mode fil...' == Line 555 has weird spacing: '... source rt-...' == Line 563 has weird spacing: '... source rt-...' == Line 1340 has weird spacing: '...erfaces assoc...' -- The document date (August 15, 2020) is 1350 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) ** Downref: Normative reference to an Informational RFC: RFC 4541 ** Downref: Normative reference to an Informational RFC: RFC 6636 Summary: 2 errors (**), 0 flaws (~~), 6 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: February 14, 2021 Volta Networks 5 Y. Liu 6 China Mobile 7 M. Sivakumar 8 Juniper 9 A. Peter 10 Individual 12 August 15, 2020 14 A Yang Data Model for IGMP and MLD Snooping 15 draft-ietf-pim-igmp-mld-snooping-yang-18.txt 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage Internet Group Management Protocol (IGMP) and Multicast 21 Listener Discovery (MLD) Snooping devices. The YANG module in this 22 document conforms to Network Management Datastore Architecture (NMDA). 24 Status of this Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF), its areas, and its working groups. Note that 31 other groups may also distribute working documents as Internet- 32 Drafts. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 The list of current Internet-Drafts can be accessed at 40 http://www.ietf.org/ietf/1id-abstracts.txt 42 The list of Internet-Draft Shadow Directories can be accessed at 43 http://www.ietf.org/shadow.html 45 This Internet-Draft will expire on February 14, 2021. 47 Copyright Notice 49 Copyright (c) 2020 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction...................................................3 65 1.1. Terminology...............................................3 66 1.2. Tree Diagrams.............................................3 67 1.3. Prefixes in Data Node Names...............................4 68 2. Design of Data Model...........................................4 69 2.1. Overview..................................................5 70 2.2. Optional Capabilities.....................................5 71 2.3. Position of Address Family in Hierarchy...................6 72 3. Module Structure...............................................6 73 3.1. IGMP Snooping Instances...................................7 74 3.2. MLD Snooping Instances....................................9 75 3.3. Using IGMP and MLD Snooping Instances....................11 76 3.4. IGMP and MLD Snooping Actions............................12 77 4. IGMP and MLD Snooping YANG Module.............................12 78 5. Security Considerations.......................................34 79 6. IANA Considerations...........................................36 80 6.1. XML Registry.............................................36 81 6.2. YANG Module Names Registry...............................36 82 7. References....................................................37 83 7.1. Normative References.....................................37 84 7.2. Informative References...................................39 85 Appendix A. Data Tree Example...................................40 86 A.1 Bridge service............................................40 87 A.2 L2VPN service.............................................43 88 Authors' Addresses...............................................47 90 1. Introduction 92 This document defines a YANG [RFC7950] data model for the management of 93 Internet Group Management Protocol (IGMP) and Multicast Listener 94 Discovery (MLD) Snooping [RFC4541] devices. 96 The YANG module in this document conforms to the Network Management 97 Datastore Architecture defined in [RFC8342]. The "Network Management 98 Datastore Architecture" (NMDA) adds the ability to inspect the current 99 operational values for configuration, allowing clients to use identical 100 paths for retrieving the configured values and the operational values. 102 1.1. Terminology 104 The terminology for describing YANG data models is found in [RFC6020] 106 and [RFC7950], including: 108 * augment 110 * data model 112 * data node 114 * identity 116 * module 118 The following terminologies are used in this document: 120 * mrouter: multicast router, which is a router that has multicast 121 routing enabled [RFC4286]. 123 * mrouter interfaces: snooping switch ports where multicast routers 124 are attached [RFC4541]. 126 The following abbreviations are used in this document and defined model: 128 IGMP: Internet Group Management Protocol [RFC3376]. 130 MLD: Multicast Listener Discovery [RFC3810]. 132 AC: Attachment Circuit [RFC3916]. 134 PW: Pseudo Wire [RFC3916]. 136 1.2. Tree Diagrams 138 Tree diagrams used in this document follow the notation defined in 139 [RFC8340]. 141 1.3. Prefixes in Data Node Names 143 In this document, names of data nodes, actions, and other data model 144 objects are often used without a prefix, as long as it is clear from the 145 context in which YANG module each name is defined. Otherwise, names are 146 prefixed using the standard prefix associated with the corresponding 147 YANG module, as shown in Table 1. 149 +----------+-----------------------+---------------------------------+ 150 | Prefix | YANG module | Reference | 151 +==========+=======================+=================================+ 152 | inet | ietf-inet-types | [RFC6991] | 153 +----------+-----------------------+---------------------------------+ 154 | yang | ietf-yang-types | [RFC6991] | 155 +----------+-----------------------+---------------------------------+ 156 | if | ietf-interfaces | [RFC8343] | 157 +----------+-----------------------+---------------------------------+ 158 | rt | ietf-routing | [RFC8349] | 159 +----------+-----------------------+---------------------------------+ 160 | rt-types | ietf-routing-types | [RFC8294] | 161 +----------+-----------------------+---------------------------------+ 162 | ni | ietf-network-instance | [RFC8529] | 163 +----------+-----------------------+---------------------------------+ 164 | pw | ietf-pseudowires | [draft-ietf-bess-l2vpn-yang] | 165 +----------+-----------------------+---------------------------------+ 166 | l2vpn | ietf-l2vpn | [draft-ietf-bess-l2vpn-yang] | 167 +----------+-----------------------+---------------------------------+ 168 | dot1q | ieee802-dot1q-bridge | [dot1Qcp] | 169 +----------+-----------------------+---------------------------------+ 170 Table 1: Prefixes and Corresponding YANG Modules 172 2. Design of Data Model 174 An IGMP/MLD snooping switch [RFC4541] analyzes IGMP/MLD packets and sets 175 up forwarding tables for multicast traffic. If a switch does not run 176 IGMP/MLD snooping, multicast traffic will be flooded in the broadcast 177 domain. If a switch runs IGMP/MLD snooping, multicast traffic will be 178 forwarded based on the forwarding tables to avoid wasting bandwidth. The 179 IGMP/MLD snooping switch does not need to run any of the IGMP/MLD 180 protocols. Because the IGMP/MLD snooping is independent of the IGMP/MLD 181 protocols, the data model defined in this document does not augment, or 182 even require, the IGMP/MLD data model defined in [RFC8652]. 183 The model covers considerations for Internet Group Management Protocol 184 (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches 185 [RFC4541]. 187 IGMP and MLD snooping switches do not adhere to the conceptual model 188 that provides the strict separation of functionality between different 189 communications layers in the ISO model, and instead utilize information 190 in the upper level protocol headers as factors to be considered in 191 processing at the lower levels [RFC4541]. 193 IGMP Snooping switches utilize IGMP, and could support IGMPv1 [RFC1112], 194 IGMPv2 [RFC2236], and IGMPv3 [RFC3376]. MLD Snooping switches utilize 195 MLD, and could support MLDv1 [RFC2710] and MLDv2 [RFC3810]. The goal of 196 this document is to define a data model that provides a common user 197 interface to IGMP and MLD Snooping. 199 2.1. Overview 201 The IGMP and MLD Snooping YANG module defined in this document has all 202 the common building blocks for the IGMP and MLD Snooping switches. 204 The YANG module includes IGMP and MLD Snooping instance definition, 205 using instance in the L2 service type of BRIDGE [dot1Qcp] and L2VPN 206 [draft-ietf-bess-l2vpn-yang]. The module also includes actions for 207 clearing IGMP and MLD Snooping group tables. 209 2.2. Optional Capabilities 211 This model is designed to represent the basic capability subsets of IGMP 212 and MLD Snooping. The main design goals of this document are that the 213 basic capabilities described in the model are supported by any major 214 now-existing implementation, and that the configuration of all 215 implementations meeting the specifications is easy to express through 216 some combination of the optional features in the model and simple vendor 217 augmentations. 219 There is also value in widely supported features being standardized, to 220 provide a standardized way to access these features, to save work for 221 individual vendors, and so that mapping between different vendors' 222 configuration is not needlessly complicated. Therefore, this model 223 declares a number of features representing capabilities that not all 224 deployed devices support. 226 The extensive use of feature declarations should also substantially 227 simplify the capability negotiation process for a vendor's IGMP and MLD 228 Snooping implementations. 230 On the other hand, operational state parameters are not so widely 231 designated as features, as there are many cases where the defaulting 232 of an operational state parameter would not cause any harm to the 233 system, and it is much more likely that an implementation without 234 native support for a piece of operational state would be able to derive 235 a suitable value for a state variable that is not natively supported. 237 2.3. Position of Address Family in Hierarchy 239 IGMP Snooping only supports IPv4, while MLD Snooping only supports IPv6. 240 The data model defined in this document can be used for both IPv4 and 241 IPv6 address families. 243 This document defines IGMP Snooping and MLD Snooping as separate schema 244 branches in the structure. The benefits are: 246 * The model can support IGMP Snooping (IPv4), MLD Snooping (IPv6), or 247 both optionally and independently. Such flexibility cannot be achieved 248 cleanly with a combined branch. 250 * The structure is consistent with other YANG data models such as 251 [RFC8652], which uses separate branches for IPv4 and IPv6. 253 * Having separate branches for IGMP Snooping and MLD Snooping allows 254 minor differences in their behavior to be modelled more simply and 255 cleanly. The two branches can better support different features and node 256 types. 258 3. Module Structure 260 This model augments the core routing data model specified in [RFC8349]. 262 +--rw routing 263 +--rw router-id? 264 +--rw control-plane-protocols 265 | +--rw control-plane-protocol* [type name] 266 | +--rw type 267 | +--rw name 268 | +--rw igmp-snooping-instance <= Augmented by this Model 269 ... 270 | +--rw mld-snooping-instance <= Augmented by this Model 271 ... 272 The "igmp-snooping-instance" container instantiates an IGMP Snooping 273 Instance. The "mld-snooping-instance" container instantiates an MLD 274 Snooping Instance. 276 The YANG data model defined in this document conforms to the Network 277 Management Datastore Architecture (NMDA) [RFC8342]. The operational 278 state data is combined with the associated configuration data in the 279 same hierarchy [RFC8407]. 281 3.1. IGMP Snooping Instances 283 The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- 284 plane-protocols/rt:control-plane-protocol to add the igmp-snooping- 285 instance container. 287 All the IGMP Snooping related attributes have been defined in the igmp- 288 snooping-instance. The read-write attributes represent configurable 289 data. The read-only attributes represent state data. 291 One igmp-snooping-instance could be used in one BRIDGE [dot1Qcp] 292 instance or L2VPN [draft-ietf-bess-l2vpn-yang] instance. One igmp- 293 snooping-instance corresponds to one BRIDGE instance or one L2VPN 294 instance. 296 The value of l2-service-type in igmp-snooping-instance is bridge or 297 l2vpn. When it is bridge, igmp-snooping-instance will be used in the 298 BRIDGE service. When it is l2vpn, igmp-snooping-instance will be used in 299 the L2VPN service. 301 The values of bridge-mrouter-interface, l2vpn-mrouter-interface-ac, 302 l2vpn-mrouter-interface-pw are filled by the snooping device 303 dynamically. They are different from static-bridge-mrouter-interface, 304 static-l2vpn-mrouter-interface-ac, and static-l2vpn-mrouter-interface-pw 305 which are configured. 307 The attributes under the interfaces show the statistics of IGMP Snooping 308 related packets. 310 augment /rt:routing/rt:control-plane-protocols 311 /rt:control-plane-protocol: 312 +--rw igmp-snooping-instance {igmp-snooping}? 313 +--rw l2-service-type? l2-service-type 314 +--rw enable? boolean 315 +--rw forwarding-table-type? enumeration 316 +--rw explicit-tracking? boolean 317 | {explicit-tracking}? 318 +--rw lite-exclude-filter? empty 319 | {lite-exclude-filter}? 320 +--rw send-query? boolean 321 +--rw immediate-leave? empty 322 | {immediate-leave}? 323 +--rw last-member-query-interval? uint16 324 +--rw query-interval? uint16 325 +--rw query-max-response-time? uint16 326 +--rw require-router-alert? boolean 327 | {require-router-alert}? 328 +--rw robustness-variable? uint8 329 +--rw static-bridge-mrouter-interface* if:interface-ref 330 | {static-mrouter-interface}? 331 +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref 332 | {static-mrouter-interface}? 333 +--rw static-l2vpn-mrouter-interface-pw* pw:pseudowire-ref 334 | {static-mrouter-interface}? 335 +--rw igmp-version? uint8 336 +--rw querier-source? inet:ipv4-address 337 +--rw static-l2-multicast-group* [group source-addr] 338 | {static-l2-multicast-group}? 339 | +--rw group 340 | | rt-types:ipv4-multicast-group-address 341 | +--rw source-addr 342 | | rt-types:ipv4-multicast-source-address 343 | +--rw bridge-outgoing-interface* if:interface-ref 344 | +--rw l2vpn-outgoing-ac* if:interface-ref 345 | +--rw l2vpn-outgoing-pw* pw:pseudowire-ref 346 +--ro entries-count? yang:gauge32 347 +--ro bridge-mrouter-interface* if:interface-ref 348 +--ro l2vpn-mrouter-interface-ac* if:interface-ref 349 +--ro l2vpn-mrouter-interface-pw* pw:pseudowire-ref 350 +--ro group* [address] 351 | +--ro address 352 | | rt-types:ipv4-multicast-group-address 353 | +--ro mac-address? yang:phys-address 354 | +--ro expire? rt-types:timer-value-seconds16 355 | +--ro up-time uint32 356 | +--ro last-reporter? inet:ipv4-address 357 | +--ro source* [address] 358 | +--ro address 359 | | rt-types:ipv4-multicast-source-address 360 | +--ro bridge-outgoing-interface* if:interface-ref 361 | +--ro l2vpn-outgoing-ac* if:interface-ref 362 | +--ro l2vpn-outgoing-pw* pw:pseudowire-ref 363 | +--ro up-time uint32 364 | +--ro expire? 365 | | rt-types:timer-value-seconds16 366 | +--ro host-count? yang:gauge32 367 | | {explicit-tracking}? 368 | +--ro last-reporter? inet:ipv4-address 369 | +--ro host* [host-address] {explicit-tracking}? 370 | +--ro host-address inet:ipv4-address 371 | +--ro host-filter-mode filter-mode-type 372 +--ro interfaces 373 +--ro interface* [name] 374 +--ro name if:interface-ref 375 +--ro statistics 376 +--ro discontinuity-time? yang:date-and-time 377 +--ro received 378 | +--ro query-count? yang:counter64 379 | +--ro membership-report-v1-count? yang:counter64 380 | +--ro membership-report-v2-count? yang:counter64 381 | +--ro membership-report-v3-count? yang:counter64 382 | +--ro leave-count? yang:counter64 383 | +--ro pim-hello-count? yang:counter64 384 +--ro sent 385 +--ro query-count? yang:counter64 386 +--ro membership-report-v1-count? yang:counter64 387 +--ro membership-report-v2-count? yang:counter64 388 +--ro membership-report-v3-count? yang:counter64 389 +--ro leave-count? yang:counter64 390 +--ro pim-hello-count? yang:counter64 392 3.2. MLD Snooping Instances 394 The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- 395 plane-protocols/rt:control-plane-protocol to add the mld-snooping- 396 instance container. The mld-snooping-instance could be used in the 397 BRIDGE [dot1Qcp] or L2VPN [draft-ietf-bess-l2vpn-yang] service to enable 398 MLD Snooping. 400 All the MLD Snooping related attributes have been defined in the mld- 401 snooping-instance. The read-write attributes represent configurable 402 data. The read-only attributes represent state data. 404 The mld-snooping-instance has similar structure as IGMP snooping. Some 405 of leaves are protocol related. The mld-snooping-instance uses IPv6 406 addresses and mld-version, while igmp-snooping-instance uses IPv4 407 addresses and igmp-version. Statistic counters in each of the above 408 snooping instances are also tailored to the specific protocol type. One 409 mld-snooping-instance could be used in one BRIDGE instance or L2VPN 410 instance. One mld-snooping-instance corresponds to one BRIDGE instance 411 or L2VPN instance. 413 The value of l2-service-type in mld-snooping-instance is bridge or 414 l2vpn. When it is bridge, mld-snooping-instance will be used in the 415 BRIDGE service. When it is l2vpn, mld-snooping-instance will be used in 416 the L2VPN service. 418 The values of bridge-mrouter-interface, l2vpn-mrouter-interface-ac, 419 l2vpn-mrouter-interface-pw are filled by the snooping device 420 dynamically. They are different from static-bridge-mrouter-interface, 421 static-l2vpn-mrouter-interface-ac, and static-l2vpn-mrouter-interface-pw 422 which are configured. 424 The attributes under the interfaces show the statistics of MLD Snooping 425 related packets. 427 augment /rt:routing/rt:control-plane-protocols 428 /rt:control-plane-protocol: 429 +--rw mld-snooping-instance {mld-snooping}? 430 +--rw l2-service-type? l2-service-type 431 +--rw enable? boolean 432 +--rw forwarding-table-type? enumeration 433 +--rw explicit-tracking? boolean 434 | {explicit-tracking}? 435 +--rw lite-exclude-filter? empty 436 | {lite-exclude-filter}? 437 +--rw send-query? boolean 438 +--rw immediate-leave? empty 439 | {immediate-leave}? 440 +--rw last-member-query-interval? uint16 441 +--rw query-interval? uint16 442 +--rw query-max-response-time? uint16 443 +--rw require-router-alert? boolean 444 | {require-router-alert}? 445 +--rw robustness-variable? uint8 446 +--rw static-bridge-mrouter-interface* if:interface-ref 447 | {static-mrouter-interface}? 448 +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref 449 | {static-mrouter-interface}? 450 +--rw static-l2vpn-mrouter-interface-pw* pw:pseudowire-ref 451 | {static-mrouter-interface}? 452 +--rw mld-version? uint8 453 +--rw querier-source? inet:ipv6-address 454 +--rw static-l2-multicast-group* [group source-addr] 455 | {static-l2-multicast-group}? 456 | +--rw group 457 | | rt-types:ipv6-multicast-group-address 458 | +--rw source-addr 459 | | rt-types:ipv6-multicast-source-address 460 | +--rw bridge-outgoing-interface* if:interface-ref 461 | +--rw l2vpn-outgoing-ac* if:interface-ref 462 | +--rw l2vpn-outgoing-pw* pw:pseudowire-ref 463 +--ro entries-count? yang:gauge32 464 +--ro bridge-mrouter-interface* if:interface-ref 465 +--ro l2vpn-mrouter-interface-ac* if:interface-ref 466 +--ro l2vpn-mrouter-interface-pw* pw:pseudowire-ref 467 +--ro group* [address] 468 | +--ro address 469 | | rt-types:ipv6-multicast-group-address 470 | +--ro mac-address? yang:phys-address 471 | +--ro expire? rt-types:timer-value-seconds16 472 | +--ro up-time uint32 473 | +--ro last-reporter? inet:ipv6-address 474 | +--ro source* [address] 475 | +--ro address 476 | | rt-types:ipv6-multicast-source-address 477 | +--ro bridge-outgoing-interface* if:interface-ref 478 | +--ro l2vpn-outgoing-ac* if:interface-ref 479 | +--ro l2vpn-outgoing-pw* pw:pseudowire-ref 480 | +--ro up-time uint32 481 | +--ro expire? 482 | | rt-types:timer-value-seconds16 483 | +--ro host-count? yang:gauge32 484 | | {explicit-tracking}? 485 | +--ro last-reporter? inet:ipv6-address 486 | +--ro host* [host-address] {explicit-tracking}? 487 | +--ro host-address inet:ipv6-address 488 | +--ro host-filter-mode filter-mode-type 489 +--ro interfaces 490 +--ro interface* [name] 491 +--ro name if:interface-ref 492 +--ro statistics 493 +--ro discontinuity-time? yang:date-and-time 494 +--ro received 495 | +--ro query-count? yang:counter64 496 | +--ro report-v1-count? yang:counter64 497 | +--ro report-v2-count? yang:counter64 498 | +--ro done-count? yang:counter64 499 | +--ro pim-hello-count? yang:counter64 500 +--ro sent 501 +--ro query-count? yang:counter64 502 +--ro report-v1-count? yang:counter64 503 +--ro report-v2-count? yang:counter64 504 +--ro done-count? yang:counter64 505 +--ro pim-hello-count? yang:counter64 507 3.3. Using IGMP and MLD Snooping Instances 509 The igmp-snooping-instance could be used in the service of BRIDGE 510 [dot1Qcp] or L2VPN [draft-ietf-bess-l2vpn-yang] to configure the IGMP 511 Snooping. 513 For the BRIDGE service this model augments /dot1q:bridges/dot1q:bridge 514 to use igmp-snooping-instance. It means IGMP Snooping is enabled in the 515 whole bridge. 517 It also augments /dot1q:bridges/dot1q:bridge/dot1q:component/ 518 dot1q:bridge-vlan/dot1q:vlan to use igmp-snooping-instance. It means 519 IGMP Snooping is enabled in the specified VLAN on the bridge. 521 augment /dot1q:bridges/dot1q:bridge: 522 +--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref 523 +--rw mld-snooping-instance? igmp-mld-snooping-instance-ref 525 augment /dot1q:bridges/dot1q:bridge/dot1q:component 526 /dot1q:bridge-vlan/dot1q:vlan: 527 +--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref 528 +--rw mld-snooping-instance? igmp-mld-snooping-instance-ref 530 For the L2VPN service this model augments /ni:network-instances/ 531 ni:network-instance/ni:ni-type/l2vpn:l2vpn [RFC8529] to use igmp- 532 snooping-instance. It means IGMP Snooping is enabled in the specified 533 l2vpn instance. 535 augment /ni:network-instances/ni:network-instance/ni:ni-type 536 /l2vpn:l2vpn: 537 +--rw igmp-snooping-instance? igmp-mld-snooping-instance-ref 538 +--rw mld-snooping-instance? igmp-mld-snooping-instance-ref 540 The mld-snooping-instance could be used in concurrence with igmp- 541 snooping-instance to configure the MLD Snooping. 543 3.4. IGMP and MLD Snooping Actions 545 IGMP and MLD Snooping actions clear the specified IGMP and MLD Snooping 546 group tables. If both source X and group Y are specified, only source X 547 from group Y in that specific instance will be cleared. 549 augment /rt:routing/rt:control-plane-protocols 550 /rt:control-plane-protocol: 551 +--rw igmp-snooping-instance {igmp-snooping}? 552 +---x clear-igmp-snooping-groups {action-clear-groups}? 553 +---w input 554 +---w group union 555 +---w source rt-types:ipv4-multicast-source-address 557 augment /rt:routing/rt:control-plane-protocols 558 /rt:control-plane-protocol: 559 +--rw mld-snooping-instance {mld-snooping}? 560 +---x clear-mld-snooping-groups {action-clear-groups}? 561 +---w input 562 +---w group union 563 +---w source rt-types:ipv6-multicast-source-address 565 4. IGMP and MLD Snooping YANG Module 567 This module references [RFC1112],[RFC2236],[RFC2710],[RFC3376], 568 [RFC3810],[RFC4541],[RFC5790],[RFC6636],[RFC6991],[RFC7761], 569 [RFC8343],[RFC8529],[dot1Qcp], and [draft-ietf-bess-l2vpn-yang]. 571 file ietf-igmp-mld-snooping@2020-08-07.yang 572 module ietf-igmp-mld-snooping { 573 yang-version 1.1; 574 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; 576 prefix ims; 578 import ietf-inet-types { 579 prefix "inet"; 580 reference 581 "RFC 6991: Common YANG Data Types"; 582 } 583 import ietf-yang-types { 584 prefix "yang"; 585 reference 586 "RFC 6991: Common YANG Data Types"; 587 } 589 import ietf-interfaces { 590 prefix "if"; 591 reference 592 "RFC 8343: A YANG Data Model for Interface Management"; 593 } 595 import ietf-routing { 596 prefix "rt"; 597 reference 598 "RFC 8349: A YANG Data Model for Routing Management (NMDA 599 Version)"; 600 } 602 import ietf-routing-types { 603 prefix "rt-types"; 604 reference 605 "RFC 8294: Common YANG Data Types for the Routing Area"; 606 } 608 import ietf-l2vpn { 609 prefix "l2vpn"; 610 reference 611 "draft-ietf-bess-l2vpn-yang: YANG Data Model for MPLS-based 612 L2VPN"; 613 } 615 import ietf-network-instance { 616 prefix "ni"; 617 reference 618 "RFC 8529: YANG Data Model for Network Instances"; 619 } 621 import ietf-pseudowires { 622 prefix "pw"; 623 reference 624 "draft-ietf-bess-l2vpn-yang: YANG Data Model for MPLS-based 625 L2VPN"; 626 } 628 import ieee802-dot1q-bridge { 629 prefix "dot1q"; 630 reference 631 "dot1Qcp: IEEE 802.1Qcp-2018 Bridges and Bridged Networks 632 - Amendment: YANG Data Model"; 633 } 634 organization 635 "IETF PIM Working Group"; 637 contact 638 "WG Web: 639 WG List: 641 Editors: Hongji Zhao 642 644 Xufeng Liu 645 647 Yisong Liu 648 650 Anish Peter 651 653 Mahesh Sivakumar 654 656 "; 658 description 659 "The module defines a collection of YANG definitions common for 660 all devices that implement Internet Group Management Protocol 661 (IGMP) and Multicast Listener Discovery (MLD) Snooping which is 662 described in RFC 4541. 664 Copyright (c) 2020 IETF Trust and the persons identified as 665 authors of the code. All rights reserved. 667 Redistribution and use in source and binary forms, with or 668 without modification, is permitted pursuant to, and subject to 669 the license terms contained in, the Simplified BSD License set 670 forth in Section 4.c of the IETF Trust's Legal Provisions 671 Relating to IETF Documents 672 (http://trustee.ietf.org/license-info). 674 This version of this YANG module is part of RFC XXXX; see the 675 RFC itself for full legal notices."; 677 revision 2020-08-07 { 678 description 679 "Initial revision."; 680 reference 681 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 682 } 683 /* 684 * Features 685 */ 687 feature igmp-snooping { 688 description 689 "Support IGMP snooping."; 690 reference 691 "RFC 4541"; 692 } 694 feature mld-snooping { 695 description 696 "Support MLD snooping."; 697 reference 698 "RFC 4541"; 699 } 701 feature immediate-leave { 702 description 703 "Support configuration of fast leave. The fast leave feature 704 does not send last member query messages to hosts."; 705 reference 706 "RFC 3376"; 707 } 709 feature static-l2-multicast-group { 710 description 711 "Support configuration of L2 multicast static-group."; 712 } 714 feature static-mrouter-interface { 715 description 716 "Support multicast router interface explicitly configured 717 by management"; 718 reference 719 "RFC 4541"; 720 } 722 feature action-clear-groups { 723 description 724 "Support clearing statistics by action for IGMP & MLD snooping."; 725 } 727 feature require-router-alert { 728 description 729 "Support configuration of require-router-alert."; 730 reference 731 "RFC 3376"; 732 } 734 feature lite-exclude-filter { 735 description 736 "Enable the support of the simplified EXCLUDE filter."; 737 reference 738 "RFC 5790"; 739 } 741 feature explicit-tracking { 742 description 743 "Support configuration of per instance explicit-tracking."; 744 reference 745 "RFC 6636"; 746 } 748 /* identities */ 750 identity l2-service-type { 751 description 752 "Base identity for L2 service type in IGMP & MLD snooping"; 753 } 755 identity bridge { 756 base l2-service-type; 757 description 758 "This identity represents BRIDGE service."; 759 } 761 identity l2vpn { 762 base l2-service-type; 763 description 764 "This identity represents L2VPN service."; 765 } 767 identity filter-mode { 768 description 769 "Base identity for filter mode in IGMP & MLD snooping"; 770 } 772 identity include { 773 base filter-mode; 774 description 775 "This identity represents include mode."; 776 } 778 identity exclude { 779 base filter-mode; 780 description 781 "This identity represents exclude mode."; 782 } 784 identity igmp-snooping { 785 base rt:control-plane-protocol; 786 description 787 "IGMP snooping"; 788 } 790 identity mld-snooping { 791 base rt:control-plane-protocol; 792 description 793 "MLD snooping"; 794 } 796 /* 797 * Typedefs 798 */ 800 typedef l2-service-type { 801 type identityref { 802 base "l2-service-type"; 803 } 804 description "The L2 service type used with IGMP & MLD snooping "; 805 } 807 typedef filter-mode-type { 808 type identityref { 809 base "filter-mode"; 810 } 811 description "The host filter mode"; 812 } 814 typedef igmp-mld-snooping-instance-ref { 815 type leafref { 816 path "/rt:routing/rt:control-plane-protocols"+ 817 "/rt:control-plane-protocol/rt:name"; 818 } 819 description 820 "This type is used by data models which need to 821 reference IGMP & MLD snooping instance."; 822 } 824 /* 825 * Groupings 826 */ 828 grouping instance-config-attributes-igmp-mld-snooping { 829 description 830 "IGMP and MLD snooping configuration of each VLAN."; 832 leaf enable { 833 type boolean; 834 default false; 835 description 836 "Set the value to true to enable IGMP & MLD snooping."; 837 } 838 leaf forwarding-table-type { 839 type enumeration { 840 enum "mac" { 841 description 842 "MAC-based lookup mode"; 843 } 844 enum "ip" { 845 description 846 "IP-based lookup mode"; 847 } 848 } 849 default "ip"; 850 description "The default forwarding table type is ip"; 851 } 853 leaf explicit-tracking { 854 if-feature explicit-tracking; 855 type boolean; 856 default false; 857 description 858 "Track the IGMPv3 and MLDv2 snooping membership reports 859 from individual hosts. It contributes to saving network 860 resources and shortening leave latency."; 861 } 863 leaf lite-exclude-filter { 864 if-feature lite-exclude-filter; 865 type empty; 866 description 867 "For IGMP Snooping, the presence of this 868 leaf enables the support of the simplified EXCLUDE filter 869 in the Lightweight IGMPv3 protocol, which simplifies the 870 standard versions of IGMPv3. 871 For MLD Snooping, the presence of this 872 leaf enables the support of the simplified EXCLUDE filter 873 in the Lightweight MLDv2 protocol, which simplifies the 874 standard versions of MLDv2."; 875 reference 876 "RFC 5790"; 877 } 879 leaf send-query { 880 type boolean; 881 default false; 882 description 883 "Enable quick response for topology changes. 884 To support IGMP snooping in a VLAN where PIM and IGMP are 885 not configured. It cooperates with parameter querier-source."; 886 } 888 leaf immediate-leave { 889 if-feature immediate-leave; 890 type empty; 891 description 892 "When immediate leave is enabled, the IGMP software assumes 893 that no more than one host is present on each VLAN port."; 894 } 896 leaf last-member-query-interval { 897 type uint16 { 898 range "10..10230"; 899 } 900 units deciseconds; 901 default 10; 902 description 903 "Last Member Query Interval, which may be tuned to modify 904 the leave latency of the network. 905 It is represented in units of 1/10 second."; 906 reference "RFC 3376. Sec. 8.8."; 907 } 909 leaf query-interval { 910 type uint16; 911 units seconds; 912 default 125; 913 description 914 "The Query Interval is the interval between General Queries 915 sent by the Querier."; 916 reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; 917 } 919 leaf query-max-response-time { 920 type uint16; 921 units deciseconds; 922 default 100; 923 description 924 "Query maximum response time specifies the maximum time 925 allowed before sending a responding report. 926 It is represented in units of 1/10 second."; 927 reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; 928 } 930 leaf require-router-alert { 931 if-feature require-router-alert; 932 type boolean; 933 default false; 934 description 935 "When the value is true, router alert should exist 936 in the IP header of IGMP or MLD packet."; 937 } 939 leaf robustness-variable { 940 type uint8 { 941 range "1..7"; 942 } 943 default 2; 944 description 945 "Querier's Robustness Variable allows tuning for the 946 expected packet loss on a network."; 947 reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; 948 } 950 leaf-list static-bridge-mrouter-interface { 951 when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; 952 if-feature static-mrouter-interface; 953 type if:interface-ref; 954 description "static mrouter interface in BRIDGE forwarding"; 955 } 957 leaf-list static-l2vpn-mrouter-interface-ac { 958 when 'derived-from-or-self(../l2-service-type,"ims:l2vpn")'; 959 if-feature static-mrouter-interface; 960 type if:interface-ref; 961 description 962 "static mrouter interface whose type is interface 963 in L2VPN forwarding"; 964 } 966 leaf-list static-l2vpn-mrouter-interface-pw { 967 when 'derived-from-or-self(../l2-service-type,"ims:l2vpn")'; 968 if-feature static-mrouter-interface; 969 type pw:pseudowire-ref; 970 description 971 "static mrouter interface whose type is PW 972 in L2VPN forwarding"; 973 } 974 } // instance-config-attributes-igmp-mld-snooping 976 grouping instance-state-group-attributes-igmp-mld-snooping { 977 description 978 "Attributes for both IGMP and MLD snooping groups."; 980 leaf mac-address { 981 type yang:phys-address; 982 description "Destination MAC address for L2 multicast."; 983 } 985 leaf expire { 986 type rt-types:timer-value-seconds16; 987 units seconds; 988 description 989 "The time left before multicast group timeout."; 990 } 992 leaf up-time { 993 type uint32; 994 units seconds; 995 mandatory true; 996 description 997 "The time elapsed since L2 multicast record created."; 998 } 999 } // instance-state-group-attributes-igmp-mld-snooping 1001 grouping instance-state-attributes-igmp-mld-snooping { 1003 description 1004 "State attributes for IGMP & MLD snooping instance."; 1006 leaf entries-count { 1007 type yang:gauge32; 1008 config false; 1009 description 1010 "The number of L2 multicast entries in IGMP & MLD snooping"; 1011 } 1013 leaf-list bridge-mrouter-interface { 1014 when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; 1015 type if:interface-ref; 1016 config false; 1017 description 1018 "Indicates a list of mrouter interfaces dynamicly learned in a 1019 bridge. When this switch receives IGMP/MLD queries from a 1020 multicast router on an interface, the interface will become 1021 mrouter interface for IGMP/MLD snooping."; 1022 } 1024 leaf-list l2vpn-mrouter-interface-ac { 1025 when 'derived-from-or-self(../l2-service-type,"ims:l2vpn")'; 1026 type if:interface-ref; 1027 config false; 1028 description 1029 "The mrouter interface whose type is interface in L2VPN 1030 forwarding. When switch receives IGMP/MLD queries from 1031 multicast router on an interface, this interface will 1032 become mrouter interface for IGMP/MLD snooping."; 1033 } 1035 leaf-list l2vpn-mrouter-interface-pw { 1036 when 'derived-from-or-self(../l2-service-type,"ims:l2vpn")'; 1037 type pw:pseudowire-ref; 1038 config false; 1039 description 1040 "The mrouter interface whose type is PW in L2VPN forwarding. 1041 When switch receives IGMP/MLD queries from multicast router 1042 on a PW, this PW will become mrouter interface for IGMP/MLD 1043 snooping."; 1044 } 1046 } // instance-config-attributes-igmp-mld-snooping 1048 grouping instance-state-source-attributes-igmp-mld-snooping { 1049 description 1050 "State attributes for IGMP & MLD snooping instance."; 1052 leaf-list bridge-outgoing-interface { 1053 when 'derived-from-or-self(../../../l2-service- 1054 type,"ims:bridge")'; 1055 type if:interface-ref; 1056 description "Outgoing interface in BRIDGE forwarding"; 1057 } 1059 leaf-list l2vpn-outgoing-ac { 1060 when 'derived-from-or-self(../../../l2-service-type,"ims:l2vpn")'; 1061 type if:interface-ref; 1062 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1063 } 1065 leaf-list l2vpn-outgoing-pw { 1066 when 'derived-from-or-self(../../../l2-service-type,"ims:l2vpn")'; 1067 type pw:pseudowire-ref; 1068 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1069 } 1071 leaf up-time { 1072 type uint32; 1073 units seconds; 1074 mandatory true; 1075 description 1076 "The time elapsed since L2 multicast record created"; 1077 } 1079 leaf expire { 1080 type rt-types:timer-value-seconds16; 1081 units seconds; 1082 description 1083 "The time left before multicast group timeout."; 1084 } 1086 leaf host-count { 1087 if-feature explicit-tracking; 1088 type yang:gauge32; 1089 description 1090 "The number of host addresses."; 1091 } 1092 } // instance-state-source-attributes-igmp-mld-snooping 1094 grouping igmp-snooping-statistics { 1095 description 1096 "The statistics attributes for IGMP snooping."; 1097 leaf query-count { 1098 type yang:counter64; 1099 description 1100 "The number of Membership Query messages."; 1101 reference 1102 "RFC 2236"; 1103 } 1104 leaf membership-report-v1-count { 1105 type yang:counter64; 1106 description 1107 "The number of Version 1 Membership Report messages."; 1108 reference 1109 "RFC 1112"; 1110 } 1111 leaf membership-report-v2-count { 1112 type yang:counter64; 1113 description 1114 "The number of Version 2 Membership Report messages."; 1115 reference 1116 "RFC 2236"; 1117 } 1118 leaf membership-report-v3-count { 1119 type yang:counter64; 1120 description 1121 "The number of Version 3 Membership Report messages."; 1122 reference 1123 "RFC 3376"; 1124 } 1125 leaf leave-count { 1126 type yang:counter64; 1127 description 1128 "The number of Leave Group messages."; 1129 reference 1130 "RFC 2236"; 1131 } 1132 leaf pim-hello-count { 1133 type yang:counter64; 1134 description 1135 "The number of PIM hello messages."; 1136 reference 1137 "RFC 7761"; 1138 } 1139 } // igmp-snooping-statistics 1141 grouping mld-snooping-statistics { 1142 description 1143 "The statistics attributes for MLD snooping."; 1145 leaf query-count { 1146 type yang:counter64; 1147 description 1148 "The number of Multicast Listener Query messages."; 1149 reference 1150 "RFC 3810"; 1151 } 1152 leaf report-v1-count { 1153 type yang:counter64; 1154 description 1155 "The number of Version 1 Multicast Listener Report."; 1156 reference 1157 "RFC 2710"; 1158 } 1159 leaf report-v2-count { 1160 type yang:counter64; 1161 description 1162 "The number of Version 2 Multicast Listener Report."; 1163 reference 1164 "RFC 3810"; 1165 } 1166 leaf done-count { 1167 type yang:counter64; 1168 description 1169 "The number of Version 1 Multicast Listener Done."; 1170 reference 1171 "RFC 2710"; 1172 } 1173 leaf pim-hello-count { 1174 type yang:counter64; 1175 description 1176 "The number of PIM hello messages."; 1177 reference 1178 "RFC 7761"; 1179 } 1180 } // mld-snooping-statistics 1182 augment "/rt:routing/rt:control-plane-protocols"+ 1183 "/rt:control-plane-protocol" { 1184 when 'derived-from-or-self(rt:type, "ims:igmp-snooping")' { 1185 description 1186 "This container is only valid for IGMP snooping."; 1187 } 1188 description 1189 "IGMP snooping augmentation to control plane protocol 1190 configuration and state."; 1192 container igmp-snooping-instance { 1193 if-feature igmp-snooping; 1194 description 1195 "IGMP snooping instance to configure igmp-snooping."; 1197 leaf l2-service-type { 1198 type l2-service-type; 1199 default bridge; 1200 description 1201 "The l2-service-type indicates BRIDGE or L2VPN."; 1202 } 1204 uses instance-config-attributes-igmp-mld-snooping; 1206 leaf igmp-version { 1207 type uint8 { 1208 range "1..3"; 1209 } 1210 default 2; 1211 description "IGMP version."; 1212 } 1214 leaf querier-source { 1215 type inet:ipv4-address; 1216 description 1217 "Use the IGMP snooping querier to support IGMP 1218 snooping in a VLAN where PIM and IGMP are not configured. 1219 The IPv4 address is used as source address in messages."; 1220 } 1222 list static-l2-multicast-group { 1223 if-feature static-l2-multicast-group; 1224 key "group source-addr"; 1225 description 1226 "A static multicast route, (*,G) or (S,G)."; 1228 leaf group { 1229 type rt-types:ipv4-multicast-group-address; 1230 description 1231 "Multicast group IPv4 address"; 1232 } 1234 leaf source-addr { 1235 type rt-types:ipv4-multicast-source-address; 1236 description 1237 "Multicast source IPv4 address."; 1238 } 1240 leaf-list bridge-outgoing-interface { 1241 when 'derived-from-or-self(../../l2-service- 1242 type,"ims:bridge")'; 1243 type if:interface-ref; 1244 description "Outgoing interface in BRIDGE forwarding"; 1245 } 1247 leaf-list l2vpn-outgoing-ac { 1248 when 'derived-from-or-self(../../l2-service- 1249 type,"ims:l2vpn")'; 1250 type if:interface-ref; 1251 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1253 } 1255 leaf-list l2vpn-outgoing-pw { 1256 when 'derived-from-or-self(../../l2-service- 1257 type,"ims:l2vpn")'; 1258 type pw:pseudowire-ref; 1259 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1260 } 1261 } // static-l2-multicast-group 1263 uses instance-state-attributes-igmp-mld-snooping; 1265 list group { 1267 key "address"; 1269 config false; 1271 description "IGMP snooping information"; 1273 leaf address { 1274 type rt-types:ipv4-multicast-group-address; 1275 description 1276 "Multicast group IPv4 address"; 1277 } 1279 uses instance-state-group-attributes-igmp-mld-snooping; 1281 leaf last-reporter { 1282 type inet:ipv4-address; 1283 description 1284 "Address of the last host which has sent report to join 1285 the multicast group."; 1286 } 1288 list source { 1289 key "address"; 1290 description "Source IPv4 address for multicast stream"; 1292 leaf address { 1293 type rt-types:ipv4-multicast-source-address; 1294 description "Source IPv4 address for multicast stream"; 1295 } 1297 uses instance-state-source-attributes-igmp-mld-snooping; 1299 leaf last-reporter { 1300 type inet:ipv4-address; 1301 description 1302 "Address of the last host which has sent report 1303 to join the multicast group."; 1304 } 1305 list host { 1306 if-feature explicit-tracking; 1307 key "host-address"; 1308 description 1309 "List of multicast membership hosts 1310 of the specific multicast source-group."; 1312 leaf host-address { 1313 type inet:ipv4-address; 1314 description 1315 "Multicast membership host address."; 1316 } 1317 leaf host-filter-mode { 1318 type filter-mode-type; 1319 mandatory true; 1320 description 1321 "Filter mode for a multicast membership 1322 host may be either include or exclude."; 1323 } 1324 }// list host 1326 } // list source 1327 } // list group 1329 container interfaces { 1330 config false; 1332 description 1333 "Contains the interfaces associated with the IGMP snooping 1334 instance"; 1336 list interface { 1337 key "name"; 1339 description 1340 "A list of interfaces associated with the IGMP snooping 1341 instance"; 1343 leaf name { 1344 type if:interface-ref; 1345 description 1346 "The name of interface"; 1348 } 1350 container statistics { 1351 description 1352 "The interface statistics for IGMP snooping"; 1354 leaf discontinuity-time { 1355 type yang:date-and-time; 1356 description 1357 "The time on the most recent occasion at which any one 1358 or more of the statistic counters suffered a 1359 discontinuity. If no such discontinuities have 1360 occurred since the last re-initialization of the local 1361 management subsystem, then this node contains the time 1362 the local management subsystem re-initialized 1363 itself."; 1364 } 1365 container received { 1366 description 1367 "Number of received snooped IGMP packets"; 1369 uses igmp-snooping-statistics; 1370 } 1371 container sent { 1372 description 1373 "Number of sent snooped IGMP packets"; 1375 uses igmp-snooping-statistics; 1376 } 1377 } 1378 } 1379 } 1381 action clear-igmp-snooping-groups { 1382 if-feature action-clear-groups; 1383 description 1384 "Clear IGMP snooping cache tables."; 1386 input { 1387 leaf group { 1388 type union { 1389 type enumeration { 1390 enum 'all-groups' { 1391 description 1392 "All multicast group addresses."; 1393 } 1394 } 1395 type rt-types:ipv4-multicast-group-address; 1396 } 1397 mandatory true; 1398 description 1399 "Multicast group IPv4 address. If value 'all-groups' is 1400 specified, all IGMP snooping group entries are cleared 1401 for specified source address."; 1402 } 1403 leaf source { 1404 type rt-types:ipv4-multicast-source-address; 1405 mandatory true; 1406 description 1407 "Multicast source IPv4 address. If value '*' is specified, 1408 all IGMP snooping source-group tables are cleared."; 1409 } 1410 } 1411 } // action clear-igmp-snooping-groups 1412 } // igmp-snooping-instance 1413 } // augment 1415 augment "/rt:routing/rt:control-plane-protocols"+ 1416 "/rt:control-plane-protocol" { 1417 when 'derived-from-or-self(rt:type, "ims:mld-snooping")' { 1418 description 1419 "This container is only valid for MLD snooping."; 1420 } 1421 description 1422 "MLD snooping augmentation to control plane protocol 1423 configuration and state."; 1425 container mld-snooping-instance { 1426 if-feature mld-snooping; 1427 description 1428 "MLD snooping instance to configure mld-snooping."; 1430 leaf l2-service-type { 1431 type l2-service-type; 1432 default bridge; 1433 description 1434 "The l2-service-type indicates BRIDGE or L2VPN."; 1435 } 1437 uses instance-config-attributes-igmp-mld-snooping; 1439 leaf mld-version { 1440 type uint8 { 1441 range "1..2"; 1442 } 1443 default 2; 1444 description "MLD version."; 1445 } 1447 leaf querier-source { 1448 type inet:ipv6-address; 1449 description 1450 "Use the MLD snooping querier to support MLD snooping where 1451 PIM and MLD are not configured. The IPv6 address is used as 1452 the source address in messages."; 1453 } 1455 list static-l2-multicast-group { 1456 if-feature static-l2-multicast-group; 1457 key "group source-addr"; 1458 description 1459 "A static multicast route, (*,G) or (S,G)."; 1461 leaf group { 1462 type rt-types:ipv6-multicast-group-address; 1463 description 1464 "Multicast group IPv6 address"; 1465 } 1467 leaf source-addr { 1468 type rt-types:ipv6-multicast-source-address; 1469 description 1470 "Multicast source IPv6 address."; 1471 } 1473 leaf-list bridge-outgoing-interface { 1474 when 'derived-from-or-self(../../l2-service- 1475 type,"ims:bridge")'; 1476 type if:interface-ref; 1477 description "Outgoing interface in BRIDGE forwarding"; 1478 } 1480 leaf-list l2vpn-outgoing-ac { 1481 when 'derived-from-or-self(../../l2-service- 1482 type,"ims:l2vpn")'; 1483 type if:interface-ref; 1484 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1485 } 1487 leaf-list l2vpn-outgoing-pw { 1488 when 'derived-from-or-self(../../l2-service- 1489 type,"ims:l2vpn")'; 1490 type pw:pseudowire-ref; 1491 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1492 } 1493 } // static-l2-multicast-group 1495 uses instance-state-attributes-igmp-mld-snooping; 1497 list group { 1498 key "address"; 1499 config false; 1500 description "MLD snooping statistics information"; 1502 leaf address { 1503 type rt-types:ipv6-multicast-group-address; 1504 description 1505 "Multicast group IPv6 address"; 1506 } 1508 uses instance-state-group-attributes-igmp-mld-snooping; 1510 leaf last-reporter { 1511 type inet:ipv6-address; 1512 description 1513 "Address of the last host which has sent report 1514 to join the multicast group."; 1515 } 1517 list source { 1518 key "address"; 1519 description "Source IPv6 address for multicast stream"; 1521 leaf address { 1522 type rt-types:ipv6-multicast-source-address; 1523 description "Source IPv6 address for multicast stream"; 1524 } 1526 uses instance-state-source-attributes-igmp-mld-snooping; 1528 leaf last-reporter { 1529 type inet:ipv6-address; 1530 description 1531 "Address of the last host which has sent report 1532 to join the multicast group."; 1533 } 1535 list host { 1536 if-feature explicit-tracking; 1537 key "host-address"; 1538 description 1539 "List of multicast membership hosts 1540 of the specific multicast source-group."; 1542 leaf host-address { 1543 type inet:ipv6-address; 1544 description 1545 "Multicast membership host address."; 1546 } 1547 leaf host-filter-mode { 1548 type filter-mode-type; 1549 mandatory true; 1550 description 1551 "Filter mode for a multicast membership 1552 host may be either include or exclude."; 1553 } 1554 }// list host 1555 } // list source 1556 } // list group 1558 container interfaces { 1559 config false; 1561 description 1562 "Contains the interfaces associated with the MLD snooping 1563 instance"; 1565 list interface { 1566 key "name"; 1568 description 1569 "A list of interfaces associated with the MLD snooping 1570 instance"; 1572 leaf name { 1573 type if:interface-ref; 1574 description 1575 "The name of interface"; 1577 } 1579 container statistics { 1580 description 1581 "The interface statistics for MLD snooping"; 1583 leaf discontinuity-time { 1584 type yang:date-and-time; 1585 description 1586 "The time on the most recent occasion at which any one 1587 or more of the statistic counters suffered a 1588 discontinuity. If no such discontinuities have 1589 occurred since the last re-initialization of the local 1590 management subsystem, then this node contains the time 1591 the local management subsystem re-initialized 1592 itself."; 1593 } 1594 container received { 1595 description 1596 "Number of received snooped MLD packets"; 1598 uses mld-snooping-statistics; 1599 } 1600 container sent { 1601 description 1602 "Number of sent snooped MLD packets"; 1604 uses mld-snooping-statistics; 1605 } 1606 } 1607 } 1608 } 1610 action clear-mld-snooping-groups { 1611 if-feature action-clear-groups; 1612 description 1613 "Clear MLD snooping cache tables."; 1615 input { 1616 leaf group { 1617 type union { 1618 type enumeration { 1619 enum 'all-groups' { 1620 description 1621 "All multicast group addresses."; 1622 } 1623 } 1624 type rt-types:ipv6-multicast-group-address; 1625 } 1626 mandatory true; 1627 description 1628 "Multicast group IPv6 address. If value 'all-groups' is 1629 specified, all MLD snooping group entries are cleared 1630 for specified source address."; 1631 } 1632 leaf source { 1633 type rt-types:ipv6-multicast-source-address; 1634 mandatory true; 1635 description 1636 "Multicast source IPv6 address. If value '*' is specified, 1637 all MLD snooping source-group tables are cleared."; 1638 } 1639 } 1640 } // action clear-mld-snooping-groups 1641 }// mld-snooping-instance 1642 } // augment 1644 augment "/dot1q:bridges/dot1q:bridge" { 1645 description 1646 "Use IGMP & MLD snooping instance in BRIDGE."; 1648 leaf igmp-snooping-instance { 1649 type igmp-mld-snooping-instance-ref; 1650 description 1651 "Configure IGMP snooping instance under bridge view"; 1652 } 1654 leaf mld-snooping-instance { 1655 type igmp-mld-snooping-instance-ref; 1656 description 1657 "Configure MLD snooping instance under bridge view"; 1658 } 1659 } 1661 augment "/dot1q:bridges/dot1q:bridge"+ 1662 "/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" { 1663 description 1664 "Use IGMP & MLD snooping instance in certain VLAN of BRIDGE"; 1666 leaf igmp-snooping-instance { 1667 type igmp-mld-snooping-instance-ref; 1668 description 1669 "Configure IGMP snooping instance under VLAN view"; 1670 } 1672 leaf mld-snooping-instance { 1673 type igmp-mld-snooping-instance-ref; 1674 description 1675 "Configure MLD snooping instance under VLAN view"; 1676 } 1677 } 1679 augment "/ni:network-instances/ni:network-instance"+ 1680 "/ni:ni-type/l2vpn:l2vpn" { 1682 description 1683 "Use IGMP & MLD snooping instance in L2VPN."; 1685 leaf igmp-snooping-instance { 1686 type igmp-mld-snooping-instance-ref; 1687 description 1688 "Configure IGMP snooping instance in L2VPN."; 1689 } 1691 leaf mld-snooping-instance { 1692 type igmp-mld-snooping-instance-ref; 1693 description 1694 "Configure MLD snooping instance in L2VPN."; 1695 } 1696 } 1697 } 1698 1700 5. Security Considerations 1702 The YANG module specified in this document defines a schema for data 1703 that is designed to be accessed via network management protocols such as 1704 NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the 1705 secure transport layer, and the mandatory-to-implement secure transport 1706 is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and 1707 the mandatory-to-implement secure transport is TLS [RFC8446]. 1709 The Network Configuration Access Control Model (NACM) [RFC8341] provides 1710 the means to restrict access for particular NETCONF or RESTCONF users to 1711 a preconfigured subset of all available NETCONF or RESTCONF protocol 1712 operations and content. 1714 There are a number of data nodes defined in this YANG module that are 1715 writable/creatable/deletable (i.e., config true, which is the default). 1716 These data nodes may be considered sensitive or vulnerable in some 1717 network environments. Write operations (e.g., edit-config) to these data 1718 nodes without proper protection can have a negative effect on network 1719 operations. These are the subtrees and data nodes and their 1720 sensitivity/vulnerability: 1722 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1724 ims:igmp-snooping-instance 1726 ims:mld-snooping-instance 1728 The subtrees under /dot1q:bridges/dot1q:bridge 1730 ims:igmp-snooping-instance 1732 ims:mld-snooping-instance 1734 The subtrees under /dot1q:bridges/dot1q:bridge/dot1q:component 1735 /dot1q:bridge-vlan/dot1q:vlan 1737 ims:igmp-snooping-instance 1739 ims:mld-snooping-instance 1741 Unauthorized access to any data node of these subtrees can adversely 1742 affect the IGMP & MLD Snooping subsystem of both the local device and 1743 the network. This may lead to network malfunctions, delivery of packets 1744 to inappropriate destinations, and other problems. 1746 Some of the readable data nodes in this YANG module may be considered 1747 sensitive or vulnerable in some network environments. It is thus 1748 important to control read access (e.g., via get, get-config, or 1749 notification) to these data nodes. These are the subtrees and data nodes 1750 and their sensitivity/vulnerability: 1752 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1754 ims:igmp-snooping-instance 1756 ims:mld-snooping-instance 1758 Unauthorized access to any data node of these subtrees can disclose the 1759 operational state information of IGMP & MLD Snooping on this device. The 1760 group/source/host information may expose multicast group memberships, 1761 and transitively the associations between the user on the host and the 1762 contents from the source which could be privately sensitive. Some of the 1763 action operations in this YANG module may be considered sensitive or 1764 vulnerable in some network environments. It is thus important to control 1765 access to these operations. These are the operations and their 1766 sensitivity/vulnerability: 1768 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1770 ims:igmp-snooping-instance/ims:clear-igmp-snooping-groups 1772 ims:mld-snooping-instance/ims:clear-mld-snooping-groups 1774 Some of the actions in this YANG module may be considered sensitive or 1775 vulnerable in some network environments. The IGMP & MLD Snooping YANG 1776 module supports the "clear-igmp-snooping-groups" and "clear-mld- 1777 snooping-groups" actions. If unauthorized action is invoked, the IGMP 1778 and MLD Snooping group tables will be cleared unexpectedly. Especially 1779 when using wildcard, all the multicast traffic will be flooded in the 1780 broadcast domain. The devices that use this YANG module should heed the 1781 Security Considerations in [RFC4541]. 1783 6. IANA Considerations 1785 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1786 actual RFC number (and remove this note). 1788 6.1. XML Registry 1790 This document registers the following namespace URIs in the IETF XML 1792 registry [RFC3688]: 1794 -------------------------------------------------------------------- 1795 URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping 1796 Registrant Contact: The IETF. 1797 XML: N/A, the requested URI is an XML namespace. 1798 -------------------------------------------------------------------- 1800 6.2. YANG Module Names Registry 1802 This document registers the following YANG modules in the YANG Module 1803 Names registry [RFC7950]: 1804 -------------------------------------------------------------------- 1805 name: ietf-igmp-mld-snooping 1806 namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping 1807 prefix: ims 1808 reference: RFC XXXX 1809 -------------------------------------------------------------------- 1810 7. References 1812 7.1. Normative References 1814 [dot1Qcp] IEEE, "Standard for Local and metropolitan area networks-- 1815 Bridges and Bridged Networks--Amendment 30: YANG Data 1816 Model", IEEE Std 802.1Qcp-2018 (Revision of IEEE Std 1817 802.1Q-2014), September 2018, 1818 1820 [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, 1821 RFC 1112, August 1989. 1823 [RFC2236] W. Fenner, "Internet Group Management Protocol, Version 2", 1824 RFC 2236, November 1997. 1826 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1827 Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. 1829 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1830 Thyagarajan, "Internet Group Management Protocol, Version 1831 3", RFC 3376, October 2002. 1833 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 1834 2004. 1836 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1837 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1839 [RFC4286] B. Haberman and J. Martin, "Multicast Router Discovery", 1840 RFC 4286, December 2005. 1842 [RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations 1843 for Internet Group Management Protocol (IGMP) and Multicast 1844 Listener Discovery (MLD) Snooping Switches", RFC 4541, May 1845 2006. 1847 [RFC5790] H. Liu, W. Cao, H. Asaeda, "Lightweight Internet Group 1848 Management Protocol Version 3 (IGMPv3) and Multicast 1849 Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, 1850 February 2010. 1852 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1853 the Network Configuration Protocol (NETCONF)", RFC 6020, 1854 October 2010. 1856 [RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed., A. 1857 Bierman, Ed., "Network Configuration Protocol (NETCONF)", 1858 RFC 6241, June 2011. 1860 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1861 Shell (SSH)", RFC 6242, June 2011. 1863 [RFC6636] H. Asaeda, H. Liu, Q. Wu, "Tuning the Behavior of the 1864 Internet Group Management Protocol (IGMP) and Multicast 1865 Listener Discovery (MLD) for Routers in Mobile and Wireless 1866 Networks", RFC 6636, May 2012. 1868 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, 1869 July 2013. 1871 [RFC7761] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, R. Parekh, 1872 Z. Zhang, L. Zheng, "Protocol Independent Multicast - 1873 Sparse Mode (PIM-SM): Protocol Specification (Revised)", 1874 RFC 7761, March 2016. 1876 [RFC7950] M. Bjorklund, Ed., "The YANG 1.1 Data Modeling Language", 1877 RFC 7950, August 2016. 1879 [RFC8040] A. Bierman, M. Bjorklund, K. Watsen, "RESTCONF Protocol", 1880 RFC 8040, January 2017. 1882 [RFC8294] X. Liu, Y. Qu, A. Lindem, C. Hopps, L. Berger, "Common YANG 1883 Data Types for the Routing Area", RFC 8294, December 2017. 1885 [RFC8340] M. Bjorklund, and L. Berger, Ed., "YANG Tree Diagrams", RFC 1886 8340, March 2018. 1888 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access 1889 Control Model", RFC 8341, March 2018. 1891 [RFC8342] M. Bjorklund and J. Schoenwaelder, "Network Management 1892 Datastore Architecture (NMDA)", RFC 8342, March 2018. 1894 [RFC8343] M. Bjorklund, "A YANG Data Model for Interface Management", 1895 RFC 8343, March 2018. 1897 [RFC8349] L. Lhotka, A. Lindem, Y. Qu, "A YANG Data Model for Routing 1898 Management (NMDA Version)", RFC 8349, March 2018. 1900 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1901 Version 1.3", RFC 8446, August 2018. 1903 [RFC8529] L. Berger, C. Hopps, A. Lindem, D. Bogdanovic, X. Liu, 1904 "YANG Data Model for Network Instances", RFC 8529, March 1905 2019. 1907 [draft-ietf-bess-l2vpn-yang] Shah, H., Brissette, P., Chen, I., 1908 Hussain, I., Wen, B., and K. Tiruveedhula, "YANG Data Model 1909 for MPLS-basedL2VPN", draft-ietf-bess-l2vpn-yang-10 (work 1910 in progress), July 2019. 1912 7.2. Informative References 1914 [RFC3916] X. Xiao, Ed., D. McPherson, Ed., P. Pate, Ed., 1915 "Requirements for Pseudo-Wire Emulation Edge-to-Edge 1916 (PWE3)", RFC 3916, September 2004. 1918 [RFC7951] L. Lhotka, "JSON Encoding of Data Modeled with YANG", RFC 1919 7951, August 2016. 1921 [RFC8407] A. Bierman, "Guidelines for Authors and Reviewers of 1922 Documents Containing YANG Data Models", RFC 8407, October 1923 2018. 1925 [RFC8652] X. Liu, F. Guo, M. Sivakumar, P. McAllister, A. Peter, "A 1926 YANG Data Model for the Internet Group Management Protocol 1927 (IGMP) and Multicast Listener Discovery (MLD)", RFC 8652, 1928 November 2019. 1930 Appendix A. Data Tree Example 1932 A.1 Bridge service 1934 This section contains an example for bridge service in the JSON encoding 1935 [RFC7951], containing both configuration and state data. 1937 +-----------+ 1938 + Source + 1939 +-----+-----+ 1940 | 1941 -----------------+---------------------------- 1942 |eth1/1 1943 +---+---+ 1944 + R1 + 1945 +-+---+-+ 1946 eth1/2 | \ eth1/3 1947 | \ 1948 | \ 1949 | \ 1950 | \ 1951 eth2/1 | \ eth3/1 1952 +---+---+ +--+---+ 1953 + R2 + + R3 + 1954 +---+---+ +--+---+ 1955 eth2/2 | | eth3/2 1956 | | 1957 ---------------+----------+------------------- 1958 | | 1959 | | 1960 +--------+--+ +---+--------+ 1961 + Receiver1 + + Receiver2 + 1962 +-----------+ +------------+ 1964 The configuration data for R1 in the above figure could be as follows: 1966 { 1967 "ietf-interfaces:interfaces":{ 1968 "interface":[ 1969 { 1970 "name":"eth1/1", 1971 "type":"iana-if-type:ethernetCsmacd" 1972 } 1973 ] 1974 }, 1975 "ietf-routing:routing":{ 1976 "control-plane-protocols":{ 1977 "control-plane-protocol":[ 1978 { 1979 "type":"ietf-igmp-mld-snooping:igmp-snooping", 1980 "name":"bis1", 1981 "ietf-igmp-mld-snooping:igmp-snooping-instance":{ 1982 "l2-service-type":"ietf-igmp-mld-snooping:bridge", 1983 "enable":true 1984 } 1985 } 1986 ] 1987 } 1988 }, 1989 "ieee802-dot1q-bridge:bridges":{ 1990 "bridge":[ 1991 { 1992 "name":"isp1", 1993 "address":"00-23-ef-a5-77-12", 1994 "bridge-type":"ieee802-dot1q-bridge:customer-vlan-bridge", 1995 "component":[ 1996 { 1997 "name":"comp1", 1998 "type":"ieee802-dot1q-bridge:c-vlan-component", 1999 "bridge-vlan":{ 2000 "vlan":[ 2001 { 2002 "vid":101, 2003 "ietf-igmp-mld-snooping:igmp-snooping-instance":"bis1" 2004 } 2005 ] 2006 } 2007 } 2008 ] 2009 } 2010 ] 2011 } 2012 } 2014 The corresponding operational state data for R1 could be as follows: 2016 { 2017 "ietf-interfaces:interfaces": { 2018 "interface": [ 2019 { 2020 "name": "eth1/1", 2021 "type": "iana-if-type:ethernetCsmacd", 2022 "oper-status": "up", 2023 "statistics": { 2024 "discontinuity-time": "2018-05-23T12:34:56-05:00" 2025 } 2026 } 2027 ] 2028 }, 2029 "ietf-routing:routing": { 2030 "control-plane-protocols": { 2031 "control-plane-protocol": [ 2032 { 2033 "type": "ietf-igmp-mld-snooping:igmp-snooping", 2034 "name": "bis1", 2035 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 2036 "l2-service-type": "ietf-igmp-mld-snooping:bridge", 2037 "enable": true 2038 } 2039 } 2040 ] 2041 } 2042 }, 2043 "ieee802-dot1q-bridge:bridges": { 2044 "bridge": [ 2045 { 2046 "name": "isp1", 2047 "address": "00-23-ef-a5-77-12", 2048 "bridge-type": "ieee802-dot1q-bridge:customer-vlan-bridge", 2049 "component": [ 2050 { 2051 "name": "comp1", 2052 "type": "ieee802-dot1q-bridge:c-vlan-component", 2053 "bridge-vlan": { 2054 "vlan": [ 2055 { 2056 "vid": 101, 2057 "ietf-igmp-mld-snooping:igmp-snooping-instance": "bis1" 2058 } 2059 ] 2060 } 2061 } 2062 ] 2063 } 2064 ] 2065 } 2066 } 2067 The following action is to clear all the entries whose group address is 2068 225.1.1.1 for igmp-snooping-instance bis1. 2070 POST /restconf/operations/ietf-routing:routing/control-plane-protocols/\ 2071 control-plane-protocol=ietf-igmp-mld-snooping:igmp-snooping,bis1/\ 2072 ietf-igmp-mld-snooping:igmp-snooping-instance/\ 2073 clear-igmp-snooping-groups HTTP/1.1 2074 Host: example.com 2075 Content-Type: application/yang-data+json 2077 { 2078 "ietf-igmp-mld-snooping:input" : { 2079 "group": "225.1.1.1", 2080 "source": "*" 2081 } 2082 } 2083 A.2 L2VPN service 2085 This section contains an example for L2VPN service in the JSON encoding 2086 [RFC7951], containing both configuration and state data. 2088 +-----------+ 2089 + Source + 2090 +-----+-----+ 2091 | 2092 -----------------+---------------------------- 2093 |eth1/1 2094 +---+---+ 2095 + R1 + 2096 +-+---+-+ 2097 eth1/2 | \ eth1/3 2098 | \ 2099 | \ 2100 | \ 2101 | \ 2102 eth2/1 | \ eth3/1 2103 +---+---+ +-+---+ 2104 + R2 +----+ R3 + 2105 +---+---+ +-+---+ 2106 eth2/2 | | eth3/2 2107 | | 2108 ---------------+----------+------------------- 2109 | | 2110 | | 2111 +--------+--+ +---+--------+ 2112 + Receiver1 + + Receiver2 + 2113 +-----------+ +------------+ 2115 The configuration data for R1 in the above figure could be as follows: 2116 { 2117 "ietf-interfaces:interfaces":{ 2118 "interface":[ 2119 { 2120 "name":"eth1/1", 2121 "type":"iana-if-type:ethernetCsmacd" 2122 } 2123 ] 2124 }, 2125 "ietf-pseudowires:pseudowires": { 2126 "pseudowire": [ 2127 { 2128 "name": "pw2" 2129 }, 2130 { 2131 "name": "pw3" 2133 } 2134 ] 2135 }, 2136 "ietf-network-instance:network-instances": { 2137 "network-instance": [ 2138 { 2139 "name": "vpls1", 2140 "ietf-igmp-mld-snooping:igmp-snooping-instance": "vis1", 2141 "ietf-l2vpn:type": "ietf-l2vpn:vpls-instance-type", 2142 "ietf-l2vpn:signaling-type": "ietf-l2vpn:ldp-signaling", 2143 "ietf-l2vpn:endpoint": [ 2144 { 2145 "name": "acs", 2146 "ac": [ 2147 { 2148 "name": "eth1/1" 2149 } 2150 ] 2151 }, 2152 { 2153 "name": "pws", 2154 "pw": [ 2155 { 2156 "name": "pw2" 2157 }, 2158 { 2159 "name": "pw3" 2160 } 2161 ] 2162 } 2163 ] 2164 } 2165 ] 2166 }, 2167 "ietf-routing:routing": { 2168 "control-plane-protocols": { 2169 "control-plane-protocol": [ 2170 { 2171 "type": "ietf-igmp-mld-snooping:igmp-snooping", 2172 "name": "vis1", 2173 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 2174 "l2-service-type": "ietf-igmp-mld-snooping:l2vpn", 2175 "enable": true 2176 } 2177 } 2178 ] 2179 } 2180 } 2181 } 2182 The corresponding operational state data for R1 could be as follows: 2184 { 2185 "ietf-interfaces:interfaces":{ 2186 "interface":[ 2187 { 2188 "name":"eth1/1", 2189 "type":"iana-if-type:ethernetCsmacd", 2190 "oper-status": "up", 2191 "statistics": { 2192 "discontinuity-time": "2018-05-23T12:34:56-05:00" 2193 } 2194 } 2195 ] 2196 }, 2197 "ietf-pseudowires:pseudowires": { 2198 "pseudowire": [ 2199 { 2200 "name": "pw2" 2201 }, 2202 { 2203 "name": "pw3" 2204 } 2205 ] 2206 }, 2207 "ietf-network-instance:network-instances": { 2208 "network-instance": [ 2209 { 2210 "name": "vpls1", 2211 "ietf-igmp-mld-snooping:igmp-snooping-instance": "vis1", 2212 "ietf-l2vpn:type": "ietf-l2vpn:vpls-instance-type", 2213 "ietf-l2vpn:signaling-type": "ietf-l2vpn:ldp-signaling", 2214 "ietf-l2vpn:endpoint": [ 2215 { 2216 "name": "acs", 2217 "ac": [ 2218 { 2219 "name": "eth1/1" 2220 } 2221 ] 2222 }, 2223 { 2224 "name": "pws", 2225 "pw": [ 2226 { 2227 "name": "pw2" 2228 }, 2229 { 2230 "name": "pw3" 2231 } 2232 ] 2233 } 2235 ] 2236 } 2237 ] 2238 }, 2239 "ietf-routing:routing": { 2240 "control-plane-protocols": { 2241 "control-plane-protocol": [ 2242 { 2243 "type": "ietf-igmp-mld-snooping:igmp-snooping", 2244 "name": "vis1", 2245 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 2246 "l2-service-type": "ietf-igmp-mld-snooping:l2vpn", 2247 "enable": true 2248 } 2249 } 2250 ] 2251 } 2252 } 2253 } 2254 Authors' Addresses 2256 Hongji Zhao 2257 Ericsson (China) Communications Company Ltd. 2258 Ericsson Tower, No. 5 Lize East Street, 2259 Chaoyang District Beijing 100102, P.R. China 2261 Email: hongji.zhao@ericsson.com 2263 Xufeng Liu 2264 Volta Networks 2265 USA 2267 EMail: xufeng.liu.ietf@gmail.com 2269 Yisong Liu 2270 China Mobile 2271 China 2273 Email: liuyisong@chinamobile.com 2275 Anish Peter 2276 Individual 2278 EMail: anish.ietf@gmail.com 2280 Mahesh Sivakumar 2281 Juniper Networks 2282 1133 Innovation Way 2283 Sunnyvale, California 2284 USA 2286 EMail: sivakumar.mahesh@gmail.com