idnits 2.17.1 draft-wang-bess-vpls-multicast-yang-00.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 131 instances of too long lines in the document, the longest one being 42 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 199 has weird spacing: '...-length uin...' == Line 250 has weird spacing: '...-length uin...' == Line 253 has weird spacing: '...peer-ip ine...' == Line 257 has weird spacing: '...w pe-id uin...' == Line 258 has weird spacing: '...w ce-id uin...' == (31 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 13, 2017) is 2599 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 75, but not defined ** Obsolete undefined reference: RFC 6087 (Obsoleted by RFC 8407) == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 3250, 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-12 Summary: 3 errors (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 BESS Working Group D. Wang 2 Internet-Draft Y. Liu 3 Intended Status: Standard Track Huawei Technologies 4 Expires: September 13, 2017 5 March 13, 2017 7 A YANG data model for Multicast in Virtual Private LAN Service 8 draft-wang-bess-vpls-multicast-yang-00 10 Status of this Memo 12 This Internet-Draft is submitted in full conformance with the 13 provisions of BCP 78 and BCP 79. 15 Internet-Drafts are working documents of the Internet Engineering 16 Task Force (IETF), its areas, and its working groups. Note that 17 other groups may also distribute working documents as Internet- 18 Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six 21 months and may be updated, replaced, or obsoleted by other documents 22 at any time. It is inappropriate to use Internet-Drafts as 23 reference material or to cite them other than as "work in progress." 25 The list of current Internet-Drafts can be accessed at 26 http://www.ietf.org/ietf/1id-abstracts.txt 28 The list of Internet-Draft Shadow Directories can be accessed at 29 http://www.ietf.org/shadow.html 31 This Internet-Draft will expire on September 10, 2017. 33 Copyright Notice 35 Copyright (c) 2017 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (http://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with 43 respect to this document. Code Components extracted from this 44 document must include Simplified BSD License text as described in 45 Section 4.e of the Trust Legal Provisions and are provided without 46 warranty as described in the Simplified BSD License. 48 Abstract 50 This document defines a YANG data model that can be used to 51 configure and manage multicast devices in Virtual Private LAN 52 Service. 54 Table of Contents 56 1. Introduction ................................................ 2 57 1.1. Requirements Language................................... 2 58 1.2. Terminology ............................................ 3 59 2. Design of Data model......................................... 3 60 2.1. Scope of model ......................................... 3 61 2.2. Optional capabilities................................... 3 62 2.3. Position of address family in hierarchy................. 4 63 3. Module Structure ............................................ 4 64 3.1. IGMP and MLD Snooping Configuration..................... 4 65 3.2. IGMP and MLD Snooping Operational State................. 9 66 4. IGMP and MLD YANG Modules................................... 19 67 5. Security Considerations..................................... 65 68 6. IANA Considerations ........................................ 65 69 7. References ................................................. 65 70 7.1. Normative References................................... 65 71 7.2. Informative References................................. 66 73 1. Introduction 75 YANG [RFC6020] [RFC6087] is a data definition language that was 76 introduced to model the configuration and running state of a device 77 managed using NETCONF [RFC6241]. YANG is now also being used as a 78 component of wider management interfaces, such as CLIs. 80 This document defines a draft YANG data model that can be used to 81 configure and manage multicast devices in Virtual Private LAN 82 Service. Currently this model is incomplete, but it will support the 83 core IGMP and MLD snooping protocols in Virtual Private LAN Service, 84 as well as many other features mentioned in separate multicast RFCs. 85 Non-core features are defined as optional in the provided data 86 model. 88 1.1. Requirements Language 90 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 91 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 92 document are to be interpreted as described in RFC-2119 [RFC2119]. 94 1.2. Terminology 96 The terminology for describing YANG data models is found 97 in[RFC6020]. 99 This draft employs YANG tree diagrams, which are explained in [I- 100 D.ietf-netmod-rfc6087bis]. 102 2. Design of Data model 104 2.1. Scope of model 106 The model covers IGMP and MLD snooping[RFC4541], and multicast in 107 BGP based VPLS[RFC4761] or LDP based VPLS[RFC4762]. 109 The representation of some of extension features is not completely 110 specified in this draft of the data model. This model is being 111 circulated in its current form for early oversight and review of the 112 basic hierarchy. 114 The operational state fields of this model are also incomplete, 115 though the structure of what has been written may be taken as 116 representative of the structure of the model when complete. 118 This model does not cover other multicast protocols in VPLS such as 119 [RFC7117] or [RFC7524] etc., these will be specified in separate 120 documents. 122 2.2. Optional capabilities 124 This model is designed to represent the capabilities of IGMP and MLD 125 snooping devices in VPLS with various specifications, including some 126 with basic subsets of the IGMP and MLD snooping protocols in VPLS. 127 The main design goals of this draft are that any major now-existing 128 implementation may be said to support the basic model, and that the 129 configuration of all implementations meeting the specification is 130 easy to express through some combination of the features in the 131 basic model and simple vendor augmentations. 133 There is also value in widely-supported features being standardized, 134 to save work for individual vendors, and so that mapping between 135 different vendors' configuration is not needlessly complicated. 136 Therefore these modules declare a number of features representing 137 capabilities that not all deployed devices support. 139 The extensive use of feature declarations should also substantially 140 simplify the capability negotiation process for a vendor's IGMP and 141 MLD snooping in VPLS implementations. 143 On the other hand, operational state parameters are not so widely 144 designated as features, as there are many cases where the defaulting 145 of an operational state parameter would not cause any harm to the 146 system, and it is much more likely that an implementation without 147 native support for a piece of operational state would be able to 148 derive a suitable value for a state variable that is not natively 149 supported. 151 For the same reason, wide constant ranges (for example, timer 152 maximum and minimum) will be used in the model. It is expected that 153 vendors will augment the model with any specific restrictions that 154 might be required. Vendors may also extend the features list with 155 proprietary extensions. 157 2.3. Position of address family in hierarchy 159 The current draft contains IGMP or MLD snooping in VPLS as separate 160 schema branches in the structure. The reason for this is to make it 161 easier for implementations which may optionally choose to support 162 specific address families. And the names of objects may be different 163 between the ipv4 (IGMP snooping) and ipv6 (MLD snooping) address 164 families. 166 3. Module Structure 168 3.1. VPLS Multicast Configuration 170 The IGMP or MLD snooping in VPLS modules define the configuration 171 options in a two-level hierarchy as listed below: 173 Global level: IGMP or MLD snooping configuration attributes for 174 the entire system and applicable to all of the l2vpn instances. 176 L2vpn instance level: IGMP or MLD snooping configuration 177 attributes applicable to a specific l2vpn instance. 179 Where fields are not genuinely essential to protocol operation, they 180 are marked as optional. Some fields will be essential but have a 181 default specified, so that they need not be configured explicitly. 182 The module structure also applies, where applicable, to the 183 operational state and notifications as well. 185 The IGMP or MLD snooping in VPLS model will augments 186 "/l2vpn:l2vpn:". 188 augment /l2vpn:l2vpn: 189 +--rw igmp-snooping 190 | +--rw global 191 | | +--rw enable? boolean {global-admin-enable}? 192 | | +--rw max-entry? uint32 193 | | +--rw bandwidth? uint32 194 | | +--rw ssm-mapping-policys 195 | | | +--rw ssm-mapping-policy* [name] 196 | | | +--rw name string 197 | | | +--rw ssm-map* [group-address group-mask-length source-address] 198 | | | +--rw group-address inet:ipv4-address 199 | | | +--rw group-mask-length uint8 200 | | | +--rw source-address inet:ipv4-address 201 | | +--rw unspecified-channel-deny? boolean 202 | | +--rw global-cac-configs 203 | | | +--rw global-cac-config* [channel-name channel-mode] 204 | | | +--rw channel-name string 205 | | | +--rw channel-mode channel-mode 206 | | | +--rw max-entry? uint32 207 | | | +--rw channel-policys 208 | | | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length] 209 | | | +--rw group-address inet:ipv4-address 210 | | | +--rw group-mask-length uint8 211 | | | +--rw source-address inet:ipv4-address 212 | | | +--rw source-mask-length uint8 213 | | | +--rw bandwidth-each-entry? uint32 214 | | +--rw send-query-source? inet:ipv4-address 215 | +--rw l2vpn-multicast-instances 216 | +--rw l2vpn-multicast-instance* [name type] 217 | +--rw name string 218 | +--rw type identityref 219 | +--rw enable? boolean 220 | +--rw version? uint8 221 | +--rw snooping-mode? snooping-mode 222 | +--rw ssm-policy? string 223 | +--rw group-policy? string 224 | +--rw group-policy-version? uint8 225 | +--rw ip-policy? string 226 | +--rw query-ip-policy? string 227 | +--rw last-member-query-interval? uint8 228 | +--rw query-interval? uint16 229 | +--rw query-max-response-time? uint8 230 | +--rw router-aging-time? uint16 231 | +--rw prompt-leave? boolean 232 | +--rw router-learning? boolean 233 | +--rw require-router-alert? boolean 234 | +--rw send-router-alert? boolean 235 | +--rw ssm-mapping? boolean 236 | +--rw ssm-mapping-policy? string 237 | +--rw robustness-variable? uint8 238 | +--rw source-life-time? uint32 239 | +--rw unspecified-channel-deny? boolean 240 | +--rw max-entry? uint32 241 | +--rw max-entry-except-policy? string 242 | +--rw bandwidth-lose-mode? boolean 243 | +--rw proxy-enable? boolean 244 | +--rw proxy-router-protocol-pass? boolean 245 | +--rw query-enable? boolean 246 | +--rw querier-election? boolean 247 | +--rw report-suppress? boolean 248 | +--rw ssm-map* [group-address group-mask-length source-address] 249 | | +--rw group-address inet:ipv4-address 250 | | +--rw group-mask-length uint8 251 | | +--rw source-address inet:ipv4-address 252 | +--rw static-pw-router* [peer-ip pw-id] 253 | | +--rw peer-ip inet:ip-address 254 | | +--rw pw-id uint32 255 | +--rw static-ac-router-port* [name pe-id ce-id] 256 | | +--rw name if:interface-ref 257 | | +--rw pe-id uint16 258 | | +--rw ce-id uint16 259 | +--rw static-pw-group* [peer-ip pw-id] 260 | | +--rw peer-ip inet:ip-address 261 | | +--rw pw-id uint32 262 | | +--rw static-group-sources 263 | | +--rw static-group-source* [group-address source-address] 264 | | +--rw group-address inet:ipv4-address 265 | | +--rw source-address inet:ipv4-address 266 | +--rw static-ac-static-group* [name pe-id ce-id] 267 | | +--rw name if:interface-ref 268 | | +--rw pe-id uint16 269 | | +--rw ce-id uint16 270 | | +--rw static-group-sources 271 | | +--rw static-group-source* [group-address source-address] 272 | | +--rw group-address inet:ipv4-address 273 | | +--rw source-address inet:ipv4-address 274 | +--rw cac-configs 275 | | +--rw cac-config* [channel-name channel-mode] 276 | | +--rw channel-name string 277 | | +--rw channel-mode channel-mode 278 | | +--rw max-entry? uint32 279 | | +--rw channel-policys 280 | | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length] 281 | | +--rw group-address inet:ipv4-address 282 | | +--rw group-mask-length uint8 283 | | +--rw source-address inet:ipv4-address 284 | | +--rw source-mask-length uint8 285 | | +--rw bandwidth-each-entry? uint32 286 | +--rw interfaces 287 | +--rw interface* [interface] 288 | +--rw interface if:interface-ref 289 | +--rw bandwidth-lose-mode? boolean 290 | +--rw max-entry? uint32 291 | +--rw group-policy? string 292 | +--rw group-policy-version? uint8 293 | +--rw (group-policy-vlan)? 294 | | +--:(qinq-range) 295 | | | +--rw qinq-vlan* [pe-id] 296 | | | +--rw pe-id uint16 297 | | | +--rw vlan-bitmap? string 298 | | +--:(dot1q-range) 299 | | +--rw vlan-bitmap? string 300 | +--rw trunk-bandwidth* [bandwidth] 301 | | +--rw bandwidth uint32 302 | | +--rw vlan-bitmap? string 303 | +--rw dot1q-bandwidth* [bandwidth] 304 | | +--rw bandwidth uint32 305 | | +--rw vlan-bitmap? string 306 | +--rw dot1q-channel-bandwidth* [channel-name bandwidth] 307 | +--rw channel-name string 308 | +--rw bandwidth uint32 309 | +--rw vlan-bitmap? string 310 +--rw mld-snooping 311 +--rw global 312 | +--rw enable? boolean {global-admin-enable}? 313 | +--rw max-entry? uint32 314 | +--rw bandwidth? uint32 315 | +--rw ssm-mapping-policys 316 | | +--rw ssm-mapping-policy* [name] 317 | | +--rw name string 318 | | +--rw ssm-map* [group-address group-mask-length source-address] 319 | | +--rw group-address inet:ipv6-address 320 | | +--rw group-mask-length uint8 321 | | +--rw source-address inet:ipv6-address 322 | +--rw unspecified-channel-deny? boolean 323 | +--rw global-cac-configs 324 | | +--rw global-cac-config* [channel-name channel-mode] 325 | | +--rw channel-name string 326 | | +--rw channel-mode channel-mode 327 | | +--rw channel-policys 328 | | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length] 329 | | +--rw group-address inet:ipv6-address 330 | | +--rw group-mask-length uint8 331 | | +--rw source-address inet:ipv6-address 332 | | +--rw source-mask-length uint8 333 | | +--rw bandwidth-each-entry? uint32 334 | +--rw send-query-source? inet:ipv6-address 335 +--rw l2vpn-multicast-instances 336 +--rw l2vpn-multicast-instance* [name type] 337 +--rw name string 338 +--rw type identityref 339 +--rw enable? boolean 340 +--rw version? uint8 341 +--rw snooping-mode? snooping-mode 342 +--rw ssm-policy? string 343 +--rw group-policy? string 344 +--rw group-policy-version? uint8 345 +--rw ip-policy? string 346 +--rw query-ip-policy? string 347 +--rw last-member-query-interval? uint8 348 +--rw query-interval? uint16 349 +--rw query-max-response-time? uint8 350 +--rw router-aging-time? uint16 351 +--rw prompt-leave? boolean 352 +--rw router-learning? boolean 353 +--rw require-router-alert? boolean 354 +--rw send-router-alert? boolean 355 +--rw ssm-mapping? boolean 356 +--rw ssm-mapping-policy? string 357 +--rw robustness-variable? uint8 358 +--rw source-life-time? uint32 359 +--rw unspecified-channel-deny? boolean 360 +--rw max-entry? uint32 361 +--rw max-entry-except-policy? string 362 +--rw bandwidth-lose-mode? boolean 363 +--rw proxy-enable? boolean 364 +--rw proxy-router-protocol-pass? boolean 365 +--rw query-enable? boolean 366 +--rw querier-election? boolean 367 +--rw report-suppress? boolean 368 +--rw ssm-map* [group-address group-mask-length source-address] 369 | +--rw group-address inet:ipv6-address 370 | +--rw group-mask-length uint8 371 | +--rw source-address inet:ipv6-address 372 +--rw static-pw-router* [peer-ip pw-id] 373 | +--rw peer-ip inet:ip-address 374 | +--rw pw-id uint32 375 +--rw static-ac-router-port* [name pe-id ce-id] 376 | +--rw name if:interface-ref 377 | +--rw pe-id uint16 378 | +--rw ce-id uint16 379 +--rw static-pw-group* [peer-ip pw-id] 380 | +--rw peer-ip inet:ip-address 381 | +--rw pw-id uint32 382 | +--rw static-group-sources 383 | +--rw static-group-source* [group-address source-address] 384 | +--rw group-address inet:ipv6-address 385 | +--rw source-address inet:ipv6-address 386 +--rw static-ac-static-group* [name pe-id ce-id] 387 | +--rw name if:interface-ref 388 | +--rw pe-id uint16 389 | +--rw ce-id uint16 390 | +--rw static-group-sources 391 | +--rw static-group-source* [group-address source-address] 392 | +--rw group-address inet:ipv6-address 393 | +--rw source-address inet:ipv6-address 394 +--rw cac-configs 395 | +--rw cac-config* [channel-name channel-mode] 396 | +--rw channel-name string 397 | +--rw channel-mode channel-mode 398 | +--rw channel-policys 399 | +--rw channel-policy* [group-address group-mask-length source-address source-mask-length] 400 | +--rw group-address inet:ipv6-address 401 | +--rw group-mask-length uint8 402 | +--rw source-address inet:ipv6-address 403 | +--rw source-mask-length uint8 404 | +--rw bandwidth-each-entry? uint32 405 +--rw interfaces 406 +--rw interface* [interface] 407 +--rw interface if:interface-ref 408 +--rw bandwidth-lose-mode? boolean 409 +--rw max-entry? uint32 410 +--rw group-policy? string 411 +--rw group-policy-version? uint8 412 +--rw (group-policy-vlan)? 413 | +--:(qinq-range) 414 | | +--rw qinq-vlan* [pe-id] 415 | | +--rw pe-id uint16 416 | | +--rw vlan-bitmap? string 417 | +--:(dot1q-range) 418 | +--rw vlan-bitmap? string 419 +--rw trunk-bandwidth* [bandwidth] 420 | +--rw bandwidth uint32 421 | +--rw vlan-bitmap? string 422 +--rw dot1q-bandwidth* [bandwidth] 423 | +--rw bandwidth uint32 424 | +--rw vlan-bitmap? string 425 +--rw dot1q-channel-bandwidth* [channel-name bandwidth] 426 +--rw channel-name string 427 +--rw bandwidth uint32 428 +--rw vlan-bitmap? string 430 3.2. VPLS Multicast Operational State 432 The IGMP or MLD snooping in VPLS module contains operational state 433 information also in a two-level hierarchy as mentioned earlier. 435 Global level: IGMP or MLD snooping operational state attributes 436 for the entire system. 438 L2vpn instance level: IGMP or MLD snooping operational state 439 attributes specific to the given l2vpn instance. 441 augment /l2vpn:l2vpn-state: 443 +--ro igmp-snooping 444 | +--ro global 445 | | +--ro enable? boolean {global-admin-enable}? 446 | | +--ro max-entry? uint32 447 | | +--ro bandwidth? uint32 448 | | +--ro ssm-mapping-policys 449 | | | +--ro ssm-mapping-policy* [name] 450 | | | +--ro name string 451 | | | +--ro ssm-map* [group-address group-mask-length source-address] 452 | | | +--ro group-address inet:ipv4-address 453 | | | +--ro group-mask-length uint8 454 | | | +--ro source-address inet:ipv4-address 455 | | +--ro unspecified-channel-deny? boolean 456 | | +--ro global-cac-configs 457 | | | +--ro global-cac-config* [channel-name channel-mode] 458 | | | +--ro channel-name string 459 | | | +--ro channel-mode channel-mode 460 | | | +--ro max-entry? uint32 461 | | | +--ro channel-policys 462 | | | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length] 463 | | | +--ro group-address inet:ipv4-address 464 | | | +--ro group-mask-length uint8 465 | | | +--ro source-address inet:ipv4-address 466 | | | +--ro source-mask-length uint8 467 | | | +--ro bandwidth-each-entry? uint32 468 | | +--ro dynamic-entry? uint32 469 | | +--ro dynamic-bandwidth? uint32 470 | | +--ro channel-cac* [channel-name channel-mode] 471 | | | +--ro channel-name string 472 | | | +--ro channel-mode channel-mode 473 | | | +--ro dynamic-entry-count? uint32 474 | | | +--ro dynamic-bandwidth? uint32 475 | | +--ro send-query-source? inet:ipv4-address 476 | +--ro l2vpn-multicast-instances 477 | +--ro l2vpn-multicast-instance* [name type] 478 | +--ro name string 479 | +--ro type identityref 480 | +--ro enable? boolean 481 | +--ro version? uint8 482 | +--ro snooping-mode? snooping-mode 483 | +--ro ssm-policy? string 484 | +--ro group-policy? string 485 | +--ro group-policy-version? uint8 486 | +--ro ip-policy? string 487 | +--ro query-ip-policy? string 488 | +--ro last-member-query-interval? uint8 489 | +--ro query-interval? uint16 490 | +--ro query-max-response-time? uint8 491 | +--ro router-aging-time? uint16 492 | +--ro prompt-leave? boolean 493 | +--ro router-learning? boolean 494 | +--ro require-router-alert? boolean 495 | +--ro send-router-alert? boolean 496 | +--ro ssm-mapping? boolean 497 | +--ro ssm-mapping-policy? string 498 | +--ro robustness-variable? uint8 499 | +--ro source-life-time? uint32 500 | +--ro unspecified-channel-deny? boolean 501 | +--ro max-entry? uint32 502 | +--ro max-entry-except-policy? string 503 | +--ro bandwidth-lose-mode? boolean 504 | +--ro proxy-enable? boolean 505 | +--ro proxy-router-protocol-pass? boolean 506 | +--ro query-enable? boolean 507 | +--ro querier-election? boolean 508 | +--ro report-suppress? boolean 509 | +--ro querier-state 510 | | +--ro querierState? boolean 511 | | +--ro querierAddr? inet:ip-address 512 | +--ro statistics 513 | | +--ro received 514 | | | +--ro v1-report? yang:counter64 515 | | | +--ro v2-report? yang:counter64 516 | | | +--ro v3-report? yang:counter64 517 | | | +--ro v1-query? yang:counter64 518 | | | +--ro v2-query? yang:counter64 519 | | | +--ro v3-query? yang:counter64 520 | | | +--ro leave? yang:counter64 521 | | | +--ro hello? yang:counter64 522 | | | +--ro zero-source-query? yang:counter64 523 | | | +--ro no-zero-source-query? yang:counter64 524 | | +--ro sent 525 | | +--ro general-query? yang:counter64 526 | | +--ro source-group-specific-query? yang:counter64 527 | | +--ro group--specific-query? yang:counter64 528 | +--ro ssm-map* [group-address group-mask-length source-address] 529 | | +--ro group-address inet:ipv4-address 530 | | +--ro group-mask-length uint8 531 | | +--ro source-address inet:ipv4-address 532 | +--ro static-pw-router-port* [peer-ip pw-id] 533 | | +--ro peer-ip inet:ip-address 534 | | +--ro pw-id uint32 535 | +--ro static-ac-router-port* [name pe-id ce-id] 536 | | +--ro name if:interface-ref 537 | | +--ro pe-id uint16 538 | | +--ro ce-id uint16 539 | +--ro static-pw-group* [peer-ip pw-id] 540 | | +--ro peer-ip inet:ip-address 541 | | +--ro pw-id uint32 542 | | +--ro static-group-sources 543 | | +--ro static-group-source* [group-address source-address] 544 | | +--ro group-address inet:ipv4-address 545 | | +--ro source-address inet:ipv4-address 546 | +--ro static-ac-group* [name pe-id ce-id] 547 | | +--ro name if:interface-ref 548 | | +--ro pe-id uint16 549 | | +--ro ce-id uint16 550 | | +--ro static-group-sources 551 | | +--ro static-group-source* [group-address source-address] 552 | | +--ro group-address inet:ipv4-address 553 | | +--ro source-address inet:ipv4-address 554 | +--ro cac-configs 555 | | +--ro cac-config* [channel-name channel-mode] 556 | | +--ro channel-name string 557 | | +--ro channel-mode channel-mode 558 | | +--ro max-entry? uint32 559 | | +--ro channel-policys 560 | | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length] 561 | | +--ro group-address inet:ipv4-address 562 | | +--ro group-mask-length uint8 563 | | +--ro source-address inet:ipv4-address 564 | | +--ro source-mask-length uint8 565 | | +--ro bandwidth-each-entry? uint32 566 | +--ro interfaces 567 | | +--ro interface* [interface] 568 | | +--ro interface if:interface-ref 569 | | +--ro bandwidth-lose-mode? boolean 570 | | +--ro max-entry? uint32 571 | | +--ro group-policy? string 572 | | +--ro group-policy-version? uint8 573 | | +--ro (group-policy-vlan)? 574 | | | +--:(qinq-range) 575 | | | | +--ro qinq-vlan* [pe-id] 576 | | | | +--ro pe-id uint16 577 | | | | +--ro vlan-bitmap? string 578 | | | +--:(dot1q-range) 579 | | | +--ro vlan-bitmap? string 580 | | +--ro trunk-bandwidth* [bandwidth] 581 | | | +--ro bandwidth uint32 582 | | | +--ro vlan-bitmap? string 583 | | +--ro dot1q-bandwidth* [bandwidth] 584 | | | +--ro bandwidth uint32 585 | | | +--ro vlan-bitmap? string 586 | | +--ro dot1q-channel-bandwidth* [channel-name bandwidth] 587 | | | +--ro channel-name string 588 | | | +--ro bandwidth uint32 589 | | | +--ro vlan-bitmap? string 590 | | +--ro dynamic-entry? uint32 591 | | +--ro dynamic-trunk-bandwidth* [vlan-id] 592 | | | +--ro vlan-id uint16 593 | | | +--ro bandwidth? uint32 594 | | +--ro dynamic-dot1q-bandwidth* [vlan-id] 595 | | | +--ro vlan-id uint16 596 | | | +--ro bandwidth? uint32 597 | | +--ro dynamic-dot1q-channel-bandwidth* [channel-name] 598 | | +--ro channel-name string 599 | | +--ro vlan-bandwidth* [vlan-id] 600 | | +--ro vlan-id uint16 601 | | +--ro bandwidth? uint32 602 | +--ro (dynamic-router-port)? 603 | | +--:(pw) 604 | | | +--ro dynamic-pw-router-port* [peer-ip pw-id] 605 | | | +--ro peer-ip inet:ip-address 606 | | | +--ro pw-id uint32 607 | | | +--ro expire? uint32 608 | | | +--ro up-time? uint32 609 | | | +--ro flag? flagType 610 | | +--:(ac) 611 | | +--ro dynamic-ac-router-port* [name pe-id ce-id] 612 | | +--ro name if:interface-ref 613 | | +--ro pe-id uint16 614 | | +--ro ce-id uint16 615 | | +--ro expire? uint32 616 | | +--ro up-time? uint32 617 | | +--ro flag? flagType 618 | +--ro (dynamic-group)? 619 | +--:(pw-dynamic-group) 620 | | +--ro dynamic-pw-group* [peer-ip pw-id] 621 | | +--ro peer-ip inet:ip-address 622 | | +--ro pw-id uint32 623 | | +--ro groups 624 | | +--ro group* [address] 625 | | +--ro address inet:ipv4-address 626 | | +--ro filter-mode? filter-mode 627 | | +--ro up-time? uint32 628 | | +--ro group-timer? exitOrNot 629 | | +--ro expire? uint32 630 | | +--ro retransmission-count? uint32 631 | | +--ro last-member-query? boolean 632 | | +--ro compatibility? compatibility 633 | | +--ro v1-host-timer? exitOrNot 634 | | +--ro v2-host-timer? exitOrNot 635 | | +--ro last-source-member-query-timer? exitOrNot 636 | | +--ro last-source-member-query? boolean 637 | | +--ro sources 638 | | +--ro source* [address] 639 | | +--ro address inet:ipv4-address 640 | | +--ro expire? uint32 641 | | +--ro up-time? uint32 642 | | +--ro source-timer? exitOrNot 643 | | +--ro retransmission-count? uint32 644 | | +--ro last-source-member-query? boolean 645 | +--:(ac-dynamic-group) 646 | +--ro dynamic-ac-dynamic-group* [name pe-id ce-id] 647 | +--ro name if:interface-ref 648 | +--ro pe-id uint16 649 | +--ro ce-id uint16 650 | +--ro groups 651 | +--ro group* [address] 652 | +--ro address inet:ipv4-address 653 | +--ro filter-mode? filter-mode 654 | +--ro up-time? uint32 655 | +--ro group-timer? exitOrNot 656 | +--ro expire? uint32 657 | +--ro retransmission-count? uint32 658 | +--ro last-member-query? boolean 659 | +--ro compatibility? compatibility 660 | +--ro v1-host-timer? exitOrNot 661 | +--ro v2-host-timer? exitOrNot 662 | +--ro last-source-member-query-timer? exitOrNot 663 | +--ro last-source-member-query? boolean 664 | +--ro sources 665 | +--ro source* [address] 666 | +--ro address inet:ipv4-address 667 | +--ro expire? uint32 668 | +--ro up-time? uint32 669 | +--ro source-timer? exitOrNot 670 | +--ro retransmission-count? uint32 671 | +--ro last-source-member-query? boolean 672 +--ro mld-snooping 673 +--ro global 674 | +--ro enable? boolean {global-admin-enable}? 675 | +--ro max-entry? uint32 676 | +--ro bandwidth? uint32 677 | +--ro ssm-mapping-policys 678 | | +--ro ssm-mapping-policy* [name] 679 | | +--ro name string 680 | | +--ro ssm-map* [group-address group-mask-length source-address] 681 | | +--ro group-address inet:ipv6-address 682 | | +--ro group-mask-length uint8 683 | | +--ro source-address inet:ipv6-address 684 | +--ro unspecified-channel-deny? boolean 685 | +--ro global-cac-configs 686 | | +--ro global-cac-config* [channel-name channel-mode] 687 | | +--ro channel-name string 688 | | +--ro channel-mode channel-mode 689 | | +--ro channel-policys 690 | | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length] 691 | | +--ro group-address inet:ipv6-address 692 | | +--ro group-mask-length uint8 693 | | +--ro source-address inet:ipv6-address 694 | | +--ro source-mask-length uint8 695 | | +--ro bandwidth-each-entry? uint32 696 | +--ro dynamic-entry? uint32 697 | +--ro dynamic-bandwidth? uint32 698 | +--ro channel-cac* [channel-name channel-mode] 699 | | +--ro channel-name string 700 | | +--ro channel-mode channel-mode 701 | | +--ro dynamic-entry-count? uint32 702 | | +--ro dynamic-bandwidth? uint32 703 | +--ro entry-count? uint32 704 | +--ro send-query-source? inet:ipv6-address 705 +--ro l2vpn-multicast-instances 706 +--ro l2vpn-multicast-instance* [name type] 707 +--ro name string 708 +--ro type identityref 709 +--ro enable? boolean 710 +--ro version? uint8 711 +--ro snooping-mode? snooping-mode 712 +--ro ssm-policy? string 713 +--ro group-policy? string 714 +--ro group-policy-version? uint8 715 +--ro ip-policy? string 716 +--ro query-ip-policy? string 717 +--ro last-member-query-interval? uint8 718 +--ro query-interval? uint16 719 +--ro query-max-response-time? uint8 720 +--ro router-aging-time? uint16 721 +--ro prompt-leave? boolean 722 +--ro router-learning? boolean 723 +--ro require-router-alert? boolean 724 +--ro send-router-alert? boolean 725 +--ro ssm-mapping? boolean 726 +--ro ssm-mapping-policy? string 727 +--ro robustness-variable? uint8 728 +--ro source-life-time? uint32 729 +--ro unspecified-channel-deny? boolean 730 +--ro max-entry? uint32 731 +--ro max-entry-except-policy? string 732 +--ro bandwidth-lose-mode? boolean 733 +--ro proxy-enable? boolean 734 +--ro proxy-router-protocol-pass? boolean 735 +--ro query-enable? boolean 736 +--ro querier-election? boolean 737 +--ro report-suppress? boolean 738 +--ro querier-state 739 | +--ro querierState? boolean 740 | +--ro querierAddr? inet:ipv6-address 741 +--ro statistics 742 | +--ro received 743 | | +--ro v1-report? yang:counter64 744 | | +--ro v2-report? yang:counter64 745 | | +--ro v3-report? yang:counter64 746 | | +--ro v1-query? yang:counter64 747 | | +--ro v2-query? yang:counter64 748 | | +--ro v3-query? yang:counter64 749 | | +--ro leave? yang:counter64 750 | | +--ro hello? yang:counter64 751 | | +--ro zero-source-query? yang:counter64 752 | | +--ro no-zero-source-query? yang:counter64 753 | +--ro sent 754 | +--ro general-query? yang:counter64 755 | +--ro source-group-specific-query? yang:counter64 756 | +--ro group--specific-query? yang:counter64 757 +--ro ssm-map* [group-address group-mask-length source-address] 758 | +--ro group-address inet:ipv6-address 759 | +--ro group-mask-length uint8 760 | +--ro source-address inet:ipv6-address 761 +--ro static-pw-router-port* [peer-ip pw-id] 762 | +--ro peer-ip inet:ip-address 763 | +--ro pw-id uint32 764 +--ro static-ac-router-port* [name pe-id ce-id] 765 | +--ro name if:interface-ref 766 | +--ro pe-id uint16 767 | +--ro ce-id uint16 768 +--ro static-pw-group* [peer-ip pw-id] 769 | +--ro peer-ip inet:ip-address 770 | +--ro pw-id uint32 771 | +--ro static-group-sources 772 | +--ro static-group-source* [group-address source-address] 773 | +--ro group-address inet:ipv6-address 774 | +--ro source-address inet:ipv6-address 775 +--ro static-ac-group* [name pe-id ce-id] 776 | +--ro name if:interface-ref 777 | +--ro pe-id uint16 778 | +--ro ce-id uint16 779 | +--ro static-group-sources 780 | +--ro static-group-source* [group-address source-address] 781 | +--ro group-address inet:ipv6-address 782 | +--ro source-address inet:ipv6-address 783 +--ro cac-configs 784 | +--ro cac-config* [channel-name channel-mode] 785 | +--ro channel-name string 786 | +--ro channel-mode channel-mode 787 | +--ro channel-policys 788 | +--ro channel-policy* [group-address group-mask-length source-address source-mask-length] 789 | +--ro group-address inet:ipv6-address 790 | +--ro group-mask-length uint8 791 | +--ro source-address inet:ipv6-address 792 | +--ro source-mask-length uint8 793 | +--ro bandwidth-each-entry? uint32 794 +--ro dynamic-entry? uint32 795 +--ro dynamic-bandwidth? uint32 796 +--ro channel-cac* [channel-name channel-mode] 797 | +--ro channel-name string 798 | +--ro channel-mode channel-mode 799 | +--ro dynamic-entry-count? uint32 800 | +--ro dynamic-bandwidth? uint32 801 +--ro interfaces 802 | +--ro interface* [interface] 803 | +--ro interface if:interface-ref 804 | +--ro bandwidth-lose-mode? boolean 805 | +--ro max-entry? uint32 806 | +--ro group-policy? string 807 | +--ro group-policy-version? uint8 808 | +--ro (group-policy-vlan)? 809 | | +--:(qinq-range) 810 | | | +--ro qinq-vlan* [pe-id] 811 | | | +--ro pe-id uint16 812 | | | +--ro vlan-bitmap? string 813 | | +--:(dot1q-range) 814 | | +--ro vlan-bitmap? string 815 | +--ro trunk-bandwidth* [bandwidth] 816 | | +--ro bandwidth uint32 817 | | +--ro vlan-bitmap? string 818 | +--ro dot1q-bandwidth* [bandwidth] 819 | | +--ro bandwidth uint32 820 | | +--ro vlan-bitmap? string 821 | +--ro dot1q-channel-bandwidth* [channel-name bandwidth] 822 | | +--ro channel-name string 823 | | +--ro bandwidth uint32 824 | | +--ro vlan-bitmap? string 825 | +--ro dynamic-entry? uint32 826 | +--ro dynamic-trunk-bandwidth* [vlan-id] 827 | | +--ro vlan-id uint16 828 | | +--ro bandwidth? uint32 829 | +--ro dynamic-dot1q-bandwidth* [vlan-id] 830 | | +--ro vlan-id uint16 831 | | +--ro bandwidth? uint32 832 | +--ro dynamic-dot1q-channel-bandwidth* [channel-name] 833 | +--ro channel-name string 834 | +--ro vlan-bandwidth* [vlan-id] 835 | +--ro vlan-id uint16 836 | +--ro bandwidth? uint32 837 +--ro (dynamic-router-port)? 838 | +--:(pw) 839 | | +--ro dynamic-pw-router-port* [peer-ip pw-id] 840 | | +--ro peer-ip inet:ip-address 841 | | +--ro pw-id uint32 842 | | +--ro expire? uint32 843 | | +--ro up-time? uint32 844 | | +--ro flag? flagType 845 | +--:(ac) 846 | +--ro dynamic-ac-router-port* [name pe-id ce-id] 847 | +--ro name if:interface-ref 848 | +--ro pe-id uint16 849 | +--ro ce-id uint16 850 | +--ro expire? uint32 851 | +--ro up-time? uint32 852 | +--ro flag? flagType 853 +--ro (dynamic-group)? 854 +--:(pw-dynamic-group) 855 | +--ro dynamic-pw-group* [peer-ip pw-id] 856 | +--ro peer-ip inet:ip-address 857 | +--ro pw-id uint32 858 | +--ro groups 859 | +--ro group* [address] 860 | +--ro address inet:ipv6-address 861 | +--ro filter-mode? filter-mode 862 | +--ro up-time? uint32 863 | +--ro group-timer? exitOrNot 864 | +--ro expire? uint32 865 | +--ro retransmission-count? uint32 866 | +--ro last-member-query? boolean 867 | +--ro compatibility? compatibility 868 | +--ro v1-host-timer? exitOrNot 869 | +--ro v2-host-timer? exitOrNot 870 | +--ro last-source-member-query-timer? exitOrNot 871 | +--ro last-source-member-query? boolean 872 | +--ro sources 873 | +--ro source* [address] 874 | +--ro address inet:ipv6 875 | +--ro expire? uint32 876 | +--ro up-time? uint32 877 | +--ro source-timer? exitOrNot 878 | +--ro retransmission-count? uint32 879 | +--ro last-source-member-query? boolean 880 +--:(ac-dynamic-group) 881 +--ro dynamic-ac-dynamic-group* [name pe-id ce-id] 882 +--ro name if:interface-ref 883 +--ro pe-id uint16 884 +--ro ce-id uint16 885 +--ro groups 886 +--ro group* [address] 887 +--ro address inet:ipv6 888 +--ro filter-mode? filter-mode 889 +--ro up-time? uint32 890 +--ro group-timer? exitOrNot 891 +--ro expire? uint32 892 +--ro retransmission-count? uint32 893 +--ro last-member-query? boolean 894 +--ro compatibility? compatibility 895 +--ro v1-host-timer? exitOrNot 896 +--ro v2-host-timer? exitOrNot 897 +--ro last-source-member-query-timer? exitOrNot 898 +--ro last-source-member-query? boolean 899 +--ro sources 900 +--ro source* [address] 901 +--ro address inet:ipv6-address 902 +--ro expire? uint32 903 +--ro up-time? uint32 904 +--ro source-timer? exitOrNot 905 +--ro retransmission-count? uint32 906 +--ro last-source-member-query? boolean 908 4. VPLS Multicast YANG Modules 910 file "ietf-l2vpn-igmp-mld-snooping@2017-03-13.yang" 911 module ietf-l2vpn-igmp-mld-snooping { 912 namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-igmp-mld-snooping"; 913 // replace with IANA namespace when assigned 914 prefix l2vpn-igmp-mld-snooping; 916 import ietf-inet-types { 917 prefix "inet"; 918 } 920 import ietf-yang-types { 921 prefix "yang"; 922 } 924 import ietf-interfaces { 925 prefix "if"; 926 } 928 import ietf-l2vpn { 929 prefix "l2vpn"; 930 } 932 organization 933 "IETF BESS Working Group"; 935 contact 936 "WG Web: 937 WG List: 939 Editors: "; 941 description 942 "The module defines a collection of YANG definitions common for 943 IGMP and MLD snooping in Virtual Private LAN Service."; 945 revision 2017-03-13 { 946 description 947 "Initial revision."; 948 reference 949 "RFC XXX: A YANG Data Model for VPLS Multicast"; 950 } 952 /* 953 * Features 954 */ 955 feature global-admin-enable { 956 description 957 "Support global configuration to enable or disable protocol."; 958 } 960 /* 961 * Typedefs 962 */ 963 typedef ssm-map-ipv4-addr-type { 964 type union { 965 type enumeration { 966 enum 'policy' { 967 description 968 "Source address is specified in SSM map policy."; 969 } 970 } 971 type inet:ipv4-address; 972 } 973 description 974 "Multicast source IP address type for SSM map."; 975 } // ssm-map-ipv4-addr-type 977 typedef ssm-map-ipv6-addr-type { 978 type union { 979 type enumeration { 980 enum 'policy' { 981 description 982 "Source address is specified in SSM map policy."; 983 } 984 } 985 type inet:ipv6-address; 986 } 987 description 988 "Multicast source IP address type for SSM map."; 989 } // ssm-map-ipv6-addr-type 990 typedef source-ipv4-addr-type { 991 type union { 992 type enumeration { 993 enum '*' { 994 description 995 "Any source address."; 996 } 997 } 998 type inet:ipv4-address; 999 } 1000 description 1001 "Multicast source IP address type."; 1002 } // source-ipv4-addr-type 1004 typedef source-ipv6-addr-type { 1005 type union { 1006 type enumeration { 1007 enum '*' { 1008 description 1009 "Any source address."; 1010 } 1011 } 1012 type inet:ipv6-address; 1013 } 1014 description 1015 "Multicast source IP address type."; 1016 } // source-ipv6-addr-type 1018 typedef channel-mode { 1019 type enumeration { 1020 enum "asm" { 1021 value 0; 1022 description 1023 "Channel-Name-Mode ASM."; 1024 } 1025 enum "ssm" { 1026 value 1; 1027 description 1028 "Channel-Name-Mode SSM."; 1029 } 1030 } 1031 description 1032 "Channel Mode"; 1033 } 1035 typedef flagType { 1036 type enumeration { 1037 enum "STATIC" { 1038 value 0; 1039 description 1040 "Static."; 1041 } 1042 enum "DYNAMIC" { 1043 value 1; 1044 description 1045 "Dynamic."; 1046 } 1047 enum "MAPPING" { 1048 value 2; 1049 description 1050 "SSM Mapping."; 1051 } 1052 enum "STATIC_DYNAMIC" { 1053 value 3; 1054 description 1055 "Both static and dynamic."; 1056 } 1057 enum "STATIC_MAPPING" { 1058 value 4; 1059 description 1060 "Both statically and SSM mapping joined groups exist."; 1061 } 1062 enum "DYNAMIC_MAPPING" { 1063 value 5; 1064 description 1065 "Both dynamically and SSM mapping joined groups exist."; 1066 } 1067 enum "STATIC_DYNAMIC_MAPPING" { 1068 value 6; 1069 description 1070 "Both statically dynamically and SSM mapping joined groups exist."; 1071 } 1072 } 1073 description 1074 "Flag Type"; 1075 } 1077 typedef snooping-mode { 1078 type enumeration { 1079 enum "asm-ssm" { 1080 value 0; 1081 description 1082 "A device learns multicast entries with group 1083 addresses in the ASM and SSM address ranges."; 1084 } 1085 enum "asm-only" { 1086 value 1; 1087 description 1088 "A device only learns multicast entries with group 1089 addresses in the ASM address range."; 1090 } 1091 enum "ssm-only" { 1092 value 2; 1093 description 1094 "A device only learns multicast entries with group 1095 addresses in the SSM address range."; 1096 } 1097 } 1098 description 1099 "Snooping mode"; 1100 } //snooping-mode 1102 typedef VLAN_BITMAP { 1103 type string { 1104 length "2049"; 1105 } 1106 description 1107 "vlan bitmap"; 1108 } 1110 typedef exitOrNot { 1111 type enumeration { 1112 enum "Not-exist" { 1113 value 0; 1114 description 1115 "Not exist."; 1116 } 1117 enum "Exist" { 1118 value 1; 1119 description 1120 "Exist."; 1121 } 1122 } 1123 description 1124 "Exist or Not-exist"; 1125 } 1127 typedef filter-mode { 1128 type enumeration { 1129 enum "include" { 1130 description 1131 ""; 1132 } 1133 enum "exclude" { 1134 description 1135 ""; 1136 } 1137 } 1138 description 1139 "group filter mode"; 1140 } 1142 typedef compatibility-mode { 1143 type enumeration { 1144 enum "V1" { 1145 value 0; 1146 description 1147 "L2VPN service multicast version 1."; 1148 } 1149 enum "V2" { 1150 value 1; 1151 description 1152 "L2VPN service multicast version 2."; 1153 } 1154 enum "V3" { 1155 value 2; 1156 description 1157 "L2VPN service multicast version 3."; 1158 } 1159 } 1160 description 1161 "Group Compatible Mode"; 1162 } 1164 /* 1165 * Identities 1166 */ 1168 /* 1169 * Groupings 1170 */ 1172 grouping group-states-igmp-mld-snooping { 1173 description 1174 "Per port state attributes for both IGMP and MLD snooping 1175 groups."; 1177 leaf filter-mode { 1178 type filter-mode; 1179 description "Group filter mode."; 1180 } 1181 leaf up-time { 1182 type uint32; 1183 units seconds; 1184 description 1185 "Time since a multicast group was discovered, in seconds."; 1186 } 1187 leaf group-timer { 1188 type exitOrNot; 1189 description 1190 "Group timer."; 1191 } 1192 leaf expire { 1193 type uint32; 1194 units seconds; 1195 description 1196 "Time after which a group will be deleted from the 1197 group record table, in seconds."; 1198 } 1199 leaf retransmission-count { 1200 type uint32; 1201 description 1202 "Number of times that the last-member 1203 query message is transmitted."; 1204 } 1205 leaf last-member-query { 1206 type boolean; 1207 default "false"; 1208 description 1209 "Whether group-specific Query messages are being sent."; 1210 } 1211 leaf compatibility { 1212 type compatibility-mode; 1213 description 1214 "Group compatible mode."; 1215 } 1216 leaf v1-host-timer { 1217 type exitOrNot; 1218 description 1219 "Timeout period of a L2VPN service multicastv1 host."; 1220 } 1221 leaf v2-host-timer { 1222 type exitOrNot; 1223 description 1224 "Timeout period of a L2VPN service multicastv2 host."; 1225 } 1226 leaf last-source-member-query-timer { 1227 type exitOrNot; 1228 description 1229 "Expire time of a last-member query message."; 1230 } 1231 leaf last-source-member-query { 1232 type boolean; 1233 default "false"; 1234 description 1235 "Whether source-specific Query messages are being sent."; 1236 } 1237 } // group-states-igmp-mld-snooping 1238 grouping source-states-igmp-mld-snooping { 1239 description 1240 "Per port state attributes for both IGMP and MLD snooping 1241 sources."; 1243 leaf expire { 1244 type uint32; 1245 units seconds; 1246 description 1247 "Time after which a source will be deleted 1248 from the source record table, in seconds."; 1249 } 1251 leaf up-time { 1252 type uint32; 1253 units seconds; 1254 description "Time since a multicast source was discovered."; 1255 } 1257 leaf source-timer { 1258 type exitOrNot; 1259 description 1260 "source timer."; 1261 } 1262 leaf retransmission-count { 1263 type uint32; 1264 description 1265 "Number of times that the last-member 1266 query message is transmitted."; 1267 } 1268 leaf last-source-member-query { 1269 type boolean; 1270 default "false"; 1271 description 1272 "Whether source-specific Query messages are being sent."; 1273 } 1274 } // source-states-igmp-mld-snooping 1276 grouping ipv4-static-group-source { 1277 description "static group source address."; 1278 container static-group-sources { 1279 description 1280 "List of static groups. "; 1281 list static-group-source { 1282 key "group-address source-address"; 1283 description 1284 "Static group."; 1285 leaf group-address { 1286 type inet:ipv4-address; 1287 description 1288 "Address of a multicast group."; 1289 } 1290 leaf source-address { 1291 type inet:ipv4-address; 1292 description 1293 "Multicast source address."; 1294 } 1295 } 1296 } 1297 } //ipv4-static-group-source 1299 grouping ipv6-static-group-source { 1300 description "static group source address."; 1301 container static-group-sources { 1302 description 1303 "List of static groups. "; 1304 list static-group-source { 1305 key "group-address source-address"; 1306 description 1307 "Static group."; 1308 leaf group-address { 1309 type inet:ipv6-address; 1310 description 1311 "Address of a multicast group."; 1312 } 1313 leaf source-address { 1314 type inet:ipv6-address; 1315 description 1316 "Multicast source address."; 1317 } 1318 } 1319 } 1320 } //ipv6-static-group-source 1322 grouping ipv4-ssm-mapping-attributes { 1323 description "ssm mapping attribute."; 1324 leaf group-address { 1325 type inet:ipv4-address; 1326 description 1327 "Address of a multicast group."; 1328 } 1329 leaf group-mask-length { 1330 type uint8 { 1331 range "4..32"; 1332 } 1333 description 1334 "IP address mask length."; 1335 } 1336 leaf source-address { 1337 type inet:ipv4-address; 1338 description 1339 "Multicast source address."; 1340 } 1341 } //ipv4-ssm-mapping-attributes 1343 grouping ipv6-ssm-mapping-attributes { 1344 description "ssm mapping attribute."; 1345 leaf group-address { 1346 type inet:ipv6-address; 1347 description 1348 "Address of a multicast group."; 1349 } 1350 leaf group-mask-length { 1351 type uint8 { 1352 range "8..128"; 1353 } 1354 description 1355 "IPv6 address mask length."; 1356 } 1357 leaf source-address { 1358 type inet:ipv6-address; 1359 description 1360 "Multicast source address."; 1361 } 1362 } //ipv6-ssm-mapping-attributes 1364 grouping cac-ipv4-policy-attributes { 1365 description "cac policy config attributes."; 1367 leaf channel-name { 1368 type string { 1369 length "1..31"; 1370 } 1371 description 1372 "Name of the channel."; 1373 } 1374 leaf channel-mode { 1375 type channel-mode; 1376 description 1377 "Channel type."; 1378 } 1379 leaf max-entry { 1380 type uint32; 1381 description 1382 "Maximum number of entries that can be generated."; 1383 } 1384 container channel-policys { 1385 description 1386 "L2-multicast CAC Global Channel Policy Config List. "; 1387 list channel-policy { 1388 key 1389 "group-address group-mask-length 1390 source-address source-mask-length"; 1391 max-elements "16"; 1392 description 1393 "L2-multicast CAC Global Channel Policy Config. "; 1394 leaf group-address { 1395 type inet:ipv4-address; 1396 description 1397 "Address of a multicast group."; 1398 } 1399 leaf group-mask-length { 1400 type uint8 { 1401 range "4..32"; 1402 } 1403 description 1404 "IP address mask length."; 1405 } 1406 leaf source-address { 1407 type inet:ipv4-address; 1408 description 1409 "Multicast source address."; 1410 } 1411 leaf source-mask-length { 1412 type uint8 { 1413 range "0..32"; 1414 } 1415 description 1416 "Specify the source mask length."; 1417 } 1418 leaf bandwidth-each-entry { 1419 type uint32 { 1420 range "0..131072"; 1421 } 1422 default "0"; 1423 description 1424 "Specify the bandwidth of each group (in Kbits/sec)."; 1425 } 1426 } //channel-policy 1427 } //channel-policys 1428 } //cac-ipv4-policy-attributes 1430 grouping cac-ipv6-policy-attributes { 1431 description "cac policy config attributes."; 1433 leaf channel-name { 1434 type string { 1435 length "1..31"; 1436 } 1437 description 1438 "Name of the channel."; 1439 } 1440 leaf channel-mode { 1441 type channel-mode; 1442 description 1443 "Channel type."; 1444 } 1445 container channel-policys { 1446 description 1447 "L2-multicast CAC Global Channel Policy Config List. "; 1448 list channel-policy { 1449 key 1450 "group-address group-mask-length 1451 source-address source-mask-length"; 1452 max-elements "16"; 1453 description 1454 "L2-multicast CAC Global Channel Policy Config. "; 1455 leaf group-address { 1456 type inet:ipv6-address; 1457 description 1458 "Address of a multicast group."; 1459 } 1460 leaf group-mask-length { 1461 type uint8 { 1462 range "8..128"; 1463 } 1464 description 1465 "IP address mask length."; 1466 } 1467 leaf source-address { 1468 type inet:ipv6-address; 1469 description 1470 "Multicast source address."; 1471 } 1472 leaf source-mask-length { 1473 type uint8 { 1474 range "0..128"; 1475 } 1476 description 1477 "Specify the source mask length."; 1478 } 1479 leaf bandwidth-each-entry { 1480 type uint32 { 1481 range "0..131072"; 1482 } 1483 default "0"; 1484 description 1485 "Specify the bandwidth of each group (in Kbits/sec)."; 1486 } 1487 } //channel-policy 1489 } //channel-policys 1490 } //cac-ipv6-policy-attributes 1492 grouping cac-dynamic-attributes { 1493 description "Global IGMP or MLD snooping state."; 1494 leaf dynamic-entry { 1495 type uint32; 1496 description 1497 "Maximum number of entries generAted"; 1498 } 1499 leaf dynamic-bandwidth { 1500 type uint32; 1501 description 1502 "Maximum bandwidth of entries generated"; 1503 } 1505 list channel-cac { 1506 key "channel-name channel-mode"; 1507 max-elements "1024"; 1508 description 1509 "L2-multicast CAC Global Channel entry count. "; 1511 leaf channel-name { 1512 type string { 1513 length "1..31"; 1514 } 1515 description 1516 "Name of the channel."; 1517 } 1518 leaf channel-mode { 1519 type channel-mode; 1520 description 1521 "Channel type."; 1522 } 1523 leaf dynamic-entry-count { 1524 type uint32; 1525 description 1526 "Maximum number of entries generated."; 1527 } 1529 leaf dynamic-bandwidth { 1530 type uint32; 1531 description 1532 "Maximum bandwidth of entries generated"; 1533 } 1534 } //global-cac-count 1536 } // cac-dynamic-attributes 1538 grouping global-ipv4-config-attributes { 1539 description "Global IGMP or MLD snooping configuration."; 1541 leaf enable { 1542 if-feature global-admin-enable; 1543 type boolean; 1544 description 1545 "true to enable IGMP or MLD snooping; 1546 false to disable IGMP or MLD snooping."; 1547 } 1549 leaf max-entry { 1550 type uint32; 1551 description 1552 "Maximum number of entries that can be generated"; 1553 } 1555 leaf bandwidth { 1556 type uint32; 1557 description 1558 "Maximum bandwidth of entries that can be generated"; 1559 } 1561 container ssm-mapping-policys { 1562 description 1563 "L2-multicast SSM mapping policy List. "; 1564 list ssm-mapping-policy { 1565 key "name"; 1566 description "ssm mapping policy. "; 1567 leaf name { 1568 type string { 1569 length "1..31"; 1570 } 1571 description "name of ssm mapping policy. "; 1572 } 1574 list ssm-map { 1575 key "group-address group-mask-length source-address"; 1576 description ""; 1577 uses ipv4-ssm-mapping-attributes; 1578 } // list ssm-map 1579 } //ssm-mapping-policy 1580 } //ssm-mapping-policys 1582 leaf unspecified-channel-deny { 1583 type boolean; 1584 description 1585 "Specify the unspecified channel,deny the join of 1586 Multicast group that does not belong to any 1587 channel.By default, no deny channel is configured."; 1588 } 1589 container global-cac-configs { 1590 description 1591 "L2-multicast CAC Global Channel Config List. "; 1592 list global-cac-config { 1593 key "channel-name channel-mode"; 1594 max-elements "1024"; 1595 description 1596 "L2-multicast CAC Global Channel Config. "; 1597 uses cac-ipv4-policy-attributes; 1598 } //global-cac-config 1599 } 1601 } // global-ipv4-config-attributes 1603 grouping global-ipv6-config-attributes { 1604 description "Global IGMP or MLD snooping configuration."; 1606 leaf enable { 1607 if-feature global-admin-enable; 1608 type boolean; 1609 description 1610 "true to enable IGMP or MLD snooping; 1611 false to disable IGMP or MLD snooping."; 1612 } 1614 leaf max-entry { 1615 type uint32; 1616 description 1617 "Maximum number of entries that can be generated"; 1618 } 1620 leaf bandwidth { 1621 type uint32; 1622 description 1623 "Maximum bandwidth of entries that can be generated"; 1624 } 1626 container ssm-mapping-policys { 1627 description 1628 "L2-multicast SSM mapping policy List. "; 1629 list ssm-mapping-policy { 1630 key "name"; 1631 description "ssm mapping policy"; 1632 leaf name { 1633 type string { 1634 length "1..31"; 1635 } 1636 description "name of ssm mapping policy. "; 1637 } 1638 list ssm-map { 1639 key "group-address group-mask-length source-address"; 1640 description ""; 1641 uses ipv6-ssm-mapping-attributes; 1642 } // list ssm-map 1643 } //ssm-mapping-policy 1644 } //ssm-mapping-policys 1646 leaf unspecified-channel-deny { 1647 type boolean; 1648 description 1649 "Specify the unspecified channel,deny the join of 1650 Multicast group that does not belong to any 1651 channel.By default, no deny channel is configured."; 1652 } 1654 container global-cac-configs { 1655 description 1656 "L2-multicast CAC Global Channel Config List. "; 1657 list global-cac-config { 1658 key "channel-name channel-mode"; 1659 max-elements "1024"; 1660 description 1661 "L2-multicast CAC Global Channel Config. "; 1662 uses cac-ipv6-policy-attributes; 1663 } //global-cac-config 1664 } 1666 } // global-ipv6-config-attributes 1668 grouping proxy-config-attributes { 1669 description ""; 1670 leaf proxy-enable { 1671 type boolean; 1672 default "false"; 1673 description 1674 "Enable L2VPN service multicast snooping proxy."; 1675 } 1677 leaf proxy-router-protocol-pass { 1678 type boolean; 1679 default "false"; 1680 description 1681 "L2VPN service multicast snooping proxy-enabled 1682 device to transparently transmit 1683 multicast Report messages."; 1684 } 1685 leaf query-enable { 1686 type boolean; 1687 default "false"; 1688 description 1689 "Enable L2VPN service multicast querier."; 1690 } 1692 leaf querier-election { 1693 type boolean; 1694 description 1695 "Enable L2VPN service multicast querier election."; 1696 } 1698 leaf report-suppress { 1699 type boolean; 1700 default "false"; 1701 description 1702 "Enable the function of suppressing L2VPN service 1703 multicast Report messages."; 1704 } 1706 } //proxy-config-attributes 1708 grouping l2vpn-config-attributes-igmp-mld-snooping { 1709 description "igmp snooping configuration attributes"; 1711 leaf enable { 1712 type boolean; 1713 default "false"; 1714 description 1715 "true to enable IGMP or MLD snooping in the L2VPN service 1716 instance, false to disable IGMP or MLD snooping 1717 in the L2VPN service instance"; 1718 } 1719 leaf version { 1720 type uint8 { 1721 range "1..3"; 1722 } 1723 description 1724 "L2VPN service multicast version. IPv4: By default, 1725 IGMPv2 is used; IPv6: By default, MLDv2 is used."; 1726 } 1727 leaf snooping-mode { 1728 type snooping-mode; 1729 description 1730 "L2VPN service multicast group join mode."; 1731 } 1732 leaf ssm-policy { 1733 type string; 1734 description 1735 "Name of the access policy used to filter 1736 IGMP or MLD SSM group range."; 1738 } 1739 leaf group-policy { 1740 type string; 1741 description 1742 "Name of the access policy used to filter 1743 IGMP or MLD membership."; 1744 } 1745 leaf group-policy-version { 1746 type uint8 { 1747 range "1..3"; 1748 } 1749 description 1750 "A group policy applies only to a specified 1751 L2VPN service multicast version."; 1752 } 1753 leaf ip-policy { 1754 type string; 1755 description 1756 "Name of the access policy used to filter IGMP or MLD ; 1757 report source/destination address"; 1758 } 1759 leaf query-ip-policy { 1760 type string; 1761 description 1762 "Name of the access policy used to filter IGMP or MLD ; 1763 query source address"; 1764 } 1765 leaf last-member-query-interval { 1766 type uint8 { 1767 range "1..5"; 1768 } 1769 description 1770 "Interval at which a querier sends 1771 last-member query messages."; 1772 } 1773 leaf query-interval { 1774 type uint16 { 1775 range "1..65535"; 1776 } 1777 units seconds; 1778 description 1779 "Interval at which a router sends General Query messages."; 1780 } 1781 leaf query-max-response-time { 1782 type uint8 { 1783 range "1..25"; 1784 } 1785 units seconds; 1786 description 1787 "Maximum response time for a L2VPN service 1788 multicast Query message."; 1789 } 1790 leaf router-aging-time { 1791 type uint16{ 1792 range "1..1000"; 1793 } 1794 units seconds; 1795 description 1796 "Aging time of dynamic router ports."; 1797 } 1798 leaf prompt-leave { 1799 type boolean; 1800 description 1801 "Prompt-Leave allows an interface to immediately delete a 1802 group record after receiving a Leave message for 1803 this group, without sending a last-member query message."; 1804 } 1805 leaf router-learning { 1806 type boolean; 1807 default "true"; 1808 description 1809 "Enable dynamic router port learning."; 1810 } 1811 leaf require-router-alert { 1812 type boolean; 1813 description 1814 "Configure a device to permit only L2VPN service 1815 multicast messages that contain the Router-Alert 1816 option in the IP header."; 1817 } 1818 leaf send-router-alert { 1819 type boolean; 1820 description 1821 "Configure a device to send L2VPN service 1822 multicast messages that contain the Router-Alert 1823 option in the IP header."; 1824 } 1825 leaf ssm-mapping { 1826 type boolean; 1827 default "false"; 1828 description 1829 "Enable SSM mapping."; 1830 } 1831 leaf ssm-mapping-policy { 1832 type string; 1833 description 1834 "Specifies the name of an SSM mapping policy."; 1835 } 1836 leaf robustness-variable { 1837 type uint8 { 1838 range "2..7"; 1839 } 1840 default 2; 1841 description 1842 "Number of times for retransmitting a 1843 message to avoid packet loss. "; 1844 } 1845 leaf source-life-time { 1846 type uint32{ 1847 range "60..1000"; 1848 } 1849 units seconds; 1850 description 1851 "Aging time for entries triggered by multicast flows."; 1852 } 1854 leaf unspecified-channel-deny { 1855 type boolean; 1856 description 1857 "Specify the unspecified channel,deny the join of 1858 Multicast group that does not belong to any channel."; 1859 } 1861 leaf max-entry { 1862 type uint32; 1863 description 1864 "Maximum number of entries that can be generated"; 1865 } 1866 leaf max-entry-except-policy { 1867 type string; 1868 description 1869 "Name of the access policy used to prevent groups 1870 from being counted against the multicast 1871 group number limit"; 1872 } 1874 leaf bandwidth-lose-mode { 1875 type boolean; 1876 default "false"; 1877 description 1878 "Dynamic Eth-Trunk Bandwidth Limit Lose Mode."; 1879 } 1881 uses proxy-config-attributes; 1883 } // l2vpn-config-attributes-igmp-mld-snooping 1885 grouping vlan-set { 1886 description "VLAN IDs attributes"; 1887 leaf vlan-bitmap { 1888 type string; 1889 description 1890 "List of VLAN IDs."; 1891 } 1892 } //vlan-set 1894 grouping l2vpn-if-config-attributes-igmp-mld-snooping { 1895 description "igmp or mld snooping configuration attributes"; 1897 leaf bandwidth-lose-mode { 1898 type boolean; 1899 default "false"; 1900 description 1901 "Dynamic Eth-Trunk Bandwidth Limit Lose Mode."; 1902 } 1903 leaf max-entry { 1904 type uint32; 1905 description 1906 "Maximum number of entries that can be generated"; 1907 } 1909 leaf group-policy { 1910 type string; 1911 description 1912 "Name of the access policy used to filter 1913 IGMP or MLD membership."; 1914 } 1915 leaf group-policy-version { 1916 type uint8 { 1917 range "1..3"; 1918 } 1919 description 1920 "A group policy applies only to a specified 1921 L2VPN service multicast version."; 1922 } 1924 choice group-policy-vlan { 1925 description "group policy vlan config"; 1926 case qinq-range { 1927 list qinq-vlan { 1928 key "pe-id"; 1929 description "qinq type interface config"; 1930 leaf pe-id { 1931 type uint16; 1932 description 1933 "Outer VLAN ID."; 1934 } 1935 uses vlan-set; 1936 } // qinq-vlan 1938 } //qinq-range 1939 case dot1q-range { 1940 description "dot1q type interface config"; 1941 uses vlan-set; 1942 } //dot1q-range 1943 } //group-policy-vlan 1945 list trunk-bandwidth { 1946 key "bandwidth"; 1947 description 1948 "Dynamic Bandwidth Limit on 1949 Eth-Trunk Sub-interface."; 1950 leaf bandwidth { 1951 type uint32 { 1952 range "1..4194304"; 1953 } 1954 description 1955 "Specify the bandwidth parameter of multicast group."; 1956 } 1957 uses vlan-set; 1958 } 1960 list dot1q-bandwidth { 1961 key "bandwidth"; 1962 description "Bandwidth Limit on Dot1q Sub-interface. "; 1963 leaf bandwidth { 1964 type uint32 { 1965 range "1..4194304"; 1966 } 1967 description 1968 "Specify the bandwidth parameter of multicast group."; 1969 } 1970 uses vlan-set; 1971 } 1973 list dot1q-channel-bandwidth { 1974 key "channel-name bandwidth"; 1975 description "Bandwidth Limit on Dot1q Sub-interface. "; 1976 leaf channel-name { 1977 type string { 1978 length "1..31"; 1979 } 1980 description 1981 "Name of the channel."; 1982 } 1983 leaf bandwidth { 1984 type uint32 { 1985 range "1..4194304"; 1986 } 1987 description 1988 "Specify the bandwidth parameter of multicast group."; 1989 } 1990 uses vlan-set; 1991 } 1993 } // l2vpn-if-config-attributes-igmp-mld-snooping 1995 grouping l2vpn-if-dynamic-cac-state-igmp-mld-snooping { 1996 description "igmp or mld snooping configuration attributes"; 1998 leaf dynamic-entry { 1999 type uint32; 2000 description 2001 "Maximum number of entries generated"; 2002 } 2004 list dynamic-trunk-bandwidth { 2005 key "vlan-id"; 2006 description 2007 "Dynamic Bandwidth used on Eth-Trunk Sub-interface."; 2008 leaf vlan-id { 2009 type uint16 { 2010 range "1..4095"; 2011 } 2012 description 2013 "vlan-id."; 2014 } 2015 leaf bandwidth { 2016 type uint32 { 2017 range "1..4194304"; 2018 } 2019 description 2020 "Bandwidth used."; 2021 } 2022 } 2024 list dynamic-dot1q-bandwidth { 2025 key "vlan-id"; 2026 description "Bandwidth used on Dot1q Sub-interface. "; 2027 leaf vlan-id { 2028 type uint16 { 2029 range "1..4095"; 2030 } 2031 description 2032 "vlan-id."; 2033 } 2034 leaf bandwidth { 2035 type uint32 { 2036 range "1..4194304"; 2037 } 2038 description 2039 "Bandwidth used."; 2040 } 2041 } 2043 list dynamic-dot1q-channel-bandwidth { 2044 key "channel-name"; 2045 description "Bandwidth Limit on Dot1q Sub-interface. "; 2046 leaf channel-name { 2047 type string { 2048 length "1..31"; 2049 } 2050 description 2051 "Name of the channel."; 2052 } 2054 list vlan-bandwidth { 2055 key "vlan-id"; 2056 description "Bandwidth used on Dot1q Sub-interface. "; 2057 leaf vlan-id { 2058 type uint16 { 2059 range "1..4095"; 2060 } 2061 description 2062 "vlan-id."; 2063 } 2064 leaf bandwidth { 2065 type uint32 { 2066 range "1..4194304"; 2067 } 2068 description 2069 "Bandwidth used."; 2070 } 2071 } //vlan-bandwidth 2073 } //dot1q-channel-bandwidth 2075 } // l2vpn-if-dynamic-cac-state-igmp-mld-snooping 2077 grouping statistics-received { 2078 description 2079 "A grouping defining statistics attributes."; 2080 leaf v1-report { 2081 type yang:counter64; 2082 description 2083 "Number of received IGMPv1/MLDv1 Report messages."; 2084 } 2085 leaf v2-report { 2086 type yang:counter64; 2087 description 2088 "Number of received IGMPv2/MLDv2 Report messages."; 2089 } 2090 leaf v3-report { 2091 type yang:counter64; 2092 description 2093 "Number of received IGMPv3 Report messages."; 2094 } 2095 leaf v1-query { 2096 type yang:counter64; 2097 description 2098 "Number of received IGMPv1/MLDv1 query messages."; 2099 } 2100 leaf v2-query { 2101 type yang:counter64; 2102 description 2103 "Number of received IGMPv2/MLDv2 query messages."; 2104 } 2105 leaf v3-query { 2106 type yang:counter64; 2107 description 2108 "Number of received IGMPv3 Query messages."; 2109 } 2110 leaf leave { 2111 type yang:counter64; 2112 description 2113 "Number of received IGMP/MLD Leave messages."; 2114 } 2115 leaf hello { 2116 type yang:counter64; 2117 description 2118 "Number of Received PIM Hello messages."; 2119 } 2120 leaf zero-source-query { 2121 type yang:counter64; 2122 description 2123 "Number of received query messages 2124 in which the source addresss is zero."; 2125 } 2126 leaf no-zero-source-query { 2127 type yang:counter64; 2128 description 2129 "Number of received query messages 2130 in which the source addresss is not zero."; 2131 } 2132 } // statistics-received 2134 grouping statistics-send { 2135 description 2136 "A grouping defining statistics attributes."; 2138 leaf general-query { 2139 type yang:counter64; 2140 description 2141 "Number of sent General Query messages."; 2142 } 2143 leaf source-group-specific-query { 2144 type yang:counter64; 2145 description 2146 "Number of sent source and group specific Query messages."; 2147 } 2148 leaf group--specific-query { 2149 type yang:counter64; 2150 description 2151 "Number of sent group specific Query messages."; 2152 } 2153 } // statistics-send 2155 /* 2156 * Configuration data nodes 2157 */ 2158 augment "/l2vpn:l2vpn" 2159 { 2160 description 2161 "IGMP and MLD snooping augmentation to 2162 l2vpn instance configuration."; 2164 container igmp-snooping { 2165 description 2166 "IGMP snooping configuration data."; 2168 container global { 2169 description 2170 "Global attributes."; 2171 uses global-ipv4-config-attributes; 2173 leaf send-query-source { 2174 type inet:ipv4-address; 2175 default "192.168.0.1"; 2176 description 2177 "Source IP address for L2VPN service 2178 multicast query messages."; 2179 } 2180 } // global 2182 container l2vpn-multicast-instances { 2183 description 2184 "List of L2VPN service multicast 2185 configurations in the VSI view. "; 2186 list l2vpn-multicast-instance { 2187 key "name type"; 2188 description 2189 "L2VPN common parameters."; 2190 leaf name { 2191 type string; 2192 description "Name of L2VPN service instance"; 2193 } 2194 leaf type { 2195 type identityref { 2196 base l2vpn:l2vpn-instance-type; 2197 } 2198 description "Type of L2VPN service instance"; 2199 } 2201 uses l2vpn-config-attributes-igmp-mld-snooping; 2203 list ssm-map { 2204 key "group-address group-mask-length source-address"; 2205 description ""; 2206 uses ipv4-ssm-mapping-attributes; 2207 } // list ssm-map 2209 list static-pw-router { 2210 key "peer-ip pw-id"; 2211 description ""; 2212 leaf peer-ip { 2213 type inet:ip-address; 2214 description 2215 "peer IP address"; 2216 } 2217 leaf pw-id { 2218 type uint32; 2219 description 2220 "pseudowire id"; 2221 } 2222 } // static-pw-router 2224 list static-ac-router-port { 2225 key "name pe-id ce-id"; 2226 description ""; 2227 leaf name { 2228 type if:interface-ref; 2229 description 2230 "interface name"; 2231 } 2232 leaf pe-id { 2233 type uint16; 2234 description 2235 "Outer VLAN ID."; 2236 } 2237 leaf ce-id { 2238 type uint16; 2239 description 2240 "Inner VLAN ID."; 2241 } 2242 } //static-ac-router-port 2244 list static-pw-group { 2245 key "peer-ip pw-id"; 2246 description ""; 2247 leaf peer-ip { 2248 type inet:ip-address; 2249 description 2250 "peer IP address"; 2251 } 2252 leaf pw-id { 2253 type uint32; 2254 description 2255 "pseudowire id"; 2256 } 2257 uses ipv4-static-group-source; 2258 } // static-pw-group 2260 list static-ac-static-group { 2261 key "name pe-id ce-id"; 2262 description ""; 2263 leaf name { 2264 type if:interface-ref; 2265 description 2266 "interface name"; 2267 } 2268 leaf pe-id { 2269 type uint16; 2270 description 2271 "Outer VLAN ID."; 2272 } 2273 leaf ce-id { 2274 type uint16; 2275 description 2276 "Inner VLAN ID."; 2277 } 2278 uses ipv4-static-group-source; 2279 } //static-ac-static-group 2281 container cac-configs { 2282 description 2283 "L2-multicast CAC L2VPN service Channel Config List."; 2284 list cac-config { 2285 key "channel-name channel-mode"; 2286 max-elements "1024"; 2287 description 2288 "L2-multicast CAC L2VPN service Channel Config."; 2289 uses cac-ipv4-policy-attributes; 2290 } 2291 } //cac-configs 2293 container interfaces { 2294 description 2295 "Containing a list of interfaces."; 2297 list interface { 2298 key "interface"; 2299 description 2300 "List of igmp snooping interfaces."; 2301 leaf interface { 2302 type if:interface-ref; 2303 description 2304 "Reference to an entry in the 2305 global interface list."; 2306 } 2307 uses l2vpn-if-config-attributes-igmp-mld-snooping; 2308 } // interface 2309 } // interfaces 2310 } //l2vpn-multicast-instance 2311 } //l2vpn-multicast-instances 2312 } // igmp-snooping 2314 container mld-snooping { 2315 description 2316 "MLD snooping configuration data."; 2318 container global { 2319 description 2320 "Global attributes."; 2321 uses global-ipv6-config-attributes; 2323 leaf send-query-source { 2324 type inet:ipv6-address; 2325 default "FE80::"; 2326 description 2327 "Source IPv6 address for L2VPN service 2328 multicast query messages."; 2329 } 2330 } // global 2332 container l2vpn-multicast-instances { 2333 description 2334 "List of L2VPN service multicast configurations 2335 in the VSI view. "; 2336 list l2vpn-multicast-instance { 2337 key "name type"; 2338 description 2339 "L2VPN common parameters."; 2340 leaf name { 2341 type string; 2342 description "Name of L2VPN service instance"; 2343 } 2344 leaf type { 2345 type identityref { 2346 base l2vpn:l2vpn-instance-type; 2347 } 2348 description "Type of L2VPN service instance"; 2349 } 2351 uses l2vpn-config-attributes-igmp-mld-snooping; 2353 list ssm-map { 2354 key "group-address group-mask-length source-address"; 2355 description ""; 2356 uses ipv6-ssm-mapping-attributes; 2357 } // list ssm-map 2359 list static-pw-router { 2360 key "peer-ip pw-id"; 2361 description ""; 2362 leaf peer-ip { 2363 type inet:ip-address; 2364 description 2365 "peer IP address"; 2366 } 2367 leaf pw-id { 2368 type uint32; 2369 description 2370 "pseudowire id"; 2371 } 2372 } // static-pw-router 2374 list static-ac-router-port { 2375 key "name pe-id ce-id"; 2376 description ""; 2377 leaf name { 2378 type if:interface-ref; 2379 description 2380 "interface name"; 2381 } 2382 leaf pe-id { 2383 type uint16; 2384 description 2385 "Outer VLAN ID."; 2386 } 2387 leaf ce-id { 2388 type uint16; 2389 description 2390 "Inner VLAN ID."; 2391 } 2392 } //static-ac-router-port 2394 list static-pw-group { 2395 key "peer-ip pw-id"; 2396 description ""; 2397 leaf peer-ip { 2398 type inet:ip-address; 2399 description 2400 "peer IP address"; 2401 } 2402 leaf pw-id { 2403 type uint32; 2404 description 2405 "pseudowire id"; 2406 } 2407 uses ipv6-static-group-source; 2408 } // static-pw-group 2410 list static-ac-static-group { 2411 key "name pe-id ce-id"; 2412 description ""; 2413 leaf name { 2414 type if:interface-ref; 2415 description 2416 "interface name"; 2417 } 2418 leaf pe-id { 2419 type uint16; 2420 description 2421 "Outer VLAN ID."; 2422 } 2423 leaf ce-id { 2424 type uint16; 2425 description 2426 "Inner VLAN ID."; 2427 } 2428 uses ipv6-static-group-source; 2429 } //static-ac-static-group 2431 container cac-configs { 2432 description 2433 "L2-multicast CAC L2VPN service Channel Config List. "; 2434 list cac-config { 2435 key "channel-name channel-mode"; 2436 max-elements "1024"; 2437 description 2438 "L2-multicast CAC L2VPN service Channel Config. "; 2439 uses cac-ipv6-policy-attributes; 2440 } 2441 } //cac-configs 2443 container interfaces { 2444 description 2445 "Containing a list of interfaces."; 2447 list interface { 2448 key "interface"; 2449 description 2450 "List of igmp snooping interfaces."; 2451 leaf interface { 2452 type if:interface-ref; 2453 description 2454 "Reference to an entry in the global 2455 interface list."; 2456 } 2457 uses l2vpn-if-config-attributes-igmp-mld-snooping; 2458 } // interface 2459 } // interfaces 2460 } //l2vpn-multicast-instance 2461 } //l2vpn-multicast-instances 2462 } // mld-snooping 2464 } //l2vpn 2466 /* 2467 * Operational state data nodes 2468 */ 2469 augment "/l2vpn:l2vpn-state" 2470 { 2471 description 2472 "IGMP and MLD snooping augmentation to 2473 l2vpn instance configuration."; 2475 container igmp-snooping { 2476 description 2477 "IGMP snooping state data."; 2479 container global { 2480 description 2481 "Global attributes."; 2482 uses global-ipv4-config-attributes; 2484 uses cac-dynamic-attributes; 2486 leaf send-query-source { 2487 type inet:ipv4-address; 2488 default "192.168.0.1"; 2489 description 2490 "Source IP address for L2VPN service 2491 multicast query messages."; 2492 } 2493 } // global 2495 container l2vpn-multicast-instances { 2496 description 2497 "List of L2VPN service multicast 2498 configurations in the VSI view. "; 2499 list l2vpn-multicast-instance { 2500 key "name type"; 2501 description 2502 "L2VPN common parameters."; 2503 leaf name { 2504 type string; 2505 description "Name of L2VPN service instance"; 2506 } 2507 leaf type { 2508 type identityref { 2509 base l2vpn:l2vpn-instance-type; 2510 } 2511 description "Type of L2VPN service instance"; 2512 } 2514 uses l2vpn-config-attributes-igmp-mld-snooping; 2516 container querier-state { 2517 description 2518 "L2VPN service multicast querier. "; 2519 leaf querierState { 2520 type boolean; 2521 description 2522 "L2VPN service multicast querier state."; 2523 } 2524 leaf querierAddr { 2525 type inet:ip-address; 2526 description 2527 "L2VPN service multicast querier address."; 2528 } 2529 } 2531 container statistics { 2532 description 2533 "Statistics information of a L2VPN service instance. "; 2535 container received { 2536 description "Statistics of received messages."; 2537 uses statistics-received; 2539 } 2540 container sent { 2541 description "Statistics of sent messages."; 2542 uses statistics-send; 2543 } 2545 } //statistics 2547 list ssm-map { 2548 key "group-address group-mask-length source-address"; 2549 description ""; 2550 uses ipv4-ssm-mapping-attributes; 2551 } // list ssm-map 2553 list static-pw-router-port { 2554 key "peer-ip pw-id"; 2555 description ""; 2556 leaf peer-ip { 2557 type inet:ip-address; 2558 description 2559 "peer IP address"; 2560 } 2561 leaf pw-id { 2562 type uint32; 2563 description 2564 "pseudowire id"; 2565 } 2566 } // static-pw-router-port 2568 list static-ac-router-port { 2569 key "name pe-id ce-id"; 2570 description ""; 2571 leaf name { 2572 type if:interface-ref; 2573 description 2574 "interface name"; 2575 } 2576 leaf pe-id { 2577 type uint16; 2578 description 2579 "Outer VLAN ID."; 2580 } 2581 leaf ce-id { 2582 type uint16; 2583 description 2584 "Inner VLAN ID."; 2585 } 2586 } //static-ac-router-port 2588 list static-pw-group { 2589 key "peer-ip pw-id"; 2590 description ""; 2591 leaf peer-ip { 2592 type inet:ip-address; 2593 description 2594 "peer IP address"; 2595 } 2596 leaf pw-id { 2597 type uint32; 2598 description 2599 "pseudowire id"; 2600 } 2601 uses ipv4-static-group-source; 2602 } // static-pw-group 2604 list static-ac-group { 2605 key "name pe-id ce-id"; 2606 description ""; 2607 leaf name { 2608 type if:interface-ref; 2609 description 2610 "interface name"; 2611 } 2612 leaf pe-id { 2613 type uint16; 2614 description 2615 "Outer VLAN ID."; 2616 } 2617 leaf ce-id { 2618 type uint16; 2619 description 2620 "Inner VLAN ID."; 2621 } 2622 uses ipv4-static-group-source; 2623 } //static-ac-group 2625 container cac-configs { 2626 description 2627 "L2-multicast CAC L2VPN service Channel Config List. "; 2628 list cac-config { 2629 key "channel-name channel-mode"; 2630 max-elements "1024"; 2631 description 2632 "L2-multicast CAC L2VPN service Channel Config. "; 2633 uses cac-ipv4-policy-attributes; 2634 } 2635 } //cac-configs 2637 container interfaces { 2638 description 2639 "Containing a list of interfaces."; 2641 list interface { 2642 key "interface"; 2643 description 2644 "List of igmp snooping interfaces."; 2645 leaf interface { 2646 type if:interface-ref; 2647 description 2648 "Reference to an entry in the 2649 global interface list."; 2650 } 2651 uses l2vpn-if-config-attributes-igmp-mld-snooping; 2653 uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping; 2655 } // interface 2656 } // interfaces 2658 choice dynamic-router-port { 2659 description "dynamic router port"; 2660 case pw { 2662 list dynamic-pw-router-port { 2663 key "peer-ip pw-id"; 2664 description ""; 2665 leaf peer-ip { 2666 type inet:ip-address; 2667 description 2668 "peer IP address"; 2669 } 2670 leaf pw-id { 2671 type uint32; 2672 description 2673 "pseudowire id"; 2674 } 2675 leaf expire { 2676 type uint32; 2677 units seconds; 2678 description 2679 "Time after which a port will be deleted 2680 from the router port record table."; 2681 } 2682 leaf up-time { 2683 type uint32; 2684 units seconds; 2685 description 2686 "Time since a router port 2687 was discovered."; 2688 } 2689 leaf flag { 2690 type flagType; 2691 description 2692 "Type of a router port: static or dynamic."; 2693 } 2694 } //dynamic-pw-router-port 2695 } //pw 2697 case ac { 2698 list dynamic-ac-router-port { 2699 key "name pe-id ce-id"; 2700 description ""; 2701 leaf name { 2702 type if:interface-ref; 2703 description 2704 "interface name"; 2705 } 2706 leaf pe-id { 2707 type uint16; 2708 description 2709 "Outer VLAN ID."; 2710 } 2711 leaf ce-id { 2712 type uint16; 2713 description 2714 "Inner VLAN ID."; 2715 } 2716 leaf expire { 2717 type uint32; 2718 units seconds; 2719 description 2720 "Time after which a port will be deleted 2721 from the router port record table."; 2722 } 2723 leaf up-time { 2724 type uint32; 2725 units seconds; 2726 description 2727 "Time since a router port was discovered."; 2728 } 2729 leaf flag { 2730 type flagType; 2731 description 2732 "Type of a router port: static or dynamic."; 2733 } 2734 } //dynamic-ac-router-port 2735 } //ac 2736 } //dynamic-router-port 2738 choice dynamic-group { 2739 description "dynamic group"; 2740 case pw-dynamic-group { 2742 list dynamic-pw-group { 2743 key "peer-ip pw-id"; 2744 description ""; 2745 leaf peer-ip { 2746 type inet:ip-address; 2747 description 2748 "peer IP address"; 2749 } 2750 leaf pw-id { 2751 type uint32; 2752 description 2753 "pseudowire id"; 2754 } 2755 container groups { 2756 description "multicast group information"; 2757 list group { 2758 key "address"; 2759 description "multicast group information"; 2760 leaf address { 2761 type inet:ipv4-address; 2762 description 2763 "address of a multicast group."; 2764 } 2766 uses group-states-igmp-mld-snooping; 2768 container sources { 2769 description "multicast group information"; 2770 list source { 2771 key "address"; 2772 description "multicast group information"; 2773 leaf address { 2774 type inet:ipv4-address; 2775 description 2776 "address of a multicast source."; 2777 } 2778 uses source-states-igmp-mld-snooping; 2779 } //source 2780 } //sources 2782 } //group 2783 } //groups 2785 } // dynamic-pw-group 2786 } //pw-dynamic-group 2788 case ac-dynamic-group { 2789 list dynamic-ac-dynamic-group { 2790 key "name pe-id ce-id"; 2791 description ""; 2792 leaf name { 2793 type if:interface-ref; 2794 description 2795 "interface name"; 2796 } 2797 leaf pe-id { 2798 type uint16; 2799 description 2800 "Outer VLAN ID."; 2801 } 2802 leaf ce-id { 2803 type uint16; 2804 description 2805 "Inner VLAN ID."; 2806 } 2807 container groups { 2808 description "multicast group information"; 2809 list group { 2810 key "address"; 2811 description "multicast group information"; 2812 leaf address { 2813 type inet:ipv4-address; 2814 description 2815 "address of a multicast group."; 2816 } 2817 uses group-states-igmp-mld-snooping; 2819 container sources { 2820 description "multicast group information"; 2821 list source { 2822 key "address"; 2823 description "multicast group information"; 2824 leaf address { 2825 type inet:ipv4-address; 2826 description 2827 "address of a multicast source."; 2828 } 2829 uses source-states-igmp-mld-snooping; 2830 } //source 2831 } //sources 2833 } //group 2834 } //groups 2836 } //dynamic-ac-dynamic-group 2837 } //ac-dynamic-group 2838 } //dynamic-group 2840 } //l2vpn-multicast-instance 2841 } //l2vpn-multicast-instances 2842 } // igmp-snooping 2844 container mld-snooping { 2845 description 2846 "MLD snooping state data."; 2848 container global { 2849 description 2850 "Global attributes."; 2851 uses global-ipv6-config-attributes; 2853 uses cac-dynamic-attributes; 2855 leaf entry-count { 2856 type uint32; 2857 description 2858 "Maximum number of entries generated"; 2859 } 2861 leaf send-query-source { 2862 type inet:ipv6-address; 2863 default "FF80::"; 2864 description 2865 "Source IPv6 address for L2VPN service 2866 multicast query messages."; 2867 } 2868 } // global 2870 container l2vpn-multicast-instances { 2871 description 2872 "List of L2VPN service multicast configurations 2873 in the VSI view. "; 2874 list l2vpn-multicast-instance { 2875 key "name type"; 2876 description 2877 "L2VPN common parameters."; 2878 leaf name { 2879 type string; 2880 description "Name of L2VPN service instance"; 2881 } 2882 leaf type { 2883 type identityref { 2884 base l2vpn:l2vpn-instance-type; 2885 } 2886 description "Type of L2VPN service instance"; 2887 } 2888 uses l2vpn-config-attributes-igmp-mld-snooping; 2890 container querier-state { 2891 description 2892 "L2VPN service multicast querier. "; 2893 leaf querierState { 2894 type boolean; 2895 description 2896 "L2VPN service multicast querier state."; 2897 } 2898 leaf querierAddr { 2899 type inet:ipv6-address; 2900 description 2901 "L2VPN service multicast querier address."; 2902 } 2903 } 2905 container statistics { 2906 description 2907 "Statistics information of a L2VPN service instance. "; 2909 container received { 2910 description "Statistics of received messages."; 2911 uses statistics-received; 2912 } 2913 container sent { 2914 description "Statistics of sent messages."; 2915 uses statistics-send; 2916 } 2918 } //statistics 2920 list ssm-map { 2921 key "group-address group-mask-length source-address"; 2922 description ""; 2923 uses ipv6-ssm-mapping-attributes; 2924 } // list ssm-map 2926 list static-pw-router-port { 2927 key "peer-ip pw-id"; 2928 description ""; 2929 leaf peer-ip { 2930 type inet:ip-address; 2931 description 2932 "peer IP address"; 2933 } 2934 leaf pw-id { 2935 type uint32; 2936 description 2937 "pseudowire id"; 2939 } 2940 } // static-pw-router-port 2942 list static-ac-router-port { 2943 key "name pe-id ce-id"; 2944 description ""; 2945 leaf name { 2946 type if:interface-ref; 2947 description 2948 "interface name"; 2949 } 2950 leaf pe-id { 2951 type uint16; 2952 description 2953 "Outer VLAN ID."; 2954 } 2955 leaf ce-id { 2956 type uint16; 2957 description 2958 "Inner VLAN ID."; 2959 } 2960 } //static-ac-router-port 2962 list static-pw-group { 2963 key "peer-ip pw-id"; 2964 description ""; 2965 leaf peer-ip { 2966 type inet:ip-address; 2967 description 2968 "peer IP address"; 2969 } 2970 leaf pw-id { 2971 type uint32; 2972 description 2973 "pseudowire id"; 2974 } 2975 uses ipv6-static-group-source; 2976 } // static-pw-group 2978 list static-ac-group { 2979 key "name pe-id ce-id"; 2980 description ""; 2981 leaf name { 2982 type if:interface-ref; 2983 description 2984 "interface name"; 2985 } 2986 leaf pe-id { 2987 type uint16; 2988 description 2989 "Outer VLAN ID."; 2990 } 2991 leaf ce-id { 2992 type uint16; 2993 description 2994 "Inner VLAN ID."; 2995 } 2996 uses ipv6-static-group-source; 2997 } //static-ac-group 2999 container cac-configs { 3000 description 3001 "L2-multicast CAC L2VPN service Channel Config List. "; 3002 list cac-config { 3003 key "channel-name channel-mode"; 3004 max-elements "1024"; 3005 description 3006 "L2-multicast CAC L2VPN service Channel Config. "; 3007 uses cac-ipv6-policy-attributes; 3008 } 3009 } //cac-configs 3011 uses cac-dynamic-attributes; 3013 container interfaces { 3014 description 3015 "Containing a list of interfaces."; 3017 list interface { 3018 key "interface"; 3019 description 3020 "List of igmp snooping interfaces."; 3021 leaf interface { 3022 type if:interface-ref; 3023 description 3024 "Reference to an entry in the 3025 global interface list."; 3026 } 3027 uses l2vpn-if-config-attributes-igmp-mld-snooping; 3029 uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping; 3030 } // interface 3031 } // interfaces 3033 choice dynamic-router-port { 3034 description "dynamic router port"; 3035 case pw { 3037 list dynamic-pw-router-port { 3038 key "peer-ip pw-id"; 3039 description ""; 3040 leaf peer-ip { 3041 type inet:ip-address; 3042 description 3043 "peer IP address"; 3044 } 3045 leaf pw-id { 3046 type uint32; 3047 description 3048 "pseudowire id"; 3049 } 3050 leaf expire { 3051 type uint32; 3052 units seconds; 3053 description 3054 "Time after which a port will be deleted 3055 from the router port record table."; 3056 } 3057 leaf up-time { 3058 type uint32; 3059 units seconds; 3060 description 3061 "Time since a router port was discovered."; 3062 } 3063 leaf flag { 3064 type flagType; 3065 description 3066 "Type of a router port: static or dynamic."; 3067 } 3068 } //dynamic-pw-router-port 3069 } //pw 3071 case ac { 3072 list dynamic-ac-router-port { 3073 key "name pe-id ce-id"; 3074 description ""; 3075 leaf name { 3076 type if:interface-ref; 3077 description 3078 "interface name"; 3079 } 3080 leaf pe-id { 3081 type uint16; 3082 description 3083 "Outer VLAN ID."; 3084 } 3085 leaf ce-id { 3086 type uint16; 3087 description 3088 "Inner VLAN ID."; 3090 } 3091 leaf expire { 3092 type uint32; 3093 units seconds; 3094 description 3095 "Time after which a port will be deleted 3096 from the router port record table."; 3097 } 3098 leaf up-time { 3099 type uint32; 3100 units seconds; 3101 description 3102 "Time since a router port was discovered."; 3103 } 3104 leaf flag { 3105 type flagType; 3106 description 3107 "Type of a router port: static or dynamic."; 3108 } 3109 } //dynamic-ac-router-port 3110 } //ac 3111 } //dynamic-router-port 3113 choice dynamic-group { 3114 description "dynamic group"; 3115 case pw-dynamic-group { 3117 list dynamic-pw-group { 3118 key "peer-ip pw-id"; 3119 description ""; 3120 leaf peer-ip { 3121 type inet:ip-address; 3122 description 3123 "peer IP address"; 3124 } 3125 leaf pw-id { 3126 type uint32; 3127 description 3128 "pseudowire id"; 3129 } 3130 container groups { 3131 description "multicast group information"; 3132 list group { 3133 key "address"; 3134 description "multicast group information"; 3135 leaf address { 3136 type inet:ipv6-address; 3137 description 3138 "address of a multicast group."; 3139 } 3140 uses group-states-igmp-mld-snooping; 3142 container sources { 3143 description "multicast group information"; 3144 list source { 3145 key "address"; 3146 description "multicast group information"; 3147 leaf address { 3148 type inet:ipv6-address; 3149 description 3150 "address of a multicast source."; 3151 } 3152 uses source-states-igmp-mld-snooping; 3153 } //source 3154 } //sources 3156 } //group 3157 } //groups 3159 } // dynamic-pw-group 3160 } //pw-dynamic-group 3162 case ac-dynamic-group { 3163 list dynamic-ac-dynamic-group { 3164 key "name pe-id ce-id"; 3165 description ""; 3166 leaf name { 3167 type if:interface-ref; 3168 description 3169 "interface name"; 3170 } 3171 leaf pe-id { 3172 type uint16; 3173 description 3174 "Outer VLAN ID."; 3175 } 3176 leaf ce-id { 3177 type uint16; 3178 description 3179 "Inner VLAN ID."; 3180 } 3181 container groups { 3182 description "multicast group information"; 3183 list group { 3184 key "address"; 3185 description "multicast group information"; 3186 leaf address { 3187 type inet:ipv6-address; 3188 description 3189 "address of a multicast group."; 3191 } 3192 uses group-states-igmp-mld-snooping; 3194 container sources { 3195 description "multicast group information"; 3196 list source { 3197 key "address"; 3198 description "multicast group information"; 3199 leaf address { 3200 type inet:ipv6-address; 3201 description 3202 "address of a multicast source."; 3203 } 3204 uses source-states-igmp-mld-snooping; 3205 } //source 3206 } //sources 3208 } //group 3209 } //groups 3211 } //dynamic-ac-dynamic-group 3212 } //ac-dynamic-group 3213 } //dynamic-group 3215 } //l2vpn-multicast-instance 3216 } //l2vpn-multicast-instances 3217 } // mld-snooping 3218 } //l2vpn-state 3219 } 3220 3222 5. Security Considerations 3224 The data model defined does not introduce any security implications. 3225 This draft does not change any underlying security issues inherent 3226 in [RFC8022]. 3228 6. IANA Considerations 3230 TBD 3232 7. References 3234 7.1. Normative References 3236 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3237 Requirement Levels", BCP 14, RFC 2119, March 1997. 3239 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3240 the Network Configuration Protocol (NETCONF)", RFC 6020, 3241 October 2010 3243 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3244 and A. Bierman, Ed., "Network Configuration Protocol 3245 (NETCONF)", RFC 6241, June 2011 3247 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for 3248 RoutingManagement", RFC 8022, November 2016 3250 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 3251 and Reviewers of YANG Data Model Documents", draft-ietf- 3252 netmod-rfc6087bis-12(work in progress), March 2017 3254 7.2. Informative References 3256 [RFC4541] Christensen, M., Kimball, K., and Solensky, F., " 3257 Considerations for Internet Group Management Protocol 3258 (IGMP) and Multicast Listener Discovery (MLD) Snooping 3259 Switches", RFC 4541, May 2006. 3261 [RFC4761] K. Kompella and Y. Rekhter, " Virtual Private LAN Service 3262 (VPLS) Using BGP for Auto-Discovery and Signaling", RFC 3263 4761, January 2007. 3265 [RFC4762] M. Lasserre and V. Kompella, " Virtual Private LAN Service 3266 (VPLS) Using Label Distribution Protocol (LDP) Signaling", 3267 RFC 4762, January 2007. 3269 [RFC7117] R. Aggarwal, Y. Kamite, L. Fang, Y. Rekhter and C. 3270 Kodeboniya, " Multicast in Virtual Private LAN Service 3271 (VPLS)", RFC 7117, February 2014. 3273 [RFC7524] Y. Rekhter, E. Rosen, R. Aggarwal, T. Morin, I. 3274 Grosclaude, N. Leymann and S. Saad, " Inter-Area Point-to- 3275 Multipoint (P2MP) Segmented Label Switched Paths (LSPs)", 3276 RFC 7524, May 2015. 3278 Authors' Addresses 3280 Dong Wang 3281 Huawei Technologies 3282 Huawei Bld., No.156 Beiqing Rd. 3283 Beijing 100095 3284 China 3286 Email: michael.wangdong@huawei.com 3288 Yisong Liu 3289 Huawei Technologies 3290 Huawei Bld., No.156 Beiqing Rd. 3291 Beijing 100095 3292 China 3294 Email: liuyisong@huawei.com