idnits 2.17.1 draft-ietf-pim-igmp-mld-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 54 instances of too long lines in the document, the longest one being 33 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 243 has weird spacing: '...-policy str...' == Line 246 has weird spacing: '...ce-addr sou...' == Line 278 has weird spacing: '...-policy str...' == Line 281 has weird spacing: '...ce-addr sou...' == Line 350 has weird spacing: '...-policy str...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. == Couldn't figure out when the document was first submitted -- there may comments or warnings related to the use of a disclaimer for pre-RFC5378 work that could not be issued because of this. Please check the Legal Provisions document at https://trustee.ietf.org/license-info to determine if you need the pre-RFC5378 disclaimer. -- The document date (February 7, 2017) is 2606 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC6087' is mentioned on line 84, but not defined ** Obsolete undefined reference: RFC 6087 (Obsoleted by RFC 8407) == Missing Reference: 'RFC4605' is mentioned on line 128, but not defined == Missing Reference: 'RFC4541' is mentioned on line 128, but not defined == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 1539, but no explicit reference was found in the text == Unused Reference: 'RFC4604' is defined on line 1562, but no explicit reference was found in the text == Unused Reference: 'RFC4607' is defined on line 1567, but no explicit reference was found in the text ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-10 Summary: 3 errors (**), 0 flaws (~~), 16 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 PIM Working Group X. Liu 2 Internet-Draft Ericsson 3 Intended Status: Standard Track F. Guo 4 Expires: August 8, 2017 Huawei 5 M. Sivakumar 6 Cisco 7 P. McAllister 8 Metaswitch Networks 9 A. Peter 10 Juniper Networks 11 February 7, 2017 13 A YANG data model for Internet Group Management Protocol (IGMP) and 14 Multicast Listener Discovery (MLD) 15 draft-ietf-pim-igmp-mld-yang-02 17 Status of this Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF), its areas, and its working groups. Note that 24 other groups may also distribute working documents as Internet- 25 Drafts. 27 Internet-Drafts are draft documents valid for a maximum of six 28 months and may be updated, replaced, or obsoleted by other documents 29 at any time. It is inappropriate to use Internet-Drafts as 30 reference material or to cite them other than as "work in progress." 32 The list of current Internet-Drafts can be accessed at 33 http://www.ietf.org/ietf/1id-abstracts.txt 35 The list of Internet-Draft Shadow Directories can be accessed at 36 http://www.ietf.org/shadow.html 38 This Internet-Draft will expire on August 8, 2017. 40 Copyright Notice 42 Copyright (c) 2016 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with 50 respect to this document. Code Components extracted from this 51 document must include Simplified BSD License text as described in 52 Section 4.e of the Trust Legal Provisions and are provided without 53 warranty as described in the Simplified BSD License. 55 Abstract 57 This document defines a YANG data model that can be used to 58 configure and manage Internet Group Management Protocol (IGMP) and 59 Multicast Listener Discovery (MLD) devices. 61 Table of Contents 63 1. Introduction ................................................ 2 64 1.1. Requirements Languag ................................... 3 65 1.2. Terminology ............................................ 3 66 2. Design of Data model......................................... 3 67 2.1. Scope of model ......................................... 3 68 2.2. Optional capabilities................................... 3 69 2.3. Position of address family in hierarchy................. 4 70 3. Module Structure ............................................ 4 71 3.1. IGMP and MLD Configuration.............................. 4 72 3.2. IGMP and MLD Operational State.......................... 6 73 3.3. IGMP and MLD RPC....................................... 10 74 4. IGMP and MLD YANG Modules................................... 10 75 5. Security Considerations..................................... 31 76 6. IANA Considerations ........................................ 31 77 7. References ................................................. 31 78 7.1. Normative References................................... 31 79 7.2. Informative References................................. 32 80 8. Acknowledgments ............................................ 32 82 1. Introduction 84 YANG [RFC6020] [RFC6087] is a data definition language that was 85 introduced to model the configuration and running state of a device 86 managed using NETCONF [RFC6241]. YANG is now also being used as a 87 component of wider management interfaces, such as CLIs. 89 This document defines a draft YANG data model that can be used to 90 configure and manage Internet Group Management Protocol (IGMP) and 91 Multicast Listener Discovery (MLD) devices. Currently this model is 92 incomplete, but it will support the core IGMP and MLD protocols, as 93 well as many other features mentioned in separate IGMP and MLD RFCs. 94 Non-core features are defined as optional in the provided data 95 model. 97 1.1. Requirements Language 99 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 100 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 101 document are to be interpreted as described in RFC-2119 [RFC2119]. 103 1.2. Terminology 105 The terminology for describing YANG data models is found 106 in[RFC6020]. 108 This draft employs YANG tree diagrams, which are explained in [I- 109 D.ietf-netmod-rfc6087bis]. 111 2. Design of Data model 113 2.1. Scope of model 115 The model covers IGMPv1 [RFC1112], IGMPv2[RFC2236], IGMPv3[RFC3376] 116 and MLDv1[RFC2710], MLDv2[RFC3810]. 118 The representation of some extension features of IGMP and MLD is not 119 specified in this draft of the data model. This model is being 120 circulated in its current form for early oversight and review of the 121 basic hierarchy. 123 The operational state fields and rpcs of this model can also 124 be extended, and the structure of what has been written may be 125 taken as representative of the structure of the whole model. 127 This model does not cover other IGMP and MLD related protocols such 128 as IGMP/MLD Proxy[RFC4605] or IGMP/MLD Snooping[RFC4541] etc., these 129 will be specified in separate documents. 131 2.2. Optional capabilities 133 This model is designed to represent the capabilities of IGMP and MLD 134 devices with various specifications, including some with basic 135 subsets of the IGMP and MLD protocols. The main design goals of 136 this draft are that any major now-existing implementation may be 137 said to support the basic model, and that the configuration of all 138 implementations meeting the specification is easy to express through 139 some combination of the features in the basic model and simple 140 vendor augmentations. 142 There is also value in widely-supported features being standardized, 143 to save work for individual vendors, and so that mapping between 144 different vendors' configuration is not needlessly complicated. 146 Therefore these modules declare a number of features representing 147 capabilities that not all deployed devices support. 149 The extensive use of feature declarations should also substantially 150 simplify the capability negotiation process for a vendor's IGMP and 151 MLD implementations. 153 On the other hand, operational state parameters are not so widely 154 designated as features, as there are many cases where the defaulting 155 of an operational state parameter would not cause any harm to the 156 system, and it is much more likely that an implementation without 157 native support for a piece of operational state would be able to 158 derive a suitable value for a state variable that is not natively 159 supported. 161 For the same reason, wide constant ranges (for example, timer 162 maximum and minimum) will be used in the model. It is expected that 163 vendors will augment the model with any specific restrictions that 164 might be required. Vendors may also extend the features list with 165 proprietary extensions. 167 2.3. Position of address family in hierarchy 169 The current draft contains IGMP and MLD as separate schema branches 170 in the structure. The reason for this is to make it easier for 171 implementations which may optionally choose to support specific 172 address families. And the names of objects may be different between 173 the ipv4 (IGMP) and ipv6 (MLD) address families. 175 3. Module Structure 177 3.1. IGMP and MLD Configuration 179 The IGMP and MLD modules define the routing-instance-wide 180 configuration options in a three-level hierarchy as listed below: 182 Global level: IGMP MLD configuration attributes for the entire 183 routing instance 185 Interface-global: IGMP MLD configuration attributes applicable to 186 all interfaces IGMP MLD configuration attributes applied to 187 interfaces whose interface level attributes are not existing, with 188 same attributes' value for those 190 Interface-level: IGMP MLD configuration attributes specific to 191 the given interface 193 Where fields are not genuinely essential to protocol operation, they 194 are marked as optional. Some fields will be essential but have a 195 default specified, so that they need not be configured explicitly. 196 The module structure also applies, where applicable, to the 197 operational state and notifications as well. 199 Our current direction is to agree to a routing-instance-centric 200 (VRF) model as opposed to protocol-centric mainly because it fits 201 well into the routing-instance model, and it is easier to map from 202 the VRF-centric to the protocol-centric than the other way around 203 due to forward references. 205 The IGMP and MLD model augments "/rt:routing/rt:control-plane- 206 protocols" as opposed to augmenting "/rt:routing/rt:control-plane- 207 protocols/ rt:control-plane-protocol" as the latter would allow 208 multiple protocol instances per VRF, which does not make sense for 209 IGMP and MLD. 211 augment /rt:routing/rt:control-plane-protocols: 212 +--rw igmp 213 | +--rw global 214 | | +--rw enable? boolean {global-admin-enable}? 215 | | +--rw max-entries? uint32 {global-max-entries}? 216 | | +--rw max-groups? uint32 {global-max-groups}? 217 | +--rw interfaces 218 | +--rw last-member-query-interval? uint16 219 | +--rw max-groups-per-interface? uint32 {intf-max-groups}? 220 | +--rw query-interval? uint16 221 | +--rw query-max-response-time? uint16 222 | +--rw require-router-alert? boolean {intf-require-router-alert}? 223 | +--rw robustness-variable? uint8 224 | +--rw version? uint8 225 | +--rw interface* [interface] 226 | +--rw interface if:interface-ref 227 | +--rw enable? boolean {intf-admin-enable}? 228 | +--rw group-policy? string 229 | +--rw immediate-leave? empty {intf-immediate-leave}? 230 | +--rw last-member-query-interval? uint16 231 | +--rw max-groups? uint32 {intf-max-groups}? 232 | +--rw max-group-sources? uint32 {intf-max-group-sources}? 233 | +--rw query-interval? uint16 234 | +--rw query-max-response-time? uint16 235 | +--rw require-router-alert? boolean {intf-require-router-alert}? 236 | +--rw robustness-variable? uint8 237 | +--rw source-policy? string {intf-source-policy}? 238 | +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 239 | +--rw version? uint8 240 | +--rw join-group* inet:ipv4-address {intf-join-group}? 241 | +--rw ssm-map* [source-addr group-policy] {intf-ssm-map}? 242 | | +--rw source-addr ssm-map-ipv4-addr-type 243 | | +--rw group-policy string 244 | +--rw static-group* [group source-addr] {intf-static-group}? 245 | +--rw group inet:ipv4-address 246 | +--rw source-addr source-ipv4-addr-type 247 +--rw mld 248 +--rw global 249 | +--rw enable? boolean {global-admin-enable}? 250 | +--rw max-entries? uint32 {global-max-entries}? 251 | +--rw max-groups? uint32 {global-max-groups}? 252 +--rw interfaces 253 +--rw last-member-query-interval? uint16 254 +--rw max-groups-per-interface? uint32 {intf-max-groups}? 255 +--rw query-interval? uint16 256 +--rw query-max-response-time? uint16 257 +--rw require-router-alert? boolean {intf-require-router-alert}? 258 +--rw robustness-variable? uint8 259 +--rw version? uint8 260 +--rw interface* [interface] 261 +--rw interface if:interface-ref 262 +--rw enable? boolean {intf-admin-enable}? 263 +--rw group-policy? string 264 +--rw immediate-leave? empty {intf-immediate-leave}? 265 +--rw last-member-query-interval? uint16 266 +--rw max-groups? uint32 {intf-max-groups}? 267 +--rw max-group-sources? uint32 {intf-max-group-sources}? 268 +--rw query-interval? uint16 269 +--rw query-max-response-time? uint16 270 +--rw require-router-alert? boolean {intf-require-router-alert}? 271 +--rw robustness-variable? uint8 272 +--rw source-policy? string {intf-source-policy}? 273 +--rw verify-source-subnet? empty {intf-verify-source-subnet}? 274 +--rw version? uint8 275 +--rw join-group* inet:ipv6-address {intf-join-group}? 276 +--rw ssm-map* [source-addr group-policy] {intf-ssm-map}? 277 | +--rw source-addr ssm-map-ipv6-addr-type 278 | +--rw group-policy string 279 +--rw static-group* [group source-addr] {intf-static-group}? 280 +--rw group inet:ipv6-address 281 +--rw source-addr source-ipv6-addr-type 283 3.2. IGMP and MLD Operational State 285 The IGMP and MLD module contains operational state information also 286 in a three-level hierarchy as mentioned earlier. 288 Global level: IGMP MLD operational state attributes for the 289 entire routing instance 290 Interface-global: IGMP MLD interface level operational state 291 attributes applied to interfaces whose interface level attributes do 292 not exist, with same attributes' value for those interfaces 294 Interface-specific: IGMP MLD operational state attributes 295 specific to the given interface. 297 augment /rt:routing-state/rt:control-plane-protocols: 298 +--ro igmp 299 | +--ro global 300 | | +--ro enable? boolean {global-admin-enable}? 301 | | +--ro max-entries? uint32 {global-max-entries}? 302 | | +--ro max-groups? uint32 {global-max-groups}? 303 | | +--ro entries-count? uint32 304 | | +--ro groups-count? uint32 305 | | +--ro statistics 306 | | +--ro discontinuity-time? yang:date-and-time 307 | | +--ro error 308 | | | +--ro total? yang:counter64 309 | | | +--ro query? yang:counter64 310 | | | +--ro report? yang:counter64 311 | | | +--ro leave? yang:counter64 312 | | | +--ro checksum? yang:counter64 313 | | | +--ro too-short? yang:counter64 314 | | +--ro received 315 | | | +--ro total? yang:counter64 316 | | | +--ro query? yang:counter64 317 | | | +--ro report? yang:counter64 318 | | | +--ro leave? yang:counter64 319 | | +--ro sent 320 | | +--ro total? yang:counter64 321 | | +--ro query? yang:counter64 322 | | +--ro report? yang:counter64 323 | | +--ro leave? yang:counter64 324 | +--ro interfaces 325 | +--ro last-member-query-interval? uint16 326 | +--ro max-groups-per-interface? uint32 {intf-max-groups}? 327 | +--ro query-interval? uint16 328 | +--ro query-max-response-time? uint16 329 | +--ro require-router-alert? boolean {intf-require-router-alert}? 330 | +--ro robustness-variable? uint8 331 | +--ro version? uint8 332 | +--ro interface* [interface] 333 | +--ro interface if:interface-ref 334 | +--ro enable? boolean {intf-admin-enable}? 335 | +--ro group-policy? string 336 | +--ro immediate-leave? empty {intf-immediate-leave}? 337 | +--ro last-member-query-interval? uint16 338 | +--ro max-groups? uint32 {intf-max-groups}? 339 | +--ro max-group-sources? uint32 {intf-max-group-source 340 | +--ro query-interval? uint16 341 | +--ro query-max-response-time? uint16 342 | +--ro require-router-alert? boolean {intf-require-router-alert}? 343 | +--ro robustness-variable? uint8 344 | +--ro source-policy? string {intf-source-policy}? 345 | +--ro verify-source-subnet? empty {intf-verify-source-subnet}? 346 | +--ro version? uint8 347 | +--ro join-group* inet:ipv4-address {intf-join-group}? 348 | +--ro ssm-map* [source-addr group-policy] {intf-ssm-map}? 349 | | +--ro source-addr ssm-map-ipv4-addr-type 350 | | +--ro group-policy string 351 | +--ro static-group* [group source-addr] {intf-static-group}? 352 | | +--ro group inet:ipv4-address 353 | | +--ro source-addr source-ipv4-addr-type 354 | +--ro oper-status? enumeration 355 | +--ro dr? inet:ipv4-address 356 | +--ro querier? inet:ipv4-address 357 | +--ro joined-group* inet:ipv4-address {intf-join-group}? 358 | +--ro group* [address] 359 | +--ro address inet:ipv4-address 360 | +--ro expire? uint32 361 | +--ro filter-mode? enumeration 362 | +--ro host-count? uint32 363 | +--ro up-time? uint32 364 | +--ro host* inet:ipv4-address 365 | +--ro last-reporter? inet:ipv4-address 366 | +--ro source* [address] 367 | +--ro address inet:ipv4-address 368 | +--ro expire? uint32 369 | +--ro up-time? uint32 370 | +--ro last-reporter? inet:ipv4-address 371 +--ro mld 372 +--ro global 373 | +--ro enable? boolean {global-admin-enable}? 374 | +--ro max-entries? uint32 {global-max-entries}? 375 | +--ro max-groups? uint32 {global-max-groups}? 376 | +--ro entries-count? uint32 377 | +--ro groups-count? uint32 378 | +--ro statistics 379 | +--ro discontinuity-time? yang:date-and-time 380 | +--ro error 381 | | +--ro total? yang:counter64 382 | | +--ro query? yang:counter64 383 | | +--ro report? yang:counter64 384 | | +--ro leave? yang:counter64 385 | | +--ro checksum? yang:counter64 386 | | +--ro too-short? yang:counter64 387 | +--ro received 388 | | +--ro total? yang:counter64 389 | | +--ro query? yang:counter64 390 | | +--ro report? yang:counter64 391 | | +--ro leave? yang:counter64 392 | +--ro sent 393 | +--ro total? yang:counter64 394 | +--ro query? yang:counter64 395 | +--ro report? yang:counter64 396 | +--ro leave? yang:counter64 397 +--ro interfaces 398 +--ro last-member-query-interval? uint16 399 +--ro max-groups-per-interface? uint32 {intf-max-groups}? 400 +--ro query-interval? uint16 401 +--ro query-max-response-time? uint16 402 +--ro require-router-alert? boolean {intf-require-router-alert}? 403 +--ro robustness-variable? uint8 404 +--ro version? uint8 405 +--ro interface* [interface] 406 +--ro interface if:interface-ref 407 +--ro enable? boolean {intf-admin-enable}? 408 +--ro group-policy? string 409 +--ro immediate-leave? empty {intf-immediate-leave}? 410 +--ro last-member-query-interval? uint16 411 +--ro max-groups? uint32 {intf-max-groups}? 412 +--ro max-group-sources? uint32 {intf-max-group-sources}? 413 +--ro query-interval? uint16 414 +--ro query-max-response-time? uint16 415 +--ro require-router-alert? boolean {intf-require-router-alert}? 416 +--ro robustness-variable? uint8 417 +--ro source-policy? string {intf-source-policy}? 418 +--ro verify-source-subnet? empty {intf-verify-source-subnet}? 419 +--ro version? uint8 420 +--ro join-group* inet:ipv6-address {intf-join-group}? 421 +--ro ssm-map* [source-addr group-policy] {intf-ssm-map}? 422 | +--ro source-addr ssm-map-ipv6-addr-type 423 | +--ro group-policy string 424 +--ro static-group* [group source-addr] {intf-static-group}? 425 | +--ro group inet:ipv6-address 426 | +--ro source-addr source-ipv6-addr-type 427 +--ro oper-status? enumeration 428 +--ro querier? inet:ipv6-address 429 +--ro joined-group* inet:ipv6-address {intf-join-group}? 430 +--ro group* [address] 431 +--ro address inet:ipv6-address 432 +--ro expire? uint32 433 +--ro filter-mode? enumeration 434 +--ro host-count? uint32 435 +--ro up-time? uint32 436 +--ro host* inet:ipv6-address 437 +--ro last-reporter? inet:ipv6-address 438 +--ro source* [address] 439 +--ro address inet:ipv6-address 440 +--ro expire? uint32 441 +--ro up-time? uint32 442 +--ro last-reporter? inet:ipv6-address 444 3.3. IGMP and MLD RPC 446 rpcs: 448 +---x clear-igmp-groups {rpc-clear-groups}? 450 | +---w input 452 | +---w interface? -> /rt:routing/control-plane-protocols/igmp/interfaces/interface/interface 454 | +---w group? inet:ipv4-address 456 | +---w source? inet:ipv4-address 458 +---x clear-mld-groups {rpc-clear-groups}? 460 +---w input 462 +---w interface? -> /rt:routing/control-plane-protocols/mld/interfaces/interface/interface 464 +---w group? inet:ipv6-address 466 +---w source? inet:ipv6-address 468 4. IGMP and MLD YANG Modules 470 file "ietf-igmp-mld@2016-10-28.yang" 471 module ietf-igmp-mld { 472 namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; 473 // replace with IANA namespace when assigned 474 prefix igmp-mld; 476 import ietf-inet-types { 477 prefix "inet"; 478 } 480 import ietf-yang-types { 481 prefix "yang"; 482 } 484 import ietf-routing { 485 prefix "rt"; 486 } 488 import ietf-interfaces { 489 prefix "if"; 490 } 492 import ietf-ip { 493 prefix ip; 494 } 496 organization 497 "IETF PIM Working Group"; 499 contact 500 "WG Web: 501 WG List: 503 WG Chair: Stig Venaas 504 506 WG Chair: Mike McBride 507 509 Editors: "; 511 description 512 "The module defines a collection of YANG definitions common for 513 IGMP and MLD."; 515 revision 2016-10-28 { 516 description 517 "Initial revision."; 518 reference 519 "RFC XXXX: A YANG Data Model for IGMP and MLD"; 520 } 522 /* 523 * Features 524 */ 525 feature global-admin-enable { 526 description 527 "Support global configuration to enable or disable protocol."; 528 } 529 feature global-interface-config { 530 description 531 "Support global configuration applied for all interfaces."; 532 } 534 feature global-max-entries { 535 description 536 "Support configuration of global max-entries."; 537 } 539 feature global-max-groups { 540 description 541 "Support configuration of global max-groups."; 542 } 544 feature intf-admin-enable { 545 description 546 "Support configuration of interface administrative enabling."; 547 } 549 feature intf-immediate-leave { 550 description 551 "Support configuration of interface immediate-leave."; 552 } 554 feature intf-join-group { 555 description 556 "Support configuration of interface join-group."; 557 } 559 feature intf-max-groups { 560 description 561 "Support configuration of interface max-groups."; 562 } 564 feature intf-max-group-sources { 565 description 566 "Support configuration of interface max-group-sources."; 567 } 569 feature intf-require-router-alert { 570 description 571 "Support configuration of interface require-router-alert."; 572 } 574 feature intf-source-policy { 575 description 576 "Support configuration of interface source policy."; 577 } 578 feature intf-ssm-map { 579 description 580 "Support configuration of interface ssm-map."; 581 } 583 feature intf-static-group { 584 description 585 "Support configuration of interface static-group."; 586 } 588 feature intf-verify-source-subnet { 589 description 590 "Support configuration of interface verify-source-subnet."; 591 } 593 feature per-interface-config { 594 description 595 "Support per interface configuration."; 596 } 598 feature rpc-clear-groups { 599 description 600 "Support rpc's to clear groups."; 601 } 603 /* 604 * Typedefs 605 */ 606 typedef ssm-map-ipv4-addr-type { 607 type union { 608 type enumeration { 609 enum 'policy' { 610 description 611 "Source address is specified in SSM map policy."; 612 } 613 } 614 type inet:ipv4-address; 615 } 616 description 617 "Multicast source IP address type for SSM map."; 618 } // source-ipv4-addr-type 620 typedef ssm-map-ipv6-addr-type { 621 type union { 622 type enumeration { 623 enum 'policy' { 624 description 625 "Source address is specified in SSM map policy."; 627 } 628 } 629 type inet:ipv6-address; 630 } 631 description 632 "Multicast source IP address type for SSM map."; 633 } // source-ipv6-addr-type 635 typedef source-ipv4-addr-type { 636 type union { 637 type enumeration { 638 enum '*' { 639 description 640 "Any source address."; 641 } 642 } 643 type inet:ipv4-address; 644 } 645 description 646 "Multicast source IP address type."; 647 } // source-ipv4-addr-type 649 typedef source-ipv6-addr-type { 650 type union { 651 type enumeration { 652 enum '*' { 653 description 654 "Any source address."; 655 } 656 } 657 type inet:ipv6-address; 658 } 659 description 660 "Multicast source IP address type."; 661 } // source-ipv6-addr-type 663 /* 664 * Identities 665 */ 667 /* 668 * Groupings 669 */ 670 grouping global-config-attributes { 671 description "Global IGMP and MLD configuration."; 673 leaf enable { 674 if-feature global-admin-enable; 675 type boolean; 676 description 677 "true to enable IGMP in the routing instance; 678 false to disable IGMP in the routing instance."; 679 } 681 leaf max-entries { 682 if-feature global-max-entries; 683 type uint32; 684 description 685 "The maximum number of entries in IGMP."; 686 } 687 leaf max-groups { 688 if-feature global-max-groups; 689 type uint32; 690 description 691 "The maximum number of groups that IGMP can join."; 692 } 693 } // global-config-attributes 695 grouping global-state-attributes { 696 description "Global IGMP and MLD state attributes."; 698 leaf entries-count { 699 type uint32; 700 description 701 "The number of entries in IGMP."; 702 } 703 leaf groups-count { 704 type uint32; 705 description 706 "The number of groups that IGMP can join."; 707 } 709 container statistics { 710 description "Global statistics."; 712 leaf discontinuity-time { 713 type yang:date-and-time; 714 description 715 "The time on the most recent occasion at which any one 716 or more of the statistic counters suffered a 717 discontinuity. If no such discontinuities have occurred 718 since the last re-initialization of the local 719 management subsystem, then this node contains the time 720 the local management subsystem re-initialized itself."; 721 } 723 container error { 724 description "Statistics of errors."; 725 uses global-statistics-error; 726 } 728 container received { 729 description "Statistics of received messages."; 730 uses global-statistics-sent-received; 731 } 732 container sent { 733 description "Statistics of sent messages."; 734 uses global-statistics-sent-received; 735 } 736 } // statistics 737 } // global-state-attributes 739 grouping global-statistics-error { 740 description 741 "A grouping defining statistics attributes for errors."; 742 uses global-statistics-sent-received; 743 leaf checksum { 744 type yang:counter64; 745 description 746 "The number of checksum errors."; 747 } 748 leaf too-short { 749 type yang:counter64; 750 description 751 "The number of messages that are too short."; 752 } 753 } // global-statistics-error 755 grouping global-statistics-sent-received { 756 description 757 "A grouping defining statistics attributes."; 758 leaf total { 759 type yang:counter64; 760 description 761 "The number of total messages."; 762 } 763 leaf query { 764 type yang:counter64; 765 description 766 "The number of query messages."; 767 } 768 leaf report { 769 type yang:counter64; 770 description 771 "The number of report messages."; 772 } 773 leaf leave { 774 type yang:counter64; 775 description 776 "The number of leave messages."; 777 } 778 } // global-statistics-sent-received 780 grouping interfaces-config-attributes { 781 description 782 "Configuration attributes applied to interfaces whose 783 per interface attributes are not existing."; 785 leaf last-member-query-interval { 786 type uint16 { 787 range "1..65535"; 788 } 789 description 790 "Last Member Query Interval, which may be tuned to modify the 791 leave latency of the network."; 792 reference "RFC3376. Sec. 8.8."; 793 } 794 leaf max-groups-per-interface { 795 if-feature intf-max-groups; 796 type uint32; 797 description 798 "The maximum number of groups that IGMP can join."; 799 } 800 leaf query-interval { 801 type uint16; 802 units seconds; 803 default 125; 804 description 805 "The Query Interval is the interval between General Queries 806 sent by the Querier."; 807 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 808 } 809 leaf query-max-response-time { 810 type uint16; 811 units seconds; 812 description 813 "Query maximum response time specifies the maximum time 814 allowed before sending a responding report."; 815 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 816 } 817 leaf require-router-alert { 818 if-feature intf-require-router-alert; 819 type boolean; 820 description 821 ""; 822 } 823 leaf robustness-variable { 824 type uint8 { 825 range "2..7"; 826 } 827 default 2; 828 description 829 "Querier's Robustness Variable allows tuning for the expected 830 packet loss on a network."; 831 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 832 } 833 leaf version { 834 type uint8 { 835 range "1..3"; 836 } 837 description "IGMP version."; 838 reference "RFC1112, RFC2236, RFC3376."; 839 } 840 } // interfaces-config-attributes 842 grouping interface-config-attributes-igmp { 843 description "Per interface igmp configuration for IGMP."; 845 uses interface-config-attributes-igmp-mld; 847 leaf-list join-group { 848 if-feature intf-join-group; 849 type inet:ipv4-address; 850 description 851 "The router joins this multicast group on the interface."; 852 } 854 list ssm-map { 855 if-feature intf-ssm-map; 856 key "source-addr group-policy"; 857 description ""; 858 leaf source-addr { 859 type ssm-map-ipv4-addr-type; 860 description 861 "Multicast source IP address."; 862 } 863 leaf group-policy { 864 type string; 865 description 866 "Name of the access policy used to filter IGMP 867 membership."; 868 } 869 } 871 list static-group { 872 if-feature intf-static-group; 873 key "group source-addr"; 874 description 875 "A static multicast route, (*,G) or (S,G)."; 877 leaf group { 878 type inet:ipv4-address; 879 description 880 "Multicast group IP address."; 881 } 882 leaf source-addr { 883 type source-ipv4-addr-type; 884 description 885 "Multicast source IP address."; 886 } 887 } 888 } // interface-config-attributes-igmp 890 grouping interface-config-attributes-igmp-mld { 891 description 892 "Per interface configuration for both IGMP and MLD."; 894 leaf enable { 895 if-feature intf-admin-enable; 896 type boolean; 897 description 898 "true to enable IGMP on the interface; 899 false to disable IGMP on the interface."; 900 } 901 leaf group-policy { 902 type string; 903 description 904 "Name of the access policy used to filter IGMP membership."; 905 } 906 leaf immediate-leave { 907 if-feature intf-immediate-leave; 908 type empty; 909 description 910 "If present, IGMP perform an immediate leave upon receiving an 911 IGMP Version 2 (IGMPv2) leave message. 912 If the router is IGMP-enabled, it sends an IGMP last member 913 query with a last member query response time. However, the 914 router does not wait for the response time before it prunes 915 off the group."; 916 } 917 leaf last-member-query-interval { 918 type uint16 { 919 range "1..65535"; 920 } 921 description 922 "Last Member Query Interval, which may be tuned to modify the 923 leave latency of the network."; 924 reference "RFC3376. Sec. 8.8."; 925 } 926 leaf max-groups { 927 if-feature intf-max-groups; 928 type uint32; 929 description 930 "The maximum number of groups that IGMP can join."; 931 } 932 leaf max-group-sources { 933 if-feature intf-max-group-sources; 934 type uint32; 935 description 936 "The maximum number of group sources."; 937 } 938 leaf query-interval { 939 type uint16; 940 units seconds; 941 default 125; 942 description 943 "The Query Interval is the interval between General Queries 944 sent by the Querier."; 945 reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; 946 } 947 leaf query-max-response-time { 948 type uint16; 949 units seconds; 950 description 951 "Query maximum response time specifies the maximum time 952 allowed before sending a responding report."; 953 reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; 954 } 955 leaf require-router-alert { 956 if-feature intf-require-router-alert; 957 type boolean; 958 description 959 ""; 960 } 961 leaf robustness-variable { 962 type uint8 { 963 range "2..7"; 964 } 965 default 2; 966 description 967 "Querier's Robustness Variable allows tuning for the expected 968 packet loss on a network."; 969 reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; 971 } 972 leaf source-policy { 973 if-feature intf-source-policy; 974 type string; 975 description 976 "Name of the access policy used to filter sources."; 977 } 978 leaf verify-source-subnet { 979 if-feature intf-verify-source-subnet; 980 type empty; 981 description 982 "If present, the interface accepts packets with matching 983 source IP subnet only."; 984 } 985 leaf version { 986 type uint8 { 987 range "1..3"; 988 } 989 description "IGMP version."; 990 reference "RFC1112, RFC2236, RFC3376."; 991 } 992 } // interface-config-attributes-igmp-mld 994 grouping interface-config-attributes-mld { 995 description "Per interface igmp configuration for mld."; 997 uses interface-config-attributes-igmp-mld; 999 leaf-list join-group { 1000 if-feature intf-join-group; 1001 type inet:ipv6-address; 1002 description 1003 "The router joins this multicast group on the interface."; 1004 } 1006 list ssm-map { 1007 if-feature intf-ssm-map; 1008 key "source-addr group-policy"; 1009 description ""; 1010 leaf source-addr { 1011 type ssm-map-ipv6-addr-type; 1012 description 1013 "Multicast source IP address."; 1014 } 1015 leaf group-policy { 1016 type string; 1017 description 1018 "Name of the access policy used to filter IGMP 1019 membership."; 1021 } 1022 } 1024 list static-group { 1025 if-feature intf-static-group; 1026 key "group source-addr"; 1027 description 1028 "A static multicast route, (*,G) or (S,G)."; 1030 leaf group { 1031 type inet:ipv6-address; 1032 description 1033 "Multicast group IP address."; 1034 } 1035 leaf source-addr { 1036 type source-ipv6-addr-type; 1037 description 1038 "Multicast source IP address."; 1039 } 1040 } 1041 } // interface-config-attributes-mld 1043 grouping interface-state-attributes-igmp { 1044 description 1045 "Per interface state attributes for IGMP."; 1047 uses interface-state-attributes-igmp-mld; 1049 leaf dr { 1050 type inet:ipv4-address; 1051 description ""; 1052 } 1053 leaf querier { 1054 type inet:ipv4-address; 1055 description ""; 1056 } 1057 leaf-list joined-group { 1058 if-feature intf-join-group; 1059 type inet:ipv4-address; 1060 description 1061 "The routers that joined this multicast group."; 1062 } 1064 list group { 1065 key "address"; 1066 description ""; 1068 leaf address { 1069 type inet:ipv4-address; 1070 description 1071 ""; 1072 } 1073 uses interface-state-group-attributes-igmp-mld; 1074 leaf-list host { 1075 type inet:ipv4-address; 1076 description 1077 ""; 1078 } 1079 leaf last-reporter { 1080 type inet:ipv4-address; 1081 description ""; 1082 } 1083 list source { 1084 key "address"; 1085 description ""; 1087 leaf address { 1088 type inet:ipv4-address; 1089 description ""; 1090 } 1091 uses interface-state-source-attributes-igmp-mld; 1092 leaf last-reporter { 1093 type inet:ipv4-address; 1094 description ""; 1095 } 1096 } // list source 1097 } // list group 1098 } // interface-state-attributes-igmp 1100 grouping interface-state-attributes-igmp-mld { 1101 description 1102 "Per interface state attributes for both IGMP and MLD."; 1104 leaf oper-status { 1105 type enumeration { 1106 enum up { 1107 description 1108 "Ready to pass packets."; 1109 } 1110 enum down { 1111 description 1112 "The interface does not pass any packets."; 1113 } 1114 } 1115 description ""; 1116 } 1117 } // interface-config-attributes-igmp-mld 1118 grouping interface-state-attributes-mld { 1119 description 1120 "Per interface state attributes for MLD."; 1122 uses interface-state-attributes-igmp-mld; 1124 leaf querier { 1125 type inet:ipv6-address; 1126 description ""; 1127 } 1128 leaf-list joined-group { 1129 if-feature intf-join-group; 1130 type inet:ipv6-address; 1131 description 1132 "The routers that joined this multicast group."; 1133 } 1135 list group { 1136 key "address"; 1137 description ""; 1139 leaf address { 1140 type inet:ipv6-address; 1141 description 1142 ""; 1143 } 1144 uses interface-state-group-attributes-igmp-mld; 1145 leaf-list host { 1146 type inet:ipv6-address; 1147 description 1148 ""; 1149 } 1150 leaf last-reporter { 1151 type inet:ipv6-address; 1152 description ""; 1153 } 1154 list source { 1155 key "address"; 1156 description ""; 1158 leaf address { 1159 type inet:ipv6-address; 1160 description ""; 1161 } 1162 uses interface-state-source-attributes-igmp-mld; 1163 leaf last-reporter { 1164 type inet:ipv6-address; 1165 description ""; 1166 } 1168 } // list source 1169 } // list group 1170 } // interface-state-attributes-mld 1172 grouping interface-state-group-attributes-igmp-mld { 1173 description 1174 "Per interface state attributes for both IGMP and MLD 1175 groups."; 1177 leaf expire { 1178 type uint32; 1179 units seconds; 1180 description ""; 1181 } 1182 leaf filter-mode { 1183 type enumeration { 1184 enum "include" { 1185 description 1186 ""; 1187 } 1188 enum "exclude" { 1189 description 1190 ""; 1191 } 1192 } 1193 description ""; 1194 } 1195 leaf host-count { 1196 type uint32; 1197 description ""; 1198 } 1199 leaf up-time { 1200 type uint32; 1201 units seconds; 1202 description ""; 1203 } 1204 } // interface-state-group-attributes-igmp-mld 1206 grouping interface-state-source-attributes-igmp-mld { 1207 description 1208 "Per interface state attributes for both IGMP and MLD 1209 groups."; 1211 leaf expire { 1212 type uint32; 1213 units seconds; 1214 description ""; 1215 } 1216 leaf up-time { 1217 type uint32; 1218 units seconds; 1219 description ""; 1220 } 1221 } // interface-state-source-attributes-igmp-mld 1223 /* 1224 * Configuration data nodes 1225 */ 1226 augment "/rt:routing/rt:control-plane-protocols" 1227 { 1228 description 1229 "IGMP and MLD augmentation to routing instance configuration."; 1231 container igmp { 1232 description 1233 "IGMP configuration data."; 1235 container global { 1236 description 1237 "Global attributes."; 1238 uses global-config-attributes; 1239 } 1241 container interfaces { 1242 description 1243 "Containing a list of interfaces."; 1245 uses interfaces-config-attributes { 1246 if-feature global-interface-config; 1247 } 1249 list interface { 1250 key "interface"; 1251 description 1252 "List of IGMP interfaces."; 1253 leaf interface { 1254 type if:interface-ref; 1255 must "/if:interfaces/if:interface[if:name = current()]/" 1256 + "ip:ipv4" { 1257 description 1258 "The interface must have IPv4 enabled."; 1259 } 1260 description 1261 "Reference to an entry in the global interface 1262 list."; 1263 } 1264 uses interface-config-attributes-igmp { 1265 if-feature per-interface-config; 1267 } 1268 } // interface 1269 } // interfaces 1270 } // igmp 1272 container mld { 1273 description 1274 "MLD configuration data."; 1276 container global { 1277 description 1278 "Global attributes."; 1279 uses global-config-attributes; 1280 } 1282 container interfaces { 1283 description 1284 "Containing a list of interfaces."; 1286 uses interfaces-config-attributes { 1287 if-feature global-interface-config; 1288 } 1290 list interface { 1291 key "interface"; 1292 description 1293 "List of MLD interfaces."; 1294 leaf interface { 1295 type if:interface-ref; 1296 must "/if:interfaces/if:interface[if:name = current()]/" 1297 + "ip:ipv6" { 1298 description 1299 "The interface must have IPv4 enabled."; 1300 } 1301 description 1302 "Reference to an entry in the global interface 1303 list."; 1304 } 1305 uses interface-config-attributes-mld { 1306 if-feature per-interface-config; 1307 } 1308 } // interface 1309 } // interfaces 1310 } // mld 1311 } // augment 1313 /* 1314 * Operational state data nodes 1315 */ 1317 augment "/rt:routing-state/rt:control-plane-protocols" 1318 { 1319 description 1320 "IGMP and MLD augmentation to routing instance state."; 1322 container igmp { 1323 description 1324 "IGMP configuration data."; 1326 container global { 1327 description 1328 "Global attributes."; 1329 uses global-config-attributes; 1330 uses global-state-attributes; 1331 } 1333 container interfaces { 1334 description 1335 "Containing a list of interfaces."; 1337 uses interfaces-config-attributes { 1338 if-feature global-interface-config; 1339 } 1341 list interface { 1342 key "interface"; 1343 description 1344 "List of IGMP interfaces."; 1345 leaf interface { 1346 type if:interface-ref; 1347 must "/if:interfaces/if:interface[if:name = current()]/" 1348 + "ip:ipv4" { 1349 description 1350 "The interface must have IPv4 enabled."; 1351 } 1352 description 1353 "Reference to an entry in the global interface 1354 list."; 1355 } 1356 uses interface-config-attributes-igmp { 1357 if-feature per-interface-config; 1358 } 1359 uses interface-state-attributes-igmp; 1360 } // interface 1361 } // interfaces 1362 } // igmp 1364 container mld { 1365 description 1366 "MLD configuration data."; 1368 container global { 1369 description 1370 "Global attributes."; 1371 uses global-config-attributes; 1372 uses global-state-attributes; 1373 } 1375 container interfaces { 1376 description 1377 "Containing a list of interfaces."; 1379 uses interfaces-config-attributes { 1380 if-feature global-interface-config; 1381 } 1383 list interface { 1384 key "interface"; 1385 description 1386 "List of MLD interfaces."; 1387 leaf interface { 1388 type if:interface-ref; 1389 must "/if:interfaces/if:interface[if:name = current()]/" 1390 + "ip:ipv6" { 1391 description 1392 "The interface must have IPv4 enabled."; 1393 } 1394 description 1395 "Reference to an entry in the global interface 1396 list."; 1397 } 1398 uses interface-config-attributes-mld { 1399 if-feature per-interface-config; 1400 } 1401 uses interface-state-attributes-mld; 1402 } // interface 1403 } // interfaces 1404 } // mld 1405 } // augment 1407 /* 1408 * RPCs 1409 */ 1410 rpc clear-igmp-groups { 1411 if-feature rpc-clear-groups; 1412 description 1413 "Clears the specified IGMP cache tables."; 1415 input { 1416 leaf interface { 1417 type leafref { 1418 path "/rt:routing/rt:control-plane-protocols/" 1419 + "igmp/interfaces/interface/" 1420 + "interface"; 1421 } 1422 description 1423 "Name of the IGMP interface. 1424 If it is not specified, groups from all interfaces are 1425 cleared."; 1426 } 1427 leaf group { 1428 type inet:ipv4-address; 1429 description 1430 "Multicast group IPv4 address. 1431 If it is not specified, all IGMP group tables are 1432 cleared."; 1433 } 1434 leaf source { 1435 type inet:ipv4-address; 1436 description 1437 "Multicast source IPv4 address. 1438 If it is not specified, all IGMP source-group tables are 1439 cleared."; 1440 } 1441 } 1442 } // rpc clear-igmp-groups 1444 rpc clear-mld-groups { 1445 if-feature rpc-clear-groups; 1446 description 1447 "Clears the specified MLD cache tables."; 1449 input { 1450 leaf interface { 1451 type leafref { 1452 path "/rt:routing/rt:control-plane-protocols/" 1453 + "mld/interfaces/interface/" 1454 + "interface"; 1455 } 1456 description 1457 "Name of the MLD interface. 1458 If it is not specified, groups from all interfaces are 1459 cleared."; 1460 } 1461 leaf group { 1462 type inet:ipv6-address; 1463 description 1464 "Multicast group IPv6 address. 1465 If it is not specified, all MLD group tables are 1466 cleared."; 1467 } 1468 leaf source { 1469 type inet:ipv6-address; 1470 description 1471 "Multicast source IPv6 address. 1472 If it is not specified, all MLD source-group tables are 1473 cleared."; 1474 } 1475 } 1476 } // rpc clear-mld-groups 1478 /* 1479 * Notifications 1480 */ 1481 } 1482 1484 5. Security Considerations 1486 The data model defined does not introduce any security implications. 1487 This draft does not change any underlying security issues inherent 1488 in [RFC8022]. 1490 6. IANA Considerations 1492 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1493 actual RFC number (and remove this note). 1495 This document registers the following namespace URIs in the IETF XML 1496 registry [RFC3688]: 1498 -------------------------------------------------------------------- 1499 URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1500 Registrant Contact: The IESG. 1501 XML: N/A, the requested URI is an XML namespace. 1502 -------------------------------------------------------------------- 1504 This document registers the following YANG modules in the YANG Module 1505 Names registry [RFC7950]: 1507 -------------------------------------------------------------------- 1508 name: ietf-igmp-mld 1509 namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld 1510 prefix: igmp-mld 1511 reference: RFC XXXX 1512 -------------------------------------------------------------------- 1514 7. References 1516 7.1. Normative References 1518 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1519 Requirement Levels", BCP 14, RFC 2119, March 1997. 1521 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1522 DOI 10.17487/RFC3688, January 2004. 1524 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1525 the Network Configuration Protocol (NETCONF)", RFC 6020, 1526 October 2010. 1528 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1529 and A. Bierman, Ed., "Network Configuration Protocol 1530 (NETCONF)", RFC 6241, June 2011. 1532 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1533 RFC 7950, DOI 10.17487/RFC7950, August 2016. 1535 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1536 Management", RFC 8022, DOI 10.17487/RFC8022, November 1537 2016. 1539 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1540 and Reviewers of YANG Data Model Documents", draft-ietf- 1541 netmod-rfc6087bis-10 (work in progress), January 2017. 1543 7.2. Informative References 1545 [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, 1546 RFC 1112, August 1989. 1548 [RFC2236] Fenner, W., "Internet Group Management Protocol, Version 1549 2", RFC 2236, November 1997. 1551 [RFC2710] Deering, S., Fenner, W., and B. Haberman, "Multicast 1552 Listener Discovery (MLD) for IPv6", RFC 2710, October 1553 1999. 1555 [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. 1556 Thyagarajan, "Internet Group Management Protocol, Version 1557 3", RFC 3376, October 2002. 1559 [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery 1560 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 1562 [RFC4604] Holbrook, H., Cain, B., and B. Haberman, "Using Internet 1563 Group Management Protocol Version 3 (IGMPv3) and Multicast 1564 Listener Discovery Protocol Version 2 (MLDv2) for Source- 1565 Specific Multicast", RFC 4604, August 2006. 1567 [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for 1568 IP", RFC 4607, August 2006. 1570 8. Acknowledgments 1572 The authors would like to thank Steve Baillargeon, Hu Fangwei, 1573 Robert Kebler, Tanmoy Kundu, Liu Yisong, and Stig Venaas for their 1574 valuable contributions. 1576 Authors' Addresses 1578 Xufeng Liu 1579 Ericsson 1580 1595 Spring Hill Road, Suite 500 1581 Vienna VA 22182 1582 USA 1584 EMail: xufeng.liu@ericsson.com 1586 Feng Guo 1587 Huawei 1588 Huawei Bld., No.156 Beiqing Rd. 1589 Beijing 100095 1590 China 1592 Email: guofeng@huawei.com 1594 Mahesh Sivakumar 1595 Cisco Systems, Inc. 1596 510 McCarthy Blvd 1597 Milpitas, California 95035 1598 United States 1600 Email: masivaku@cisco.com 1601 Pete McAllister 1602 Metaswitch Networks 1603 100 Church Street 1604 Enfield EN2 6BQ 1605 UK 1607 EMail: pete.mcallister@metaswitch.com 1609 Anish Peter 1610 Juniper Networks 1611 Electra, Exora Business Park 1612 Bangalore, KA 560103 1613 India 1615 EMail: anishp@juniper.net