idnits 2.17.1 draft-ietf-bess-mvpn-yang-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 273 has weird spacing: '...t-value str...' == Line 323 has weird spacing: '...address ine...' == Line 399 has weird spacing: '...address ine...' == Line 415 has weird spacing: '...t-value str...' == Line 465 has weird spacing: '...address ine...' == (1 more instance...) -- The document date (March 6, 2019) is 1878 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: 'RFC7761' is mentioned on line 119, but not defined == Missing Reference: 'RFC4607' is mentioned on line 123, but not defined == Missing Reference: 'RFC5015' is mentioned on line 127, but not defined == Missing Reference: 'RFC6388' is mentioned on line 137, but not defined == Missing Reference: 'RFC4875' is mentioned on line 142, but not defined ** Downref: Normative reference to an Historic RFC: RFC 6037 == Outdated reference: A later version (-05) exists of draft-ietf-bess-l3vpn-yang-04 Summary: 1 error (**), 0 flaws (~~), 14 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 BESS Working Group Y. Liu 2 Internet Draft F. Guo 3 Intended status: Standards Track Huawei Technologies 4 Expires: September 6, 2019 S. Litkowski 5 Orange 6 X. Liu 7 Volta Networks 8 R. Kebler 9 M. Sivakumar 10 Juniper Networks 11 March 6, 2019 13 Yang Data Model for Multicast in MPLS/BGP IP VPNs 14 draft-ietf-bess-mvpn-yang-01 16 Status of this Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF), its areas, and its working groups. Note that 23 other groups may also distribute working documents as Internet- 24 Drafts. 26 Internet-Drafts are draft documents valid for a maximum of six 27 months and may be updated, replaced, or obsoleted by other documents 28 at any time. It is inappropriate to use Internet-Drafts as 29 reference material or to cite them other than as "work in progress." 31 The list of current Internet-Drafts can be accessed at 32 http://www.ietf.org/ietf/1id-abstracts.txt 34 The list of Internet-Draft Shadow Directories can be accessed at 35 http://www.ietf.org/shadow.html 37 This Internet-Draft will expire on September 6, 2019. 39 Copyright Notice 41 Copyright (c) 2019 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with 49 respect to this document. Code Components extracted from this 50 document must include Simplified BSD License text as described in 51 Section 4.e of the Trust Legal Provisions and are provided without 52 warranty as described in the Simplified BSD License. 54 Abstract 56 This document defines a YANG data model that can be used to 57 configure and manage multicast in MPLS/BGP IP VPNs. 59 Table of Contents 61 1. Introduction ................................................ 2 62 1.1. Terminology ............................................ 3 63 1.2. Tree Diagrams .......................................... 4 64 1.3. Prefixes in Data Node Names ............................ 4 65 2. Design of Data model......................................... 4 66 2.1. Scope of model ......................................... 4 67 2.2. Optional capabilities .................................. 5 68 2.3. Position of address family in hierarchy ................ 5 69 3. Module Structure ............................................ 5 70 4. MVPN YANG Modules .......................................... 12 71 5. Security Considerations .................................... 32 72 6. IANA Considerations ........................................ 32 73 7. References ................................................. 32 74 7.1. Normative References .................................. 32 75 7.2. Informative References ................................ 33 76 8. Acknowledgments ............................................ 34 78 1. Introduction 80 YANG [RFC6020] [RFC7950] is a data definition language that was 81 introduced to define the contents of a conceptual data store that 82 allows networked devices to be managed using NETCONF [RFC6241]. 83 YANG is proving relevant beyond its initial confines, as bindings to 84 other interfaces (e.g. REST) and encoding other than XML (e.g. JSON) 85 are being defined. Furthermore, YANG data models can be used as the 86 basis of implementation for other interface, such as CLI and 87 Programmatic APIs. 89 This document defines a YANG data model that can be used to 90 configure and manage Multicast in MPLS/BGP IP VPN (MVPN). It 91 includes Cisco systems' solution [RFC6037], BGP MVPN [RFC6513] 92 [RFC6514] etc. This model will support the core MVPN protocols, as 93 well as many other features mentioned in separate MVPN RFCs. In 94 addition, Non-core features described in MVPN standards other than 95 mentioned above RFC in separate documents. 97 1.1. Terminology 99 The terminology for describing YANG data models is found in 100 [RFC6020] & [RFC7950]. 102 The following abbreviations are used in this document and the 103 defined model: 105 MVPN: 107 Multicast Virtual Private Network [RFC6513]. 109 PMSI: 111 P-Multicast Service Interface [RFC6513]. 113 PIM: 115 Protocol Independent Multicast [RFC7761]. 117 SM: 119 Sparse Mode [RFC7761]. 121 SSM: 123 Source Specific Multicast [RFC4607]. 125 BIDIR-PIM: 127 Bidirectional Protocol Independent Multicast [RFC5015]. 129 MLDP P2MP: 131 Multipoint Label Distribution Protocol for Point to Multipoint 132 [RFC6388]. 134 MLDP MP2MP: 136 Multipoint Label Distribution Protocol for Multipoint to 137 Multipoint [RFC6388]. 139 RSVP TE P2MP: 141 Resource Reservation Protocol - Traffic Engineering for Point to 142 Multipoint [RFC4875]. 144 BIER: 146 Bit Index Explicit Replication [RFC8279]. 148 1.2. Tree Diagrams 150 Tree diagrams used in this document follow the notation defined in 151 [RFC8340]. 153 1.3. Prefixes in Data Node Names 155 In this document, names of data nodes, actions, and other data model 156 objects are often used without a prefix, as long as it is clear from 157 the context in which YANG module each name is defined. Otherwise, 158 names are prefixed using the standard prefix associated with the 159 corresponding YANG module, as shown in Table 1 161 +----------+---------------------------+----------------------------+ 163 | Prefix | YANG module | Reference | 165 +-----------+--------------------------+----------------------------+ 167 | ni | ietf-network-instance | [I-D.ietf-ni-model] | 169 | l3vpn | ietf-bgp-l3vpn | [I-D.ietf-l3vpn-yang] | 171 | inet | ietf-inet-types | [RFC6991] | 173 | rt-types | ietf-routing-types | [RFC8294] | 175 | acl | ietf-access-control-list | [I-D.ietf-acl-yang] | 177 +-----------+--------------------------+----------------------------+ 179 Table 1: Prefixes and Corresponding YANG Modules 181 2. Design of Data model 183 2.1. Scope of model 185 The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514]. 186 The configuration of MVPN features, and the operational state fields 187 and RPC definitions are not all included in this document of the 188 data model. This model can be extended, though the structure of what 189 has been written may be taken as representative of the structure of 190 the whole model. 192 This model does not cover other MVPN related protocols such as MVPN 193 Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc., 194 these will be specified in separate documents. 196 2.2. Optional capabilities 198 This model is designed to represent the capabilities of MVPN devices 199 with various specifications, including some with basic subsets of 200 the MVPN protocols. The main design goals of this document are that 201 any major now-existing implementation may be said to support the 202 basic model, and that the configuration of all implementations 203 meeting the specification is easy to express through some 204 combination of the features in the basic model and simple vendor 205 augmentations. 207 On the other hand, operational state parameters are not so widely 208 designated as features, as there are many cases where the defaulting 209 of an operational state parameter would not cause any harm to the 210 system, and it is much more likely that an implementation without 211 native support for a piece of operational state would be able to 212 derive a suitable value for a state variable that is not natively 213 supported. 215 For the same reason, wide constant ranges (for example, timer 216 maximum and minimum) will be used in the model. It is expected that 217 vendors will augment the model with any specific restrictions that 218 might be required. Vendors may also extend the features list with 219 proprietary extensions. 221 2.3. Position of address family in hierarchy 223 The current draft contains MVPN IPv4 and IPv6 as separate schema 224 branches in the structure. The reason for this is to inherit l3vpn 225 yang model structure and make it easier for implementations which 226 may optionally choose to support specific address families. And the 227 names of some objects may be different between the IPv4 and IPv6 228 address families. 230 3. Module Structure 232 The MVPN YANG model follows the Guidelines for YANG Module Authors 233 (NMDA) [RFC8342]. The operational state data is combined with the 234 associated configuration data in the same hierarchy [RFC8407]. The 235 MVPN modules define for both IPv4 and IPv6 in a two-level hierarchy 236 as listed below: 238 Instance level: Only including configuration data nodes now. MVPN 239 configuration attributes for the entire routing instance, including 240 route-target, I-PMSI tunnel and S-PMSI number, common timer etc. 242 PMSI tunnel level: MVPN configuration attributes applicable to 243 the I-PMSI and per S-PMSI tunnel configuration attributes, including 244 tunnel mode, tunnel specific parameters and threshold etc. MVPN PMSI 245 tunnel operational state attributes applicable to the I-PMSI and per 246 S-PMSI tunnel operational state attributes, including tunnel mode, 247 tunnel role, tunnel specific parameters and referenced private 248 source and group address etc. 250 Where fields are not genuinely essential to protocol operation, they 251 are marked as optional. Some fields will be essential but have a 252 default specified, so that they need not be configured explicitly. 254 This MVPN model augments "/ni:network-instances/ni:network- 255 instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4:" for IPv4 256 MVPN service and "/ni:network-instances/ni:network-instance/ni:ni- 257 type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" for IPv6 MVPN service 258 specified in [I-D.ietf-l3vpn-yang]. 260 augment /ni:network-instances/ni:network-instance/ni:ni-type 261 /l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4: 262 +--rw multicast 263 +--rw signaling-mode? enumeration 264 +--rw auto-discovery-mode? enumeration 265 +--rw mvpn-type? enumeration 266 +--rw is-sender-site? boolean {mvpn-sender}? 267 +--rw rpt-spt-mode? enumeration 268 +--rw ecmp-load-balance-mode? 269 | enumeration {mvpn-ecmp-load-balance}? 270 +--rw mvpn-route-targets {mvpn-separate-rt}? 271 | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] 272 | +--rw mvpn-rt-type enumeration 273 | +--rw mvpn-rt-value string 274 +--rw mvpn-ipmsi-tunnel-ipv4 275 | +--rw tunnel-type? p-tunnel 276 | +--rw (ipmsi-tunnel-attribute)? 277 | | +--:(rsvp-te-p2mp) 278 | | | +--rw rsvp-te-p2mp-template? string 279 | | +--:(mldp-p2mp) 280 | | +--:(pim-ssm) 281 | | | +--rw ssm-default-group-addr? 282 | | | rt-types:ip-multicast-group-address 283 | | +--:(pim-sm) 284 | | | +--rw sm-default-group-addr? 285 | | | rt-types:ip-multicast-group-address 286 | | +--:(bidir-pim) 287 | | | +--rw bidir-default-group-addr? 288 | | | rt-types:ip-multicast-group-address 289 | | +--:(ingress-replication) 290 | | +--:(mldp-mp2mp) 291 | | +--:(bier) 292 | | +--rw inclusive-sub-domain-id? uint8 293 | | +--rw inclusive-bitstring-length? uint16 294 | +--ro (pmsi-tunnel-state-attribute)? 295 | | +--:(rsvp-te-p2mp) 296 | | | +--ro p2mp-id? uint16 297 | | | +--ro tunnel-id? uint16 298 | | | +--ro extend-tunnel-id? uint16 299 | | +--:(mldp-p2mp) 300 | | | +--ro mldp-root-addr? inet:ip-address 301 | | | +--ro mldp-lsp-id? string 302 | | +--:(pim-ssm) 303 | | | +--ro ssm-group-addr? 304 | | | rt-types:ip-multicast-group-address 305 | | +--:(pim-sm) 306 | | | +--ro sm-group-addr? 307 | | | rt-types:ip-multicast-group-address 308 | | +--:(bidir-pim) 309 | | | +--ro bidir-group-addr? 310 | | | rt-types:ip-multicast-group-address 311 | | +--:(ingress-replication) 312 | | +--:(mldp-mp2mp) 313 | | +--:(bier) 314 | | +--ro sub-domain-id? uint8 315 | | +--ro bitstring-length? uint16 316 | | +--ro bfir-id? uint16 317 | +--ro tunnel-role? enumeration 318 | +--ro upstream-vpn-label? 319 | | rt-types:mpls-label {mvpn-aggregation-tunnel}? 320 | +--ro mvpn-pmsi-ipv4-ref-sg-entries 321 | +--ro mvpn-pmsi-ipv4-ref-sg-entries* 322 | [ipv4-source-address ipv4-group-address] 323 | +--ro ipv4-source-address inet:ipv4-address 324 | +--ro ipv4-group-address 325 | rt-types:ipv4-multicast-group-address 326 +--rw mvpn-spmsi-tunnels-ipv4 327 +--rw switch-delay-time? uint8 328 +--rw switch-back-holddown-time? uint16 329 +--rw tunnel-limit? uint16 330 +--rw mvpn-spmsi-tunnel-ipv4* [tunnel-type] 331 +--rw tunnel-type p-tunnel 332 +--rw (spmsi-tunnel-attribute)? 333 | +--:(rsvp-te-p2mp) 334 | | +--rw rsvp-te-p2mp-template? string 335 | +--:(p2mp-mldp) 336 | +--:(pim-ssm) 337 | | +--rw ssm-group-pool-addr? 338 | | | rt-types:ip-multicast-group-address 339 | | +--rw ssm-group-pool-masklength? uint8 340 | +--:(pim-sm) 341 | | +--rw sm-group-pool-addr? 342 | | | rt-types:ip-multicast-group-address 343 | | +--rw sm-group-pool-masklength? uint8 344 | +--:(bidir-pim) 345 | | +--rw bidir-group-pool-addr? 346 | | | rt-types:ip-multicast-group-address 347 | | +--rw bidir-group-pool-masklength? uint8 348 | +--:(ingress-replication) 349 | +--:(mldp-mp2mp) 350 | +--:(bier) 351 | +--rw selective-sub-domain-id? uint8 352 | +--rw selective-bitstring-length? uint16 353 +--rw switch-threshold? uint32 354 +--rw per-item-tunnel-limit? uint16 355 +--rw switch-wildcard-mode? 356 | enumeration {mvpn-switch-wildcard}? 357 +--rw explicit-tracking-mode? 358 | enumeration {mvpn-explicit-tracking}? 359 +--rw (address-mask-or-acl)? 360 | +--:(address-mask) 361 | | +--rw ipv4-group-addr? 362 | | | rt-types:ipv4-multicast-group-address 363 | | +--rw ipv4-group-masklength? uint8 364 | | +--rw ipv4-source-addr? 365 | | | inet:ipv4-address 366 | | +--rw ipv4-source-masklength? uint8 367 | +--:(acl-name) 368 | +--rw group-acl-ipv4? 369 | -> /acl:acls/acl/name 370 +--ro (pmsi-tunnel-state-attribute)? 371 | +--:(rsvp-te-p2mp) 372 | | +--ro p2mp-id? uint16 373 | | +--ro tunnel-id? uint16 374 | | +--ro extend-tunnel-id? uint16 375 | +--:(mldp-p2mp) 376 | | +--ro mldp-root-addr? inet:ip-address 377 | | +--ro mldp-lsp-id? string 378 | +--:(pim-ssm) 379 | | +--ro ssm-group-addr? 380 | | rt-types:ip-multicast-group-address 381 | +--:(pim-sm) 382 | | +--ro sm-group-addr? 383 | | rt-types:ip-multicast-group-address 384 | +--:(bidir-pim) 385 | | +--ro bidir-group-addr? 386 | | rt-types:ip-multicast-group-address 387 | +--:(ingress-replication) 388 | +--:(mldp-mp2mp) 389 | +--:(bier) 390 | +--ro sub-domain-id? uint8 391 | +--ro bitstring-length? uint16 392 | +--ro bfir-id? uint16 393 +--ro tunnel-role? enumeration 394 +--ro upstream-vpn-label? 395 | rt-types:mpls-label {mvpn-aggregation-tunnel}? 396 +--ro mvpn-pmsi-ipv4-ref-sg-entries 397 +--ro mvpn-pmsi-ipv4-ref-sg-entries* 398 [ipv4-source-address ipv4-group-address] 399 +--ro ipv4-source-address inet:ipv4-address 400 +--ro ipv4-group-address 401 rt-types:ipv4-multicast-group-address 402 augment /ni:network-instances/ni:network-instance/ni:ni-type 403 /l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6: 404 +--rw multicast 405 +--rw signaling-mode? enumeration 406 +--rw auto-discovery-mode? enumeration 407 +--rw mvpn-type? enumeration 408 +--rw is-sender-site? boolean {mvpn-sender}? 409 +--rw rpt-spt-mode? enumeration 410 +--rw ecmp-load-balance-mode? 411 | enumeration {mvpn-ecmp-load-balance}? 412 +--rw mvpn-route-targets {mvpn-separate-rt}? 413 | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] 414 | +--rw mvpn-rt-type enumeration 415 | +--rw mvpn-rt-value string 416 +--rw mvpn-ipmsi-tunnel-ipv6 417 | +--rw tunnel-type? p-tunnel 418 | +--rw (ipmsi-tunnel-attribute)? 419 | | +--:(rsvp-te-p2mp) 420 | | | +--rw rsvp-te-p2mp-template? string 421 | | +--:(mldp-p2mp) 422 | | +--:(pim-ssm) 423 | | | +--rw ssm-default-group-addr? 424 | | | rt-types:ip-multicast-group-address 425 | | +--:(pim-sm) 426 | | | +--rw sm-default-group-addr? 427 | | | rt-types:ip-multicast-group-address 428 | | +--:(bidir-pim) 429 | | | +--rw bidir-default-group-addr? 430 | | | rt-types:ip-multicast-group-address 431 | | +--:(ingress-replication) 432 | | +--:(mldp-mp2mp) 433 | | +--:(bier) 434 | | +--rw inclusive-sub-domain-id? uint8 435 | | +--rw inclusive-bitstring-length? uint16 436 | +--ro (pmsi-tunnel-state-attribute)? 437 | | +--:(rsvp-te-p2mp) 438 | | | +--ro p2mp-id? uint16 439 | | | +--ro tunnel-id? uint16 440 | | | +--ro extend-tunnel-id? uint16 441 | | +--:(mldp-p2mp) 442 | | | +--ro mldp-root-addr? inet:ip-address 443 | | | +--ro mldp-lsp-id? string 444 | | +--:(pim-ssm) 445 | | | +--ro ssm-group-addr? 446 | | | rt-types:ip-multicast-group-address 447 | | +--:(pim-sm) 448 | | | +--ro sm-group-addr? 449 | | | rt-types:ip-multicast-group-address 450 | | +--:(bidir-pim) 451 | | | +--ro bidir-group-addr? 452 | | | rt-types:ip-multicast-group-address 453 | | +--:(ingress-replication) 454 | | +--:(mldp-mp2mp) 455 | | +--:(bier) 456 | | +--ro sub-domain-id? uint8 457 | | +--ro bitstring-length? uint16 458 | | +--ro bfir-id? uint16 459 | +--ro tunnel-role? enumeration 460 | +--ro upstream-vpn-label? 461 | | rt-types:mpls-label {mvpn-aggregation-tunnel}? 462 | +--ro mvpn-pmsi-ipv6-ref-sg-entries 463 | +--ro mvpn-pmsi-ipv6-ref-sg-entries* 464 | [ipv6-source-address ipv6-group-address] 465 | +--ro ipv6-source-address inet:ipv6-address 466 | +--ro ipv6-group-address 467 | rt-types:ipv6-multicast-group-address 468 +--rw mvpn-spmsi-tunnels-ipv6 469 +--rw switch-delay-time? uint8 470 +--rw switch-back-holddown-time? uint16 471 +--rw tunnel-limit? uint16 472 +--rw mvpn-spmsi-tunnel-ipv6* [tunnel-type] 473 +--rw tunnel-type p-tunnel 474 +--rw (spmsi-tunnel-attribute)? 475 | +--:(rsvp-te-p2mp) 476 | | +--rw rsvp-te-p2mp-template? string 477 | +--:(p2mp-mldp) 478 | +--:(pim-ssm) 479 | | +--rw ssm-group-pool-addr? 480 | | rt-types:ip-multicast-group-address 481 | | +--rw ssm-group-pool-masklength? uint8 482 | +--:(pim-sm) 483 | | +--rw sm-group-pool-addr? 484 | | rt-types:ip-multicast-group-address 485 | | +--rw sm-group-pool-masklength? uint8 486 | +--:(bidir-pim) 487 | | +--rw bidir-group-pool-addr? 488 | | rt-types:ip-multicast-group-address 489 | | +--rw bidir-group-pool-masklength? uint8 490 | +--:(ingress-replication) 491 | +--:(mldp-mp2mp) 492 | +--:(bier) 493 | +--rw selective-sub-domain-id? uint8 494 | +--rw selective-bitstring-length? uint16 495 +--rw switch-threshold? uint32 496 +--rw per-item-tunnel-limit? uint16 497 +--rw switch-wildcard-mode? 498 | enumeration {mvpn-switch-wildcard}? 499 +--rw explicit-tracking-mode? 500 | enumeration {mvpn-explicit-tracking}? 501 +--rw (address-mask-or-acl)? 502 | +--:(address-mask) 503 | | +--rw ipv6-group-addr? 504 | | | rt-types:ipv6-multicast-group-address 505 | | +--rw ipv6-groupmasklength? uint8 506 | | +--rw ipv6-source-addr? 507 | | | inet:ipv6-address 508 | | +--rw ipv6-source-masklength? uint8 509 | +--:(acl-name) 510 | +--rw group-acl-ipv6? 511 | -> /acl:acls/acl/name 512 +--ro (pmsi-tunnel-state-attribute)? 513 | +--:(rsvp-te-p2mp) 514 | | +--ro p2mp-id? uint16 515 | | +--ro tunnel-id? uint16 516 | | +--ro extend-tunnel-id? uint16 517 | +--:(mldp-p2mp) 518 | | +--ro mldp-root-addr? inet:ip-address 519 | | +--ro mldp-lsp-id? string 520 | +--:(pim-ssm) 521 | | +--ro ssm-group-addr? 522 | | rt-types:ip-multicast-group-address 523 | +--:(pim-sm) 524 | | +--ro sm-group-addr? 525 | | rt-types:ip-multicast-group-address 526 | +--:(bidir-pim) 527 | | +--ro bidir-group-addr? 528 | | rt-types:ip-multicast-group-address 529 | +--:(ingress-replication) 530 | +--:(mldp-mp2mp) 531 | +--:(bier) 532 | +--ro sub-domain-id? uint8 533 | +--ro bitstring-length? uint16 534 | +--ro bfir-id? uint16 535 +--ro tunnel-role? enumeration 536 +--ro upstream-vpn-label? 537 | rt-types:mpls-label {mvpn-aggregation-tunnel}? 538 +--ro mvpn-pmsi-ipv6-ref-sg-entries 539 +--ro mvpn-pmsi-ipv6-ref-sg-entries* 540 [ipv6-source-address ipv6-group-address] 541 +--ro ipv6-source-address inet:ipv6-address 542 +--ro ipv6-group-address 543 rt-types:ipv6-multicast-group-address 545 4. MVPN YANG Modules 547 file "ietf-mvpn@2019-03-05.yang" 548 module ietf-mvpn { 549 yang-version 1.1; 550 namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn"; 551 prefix mvpn; 553 import ietf-network-instance { 554 prefix ni; 555 } 557 import ietf-bgp-l3vpn { 558 prefix l3vpn; 559 } 561 import ietf-inet-types { 562 prefix inet; 563 } 565 import ietf-routing-types { 566 prefix rt-types; 567 } 569 import ietf-access-control-list { 570 prefix acl; 571 } 573 organization 574 "IETF BESS(BGP Enabled Services) Working Group"; 575 contact 576 " 577 Yisong Liu 578 579 Stephane Litkowski 580 581 Feng Guo 582 583 Xufeng Liu 584 585 Robert Kebler 586 587 Mahesh Sivakumar 588 "; 589 description 590 "This YANG module defines the generic configuration 591 and operational state data for mvpn, which is common across 592 all of the vendor implementations of the protocol. It is 593 intended that the module will be extended by vendors to 594 define vendor-specific mvpn parameters."; 596 revision 2019-03-05 { 597 description 598 "Add bier as a type of P-Tunnel and Errata."; 599 reference 600 "RFC XXXX: A YANG Data Model for MVPN"; 601 } 602 revision 2018-11-08 { 603 description 604 "Update for leaf type and reference."; 605 reference 606 "RFC XXXX: A YANG Data Model for MVPN"; 607 } 608 revision 2018-05-10 { 609 description 610 "Update for Model structure and errata."; 611 reference 612 "RFC XXXX: A YANG Data Model for MVPN"; 613 } 614 revision 2017-09-15 { 615 description 616 "Update for NMDA version and errata."; 617 reference 618 "RFC XXXX: A YANG Data Model for MVPN"; 619 } 620 revision 2017-07-03 { 621 description 622 "Update S-PMSI configuration and errata."; 623 reference 624 "RFC XXXX: A YANG Data Model for MVPN"; 625 } 626 revision 2016-10-28 { 627 description 628 "Initial revision."; 629 reference 630 "RFC XXXX: A YANG Data Model for MVPN"; 631 } 632 /* Features */ 633 feature mvpn-sender { 634 description 635 "Support configuration to specify the current PE as the 636 sender PE"; 637 } 638 feature mvpn-separate-rt { 639 description 640 "Support route-targets configuration of MVPN when they are 641 different from the route-targets of unicast L3VPN."; 642 } 643 feature mvpn-switch-wildcard { 644 description 645 "Support configuration to use wildcard mode when multicast 646 packets switch from I-PMSI to S-PMSI."; 647 } 648 feature mvpn-explicit-tracking { 649 description 650 "Support configuration to use explicit tracking for leaf PEs 651 when multicast packets forward by I-PMSI or S-PMSI."; 652 } 653 feature mvpn-aggregation-tunnel { 654 description 655 "Support more than one VPN multicast service to use the same 656 p-tunnel."; 657 } 658 feature mvpn-ecmp-load-balance { 659 description 660 "Support multicast entries in the private network to be 661 distributed on the ECMP path of bier in the public network."; 662 } 664 typedef p-tunnel { 665 type enumeration { 666 enum no-tunnel-present { 667 value 0; 668 description "No tunnel information present"; 669 } 670 enum rsvp-te-p2mp { 671 value 1; 672 description "RSVP TE P2MP tunnel"; 673 } 674 enum mldp-p2mp { 675 value 2; 676 description "MLDP P2MP tunnel"; 677 } 678 enum pim-ssm { 679 value 3; 680 description "PIM SSM tree in public net"; 682 } 683 enum pim-sm { 684 value 4; 685 description "PIM SM tree in public net"; 686 } 687 enum bidir-pim { 688 value 5; 689 description "BIDIR-PIM tree in public net"; 690 } 691 enum ingress-replication { 692 value 6; 693 description "Ingress Replication p2p tunnel."; 694 } 695 enum mldp-mp2mp { 696 value 7; 697 description "MLDP MP2MP tunnel"; 698 } 699 enum bier { 700 value 11; 701 description "bier underlay"; 702 } 703 } 704 description "Provider tunnel type definition."; 705 } 707 grouping mvpn-instance-config { 708 description "Mvpn basic configuration per instance."; 710 leaf signaling-mode { 711 type enumeration { 712 enum none { 713 value 0; 714 description "No signaling"; 715 } 716 enum bgp { 717 value 1; 718 description "bgp signaling"; 719 } 720 enum pim { 721 value 2; 722 description "pim signaling"; 723 } 724 enum mldp-in-band { 725 value 3; 726 description "mldp in-band signaling"; 727 } 728 } 729 default "none"; 730 description "Signaling mode for C-multicast route."; 732 } 733 leaf auto-discovery-mode { 734 type enumeration { 735 enum none { 736 value 0; 737 description "no auto-discovery signaling"; 738 } 739 enum pim { 740 value 1; 741 description "auto-discovery by PIM signaling"; 742 } 743 enum bgp { 744 value 2; 745 description "auto-discovery by BGP signaling"; 746 } 747 } 748 default "none"; 749 description "Auto discovery mode of MVPN PE members."; 750 } 751 leaf mvpn-type { 752 type enumeration { 753 enum rosen-mvpn { 754 value 0; 755 description "Rosen mvpn mode referenced RFC6037"; 756 } 757 enum ng-mvpn { 758 value 1; 759 description 760 "BGP/MPLS mvpn mode referenced RFC6513&RFC6514"; 761 } 762 } 763 default "ng-mvpn"; 764 description 765 "Mvpn type, which can be rosen mvpn mode or ng mvpn mode."; 766 } 767 leaf is-sender-site { 768 if-feature mvpn-sender; 769 type boolean; 770 default false; 771 description "Configure the current PE as a sender PE."; 772 } 773 leaf rpt-spt-mode { 774 type enumeration { 775 enum spt-only { 776 value 0; 777 description 778 "Only spt entries can cross the public net."; 779 } 780 enum rpt-spt { 781 value 1; 782 description 783 "Both rpt and spt entries can corss the public net."; 784 } 785 } 786 description 787 "ASM mode in multicast private network for crossing 788 public net."; 789 } 790 leaf ecmp-load-balance-mode { 791 if-feature mvpn-ecmp-load-balance; 792 type enumeration { 793 enum none { 794 value 0; 795 description 796 "No load balancing for multicast entries."; 797 } 798 enum source { 799 value 1; 800 description 801 "Load balancing based on multicast source address."; 802 } 803 enum group { 804 value 2; 805 description 806 "Load balancing based on multicast group address."; 807 } 808 enum source-group { 809 value 3; 810 description 811 "Load balancing based on multicast source and group 812 address."; 813 } 814 } 815 description 816 "Distribution mode of multicast entries in the private 817 network on the ECMP path of bier in the public network."; 818 } 819 }/* mvpn-instance-config */ 821 grouping mvpn-rts { 822 description 823 "May be different from l3vpn unicast route-targets."; 824 container mvpn-route-targets{ 825 if-feature mvpn-separate-rt; 826 description "Multicast vpn route-targets"; 827 list mvpn-route-target { 828 key "mvpn-rt-type mvpn-rt-value" ; 829 description 830 "List of multicast route-targets" ; 831 leaf mvpn-rt-type { 832 type enumeration { 833 enum export-extcommunity { 834 value 0; 835 description "export-extcommunity"; 836 } 837 enum import-extcommunity { 838 value 1; 839 description "import-extcommunity"; 840 } 841 } 842 description 843 "rt types are as follows: 844 export-extcommunity: specifies the value of 845 the extended community attribute of the 846 route from an outbound interface to the 847 destination vpn. 848 import-extcommunity: receives routes that 849 carry the specified extended community 850 attribute"; 851 } 852 leaf mvpn-rt-value { 853 type string { 854 length "3..21"; 855 } 856 description 857 "the available mvpn target formats are as 858 follows: 859 - 16-bit as number:32-bit user-defined 860 number, for example, 1:3. an as number 861 ranges from 0 to 65535, and a user-defined 862 number ranges from 0 to 4294967295. The as 863 number and user-defined number cannot be 864 both 0s. That is, a vpn target cannot be 0:0. 865 - 32-bit ip address:16-bit user-defined 866 number, for example, 192.168.122.15:1. 867 The ip address ranges from 0.0.0.0 to 868 255.255.255.255, and the user-defined 869 number ranges from 0 to 65535."; 870 } 871 } 872 } 873 } 875 grouping mvpn-ipmsi-tunnel-config { 876 description 877 "Configuration of default mdt for rosen mvpn 878 and I-PMSI for ng mvpn"; 880 leaf tunnel-type { 881 type p-tunnel; 882 description "I-PMSI tunnel type."; 883 } 884 choice ipmsi-tunnel-attribute { 885 description "I-PMSI tunnel attributes configuration"; 886 case rsvp-te-p2mp { 887 description "RSVP TE P2MP tunnel"; 888 leaf rsvp-te-p2mp-template { 889 type string { 890 length "1..31"; 891 } 892 description "RSVP TE P2MP tunnel template"; 893 } 894 } 895 case mldp-p2mp { 896 description "MLDP P2MP tunnel"; 897 } 898 case pim-ssm { 899 description "PIM SSM tree in the public net"; 900 leaf ssm-default-group-addr { 901 type rt-types:ip-multicast-group-address; 902 description 903 "Default mdt or I-PMSI group address for SSM mode."; 904 } 905 } 906 case pim-sm { 907 description "PIM SM tree in the public net"; 908 leaf sm-default-group-addr { 909 type rt-types:ip-multicast-group-address; 910 description 911 "Default mdt or I-PMSI group address for SM mode."; 912 } 913 } 914 case bidir-pim { 915 description "BIDIR PIM tree in the public net"; 916 leaf bidir-default-group-addr { 917 type rt-types:ip-multicast-group-address; 918 description 919 "Default mdt or I-PMSI group address for BIDIR mode."; 920 } 921 } 922 case ingress-replication { 923 description "Ingress replication p2p tunnel"; 924 } 925 case mldp-mp2mp { 926 description "MLDP MP2MP tunnel"; 927 } 928 case bier { 929 description "bier underlay"; 930 leaf inclusive-sub-domain-id { 931 type uint8; 932 description "Subdomain ID of bier."; 933 } 934 leaf inclusive-bitstring-length { 935 type uint16 { 936 range "64|128|256|512|1024|2048|4096"; 937 } 938 description "BitString length of bier underlay."; 939 } 940 } 941 } 942 }/* mvpn-ipmsi-tunnel-config */ 944 grouping mvpn-spmsi-tunnel-per-item-config { 945 description "S-PMSI tunnel basic configuration"; 946 leaf tunnel-type { 947 type p-tunnel; 948 description "S-PMSI tunnel type."; 949 } 950 choice spmsi-tunnel-attribute { 951 description "S-PMSI tunnel attributes configuration"; 952 case rsvp-te-p2mp { 953 description "RSVP TE P2MP tunnel"; 954 leaf rsvp-te-p2mp-template { 955 type string { 956 length "1..31"; 957 } 958 description "RSVP TE P2MP tunnel template"; 959 } 960 } 961 case p2mp-mldp { 962 description "MLDP P2MP tunnel"; 963 } 964 case pim-ssm { 965 description "PIM SSM tree in the public net"; 966 leaf ssm-group-pool-addr { 967 type rt-types:ip-multicast-group-address; 968 description 969 "Group pool address for data mdt or s-pmsi in SSM mode"; 970 } 971 leaf ssm-group-pool-masklength { 972 type uint8 { 973 range "8..128"; 974 } 975 description 976 "Group pool mask length for data mdt or s-pmsi in 977 SSM mode"; 978 } 979 } 980 case pim-sm { 981 description "PIM SM tree in the public net"; 982 leaf sm-group-pool-addr { 983 type rt-types:ip-multicast-group-address; 984 description 985 "Group pool address for data mdt or s-pmsi in SM mode"; 986 } 987 leaf sm-group-pool-masklength { 988 type uint8 { 989 range "8..128"; 990 } 991 description 992 "Group pool mask length for data mdt or s-pmsi in 993 SM mode"; 994 } 995 } 996 case bidir-pim { 997 description "BIDIR PIM tree in the public net"; 998 leaf bidir-group-pool-addr { 999 type rt-types:ip-multicast-group-address; 1000 description 1001 "Group pool address for data mdt or s-pmsi in 1002 BIDIR mode"; 1003 } 1004 leaf bidir-group-pool-masklength { 1005 type uint8 { 1006 range "8..128"; 1007 } 1008 description 1009 "Group pool mask length for data mdt or s-pmsi in 1010 BIDIR mode"; 1011 } 1012 } 1013 case ingress-replication { 1014 description "Ingress replication p2p tunnel"; 1015 } 1016 case mldp-mp2mp { 1017 description "MLDP MP2MP tunnel"; 1018 } 1019 case bier { 1020 description "bier underlay"; 1021 leaf selective-sub-domain-id { 1022 type uint8; 1023 description "Subdomain ID of bier."; 1024 } 1025 leaf selective-bitstring-length { 1026 type uint16 { 1027 range "64|128|256|512|1024|2048|4096"; 1028 } 1029 description "BitString length of bier underlay."; 1030 } 1031 } 1032 } 1033 leaf switch-threshold { 1034 type uint32 { 1035 range "0..4194304"; 1036 } 1037 units kbps; 1038 default 0; 1039 description 1040 "Multicast packet rate threshold for 1041 triggering the switching from the 1042 I-PMSI to the S-PMSI. The value is 1043 an integer ranging from 0 to 4194304, in 1044 kbps. The default value is 0."; 1045 } 1046 leaf per-item-tunnel-limit { 1047 type uint16 { 1048 range "1..1024"; 1049 } 1050 description 1051 "Maximum number of S-PMSI tunnels allowed 1052 per S-PMSI configuration item per mvpn instance."; 1053 } 1054 leaf switch-wildcard-mode { 1055 if-feature mvpn-switch-wildcard; 1056 type enumeration { 1057 enum source-group { 1058 value 0; 1059 description 1060 "Wildcard neither for source or group address."; 1061 } 1062 enum star-star { 1063 value 1; 1064 description 1065 "Wildcard for both source and group address."; 1066 } 1067 enum star-group { 1068 value 2; 1069 description 1070 "Wildcard only for source address."; 1071 } 1072 enum source-star { 1073 value 3; 1074 description 1075 "Wildcard only for group address."; 1076 } 1077 } 1078 description 1079 "I-PMSI switching to S-PMSI mode for private net 1080 wildcard mode, which including (*,*), (*,G), (S,*), 1081 (S,G) four modes."; 1082 } 1083 leaf explicit-tracking-mode { 1084 if-feature mvpn-explicit-tracking; 1085 type enumeration { 1086 enum no-leaf-info-required { 1087 value 0; 1088 description "No need to track leaf information."; 1089 } 1090 enum leaf-info-required { 1091 value 1; 1092 description "Need to track leaf information."; 1093 } 1094 enum leaf-info-required-per-flow { 1095 value 2; 1096 description 1097 "Need to track leaf information based on 1098 per multicast flow."; 1099 } 1100 } 1101 description "Tracking mode for leaf information."; 1102 } 1103 }/* mvpn-spmsi-tunnel-per-item-config */ 1105 grouping mvpn-spmsi-tunnel-common-config { 1106 description 1107 "Data mdt for rosen mvpn or S-PMSI for ng mvpn configuration 1108 attributes for both IPv4 and IPv6 private network"; 1109 leaf switch-delay-time { 1110 type uint8 { 1111 range "3..60"; 1112 } 1113 units seconds; 1114 default 5; 1115 description 1116 "Delay for switching from the I-PMSI to 1117 the S-PMSI. The value is an integer 1118 ranging from 3 to 60, in seconds. "; 1119 } 1120 leaf switch-back-holddown-time { 1121 type uint16 { 1122 range "0..512"; 1123 } 1124 units seconds; 1125 default 60; 1126 description 1127 "Delay for switching back from the S-PMSI 1128 to the I-PMSI. The value is an integer 1129 ranging from 0 to 512, in seconds. "; 1130 } 1131 leaf tunnel-limit { 1132 type uint16 { 1133 range "1..8192"; 1134 } 1135 description 1136 "Maximum number of s-pmsi tunnels allowed 1137 per mvpn instance."; 1138 } 1139 }/* mvpn-spmsi-tunnel-common-config */ 1141 grouping mvpn-pmsi-state { 1142 description "PMSI tunnel operational state information"; 1144 choice pmsi-tunnel-state-attribute { 1145 config false; 1146 description 1147 "PMSI tunnel operational state information for each type"; 1148 case rsvp-te-p2mp { 1149 description "RSVP TE P2MP tunnel"; 1150 leaf p2mp-id { 1151 type uint16 { 1152 range "0..65535"; 1153 } 1154 description "P2MP ID of the RSVP TE P2MP tunnel"; 1155 } 1156 leaf tunnel-id { 1157 type uint16 { 1158 range "1..65535"; 1159 } 1160 description "Tunnel ID of the RSVP TE P2MP tunnel"; 1161 } 1162 leaf extend-tunnel-id { 1163 type uint16 { 1164 range "1..65535"; 1165 } 1166 description 1167 "Extended tunnel ID of the RSVP TE P2MP Tunnel"; 1168 } 1169 } 1170 case mldp-p2mp { 1171 description "MLDP P2MP tunnel"; 1172 leaf mldp-root-addr { 1173 type inet:ip-address; 1174 description "IP address of the root of a MLDP P2MP lsp."; 1175 } 1176 leaf mldp-lsp-id { 1177 type string { 1178 length "1..256"; 1179 } 1180 description "MLDP P2MP lsp ID."; 1181 } 1182 } 1183 case pim-ssm { 1184 description "PIM SSM tree in the public net"; 1185 leaf ssm-group-addr { 1186 type rt-types:ip-multicast-group-address; 1187 description "Group address for pim ssm"; 1188 } 1189 } 1190 case pim-sm { 1191 description "PIM SM tree in the public net"; 1192 leaf sm-group-addr { 1193 type rt-types:ip-multicast-group-address; 1194 description "Group address for pim sm"; 1195 } 1196 } 1197 case bidir-pim { 1198 description "BIDIR PIM tree in the public net"; 1199 leaf bidir-group-addr { 1200 type rt-types:ip-multicast-group-address; 1201 description "Group address for bidir-pim"; 1202 } 1203 } 1204 case ingress-replication { 1205 description "Ingress replication p2p tunnel"; 1206 } 1207 case mldp-mp2mp { 1208 description "MLDP MP2MP tunnel"; 1209 } 1210 case bier { 1211 description "bier underlay"; 1212 leaf sub-domain-id { 1213 type uint8; 1214 description "Subdomain ID of bier."; 1215 } 1216 leaf bitstring-length { 1217 type uint16 { 1218 range "64|128|256|512|1024|2048|4096"; 1219 } 1220 description "BitString length of bier underlay."; 1221 } 1222 leaf bfir-id { 1223 type uint16; 1224 description "ID of BIER sender PE of MVPN."; 1225 } 1226 } 1227 } 1228 leaf tunnel-role { 1229 type enumeration { 1230 enum none { 1231 value 0; 1232 description "none"; 1233 } 1234 enum root { 1235 value 1; 1236 description "root"; 1237 } 1238 enum leaf { 1239 value 2; 1240 description "leaf"; 1241 } 1242 enum root-and-leaf { 1243 value 3; 1244 description "root-and-leaf"; 1245 } 1246 } 1247 config false; 1248 description "Role of a node for a p-tunnel."; 1249 } 1250 leaf upstream-vpn-label { 1251 if-feature mvpn-aggregation-tunnel; 1252 type rt-types:mpls-label; 1253 config false; 1254 description 1255 "VPN context label for the multicast data of the VPN instance 1256 in an aggregation P-tunnel."; 1257 } 1258 }/* mvpn-pmsi-state */ 1260 grouping mvpn-pmsi-ipv4-entry { 1261 description 1262 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1263 container mvpn-pmsi-ipv4-ref-sg-entries { 1264 config false; 1265 description 1266 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1267 list mvpn-pmsi-ipv4-ref-sg-entries { 1268 key "ipv4-source-address ipv4-group-address"; 1269 description 1270 "IPv4 source and group address of private network entry"; 1272 leaf ipv4-source-address { 1273 type inet:ipv4-address; 1274 description 1275 "IPv4 source address of private network entry 1276 in I-PMSI or S-PMSI."; 1277 } 1278 leaf ipv4-group-address { 1279 type rt-types:ipv4-multicast-group-address; 1280 description 1281 "IPv4 group address of private network entry 1282 in I-PMSI or S-PMSI."; 1283 } 1284 } 1285 } 1286 }/* mvpn-pmsi-ipv4-entry */ 1288 grouping mvpn-pmsi-ipv6-entry { 1289 description 1290 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1291 container mvpn-pmsi-ipv6-ref-sg-entries { 1292 config false; 1293 description 1294 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1295 list mvpn-pmsi-ipv6-ref-sg-entries { 1296 key "ipv6-source-address ipv6-group-address"; 1297 description 1298 "IPv6 source and group address of private network entry"; 1299 leaf ipv6-source-address { 1300 type inet:ipv6-address; 1301 description 1302 "IPv6 source address of private network entry 1303 in I-PMSI or S-PMSI."; 1304 } 1305 leaf ipv6-group-address { 1306 type rt-types:ipv6-multicast-group-address; 1307 description 1308 "IPv6 group address of private network entry 1309 in I-PMSI or S-PMSI."; 1310 } 1311 } 1312 } 1313 }/* mvpn-pmsi-ipv6-entry */ 1315 grouping mvpn-ipmsi-tunnel-info-ipv4 { 1316 description 1317 "Default mdt or I-PMSI configuration and 1318 operational state information"; 1319 container mvpn-ipmsi-tunnel-ipv4 { 1320 description 1321 "Default mdt or I-PMSI configuration and 1322 operational state information"; 1323 uses mvpn-ipmsi-tunnel-config; 1324 uses mvpn-pmsi-state; 1325 uses mvpn-pmsi-ipv4-entry; 1326 } 1327 } 1329 grouping mvpn-ipmsi-tunnel-info-ipv6 { 1330 description 1331 "Default mdt or I-PMSI configuration and 1332 operational state information"; 1333 container mvpn-ipmsi-tunnel-ipv6 { 1334 description 1335 "Default mdt or I-PMSI configuration and 1336 operational state information"; 1337 uses mvpn-ipmsi-tunnel-config; 1338 uses mvpn-pmsi-state; 1339 uses mvpn-pmsi-ipv6-entry; 1340 } 1341 } 1343 grouping mvpn-spmsi-tunnel-info-ipv4 { 1344 description 1345 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 1346 IPv4 private network"; 1348 container mvpn-spmsi-tunnels-ipv4 { 1349 description 1350 "S-PMSI tunnel configuration and 1351 operational state information."; 1352 uses mvpn-spmsi-tunnel-common-config; 1354 list mvpn-spmsi-tunnel-ipv4 { 1355 key "tunnel-type"; 1356 description 1357 "S-PMSI tunnel attributes configuration and 1358 operational state information."; 1360 uses mvpn-spmsi-tunnel-per-item-config; 1361 choice address-mask-or-acl { 1362 description 1363 "Type of definition of private network 1364 multicast address range"; 1365 case address-mask { 1366 description "Use the type of address and mask"; 1367 leaf ipv4-group-addr { 1368 type rt-types:ipv4-multicast-group-address; 1369 description 1370 "Start address of the IPv4 group 1371 address range in private net. "; 1372 } 1373 leaf ipv4-group-masklength { 1374 type uint8 { 1375 range "4..32"; 1376 } 1377 description 1378 "Group mask length for the IPv4 1379 group address range in private net."; 1380 } 1381 leaf ipv4-source-addr { 1382 type inet:ipv4-address; 1383 description 1384 "Start address of the IPv4 source 1385 address range in private net."; 1386 } 1387 leaf ipv4-source-masklength { 1388 type uint8 { 1389 range "0..32"; 1390 } 1391 description 1392 "Source mask length for the IPv4 1393 source address range in private net."; 1394 } 1395 } 1396 case acl-name { 1397 description "Use the type of acl"; 1398 leaf group-acl-ipv4 { 1399 type leafref { 1400 path "/acl:acls/acl:acl/acl:name"; 1401 } 1402 description 1403 "Specify the (s, g) entry on which the 1404 S-PMSI tunnel takes effect. 1405 The value is an integer ranging from 3000 1406 to 3999 or a string of 32 case-sensitive 1407 characters. If no value is specified, the 1408 switch-group address pool takes effect on 1409 all (s, g)."; 1410 } 1411 } 1412 } 1413 uses mvpn-pmsi-state; 1414 uses mvpn-pmsi-ipv4-entry; 1415 }/* list mvpn-spmsi-tunnel-ipv4 */ 1416 }/* container mvpn-spmsi-tunnels-ipv4 */ 1417 }/* grouping mvpn-spmsi-tunnel-info-ipv4 */ 1418 grouping mvpn-spmsi-tunnel-info-ipv6 { 1419 description 1420 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 1421 IPv6 private network"; 1423 container mvpn-spmsi-tunnels-ipv6 { 1424 description 1425 "S-PMSI tunnel configuration and 1426 operational state information."; 1427 uses mvpn-spmsi-tunnel-common-config; 1429 list mvpn-spmsi-tunnel-ipv6 { 1430 key "tunnel-type"; 1431 description 1432 "S-PMSI tunnel attributes configuration and 1433 operational state information."; 1434 uses mvpn-spmsi-tunnel-per-item-config; 1436 choice address-mask-or-acl { 1437 description 1438 "Type of definition of private network 1439 multicast address range"; 1440 case address-mask { 1441 description "Use the type of address and mask"; 1443 leaf ipv6-group-addr { 1444 type rt-types:ipv6-multicast-group-address; 1445 description 1446 "Start address of the IPv6 group 1447 address range in private net. "; 1448 } 1449 leaf ipv6-groupmasklength { 1450 type uint8 { 1451 range "8..128"; 1452 } 1453 description 1454 "Group mask length for the IPv6 1455 group address range in private net."; 1456 } 1457 leaf ipv6-source-addr { 1458 type inet:ipv6-address; 1459 description 1460 "Start address of the IPv6 source 1461 address range in private net."; 1462 } 1463 leaf ipv6-source-masklength { 1464 type uint8 { 1465 range "0..128"; 1467 } 1468 description 1469 "Source mask length for the IPv6 1470 source address range in private net."; 1471 } 1472 } 1473 case acl-name { 1474 description "Use the type of acl"; 1475 leaf group-acl-ipv6 { 1476 type leafref { 1477 path "/acl:acls/acl:acl/acl:name"; 1478 } 1479 description 1480 "Specify the (s, g) entry on which the 1481 S-PMSI tunnel takes effect. 1482 The value is an integer ranging from 3000 1483 to 3999 or a string of 32 case-sensitive 1484 characters. If no value is specified, the 1485 switch-group address pool takes effect on 1486 all (s, g)."; 1487 } 1488 } 1489 } 1490 uses mvpn-pmsi-state; 1491 uses mvpn-pmsi-ipv6-entry; 1492 }/* list mvpn-spmsi-tunnel-ipv6 */ 1493 }/* container mvpn-spmsi-tunnels-ipv6 */ 1494 }/* grouping mvpn-spmsi-tunnel-info-ipv6 */ 1496 augment "/ni:network-instances/ni:network-instance/ni:ni-type/" 1497 +"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4" { 1498 description 1499 "Augment l3vpn ipv4 container for per multicast VRF 1500 configuration and operational state."; 1501 container multicast { 1502 description 1503 "Configuration and operational state of multicast IPv4 vpn 1504 specific parameters"; 1505 uses mvpn-instance-config; 1506 uses mvpn-rts; 1507 uses mvpn-ipmsi-tunnel-info-ipv4; 1508 uses mvpn-spmsi-tunnel-info-ipv4; 1509 } 1510 } 1512 augment "/ni:network-instances/ni:network-instance/ni:ni-type/" 1513 +"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" { 1514 description 1515 "Augment l3vpn ipv6 container for per multicast VRF 1516 configuration and operational state."; 1517 container multicast { 1518 description 1519 "Configuration and operational state of multicast IPv6 vpn 1520 specific parameters"; 1521 uses mvpn-instance-config; 1522 uses mvpn-rts; 1523 uses mvpn-ipmsi-tunnel-info-ipv6; 1524 uses mvpn-spmsi-tunnel-info-ipv6; 1525 } 1526 } 1527 } 1528 1530 5. Security Considerations 1532 TBD 1534 6. IANA Considerations 1536 TBD 1538 7. References 1540 7.1. Normative References 1542 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1543 the Network Configuration Protocol (NETCONF)", RFC 6020, 1544 October 2010 1546 [RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems' 1547 Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037, 1548 October 2010. 1550 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1551 and A. Bierman, Ed., "Network Configuration Protocol 1552 (NETCONF)", RFC 6241, June 2011 1554 [RFC6513] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP 1555 VPNs", RFC 6513, February 2012. 1557 [RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP 1558 Encodings and Procedures for Multicast in MPLS/BGP IP 1559 VPNs", RFC 6514, February 2012. 1561 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1562 RFC 6991, July 2013 1564 [RFC7246] IJ. Wijnands, P. Hitchen, N. Leymann, W. Henderickx, A. 1565 Gulko and J. Tantsura, " Multipoint Label Distribution 1566 Protocol In-Band Signaling in a Virtual Routing and 1567 Forwarding (VRF) Table Context ", RFC 7246, June 2014. 1569 [RFC7900] Y. Rekhter, E. Rosen, R. Aggarwal, Arktan, Y. Cai and T. 1570 Morin, " Extranet Multicast in BGP/IP MPLS VPNs ", RFC 1571 7900, June 2016. 1573 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1574 RFC 7950, August 2016 1576 [RFC8279] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A., 1577 Przygienda, T., and S. Aldrin, "Multicast Using Bit Index 1578 Explicit Replication (BIER)", RFC 8279, November 2017 1580 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1581 "Common YANG Data Types for the Routing Area", RFC 8294, 1582 December 2017 1584 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1585 and R. Wilton, "Network Management Datastore Architecture 1586 (NMDA)", RFC 8342, March 2018 1588 [I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D. 1589 Blair, "Network Access Control List (ACL) YANG Data 1590 Model", draft-ietf-netmod-acl-model-21(work in progress), 1591 November 2018 1593 [I-D.ietf-ni-model] Berger, L., Hopps, C., Lindem, A., and D. 1594 Bogdanovic, X. Liu, "Network Instance Model", draft-ietf- 1595 rtgwg-ni-model-12(work in progress), March 2018. 1597 [I-D.ietf-l3vpn-yang] D. Jain, K. Patel, P. Brissette, Z. Li, S. 1598 Zhuang, X. Liu, J. Haas, S. Esale and B. Wen, "Yang Data 1599 Model for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang- 1600 04(work in progress), October 2018. 1602 7.2. Informative References 1604 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1605 BCP 215, RFC 8340, March 2018 1607 [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1608 Data Model Documents", RFC8407, October 2018 1610 8. Acknowledgments 1612 The authors would like to thank Anish Peter, Stig Venaas for their 1613 valuable contributions. 1615 Authors' Addresses 1617 Yisong Liu 1618 Huawei Technologies 1619 Huawei Bld., No.156 Beiqing Rd. 1620 Beijing 100095 1621 China 1623 Email: liuyisong@huawei.com 1625 Feng Guo 1626 Huawei Technologies 1627 Huawei Bld., No.156 Beiqing Rd. 1628 Beijing 100095 1629 China 1631 Email: guofeng@huawei.com 1633 Stephane Litkowski 1634 Orange 1636 Email: stephane.litkowski@orange.com 1638 Xufeng Liu 1639 Volta Networks 1641 Email: xufeng.liu.ietf@gmail.com 1643 Robert Kebler 1644 Juniper Networks 1645 10 Technology Park Drive 1646 Westford, MA 01886 1647 USA 1649 Email: rkebler@juniper.net 1650 Mahesh Sivakumar 1651 Juniper Networks 1652 1133 Innovation Way 1653 Sunnyvale, California 1654 USA 1656 Email: sivakumar.mahesh@gmail.com