idnits 2.17.1 draft-ietf-pim-igmp-mld-snooping-yang-17.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 376 has weird spacing: '...er-mode fil...' == Line 489 has weird spacing: '...er-mode fil...' == Line 555 has weird spacing: '... source rt-...' == Line 563 has weird spacing: '... source rt-...' -- The document date (July 08, 2020) is 1388 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 Summary: 1 error (**), 0 flaws (~~), 5 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: January 07, 2021 Volta Networks 5 Y. Liu 6 China Mobile 7 M. Sivakumar 8 Juniper 9 A. Peter 10 Individual 12 July 08, 2020 14 A Yang Data Model for IGMP and MLD Snooping 15 draft-ietf-pim-igmp-mld-snooping-yang-17.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 January 07, 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.......................................33 79 6. IANA Considerations...........................................35 80 7. References....................................................36 81 7.1. Normative References.....................................36 82 7.2. Informative References...................................38 83 Appendix A. Data Tree Example...................................39 84 A.1 Bridge scenario...........................................39 85 A.2 L2VPN scenario............................................42 86 Authors' Addresses...............................................46 88 1. Introduction 90 This document defines a YANG [RFC7950] data model for the management of 91 Internet Group Management Protocol (IGMP) and Multicast Listener 92 Discovery (MLD) Snooping [RFC4541] devices. 94 The YANG module in this document conforms to the Network Management 95 Datastore Architecture defined in [RFC8342]. The "Network Management 96 Datastore Architecture" (NMDA) adds the ability to inspect the current 97 operational values for configuration, allowing clients to use identical 98 paths for retrieving the configured values and the operational values. 100 1.1. Terminology 102 The terminology for describing YANG data models is found in [RFC6020] 104 and [RFC7950], including: 106 * augment 108 * data model 110 * data node 112 * identity 114 * module 116 The following terminologies are used in this document: 118 * mrouter: multicast router, which means nodes attached to a switch 119 have multicast routing enabled [RFC4286]. 121 * mrouter interfaces: snooping switch ports where multicast routers 122 are attached [RFC4541]. 124 The following abbreviations are used in this document and defined model: 126 IGMP: Internet Group Management Protocol [RFC3376]. 128 MLD: Multicast Listener Discovery [RFC3810]. 130 AC: Attachment Circuit [RFC3916]. 132 PW: Pseudo Wire [RFC3916]. 134 1.2. Tree Diagrams 136 Tree diagrams used in this document follow the notation defined in 138 [RFC8340]. 140 1.3. Prefixes in Data Node Names 142 In this document, names of data nodes, actions, and other data model 143 objects are often used without a prefix, as long as it is clear from the 144 context in which YANG module each name is defined. Otherwise, names are 145 prefixed using the standard prefix associated with the corresponding 146 YANG module, as shown in Table 1. 148 +----------+-----------------------+---------------------------------+ 149 | Prefix | YANG module | Reference | 150 +==========+=======================+=================================+ 151 | inet | ietf-inet-types | [RFC6991] | 152 +----------+-----------------------+---------------------------------+ 153 | yang | ietf-yang-types | [RFC6991] | 154 +----------+-----------------------+---------------------------------+ 155 | if | ietf-interfaces | [RFC8343] | 156 +----------+-----------------------+---------------------------------+ 157 | rt | ietf-routing | [RFC8349] | 158 +----------+-----------------------+---------------------------------+ 159 | rt-types | ietf-routing-types | [RFC8294] | 160 +----------+-----------------------+---------------------------------+ 161 | ni | ietf-network-instance | [RFC8529] | 162 +----------+-----------------------+---------------------------------+ 163 | pw | ietf-pseudowires | [draft-ietf-bess-l2vpn-yang] | 164 +----------+-----------------------+---------------------------------+ 165 | l2vpn | ietf-l2vpn | [draft-ietf-bess-l2vpn-yang] | 166 +----------+-----------------------+---------------------------------+ 167 | dot1q | ieee802-dot1q-bridge | [dot1Qcp] | 168 +----------+-----------------------+---------------------------------+ 169 Table 1: Prefixes and Corresponding YANG Modules 171 2. Design of Data Model 173 An IGMP/MLD snooping switch [RFC4541] analyzes IGMP/MLD packets and sets 174 up forwarding tables for multicast traffic. If a switch does not run 175 IGMP/MLD snooping, multicast traffic will be flooded in the broadcast 176 domain. If a switch runs IGMP/MLD snooping, multicast traffic will be 177 forwarded based on the forwarding tables to avoid wasting bandwidth. The 178 IGMP/MLD snooping switch does not need to run any of the IGMP/MLD 179 protocols. Because the IGMP/MLD snooping is independent of the IGMP/MLD 180 protocols, the data model defined in this document does not augment, or 181 even require, the IGMP/MLD data model defined in [RFC8652]. 182 The model covers considerations for Internet Group Management Protocol 183 (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches 184 [RFC4541]. 186 IGMP and MLD snooping switches do not adhere to the conceptual model 187 that provides the strict separation of functionality between different 188 communications layers in the ISO model, and instead utilize information 189 in the upper level protocol headers as factors to be considered in 190 processing at the lower levels [RFC4541]. 192 IGMP Snooping switches utilize IGMP, and could support IGMPv1 [RFC1112], 193 IGMPv2 [RFC2236], and IGMPv3 [RFC3376]. MLD Snooping switches utilize 194 MLD, and could support MLDv1 [RFC2710] and MLDv2 [RFC3810]. The goal of 195 this document is to define a data model that provides a common user 196 interface to IGMP and MLD Snooping. 198 2.1. Overview 200 The IGMP and MLD Snooping YANG module defined in this document has all 201 the common building blocks for the IGMP and MLD Snooping switches. 203 The YANG module includes IGMP and MLD Snooping instance definition, 204 using instance in the scenario of BRIDGE [dot1Qcp] and L2VPN [draft- 205 ietf-bess-l2vpn-yang]. The module also includes actions for clearing 206 IGMP and MLD Snooping group tables. 208 2.2. Optional Capabilities 210 This model is designed to represent the basic capability subsets of IGMP 211 and MLD Snooping. The main design goals of this document are that the 212 basic capabilities described in the model are supported by any major 213 now-existing implementation, and that the configuration of all 214 implementations meeting the specifications is easy to express through 215 some combination of the optional features in the model and simple vendor 216 augmentations. 218 There is also value in widely supported features being standardized, to 219 provide a standardized way to access these features, to save work for 220 individual vendors, and so that mapping between different vendors' 221 configuration is not needlessly complicated. Therefore, this model 222 declares a number of features representing capabilities that not all 223 deployed devices support. 225 The extensive use of feature declarations should also substantially 226 simplify the capability negotiation process for a vendor's IGMP and MLD 227 Snooping implementations. 229 On the other hand, operational state parameters are not so widely 230 designated as features, as there are many cases where the defaulting 231 of an operational state parameter would not cause any harm to the 232 system, and it is much more likely that an implementation without 233 native support for a piece of operational state would be able to derive 234 a suitable value for a state variable that is not natively supported. 236 2.3. Position of Address Family in Hierarchy 238 IGMP Snooping only supports IPv4, while MLD Snooping only supports IPv6. 239 The data model defined in this document can be used for both IPv4 and 240 IPv6 address families. 242 This document defines IGMP Snooping and MLD Snooping as separate schema 243 branches in the structure. The benefits are: 245 * The model can support IGMP Snooping (IPv4), MLD Snooping (IPv6), or 246 both optionally and independently. Such flexibility cannot be achieved 247 cleanly with a combined branch. 249 * The structure is consistent with other YANG data models such as 250 [RFC8652], which uses separate branches for IPv4 and IPv6. 252 * The separate branches for IGMP Snooping and MLD Snooping can 253 accommodate their differences better and cleaner. The two branches can 254 better support different features and node types. 256 3. Module Structure 258 This model augments the core routing data model specified in [RFC8349]. 260 +--rw routing 261 +--rw router-id? 262 +--rw control-plane-protocols 263 | +--rw control-plane-protocol* [type name] 264 | +--rw type 265 | +--rw name 266 | +--rw igmp-snooping-instance <= Augmented by this Model 267 ... 268 | +--rw mld-snooping-instance <= Augmented by this Model 269 ... 270 The "igmp-snooping-instance" container instantiates an IGMP Snooping 271 Instance. The "mld-snooping-instance" container instantiates an MLD 272 Snooping Instance. 274 The YANG data model defined in this document conforms to the Network 275 Management Datastore Architecture (NMDA) [RFC8342]. The operational 276 state data is combined with the associated configuration data in the 277 same hierarchy [RFC8407]. 279 A configuration data node is marked as mandatory only when its value 280 must be provided by the user. Where nodes are not essential to protocol 281 operation, they are marked as optional. Some other nodes are essential 282 but have a default specified, so that they are also optional and need 283 not be configured explicitly. 285 3.1. IGMP Snooping Instances 287 The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- 288 plane-protocols/rt:control-plane-protocol to add the igmp-snooping- 289 instance container. 291 All the IGMP Snooping related attributes have been defined in the igmp- 292 snooping-instance. The read-write attributes represent configurable 293 data. The read-only attributes represent state data. 295 One igmp-snooping-instance could be used in one BRIDGE [dot1Qcp] 296 instance or L2VPN [draft-ietf-bess-l2vpn-yang] instance. One igmp- 297 snooping-instance corresponds to one BRIDGE instance or one L2VPN 298 instance. 300 The value of scenario in igmp-snooping-instance is bridge or l2vpn. When 301 it is bridge, igmp-snooping-instance will be used in the BRIDGE 302 scenario. When it is l2vpn, igmp-snooping-instance will be used in the 303 L2VPN scenario. 305 The values of bridge-mrouter-interface, l2vpn-mrouter-interface-ac, 306 l2vpn-mrouter-interface-pw are filled by the snooping device 307 dynamically. They are different from static-bridge-mrouter-interface, 308 static-l2vpn-mrouter-interface-ac, and static-l2vpn-mrouter-interface-pw 309 which are configured. 311 The attributes under the interfaces show the statistics of IGMP Snooping 312 related packets. 314 augment /rt:routing/rt:control-plane-protocols 315 /rt:control-plane-protocol: 316 +--rw igmp-snooping-instance {igmp-snooping}? 317 +--rw scenario? 318 | snooping-scenario-type 319 +--rw enable? boolean 320 +--rw forwarding-table-type? enumeration 321 +--rw explicit-tracking? boolean 322 | {explicit-tracking}? 323 +--rw exclude-lite? boolean 324 | {exclude-lite}? 325 +--rw send-query? boolean 326 +--rw immediate-leave? empty 327 | {immediate-leave}? 328 +--rw last-member-query-interval? uint16 329 +--rw query-interval? uint16 330 +--rw query-max-response-time? uint16 331 +--rw require-router-alert? boolean 332 | {require-router-alert}? 333 +--rw robustness-variable? uint8 334 +--rw static-bridge-mrouter-interface* if:interface-ref 335 | {static-mrouter-interface}? 336 +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref 337 | {static-mrouter-interface}? 338 +--rw static-l2vpn-mrouter-interface-pw* pw:pseudowire-ref 339 | {static-mrouter-interface}? 340 +--rw igmp-version? uint8 341 +--rw querier-source? inet:ipv4-address 342 +--rw static-l2-multicast-group* [group source-addr] 343 | {static-l2-multicast-group}? 344 | +--rw group 345 | | rt-types:ipv4-multicast-group-address 346 | +--rw source-addr 347 | | rt-types:ipv4-multicast-source-address 348 | +--rw bridge-outgoing-interface* if:interface-ref 349 | +--rw l2vpn-outgoing-ac* if:interface-ref 350 | +--rw l2vpn-outgoing-pw* pw:pseudowire-ref 351 +--ro entries-count? uint32 352 +--ro bridge-mrouter-interface* if:interface-ref 353 +--ro l2vpn-mrouter-interface-ac* if:interface-ref 354 +--ro l2vpn-mrouter-interface-pw* pw:pseudowire-ref 355 +--ro group* [address] 356 | +--ro address 357 | | rt-types:ipv4-multicast-group-address 358 | +--ro mac-address? yang:phys-address 359 | +--ro expire? rt-types:timer-value-seconds16 360 | +--ro up-time uint32 361 | +--ro last-reporter? inet:ipv4-address 362 | +--ro source* [address] 363 | +--ro address 364 | | rt-types:ipv4-multicast-source-address 365 | +--ro bridge-outgoing-interface* if:interface-ref 366 | +--ro l2vpn-outgoing-ac* if:interface-ref 367 | +--ro l2vpn-outgoing-pw* pw:pseudowire-ref 368 | +--ro up-time uint32 369 | +--ro expire? 370 | | rt-types:timer-value-seconds16 371 | +--ro host-count? uint32 372 | | {explicit-tracking}? 373 | +--ro last-reporter? inet:ipv4-address 374 | +--ro host* [host-address] {explicit-tracking}? 375 | +--ro host-address inet:ipv4-address 376 | +--ro host-filter-mode filter-mode-type 377 +--ro interfaces 378 +--ro interface* [name] 379 +--ro name if:interface-ref 380 +--ro statistics 381 +--ro received 382 | +--ro num-query? yang:counter64 383 | +--ro num-membership-report-v1? yang:counter64 384 | +--ro num-membership-report-v2? yang:counter64 385 | +--ro num-membership-report-v3? yang:counter64 386 | +--ro num-leave? yang:counter64 387 | +--ro num-pim-hello? yang:counter64 388 +--ro sent 389 +--ro num-query? yang:counter64 390 +--ro num-membership-report-v1? yang:counter64 391 +--ro num-membership-report-v2? yang:counter64 392 +--ro num-membership-report-v3? yang:counter64 393 +--ro num-leave? yang:counter64 394 +--ro num-pim-hello? yang:counter64 396 3.2. MLD Snooping Instances 398 The YANG module ietf-igmp-mld-snooping augments /rt:routing/rt:control- 399 plane-protocols/rt:control-plane-protocol to add the mld-snooping- 400 instance container. The mld-snooping-instance could be used in the 401 BRIDGE [dot1Qcp] or L2VPN [draft-ietf-bess-l2vpn-yang] scenario to 402 enable MLD Snooping. 404 All the MLD Snooping related attributes have been defined in the mld- 405 snooping-instance. The read-write attributes represent configurable 406 data. The read-only attributes represent state data. 408 The mld-snooping-instance is the same as IGMP snooping except changing 409 IPv4 addresses to IPv6 addresses. One mld-snooping-instance could be 410 used in one BRIDGE instance or L2VPN instance. One mld-snooping-instance 411 corresponds to one BRIDGE instance or L2VPN instance. 413 The value of scenario in mld-snooping-instance is bridge or l2vpn. When 414 it is bridge, mld-snooping-instance will be used in the BRIDGE scenario. 415 When it is l2vpn, mld-snooping-instance will be used in the L2VPN 416 scenario. 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 scenario? 431 | snooping-scenario-type 432 +--rw enable? boolean 433 +--rw forwarding-table-type? enumeration 434 +--rw explicit-tracking? boolean 435 | {explicit-tracking}? 436 +--rw exclude-lite? boolean 437 | {exclude-lite}? 438 +--rw send-query? boolean 439 +--rw immediate-leave? empty 440 | {immediate-leave}? 441 +--rw last-member-query-interval? uint16 442 +--rw query-interval? uint16 443 +--rw query-max-response-time? uint16 444 +--rw require-router-alert? boolean 445 | {require-router-alert}? 446 +--rw robustness-variable? uint8 447 +--rw static-bridge-mrouter-interface* if:interface-ref 448 | {static-mrouter-interface}? 449 +--rw static-l2vpn-mrouter-interface-ac* if:interface-ref 450 | {static-mrouter-interface}? 451 +--rw static-l2vpn-mrouter-interface-pw* pw:pseudowire-ref 452 | {static-mrouter-interface}? 453 +--rw mld-version? uint8 454 +--rw querier-source? inet:ipv6-address 455 +--rw static-l2-multicast-group* [group source-addr] 456 | {static-l2-multicast-group}? 457 | +--rw group 458 | | rt-types:ipv6-multicast-group-address 459 | +--rw source-addr 460 | | rt-types:ipv6-multicast-source-address 461 | +--rw bridge-outgoing-interface* if:interface-ref 462 | +--rw l2vpn-outgoing-ac* if:interface-ref 463 | +--rw l2vpn-outgoing-pw* pw:pseudowire-ref 464 +--ro entries-count? uint32 465 +--ro bridge-mrouter-interface* if:interface-ref 466 +--ro l2vpn-mrouter-interface-ac* if:interface-ref 467 +--ro l2vpn-mrouter-interface-pw* pw:pseudowire-ref 468 +--ro group* [address] 469 | +--ro address 470 | | rt-types:ipv6-multicast-group-address 471 | +--ro mac-address? yang:phys-address 472 | +--ro expire? rt-types:timer-value-seconds16 473 | +--ro up-time uint32 474 | +--ro last-reporter? inet:ipv6-address 475 | +--ro source* [address] 476 | +--ro address 477 | | rt-types:ipv6-multicast-source-address 478 | +--ro bridge-outgoing-interface* if:interface-ref 479 | +--ro l2vpn-outgoing-ac* if:interface-ref 480 | +--ro l2vpn-outgoing-pw* pw:pseudowire-ref 481 | +--ro up-time uint32 482 | +--ro expire? 483 | | rt-types:timer-value-seconds16 484 | +--ro host-count? uint32 485 | | {explicit-tracking}? 486 | +--ro last-reporter? inet:ipv6-address 487 | +--ro host* [host-address] {explicit-tracking}? 488 | +--ro host-address inet:ipv6-address 489 | +--ro host-filter-mode filter-mode-type 490 +--ro interfaces 491 +--ro interface* [name] 492 +--ro name if:interface-ref 493 +--ro statistics 494 +--ro received 495 | +--ro num-query? yang:counter64 496 | +--ro num-report-v1? yang:counter64 497 | +--ro num-report-v2? yang:counter64 498 | +--ro num-done? yang:counter64 499 | +--ro num-pim-hello? yang:counter64 500 +--ro sent 501 +--ro num-query? yang:counter64 502 +--ro num-report-v1? yang:counter64 503 +--ro num-report-v2? yang:counter64 504 +--ro num-done? yang:counter64 505 +--ro num-pim-hello? yang:counter64 507 3.3. Using IGMP and MLD Snooping Instances 509 The igmp-snooping-instance could be used in the scenario of BRIDGE 510 [dot1Qcp] or L2VPN [draft-ietf-bess-l2vpn-yang] to configure the IGMP 511 Snooping. 513 For the BRIDGE scenario 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 scenario 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-06-19.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 } 584 import ietf-yang-types { 585 prefix "yang"; 586 reference 587 "RFC 6991: Common YANG Data Types"; 588 } 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 } 635 organization 636 "IETF PIM Working Group"; 638 contact 639 "WG Web: 640 WG List: 642 Editors: Hongji Zhao 643 645 Xufeng Liu 646 648 Yisong Liu 649 651 Anish Peter 652 654 Mahesh Sivakumar 655 657 "; 659 description 660 "The module defines a collection of YANG definitions common for 661 all devices that implement Internet Group Management Protocol 662 (IGMP) and Multicast Listener Discovery (MLD) Snooping which is 663 described in RFC 4541. 665 Copyright (c) 2020 IETF Trust and the persons identified as 666 authors of the code. All rights reserved. 668 Redistribution and use in source and binary forms, with or 669 without modification, is permitted pursuant to, and subject to 670 the license terms contained in, the Simplified BSD License set 671 forth in Section 4.c of the IETF Trust's Legal Provisions 672 Relating to IETF Documents 673 (http://trustee.ietf.org/license-info). 675 This version of this YANG module is part of RFC XXXX; see the 676 RFC itself for full legal notices."; 678 revision 2020-06-19 { 679 description 680 "Initial revision."; 681 reference 682 "RFC XXXX: A YANG Data Model for IGMP and MLD Snooping"; 683 } 685 /* 686 * Features 687 */ 689 feature igmp-snooping { 690 description 691 "Support IGMP snooping."; 692 reference 693 "RFC 4541"; 694 } 696 feature mld-snooping { 697 description 698 "Support MLD snooping."; 699 reference 700 "RFC 4541"; 701 } 703 feature immediate-leave { 704 description 705 "Support configuration of fast leave. The fast leave feature 706 does not send last member query messages to hosts."; 707 reference 708 "RFC 3376"; 709 } 711 feature static-l2-multicast-group { 712 description 713 "Support configuration of L2 multicast static-group."; 714 } 716 feature static-mrouter-interface { 717 description 718 "Support multicast router interface explicitly configured 719 by management"; 720 reference 721 "RFC 4541"; 722 } 724 feature action-clear-groups { 725 description 726 "Support clearing statistics by action for IGMP & MLD snooping."; 727 } 729 feature require-router-alert { 730 description 731 "Support configuration of require-router-alert."; 732 reference 733 "RFC 3376"; 734 } 736 feature exclude-lite { 737 description 738 "Support configuration of per instance exclude-lite."; 739 reference 740 "RFC 5790"; 741 } 742 feature explicit-tracking { 743 description 744 "Support configuration of per instance explicit-tracking."; 745 reference 746 "RFC 6636"; 747 } 749 /* identities */ 751 identity scenario-type { 752 description 753 "Base identity for scenario type in IGMP & MLD snooping"; 754 } 756 identity bridge { 757 base scenario-type; 758 description 759 "This identity represents BRIDGE scenario."; 760 } 762 identity l2vpn { 763 base scenario-type; 764 description 765 "This identity represents L2VPN scenario."; 766 } 768 identity filter-mode { 769 description 770 "Base identity for filter mode in IGMP & MLD snooping"; 771 } 773 identity include { 774 base filter-mode; 775 description 776 "This identity represents include mode."; 777 } 779 identity exclude { 780 base filter-mode; 781 description 782 "This identity represents exclude mode."; 783 } 785 identity igmp-snooping { 786 base rt:control-plane-protocol; 787 description 788 "IGMP snooping"; 789 } 791 identity mld-snooping { 792 base rt:control-plane-protocol; 793 description 794 "MLD snooping"; 795 } 797 /* 798 * Typedefs 799 */ 801 typedef snooping-scenario-type { 802 type identityref { 803 base "scenario-type"; 804 } 805 description "The IGMP & MLD snooping scenario type"; 806 } 808 typedef filter-mode-type { 809 type identityref { 810 base "filter-mode"; 811 } 812 description "The host filter mode"; 813 } 815 typedef igmp-mld-snooping-instance-ref { 816 type leafref { 817 path "/rt:routing/rt:control-plane-protocols"+ 818 "/rt:control-plane-protocol/rt:name"; 819 } 820 description 821 "This type is used by data models which need to 822 reference IGMP & MLD snooping instance."; 823 } 825 /* 826 * Groupings 827 */ 829 grouping instance-config-attributes-igmp-mld-snooping { 830 description 831 "IGMP and MLD snooping configuration of each VLAN."; 833 leaf enable { 834 type boolean; 835 default false; 836 description 837 "Set the value to true to enable IGMP & MLD snooping."; 838 } 840 leaf forwarding-table-type { 841 type enumeration { 842 enum "mac" { 843 description 844 "MAC-based lookup mode"; 846 } 847 enum "ip" { 848 description 849 "IP-based lookup mode"; 850 } 851 } 852 default "ip"; 853 description "The default forwarding table type is ip"; 854 } 856 leaf explicit-tracking { 857 if-feature explicit-tracking; 858 type boolean; 859 default false; 860 description 861 "Track the IGMPv3 and MLDv2 snooping membership reports 862 from individual hosts. It contributes to saving network 863 resources and shortening leave latency."; 864 } 866 leaf exclude-lite { 867 if-feature exclude-lite; 868 type boolean; 869 default false; 870 description 871 "Track the Lightweight IGMPv3 and MLDv2 protocol report"; 872 reference "RFC 5790"; 873 } 875 leaf send-query { 876 type boolean; 877 default false; 878 description 879 "Enable quick response for topology changes. 880 To support IGMP snooping in a VLAN where PIM and IGMP are 881 not configured. It cooperates with parameter querier-source."; 882 } 884 leaf immediate-leave { 885 if-feature immediate-leave; 886 type empty; 887 description 888 "When immediate leave is enabled, the IGMP software assumes 889 that no more than one host is present on each VLAN port."; 890 } 892 leaf last-member-query-interval { 893 type uint16 { 894 range "10..10230"; 895 } 896 units one-tenth-second; 897 default 10; 898 description 899 "Last Member Query Interval, which may be tuned to modify 900 the leave latency of the network. 901 It is represented in units of 1/10 second."; 902 reference "RFC 3376. Sec. 8.8."; 903 } 905 leaf query-interval { 906 type uint16; 907 units seconds; 908 default 125; 909 description 910 "The Query Interval is the interval between General Queries 911 sent by the Querier."; 912 reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; 913 } 915 leaf query-max-response-time { 916 type uint16; 917 units one-tenth-second; 918 default 100; 919 description 920 "Query maximum response time specifies the maximum time 921 allowed before sending a responding report. 922 It is represented in units of 1/10 second."; 923 reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; 924 } 926 leaf require-router-alert { 927 if-feature require-router-alert; 928 type boolean; 929 default false; 930 description 931 "When the value is true, router alert should exist 932 in the IP header of IGMP or MLD packet."; 933 } 935 leaf robustness-variable { 936 type uint8 { 937 range "1..7"; 938 } 939 default 2; 940 description 941 "Querier's Robustness Variable allows tuning for the 942 expected packet loss on a network."; 943 reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; 944 } 946 leaf-list static-bridge-mrouter-interface { 947 when 'derived-from-or-self(../scenario,"ims:bridge")'; 948 if-feature static-mrouter-interface; 949 type if:interface-ref; 950 description "static mrouter interface in BRIDGE forwarding"; 951 } 953 leaf-list static-l2vpn-mrouter-interface-ac { 954 when 'derived-from-or-self(../scenario,"ims:l2vpn")'; 955 if-feature static-mrouter-interface; 956 type if:interface-ref; 957 description 958 "static mrouter interface whose type is interface 959 in L2VPN forwarding"; 960 } 962 leaf-list static-l2vpn-mrouter-interface-pw { 963 when 'derived-from-or-self(../scenario,"ims:l2vpn")'; 964 if-feature static-mrouter-interface; 965 type pw:pseudowire-ref; 966 description 967 "static mrouter interface whose type is PW 968 in L2VPN forwarding"; 969 } 970 } // instance-config-attributes-igmp-mld-snooping 972 grouping instance-state-group-attributes-igmp-mld-snooping { 973 description 974 "Attributes for both IGMP and MLD snooping groups."; 976 leaf mac-address { 977 type yang:phys-address; 978 description "Destination MAC address for L2 multicast."; 979 } 981 leaf expire { 982 type rt-types:timer-value-seconds16; 983 units seconds; 984 description 985 "The time left before multicast group timeout."; 986 } 988 leaf up-time { 989 type uint32; 990 units seconds; 991 mandatory true; 992 description 993 "The time elapsed since L2 multicast record created."; 994 } 995 } // instance-state-group-attributes-igmp-mld-snooping 997 grouping instance-state-attributes-igmp-mld-snooping { 999 description 1000 "State attributes for IGMP & MLD snooping instance."; 1002 leaf entries-count { 1003 type uint32; 1004 config false; 1005 description 1006 "The number of L2 multicast entries in IGMP & MLD snooping"; 1007 } 1009 leaf-list bridge-mrouter-interface { 1010 when 'derived-from-or-self(../scenario,"ims:bridge")'; 1011 type if:interface-ref; 1012 config false; 1013 description 1014 "The mrouter interface in BRIDGE forwarding. When switch 1015 receives IGMP/MLD queries from multicast router on an 1016 interface, this interface will become mrouter interface 1017 for IGMP/MLD snooping."; 1018 } 1020 leaf-list l2vpn-mrouter-interface-ac { 1021 when 'derived-from-or-self(../scenario,"ims:l2vpn")'; 1022 type if:interface-ref; 1023 config false; 1024 description 1025 "The mrouter interface whose type is interface in L2VPN 1026 forwarding. When switch receives IGMP/MLD queries from 1027 multicast router on an interface, this interface will 1028 become mrouter interface for IGMP/MLD snooping."; 1029 } 1031 leaf-list l2vpn-mrouter-interface-pw { 1032 when 'derived-from-or-self(../scenario,"ims:l2vpn")'; 1033 type pw:pseudowire-ref; 1034 config false; 1035 description 1036 "The mrouter interface whose type is PW in L2VPN forwarding. 1037 When switch receives IGMP/MLD queries from multicast router 1038 on a PW, this PW will become mrouter interface for IGMP/MLD 1039 snooping."; 1040 } 1041 } // instance-config-attributes-igmp-mld-snooping 1043 grouping instance-state-source-attributes-igmp-mld-snooping { 1044 description 1045 "State attributes for IGMP & MLD snooping instance."; 1047 leaf-list bridge-outgoing-interface { 1048 when 'derived-from-or-self(../../../scenario,"ims:bridge")'; 1049 type if:interface-ref; 1050 description "Outgoing interface in BRIDGE forwarding"; 1051 } 1052 leaf-list l2vpn-outgoing-ac { 1053 when 'derived-from-or-self(../../../scenario,"ims:l2vpn")'; 1054 type if:interface-ref; 1055 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1056 } 1058 leaf-list l2vpn-outgoing-pw { 1059 when 'derived-from-or-self(../../../scenario,"ims:l2vpn")'; 1060 type pw:pseudowire-ref; 1061 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1062 } 1064 leaf up-time { 1065 type uint32; 1066 units seconds; 1067 mandatory true; 1068 description 1069 "The time elapsed since L2 multicast record created"; 1070 } 1072 leaf expire { 1073 type rt-types:timer-value-seconds16; 1074 units seconds; 1075 description 1076 "The time left before multicast group timeout."; 1077 } 1079 leaf host-count { 1080 if-feature explicit-tracking; 1081 type uint32; 1082 description 1083 "The number of host addresses."; 1084 } 1085 } // instance-state-source-attributes-igmp-mld-snooping 1087 grouping igmp-snooping-statistics { 1088 description 1089 "The statistics attributes for IGMP snooping."; 1091 leaf num-query { 1092 type yang:counter64; 1093 description 1094 "The number of Membership Query messages."; 1095 reference 1096 "RFC 2236"; 1097 } 1098 leaf num-membership-report-v1 { 1099 type yang:counter64; 1100 description 1101 "The number of Version 1 Membership Report messages."; 1102 reference 1103 "RFC 1112"; 1105 } 1106 leaf num-membership-report-v2 { 1107 type yang:counter64; 1108 description 1109 "The number of Version 2 Membership Report messages."; 1110 reference 1111 "RFC 2236"; 1112 } 1113 leaf num-membership-report-v3 { 1114 type yang:counter64; 1115 description 1116 "The number of Version 3 Membership Report messages."; 1117 reference 1118 "RFC 3376"; 1119 } 1120 leaf num-leave { 1121 type yang:counter64; 1122 description 1123 "The number of Leave Group messages."; 1124 reference 1125 "RFC 2236"; 1126 } 1127 leaf num-pim-hello { 1128 type yang:counter64; 1129 description 1130 "The number of PIM hello messages."; 1131 reference 1132 "RFC 7761"; 1133 } 1134 } // igmp-snooping-statistics 1136 grouping mld-snooping-statistics { 1137 description 1138 "The statistics attributes for MLD snooping."; 1140 leaf num-query { 1141 type yang:counter64; 1142 description 1143 "The number of Multicast Listener Query messages."; 1144 reference 1145 "RFC 3810"; 1146 } 1147 leaf num-report-v1 { 1148 type yang:counter64; 1149 description 1150 "The number of Version 1 Multicast Listener Report."; 1151 reference 1152 "RFC 2710"; 1153 } 1154 leaf num-report-v2 { 1155 type yang:counter64; 1156 description 1157 "The number of Version 2 Multicast Listener Report."; 1158 reference 1159 "RFC 3810"; 1160 } 1161 leaf num-done { 1162 type yang:counter64; 1163 description 1164 "The number of Version 1 Multicast Listener Done."; 1165 reference 1166 "RFC 2710"; 1167 } 1168 leaf num-pim-hello { 1169 type yang:counter64; 1170 description 1171 "The number of PIM hello messages."; 1172 reference 1173 "RFC 7761"; 1174 } 1175 } // mld-snooping-statistics 1177 augment "/rt:routing/rt:control-plane-protocols"+ 1178 "/rt:control-plane-protocol" { 1179 when 'derived-from-or-self(../rt:type, "ims:igmp-snooping")' { 1180 description 1181 "This container is only valid for IGMP snooping."; 1182 } 1183 description 1184 "IGMP snooping augmentation to control plane protocol 1185 configuration and state."; 1187 container igmp-snooping-instance { 1188 if-feature igmp-snooping; 1189 description 1190 "IGMP snooping instance to configure igmp-snooping."; 1192 leaf scenario { 1193 type snooping-scenario-type; 1194 default bridge; 1195 description 1196 "The scenario indicates BRIDGE or L2VPN."; 1197 } 1199 uses instance-config-attributes-igmp-mld-snooping; 1201 leaf igmp-version { 1202 type uint8 { 1203 range "1..3"; 1204 } 1205 default 2; 1206 description "IGMP version."; 1207 } 1208 leaf querier-source { 1209 type inet:ipv4-address; 1210 description 1211 "Use the IGMP snooping querier to support IGMP 1212 snooping in a VLAN where PIM and IGMP are not configured. 1213 The IPv4 address is used as source address in messages."; 1214 } 1216 list static-l2-multicast-group { 1217 if-feature static-l2-multicast-group; 1218 key "group source-addr"; 1219 description 1220 "A static multicast route, (*,G) or (S,G)."; 1222 leaf group { 1223 type rt-types:ipv4-multicast-group-address; 1224 description 1225 "Multicast group IPv4 address"; 1226 } 1228 leaf source-addr { 1229 type rt-types:ipv4-multicast-source-address; 1230 description 1231 "Multicast source IPv4 address."; 1232 } 1234 leaf-list bridge-outgoing-interface { 1235 when 'derived-from-or-self(../../scenario,"ims:bridge")'; 1236 type if:interface-ref; 1237 description "Outgoing interface in BRIDGE forwarding"; 1238 } 1240 leaf-list l2vpn-outgoing-ac { 1241 when 'derived-from-or-self(../../scenario,"ims:l2vpn")'; 1242 type if:interface-ref; 1243 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1244 } 1246 leaf-list l2vpn-outgoing-pw { 1247 when 'derived-from-or-self(../../scenario,"ims:l2vpn")'; 1248 type pw:pseudowire-ref; 1249 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1250 } 1251 } // static-l2-multicast-group 1253 uses instance-state-attributes-igmp-mld-snooping; 1255 list group { 1257 key "address"; 1259 config false; 1260 description "IGMP snooping information"; 1262 leaf address { 1263 type rt-types:ipv4-multicast-group-address; 1264 description 1265 "Multicast group IPv4 address"; 1266 } 1268 uses instance-state-group-attributes-igmp-mld-snooping; 1270 leaf last-reporter { 1271 type inet:ipv4-address; 1272 description 1273 "Address of the last host which has sent report to join 1274 the multicast group."; 1275 } 1277 list source { 1278 key "address"; 1279 description "Source IPv4 address for multicast stream"; 1281 leaf address { 1282 type rt-types:ipv4-multicast-source-address; 1283 description "Source IPv4 address for multicast stream"; 1284 } 1286 uses instance-state-source-attributes-igmp-mld-snooping; 1288 leaf last-reporter { 1289 type inet:ipv4-address; 1290 description 1291 "Address of the last host which has sent report 1292 to join the multicast group."; 1293 } 1295 list host { 1296 if-feature explicit-tracking; 1297 key "host-address"; 1298 description 1299 "List of multicast membership hosts 1300 of the specific multicast source-group."; 1302 leaf host-address { 1303 type inet:ipv4-address; 1304 description 1305 "Multicast membership host address."; 1306 } 1307 leaf host-filter-mode { 1308 type filter-mode-type; 1309 mandatory true; 1310 description 1311 "Filter mode for a multicast membership 1312 host may be either include or exclude."; 1313 } 1314 }// list host 1316 } // list source 1317 } // list group 1319 container interfaces { 1320 config false; 1322 description 1323 "Interfaces associated with the IGMP snooping instance"; 1325 list interface { 1326 key "name"; 1328 description 1329 "Interfaces associated with the IGMP snooping instance"; 1331 leaf name { 1332 type if:interface-ref; 1333 description 1334 "The name of interface"; 1336 } 1338 container statistics { 1339 description 1340 "The interface statistics for IGMP snooping"; 1342 container received { 1343 description 1344 "Statistics of received IGMP snooping packets."; 1346 uses igmp-snooping-statistics; 1347 } 1348 container sent { 1349 description 1350 "Statistics of sent IGMP snooping packets."; 1352 uses igmp-snooping-statistics; 1353 } 1354 } 1355 } 1356 } 1358 action clear-igmp-snooping-groups { 1359 if-feature action-clear-groups; 1360 description 1361 "Clear IGMP snooping cache tables."; 1363 input { 1364 leaf group { 1365 type union { 1366 type enumeration { 1367 enum 'all-groups' { 1368 description 1369 "All multicast group addresses."; 1370 } 1371 } 1372 type rt-types:ipv4-multicast-group-address; 1373 } 1374 mandatory true; 1375 description 1376 "Multicast group IPv4 address. If value 'all-groups' is 1377 specified, all IGMP snooping group entries are cleared 1378 for specified source address."; 1379 } 1380 leaf source { 1381 type rt-types:ipv4-multicast-source-address; 1382 mandatory true; 1383 description 1384 "Multicast source IPv4 address. If value '*' is specified, 1385 all IGMP snooping source-group tables are cleared."; 1386 } 1387 } 1388 } // action clear-igmp-snooping-groups 1389 } // igmp-snooping-instance 1390 } // augment 1392 augment "/rt:routing/rt:control-plane-protocols"+ 1393 "/rt:control-plane-protocol" { 1394 when 'derived-from-or-self(../rt:type, "ims:mld-snooping")' { 1395 description 1396 "This container is only valid for MLD snooping."; 1397 } 1398 description 1399 "MLD snooping augmentation to control plane protocol 1400 configuration and state."; 1402 container mld-snooping-instance { 1403 if-feature mld-snooping; 1404 description 1405 "MLD snooping instance to configure mld-snooping."; 1407 leaf scenario { 1408 type snooping-scenario-type; 1409 default bridge; 1410 description 1411 "The scenario indicates BRIDGE or L2VPN."; 1412 } 1414 uses instance-config-attributes-igmp-mld-snooping; 1415 leaf mld-version { 1416 type uint8 { 1417 range "1..2"; 1418 } 1419 default 2; 1420 description "MLD version."; 1421 } 1423 leaf querier-source { 1424 type inet:ipv6-address; 1425 description 1426 "Use the MLD snooping querier to support MLD snooping where 1427 PIM and MLD are not configured. The IPv6 address is used as 1428 the source address in messages."; 1429 } 1431 list static-l2-multicast-group { 1432 if-feature static-l2-multicast-group; 1433 key "group source-addr"; 1434 description 1435 "A static multicast route, (*,G) or (S,G)."; 1437 leaf group { 1438 type rt-types:ipv6-multicast-group-address; 1439 description 1440 "Multicast group IPv6 address"; 1441 } 1443 leaf source-addr { 1444 type rt-types:ipv6-multicast-source-address; 1445 description 1446 "Multicast source IPv6 address."; 1447 } 1449 leaf-list bridge-outgoing-interface { 1450 when 'derived-from-or-self(../../scenario,"ims:bridge")'; 1451 type if:interface-ref; 1452 description "Outgoing interface in BRIDGE forwarding"; 1453 } 1455 leaf-list l2vpn-outgoing-ac { 1456 when 'derived-from-or-self(../../scenario,"ims:l2vpn")'; 1457 type if:interface-ref; 1458 description "Outgoing Attachment Circuit (AC) in L2VPN"; 1459 } 1461 leaf-list l2vpn-outgoing-pw { 1462 when 'derived-from-or-self(../../scenario,"ims:l2vpn")'; 1463 type pw:pseudowire-ref; 1464 description "Outgoing Pseudo Wire (PW) in L2VPN"; 1465 } 1467 } // static-l2-multicast-group 1469 uses instance-state-attributes-igmp-mld-snooping; 1471 list group { 1472 key "address"; 1473 config false; 1474 description "MLD snooping statistics information"; 1476 leaf address { 1477 type rt-types:ipv6-multicast-group-address; 1478 description 1479 "Multicast group IPv6 address"; 1480 } 1482 uses instance-state-group-attributes-igmp-mld-snooping; 1484 leaf last-reporter { 1485 type inet:ipv6-address; 1486 description 1487 "Address of the last host which has sent report 1488 to join the multicast group."; 1489 } 1491 list source { 1492 key "address"; 1493 description "Source IPv6 address for multicast stream"; 1495 leaf address { 1496 type rt-types:ipv6-multicast-source-address; 1497 description "Source IPv6 address for multicast stream"; 1498 } 1500 uses instance-state-source-attributes-igmp-mld-snooping; 1502 leaf last-reporter { 1503 type inet:ipv6-address; 1504 description 1505 "Address of the last host which has sent report 1506 to join the multicast group."; 1507 } 1509 list host { 1510 if-feature explicit-tracking; 1511 key "host-address"; 1512 description 1513 "List of multicast membership hosts 1514 of the specific multicast source-group."; 1516 leaf host-address { 1517 type inet:ipv6-address; 1518 description 1519 "Multicast membership host address."; 1520 } 1521 leaf host-filter-mode { 1522 type filter-mode-type; 1523 mandatory true; 1524 description 1525 "Filter mode for a multicast membership 1526 host may be either include or exclude."; 1527 } 1528 }// list host 1529 } // list source 1530 } // list group 1532 container interfaces { 1533 config false; 1535 description 1536 "Interfaces associated with the MLD snooping instance"; 1538 list interface { 1539 key "name"; 1541 description 1542 "Interfaces associated with the MLD snooping instance"; 1544 leaf name { 1545 type if:interface-ref; 1546 description 1547 "The name of interface"; 1549 } 1551 container statistics { 1552 description 1553 "The interface statistics for MLD snooping"; 1555 container received { 1556 description 1557 "Statistics of received MLD snooping packets."; 1559 uses mld-snooping-statistics; 1560 } 1561 container sent { 1562 description 1563 "Statistics of sent MLD snooping packets."; 1565 uses mld-snooping-statistics; 1566 } 1567 } 1568 } 1569 } 1570 action clear-mld-snooping-groups { 1571 if-feature action-clear-groups; 1572 description 1573 "Clear MLD snooping cache tables."; 1575 input { 1576 leaf group { 1577 type union { 1578 type enumeration { 1579 enum 'all-groups' { 1580 description 1581 "All multicast group addresses."; 1582 } 1583 } 1584 type rt-types:ipv6-multicast-group-address; 1585 } 1586 mandatory true; 1587 description 1588 "Multicast group IPv6 address. If value 'all-groups' is 1589 specified, all MLD snooping group entries are cleared 1590 for specified source address."; 1591 } 1592 leaf source { 1593 type rt-types:ipv6-multicast-source-address; 1594 mandatory true; 1595 description 1596 "Multicast source IPv6 address. If value '*' is specified, 1597 all MLD snooping source-group tables are cleared."; 1598 } 1599 } 1600 } // action clear-mld-snooping-groups 1601 }// mld-snooping-instance 1602 } // augment 1604 augment "/dot1q:bridges/dot1q:bridge" { 1605 description 1606 "Use IGMP & MLD snooping instance in BRIDGE scenario"; 1608 leaf igmp-snooping-instance { 1609 type igmp-mld-snooping-instance-ref; 1611 description 1612 "Configure IGMP snooping instance under bridge view"; 1613 } 1614 leaf mld-snooping-instance { 1615 type igmp-mld-snooping-instance-ref; 1617 description 1618 "Configure MLD snooping instance under bridge view"; 1619 } 1620 } 1621 augment "/dot1q:bridges/dot1q:bridge"+ 1622 "/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" { 1623 description 1624 "Use IGMP & MLD snooping instance in certain VLAN of BRIDGE"; 1626 leaf igmp-snooping-instance { 1627 type igmp-mld-snooping-instance-ref; 1629 description 1630 "Configure IGMP snooping instance under VLAN view"; 1631 } 1633 leaf mld-snooping-instance { 1634 type igmp-mld-snooping-instance-ref; 1636 description 1637 "Configure MLD snooping instance under VLAN view"; 1638 } 1639 } 1641 augment "/ni:network-instances/ni:network-instance"+ 1642 "/ni:ni-type/l2vpn:l2vpn" { 1644 description 1645 "Use IGMP & MLD snooping instance in L2VPN scenario"; 1647 leaf igmp-snooping-instance { 1648 type igmp-mld-snooping-instance-ref; 1650 description 1651 "Configure IGMP snooping instance in L2VPN scenario"; 1652 } 1653 leaf mld-snooping-instance { 1654 type igmp-mld-snooping-instance-ref; 1656 description 1657 "Configure MLD snooping instance in L2VPN scenario"; 1658 } 1659 } 1660 } 1661 1663 5. Security Considerations 1665 The YANG module specified in this document defines a schema for data 1666 that is designed to be accessed via network management protocols such as 1667 NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the 1668 secure transport layer, and the mandatory-to-implement secure transport 1669 is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and 1670 the mandatory-to-implement secure transport is TLS [RFC8446]. 1672 The Network Configuration Access Control Model (NACM) [RFC8341] provides 1673 the means to restrict access for particular NETCONF or RESTCONF users to 1674 a preconfigured subset of all available NETCONF or RESTCONF protocol 1675 operations and content. 1677 There are a number of data nodes defined in this YANG module that are 1678 writable/creatable/deletable (i.e., config true, which is the default). 1679 These data nodes may be considered sensitive or vulnerable in some 1680 network environments. Write operations (e.g., edit-config) to these data 1681 nodes without proper protection can have a negative effect on network 1682 operations. These are the subtrees and data nodes and their 1683 sensitivity/vulnerability: 1685 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1687 ims:igmp-snooping-instance 1689 ims:mld-snooping-instance 1691 The subtrees under /dot1q:bridges/dot1q:bridge 1693 ims:igmp-snooping-instance 1695 ims:mld-snooping-instance 1697 The subtrees under /dot1q:bridges/dot1q:bridge/dot1q:component 1698 /dot1q:bridge-vlan/dot1q:vlan 1700 ims:igmp-snooping-instance 1702 ims:mld-snooping-instance 1704 Unauthorized access to any data node of these subtrees can adversely 1705 affect the IGMP & MLD Snooping subsystem of both the local device and 1706 the network. This may lead to network malfunctions, delivery of packets 1707 to inappropriate destinations, and other problems. 1709 Some of the readable data nodes in this YANG module may be considered 1710 sensitive or vulnerable in some network environments. It is thus 1711 important to control read access (e.g., via get, get-config, or 1712 notification) to these data nodes. These are the subtrees and data nodes 1713 and their sensitivity/vulnerability: 1715 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1717 ims:igmp-snooping-instance 1719 ims:mld-snooping-instance 1721 Unauthorized access to any data node of these subtrees can disclose the 1722 operational state information of IGMP & MLD Snooping on this device. 1724 Some of the action operations in this YANG module may be considered 1725 sensitive or vulnerable in some network environments. It is thus 1726 important to control access to these operations. These are the 1727 operations and their sensitivity/vulnerability: 1729 Under /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:/ 1731 ims:igmp-snooping-instance/ims:clear-igmp-snooping-groups 1733 ims:mld-snooping-instance/ims:clear-mld-snooping-groups 1735 Some of the actions in this YANG module may be considered sensitive or 1736 vulnerable in some network environments. The IGMP & MLD Snooping YANG 1737 module supports the "clear-igmp-snooping-groups" and "clear-mld- 1738 snooping-groups" actions. If unauthorized action is invoked, the IGMP 1739 and MLD Snooping group tables will be cleared unexpectedly. Especially 1740 when using wildcard, all the multicast traffic will be flooded in the 1741 broadcast domain. The devices that use this YANG module should heed the 1742 Security Considerations in [RFC4541]. 1744 6. IANA Considerations 1746 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1747 actual RFC number (and remove this note). 1749 This document registers the following namespace URIs in the IETF XML 1751 registry [RFC3688]: 1753 -------------------------------------------------------------------- 1754 URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping 1755 Registrant Contact: The IETF. 1756 XML: N/A, the requested URI is an XML namespace. 1757 -------------------------------------------------------------------- 1759 This document registers the following YANG modules in the YANG Module 1760 Names registry [RFC7950]: 1761 -------------------------------------------------------------------- 1762 name: ietf-igmp-mld-snooping 1763 namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping 1764 prefix: ims 1765 reference: RFC XXXX 1766 -------------------------------------------------------------------- 1767 7. References 1769 7.1. Normative References 1771 [dot1Qcp] IEEE, "Standard for Local and metropolitan area networks-- 1772 Bridges and Bridged Networks--Amendment 30: YANG Data 1773 Model", IEEE Std 802.1Qcp-2018 (Revision of IEEE Std 1774 802.1Q-2014), September 2018, 1775 1777 [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, 1778 RFC 1112, August 1989. 1780 [RFC2236] W. Fenner, "Internet Group Management Protocol, Version 2", 1781 RFC 2236, November 1997. 1783 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1784 Listener Discovery (MLD) for IPv6", RFC 2710, October 1999. 1786 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1787 Thyagarajan, "Internet Group Management Protocol, Version 1788 3", RFC 3376, October 2002. 1790 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 1791 2004. 1793 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1794 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1796 [RFC4286] B. Haberman and J. Martin, "Multicast Router Discovery", 1797 RFC 4286, December 2005. 1799 [RFC4541] M. Christensen, K. Kimball, F. Solensky, "Considerations 1800 for Internet Group Management Protocol (IGMP) and Multicast 1801 Listener Discovery (MLD) Snooping Switches", RFC 4541, May 1802 2006. 1804 [RFC5790] H. Liu, W. Cao, H. Asaeda, "Lightweight Internet Group 1805 Management Protocol Version 3 (IGMPv3) and Multicast 1806 Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, 1807 February 2010. 1809 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1810 the Network Configuration Protocol (NETCONF)", RFC 6020, 1811 October 2010. 1813 [RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed., A. 1814 Bierman, Ed., "Network Configuration Protocol (NETCONF)", 1815 RFC 6241, June 2011. 1817 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1818 Shell (SSH)", RFC 6242, June 2011. 1820 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, 1821 July 2013. 1823 [RFC7761] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, R. Parekh, 1824 Z. Zhang, L. Zheng, "Protocol Independent Multicast - 1825 Sparse Mode (PIM-SM): Protocol Specification (Revised)", 1826 RFC 7761, March 2016. 1828 [RFC7950] M. Bjorklund, Ed., "The YANG 1.1 Data Modeling Language", 1829 RFC 7950, August 2016. 1831 [RFC8040] A. Bierman, M. Bjorklund, K. Watsen, "RESTCONF Protocol", 1832 RFC 8040, January 2017. 1834 [RFC8294] X. Liu, Y. Qu, A. Lindem, C. Hopps, L. Berger, "Common YANG 1835 Data Types for the Routing Area", RFC 8294, December 2017. 1837 [RFC8340] M. Bjorklund, and L. Berger, Ed., "YANG Tree Diagrams", RFC 1838 8340, March 2018. 1840 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access 1841 Control Model", RFC 8341, March 2018. 1843 [RFC8342] M. Bjorklund and J. Schoenwaelder, "Network Management 1844 Datastore Architecture (NMDA)", RFC 8342, March 2018. 1846 [RFC8343] M. Bjorklund, "A YANG Data Model for Interface Management", 1847 RFC 8343, March 2018. 1849 [RFC8349] L. Lhotka, A. Lindem, Y. Qu, "A YANG Data Model for Routing 1850 Management (NMDA Version)", RFC 8349, March 2018. 1852 [RFC8407] A. Bierman, "Guidelines for Authors and Reviewers of 1853 Documents Containing YANG Data Models", RFC 8407, October 1854 2018. 1856 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1857 Version 1.3", RFC 8446, August 2018. 1859 [RFC8529] L. Berger, C. Hopps, A. Lindem, D. Bogdanovic, X. Liu, 1860 "YANG Data Model for Network Instances", RFC 8529, March 1861 2019. 1863 [RFC8652] X. Liu, F. Guo, M. Sivakumar, P. McAllister, A. Peter, "A 1864 YANG Data Model for the Internet Group Management Protocol 1865 (IGMP) and Multicast Listener Discovery (MLD)", RFC 8652, 1866 November 2019. 1868 [draft-ietf-bess-l2vpn-yang] Shah, H., Brissette, P., Chen, I., 1869 Hussain, I., Wen, B., and K. Tiruveedhula, "YANG Data Model 1870 for MPLS-basedL2VPN", draft-ietf-bess-l2vpn-yang-10 (work 1871 in progress), July 2019. 1873 7.2. Informative References 1875 [RFC3916] X. Xiao, Ed., D. McPherson, Ed., P. Pate, Ed., 1876 "Requirements for Pseudo-Wire Emulation Edge-to-Edge 1877 (PWE3)", RFC 3916, September 2004. 1879 [RFC6636] H. Asaeda, H. Liu, Q. Wu, "Tuning the Behavior of the 1880 Internet Group Management Protocol (IGMP) and Multicast 1881 Listener Discovery (MLD) for Routers in Mobile and Wireless 1882 Networks", RFC 6636, May 2012. 1884 [RFC7951] L. Lhotka, "JSON Encoding of Data Modeled with YANG", RFC 1885 7951, August 2016. 1887 Appendix A. Data Tree Example 1889 A.1 Bridge scenario 1891 This section contains an example for bridge scenario in the JSON 1892 encoding [RFC7951], containing both configuration and state data. 1894 +-----------+ 1895 + Source + 1896 +-----+-----+ 1897 | 1898 -----------------+---------------------------- 1899 |eth1/1 1900 +---+---+ 1901 + R1 + 1902 +-+---+-+ 1903 eth1/2 | \ eth1/3 1904 | \ 1905 | \ 1906 | \ 1907 | \ 1908 eth2/1 | \ eth3/1 1909 +---+---+ +--+---+ 1910 + R2 + + R3 + 1911 +---+---+ +--+---+ 1912 eth2/2 | | eth3/2 1913 | | 1914 ---------------+----------+------------------- 1915 | | 1916 | | 1917 +--------+--+ +---+--------+ 1918 + Receiver1 + + Receiver2 + 1919 +-----------+ +------------+ 1921 The configuration data for R1 in the above figure could be as follows: 1923 { 1924 "ietf-interfaces:interfaces":{ 1925 "interface":[ 1926 { 1927 "name":"eth1/1", 1928 "type":"iana-if-type:ethernetCsmacd" 1929 } 1930 ] 1931 }, 1932 "ietf-routing:routing":{ 1933 "control-plane-protocols":{ 1934 "control-plane-protocol":[ 1935 { 1936 "type":"ietf-igmp-mld-snooping:igmp-snooping", 1937 "name":"bis1", 1938 "ietf-igmp-mld-snooping:igmp-snooping-instance":{ 1939 "scenario":"ietf-igmp-mld-snooping:bridge", 1940 "enable":true 1941 } 1942 } 1943 ] 1944 } 1945 }, 1946 "ieee802-dot1q-bridge:bridges":{ 1947 "bridge":[ 1948 { 1949 "name":"isp1", 1950 "address":"00-23-ef-a5-77-12", 1951 "bridge-type":"ieee802-dot1q-bridge:customer-vlan-bridge", 1952 "component":[ 1953 { 1954 "name":"comp1", 1955 "type":"ieee802-dot1q-bridge:c-vlan-component", 1956 "bridge-vlan":{ 1957 "vlan":[ 1958 { 1959 "vid":101, 1960 "ietf-igmp-mld-snooping:igmp-snooping-instance":"bis1" 1961 } 1962 ] 1963 } 1964 } 1965 ] 1966 } 1967 ] 1968 } 1969 } 1971 The corresponding operational state data for R1 could be as follows: 1973 { 1974 "ietf-interfaces:interfaces": { 1975 "interface": [ 1976 { 1977 "name": "eth1/1", 1978 "type": "iana-if-type:ethernetCsmacd", 1979 "oper-status": "up", 1980 "statistics": { 1981 "discontinuity-time": "2018-05-23T12:34:56-05:00" 1982 } 1983 } 1984 ] 1985 }, 1986 "ietf-routing:routing": { 1987 "control-plane-protocols": { 1988 "control-plane-protocol": [ 1989 { 1990 "type": "ietf-igmp-mld-snooping:igmp-snooping", 1991 "name": "bis1", 1992 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 1993 "scenario": "ietf-igmp-mld-snooping:bridge", 1994 "enable": true 1995 } 1996 } 1997 ] 1998 } 1999 }, 2000 "ieee802-dot1q-bridge:bridges": { 2001 "bridge": [ 2002 { 2003 "name": "isp1", 2004 "address": "00-23-ef-a5-77-12", 2005 "bridge-type": "ieee802-dot1q-bridge:customer-vlan-bridge", 2006 "component": [ 2007 { 2008 "name": "comp1", 2009 "type": "ieee802-dot1q-bridge:c-vlan-component", 2010 "bridge-vlan": { 2011 "vlan": [ 2012 { 2013 "vid": 101, 2014 "ietf-igmp-mld-snooping:igmp-snooping-instance": "bis1" 2015 } 2016 ] 2017 } 2018 } 2019 ] 2020 } 2021 ] 2022 } 2023 } 2024 The following action is to clear all the entries whose group address is 2025 225.1.1.1 for igmp-snooping-instance bis1. 2027 POST /restconf/operations/ietf-routing:routing/control-plane-protocols/\ 2028 control-plane-protocol=ietf-igmp-mld-snooping:igmp-snooping,bis1/\ 2029 ietf-igmp-mld-snooping:igmp-snooping-instance/\ 2030 clear-igmp-snooping-groups HTTP/1.1 2031 Host: example.com 2032 Content-Type: application/yang-data+json 2034 { 2035 "ietf-igmp-mld-snooping:input" : { 2036 "group": "225.1.1.1", 2037 "source": "*" 2038 } 2039 } 2040 A.2 L2VPN scenario 2042 This section contains an example for L2VPN scenario in the JSON encoding 2043 [RFC7951], containing both configuration and state data. 2045 +-----------+ 2046 + Source + 2047 +-----+-----+ 2048 | 2049 -----------------+---------------------------- 2050 |eth1/1 2051 +---+---+ 2052 + R1 + 2053 +-+---+-+ 2054 eth1/2 | \ eth1/3 2055 | \ 2056 | \ 2057 | \ 2058 | \ 2059 eth2/1 | \ eth3/1 2060 +---+---+ +-+---+ 2061 + R2 +----+ R3 + 2062 +---+---+ +-+---+ 2063 eth2/2 | | eth3/2 2064 | | 2065 ---------------+----------+------------------- 2066 | | 2067 | | 2068 +--------+--+ +---+--------+ 2069 + Receiver1 + + Receiver2 + 2070 +-----------+ +------------+ 2072 The configuration data for R1 in the above figure could be as follows: 2073 { 2074 "ietf-interfaces:interfaces":{ 2075 "interface":[ 2076 { 2077 "name":"eth1/1", 2078 "type":"iana-if-type:ethernetCsmacd" 2079 } 2080 ] 2081 }, 2082 "ietf-pseudowires:pseudowires": { 2083 "pseudowire": [ 2084 { 2085 "name": "pw2" 2086 }, 2087 { 2088 "name": "pw3" 2090 } 2091 ] 2092 }, 2093 "ietf-network-instance:network-instances": { 2094 "network-instance": [ 2095 { 2096 "name": "vpls1", 2097 "ietf-igmp-mld-snooping:igmp-snooping-instance": "vis1", 2098 "ietf-l2vpn:type": "ietf-l2vpn:vpls-instance-type", 2099 "ietf-l2vpn:signaling-type": "ietf-l2vpn:ldp-signaling", 2100 "ietf-l2vpn:endpoint": [ 2101 { 2102 "name": "acs", 2103 "ac": [ 2104 { 2105 "name": "eth1/1" 2106 } 2107 ] 2108 }, 2109 { 2110 "name": "pws", 2111 "pw": [ 2112 { 2113 "name": "pw2" 2114 }, 2115 { 2116 "name": "pw3" 2117 } 2118 ] 2119 } 2120 ] 2121 } 2122 ] 2123 }, 2124 "ietf-routing:routing": { 2125 "control-plane-protocols": { 2126 "control-plane-protocol": [ 2127 { 2128 "type": "ietf-igmp-mld-snooping:igmp-snooping", 2129 "name": "vis1", 2130 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 2131 "scenario": "ietf-igmp-mld-snooping:l2vpn", 2132 "enable": true 2133 } 2134 } 2135 ] 2136 } 2137 } 2138 } 2139 The corresponding operational state data for R1 could be as follows: 2141 { 2142 "ietf-interfaces:interfaces":{ 2143 "interface":[ 2144 { 2145 "name":"eth1/1", 2146 "type":"iana-if-type:ethernetCsmacd", 2147 "oper-status": "up", 2148 "statistics": { 2149 "discontinuity-time": "2018-05-23T12:34:56-05:00" 2150 } 2151 } 2152 ] 2153 }, 2154 "ietf-pseudowires:pseudowires": { 2155 "pseudowire": [ 2156 { 2157 "name": "pw2" 2158 }, 2159 { 2160 "name": "pw3" 2161 } 2162 ] 2163 }, 2164 "ietf-network-instance:network-instances": { 2165 "network-instance": [ 2166 { 2167 "name": "vpls1", 2168 "ietf-igmp-mld-snooping:igmp-snooping-instance": "vis1", 2169 "ietf-l2vpn:type": "ietf-l2vpn:vpls-instance-type", 2170 "ietf-l2vpn:signaling-type": "ietf-l2vpn:ldp-signaling", 2171 "ietf-l2vpn:endpoint": [ 2172 { 2173 "name": "acs", 2174 "ac": [ 2175 { 2176 "name": "eth1/1" 2177 } 2178 ] 2179 }, 2180 { 2181 "name": "pws", 2182 "pw": [ 2183 { 2184 "name": "pw2" 2185 }, 2186 { 2187 "name": "pw3" 2188 } 2189 ] 2190 } 2192 ] 2193 } 2194 ] 2195 }, 2196 "ietf-routing:routing": { 2197 "control-plane-protocols": { 2198 "control-plane-protocol": [ 2199 { 2200 "type": "ietf-igmp-mld-snooping:igmp-snooping", 2201 "name": "vis1", 2202 "ietf-igmp-mld-snooping:igmp-snooping-instance": { 2203 "scenario": "ietf-igmp-mld-snooping:l2vpn", 2204 "enable": true 2205 } 2206 } 2207 ] 2208 } 2209 } 2210 } 2211 Authors' Addresses 2213 Hongji Zhao 2214 Ericsson (China) Communications Company Ltd. 2215 Ericsson Tower, No. 5 Lize East Street, 2216 Chaoyang District Beijing 100102, P.R. China 2218 Email: hongji.zhao@ericsson.com 2220 Xufeng Liu 2221 Volta Networks 2222 USA 2224 EMail: xufeng.liu.ietf@gmail.com 2226 Yisong Liu 2227 China Mobile 2228 China 2230 Email: liuyisong@chinamobile.com 2232 Anish Peter 2233 Individual 2235 EMail: anish.ietf@gmail.com 2237 Mahesh Sivakumar 2238 Juniper Networks 2239 1133 Innovation Way 2240 Sunnyvale, California 2241 USA 2243 EMail: sivakumar.mahesh@gmail.com