idnits 2.17.00 (12 Aug 2021) /tmp/idnits28702/draft-liu-bess-mvpn-yang-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 54 instances of too long lines in the document, the longest one being 26 characters in excess of 72. == 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 258 has weird spacing: '...t-value str...' == Line 292 has weird spacing: '...address ine...' == Line 345 has weird spacing: '...address ine...' == Line 357 has weird spacing: '...t-value str...' == Line 391 has weird spacing: '...address ine...' == (1 more instance...) -- The document date (November 08, 2018) is 1283 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 131, but not defined == Missing Reference: 'RFC4875' is mentioned on line 135, but not defined == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 1390, but no explicit reference was found in the text ** Downref: Normative reference to an Historic RFC: RFC 6037 == Outdated reference: draft-ietf-netmod-acl-model has been published as RFC 8519 == Outdated reference: draft-ietf-rtgwg-ni-model has been published as RFC 8529 == Outdated reference: A later version (-05) exists of draft-ietf-bess-l3vpn-yang-04 == Outdated reference: draft-ietf-netmod-rfc6087bis has been published as RFC 8407 Summary: 2 errors (**), 0 flaws (~~), 18 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: May 08, 2019 S. Litkowski 5 Orange 6 X. Liu 7 Volta Networks 8 R. Kebler 9 M. Sivakumar 10 Juniper Networks 11 November 08, 2018 13 Yang Data Model for Multicast in MPLS/BGP IP VPNs 14 draft-liu-bess-mvpn-yang-07 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 May 8, 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 .......................................... 3 64 1.3. Prefixes in Data Node Names ............................ 3 65 2. Design of Data model......................................... 4 66 2.1. Scope of model ......................................... 4 67 2.2. Optional capabilities .................................. 4 68 2.3. Position of address family in hierarchy ................ 5 69 3. Module Structure ............................................ 5 70 4. MVPN YANG Modules .......................................... 10 71 5. Security Considerations .................................... 28 72 6. IANA Considerations ........................................ 28 73 7. References ................................................. 28 74 7.1. Normative References .................................. 28 75 7.2. Informative References ................................ 29 76 8. Acknowledgments ............................................ 29 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: 131 Multipoint Label Distribution Protocol [RFC6388]. 133 P2MP TE: 135 Point to Multipoint Traffic Engineering [RFC4875]. 137 1.2. Tree Diagrams 139 Tree diagrams used in this document follow the notation defined in 140 [RFC8340]. 142 1.3. Prefixes in Data Node Names 144 In this document, names of data nodes, actions, and other data model 145 objects are often used without a prefix, as long as it is clear from 146 the context in which YANG module each name is defined. Otherwise, 147 names are prefixed using the standard prefix associated with the 149 +----------+------------------------+-------------------------------+ 151 | Prefix | YANG module | Reference | 153 +-----------+--------------------------+----------------------------+ 155 | ni | ietf-network-instance | [I-D.ietf-ni-model] | 157 | l3vpn | ietf-bgp-l3vpn | [I-D.ietf-l3vpn-yang] | 159 | inet | ietf-inet-types | [RFC6991] | 161 | rt-types | ietf-routing-types | [RFC8294] | 163 | acl | ietf-access-control-list | [I-D.ietf-acl-yang] | 165 +-----------+--------------------------+----------------------------+ 167 Table 1: Prefixes and Corresponding YANG Modules 169 2. Design of Data model 171 2.1. Scope of model 173 The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514]. 174 The configuration of MVPN features, and the operational state fields 175 and RPC definitions are not all included in this document of the 176 data model. This model can be extended, though the structure of what 177 has been written may be taken as representative of the structure of 178 the whole model. 180 This model does not cover other MVPN related protocols such as MVPN 181 Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc., 182 these will be specified in separate documents. 184 2.2. Optional capabilities 186 This model is designed to represent the capabilities of MVPN devices 187 with various specifications, including some with basic subsets of 188 the MVPN protocols. The main design goals of this document are that 189 any major now-existing implementation may be said to support the 190 basic model, and that the configuration of all implementations 191 meeting the specification is easy to express through some 192 combination of the features in the basic model and simple vendor 193 augmentations. 195 On the other hand, operational state parameters are not so widely 196 designated as features, as there are many cases where the defaulting 197 of an operational state parameter would not cause any harm to the 198 system, and it is much more likely that an implementation without 199 native support for a piece of operational state would be able to 200 derive a suitable value for a state variable that is not natively 201 supported. 203 For the same reason, wide constant ranges (for example, timer 204 maximum and minimum) will be used in the model. It is expected that 205 vendors will augment the model with any specific restrictions that 206 might be required. Vendors may also extend the features list with 207 proprietary extensions. 209 2.3. Position of address family in hierarchy 211 The current draft contains MVPN IPv4 and IPv6 as separate schema 212 branches in the structure. The reason for this is to inherit l3vpn 213 yang model structure and make it easier for implementations which 214 may optionally choose to support specific address families. And the 215 names of some objects may be different between the IPv4 and IPv6 216 address families. 218 3. Module Structure 220 The MVPN YANG model follows the Guidelines for YANG Module Authors 221 (NMDA) [RFC8342]. The operational state data is combined with the 222 associated configuration data in the same hierarchy [I-D.ietf- 223 netmod-rfc6087bis]. The MVPN modules define for both IPv4 and IPv6 224 in a two-level hierarchy as listed below: 226 Instance level: Only including configuration data nodes now. MVPN 227 configuration attributes for the entire routing instance, including 228 route-target, I-PMSI tunnel and S-PMSI number, common timer etc. 230 PMSI tunnel level: MVPN configuration attributes applicable to 231 the I-PMSI and per S-PMSI tunnel configuration attributes, including 232 tunnel mode, tunnel specific parameters and threshold etc. MVPN PMSI 233 tunnel operational state attributes applicable to the I-PMSI and per 234 S-PMSI tunnel operational state attributes, including tunnel mode, 235 tunnel role, tunnel specific parameters and referenced private 236 source and group address etc. 238 Where fields are not genuinely essential to protocol operation, they 239 are marked as optional. Some fields will be essential but have a 240 default specified, so that they need not be configured explicitly. 242 This MVPN model augments "/ni:network-instances/ni:network- 243 instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4:" for IPv4 244 MVPN service and "/ni:network-instances/ni:network-instance/ni:ni- 245 type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" for IPv6 MVPN service 246 specified in [I-D.ietf-l3vpn-yang]. 248 augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4: 249 +--rw multicast 250 +--rw signaling-mode? enumeration 251 +--rw auto-discovery-mode? enumeration 252 +--rw mvpn-type? enumeration 253 +--rw is-sender-site? boolean {mvpn-sender}? 254 +--rw rpt-spt-mode? enumeration 255 +--rw mvpn-route-targets {mvpn-separate-rt}? 256 | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] 257 | +--rw mvpn-rt-type enumeration 258 | +--rw mvpn-rt-value string 259 +--rw mvpn-ipmsi-tunnel-ipv4 260 | +--rw tunnel-type? enumeration 261 | +--rw (ipmsi-tunnel-attribute)? 262 | | +--:(p2mp-te) 263 | | | +--rw te-p2mp-template? string 264 | | +--:(p2mp-mldp) 265 | | +--:(pim-ssm) 266 | | | +--rw ssm-default-group-addr? rt-types:ip-multicast-group-address 267 | | +--:(pim-sm) 268 | | | +--rw sm-default-group-addr? rt-types:ip-multicast-group-address 269 | | +--:(bidir-pim) 270 | | | +--rw bidir-default-group-addr? rt-types:ip-multicast-group-address 271 | | +--:(ingress-replication) 272 | | +--:(mp2mp-mldp) 273 | +--ro (pmsi-tunnel-state-attribute)? 274 | | +--:(p2mp-te) 275 | | | +--ro te-p2mp-id? uint16 276 | | | +--ro te-tunnel-id? uint16 277 | | | +--ro te-extend-tunnel-id? uint16 278 | | +--:(p2mp-mldp) 279 | | | +--ro mldp-root-addr? inet:ip-address 280 | | | +--ro mldp-lsp-id? string 281 | | +--:(pim-ssm) 282 | | | +--ro ssm-group-addr? rt-types:ip-multicast-group-address 283 | | +--:(pim-sm) 284 | | | +--ro sm-group-addr? rt-types:ip-multicast-group-address 285 | | +--:(bidir-pim) 286 | | | +--ro bidir-group-addr? rt-types:ip-multicast-group-address 287 | | +--:(ingress-replication) 288 | | +--:(mp2mp-mldp) 289 | +--ro tunnel-role? enumeration 290 | +--ro mvpn-pmsi-ipv4-ref-sg-entries 291 | +--ro mvpn-pmsi-ipv4-ref-sg-entries* [ipv4-source-address ipv4-group-address] 292 | +--ro ipv4-source-address inet:ipv4-address 293 | +--ro ipv4-group-address rt-types:ipv4-multicast-group-address 294 +--rw mvpn-spmsi-tunnels-ipv4 295 +--rw switch-delay-time? uint8 296 +--rw switch-back-holddown-time? uint16 297 +--rw tunnel-limit? uint16 298 +--rw mvpn-spmsi-tunnel-ipv4* [tunnel-type] 299 +--rw tunnel-type enumeration 300 +--rw (spmsi-tunnel-attribute)? 301 | +--:(p2mp-te) 302 | | +--rw te-p2mp-template? string 303 | +--:(p2mp-mldp) 304 | +--:(pim-ssm) 305 | | +--rw ssm-group-pool-addr? rt-types:ip-multicast-group-address 306 | | +--rw ssm-group-pool-masklength? uint8 307 | +--:(pim-sm) 308 | | +--rw sm-group-pool-addr? rt-types:ip-multicast-group-address 309 | | +--rw sm-group-pool-masklength? uint8 310 | +--:(bidir-pim) 311 | | +--rw bidir-group-pool-addr? rt-types:ip-multicast-group-address 312 | | +--rw bidir-group-pool-masklength? uint8 313 | +--:(ingress-replication) 314 | +--:(mp2mp-mldp) 315 +--rw switch-threshold? uint32 316 +--rw per-item-tunnel-limit? uint16 317 +--rw switch-wildcard-mode? enumeration {mvpn-switch-wildcard-mode}? 318 +--rw (address-mask-or-acl)? 319 | +--:(address-mask) 320 | | +--rw ipv4-group-addr? rt-types:ipv4-multicast-group-address 321 | | +--rw ipv4-group-masklength? uint8 322 | | +--rw ipv4-source-addr? inet:ipv4-address 323 | | +--rw ipv4-source-masklength? uint8 324 | +--:(acl-name) 325 | +--rw group-acl-ipv4? -> /acl:acls/acl/name 326 +--ro (pmsi-tunnel-state-attribute)? 327 | +--:(p2mp-te) 328 | | +--ro te-p2mp-id? uint16 329 | | +--ro te-tunnel-id? uint16 330 | | +--ro te-extend-tunnel-id? uint16 331 | +--:(p2mp-mldp) 332 | | +--ro mldp-root-addr? inet:ip-address 333 | | +--ro mldp-lsp-id? string 334 | +--:(pim-ssm) 335 | | +--ro ssm-group-addr? rt-types:ip-multicast-group-address 336 | +--:(pim-sm) 337 | | +--ro sm-group-addr? rt-types:ip-multicast-group-address 338 | +--:(bidir-pim) 339 | | +--ro bidir-group-addr? rt-types:ip-multicast-group-address 340 | +--:(ingress-replication) 341 | +--:(mp2mp-mldp) 342 +--ro tunnel-role? enumeration 343 +--ro mvpn-pmsi-ipv4-ref-sg-entries 344 +--ro mvpn-pmsi-ipv4-ref-sg-entries* [ipv4-source-address ipv4-group-address] 345 +--ro ipv4-source-address inet:ipv4-address 346 +--ro ipv4-group-address rt-types:ipv4-multicast-group-address 347 augment /ni:network-instances/ni:network-instance/ni:ni-type/l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6: 348 +--rw multicast 349 +--rw signaling-mode? enumeration 350 +--rw auto-discovery-mode? enumeration 351 +--rw mvpn-type? enumeration 352 +--rw is-sender-site? boolean {mvpn-sender}? 353 +--rw rpt-spt-mode? enumeration 354 +--rw mvpn-route-targets {mvpn-separate-rt}? 355 | +--rw mvpn-route-target* [mvpn-rt-type mvpn-rt-value] 356 | +--rw mvpn-rt-type enumeration 357 | +--rw mvpn-rt-value string 358 +--ro mvpn-ipmsi-tunnel-ipv6 359 | +--ro tunnel-type? enumeration 360 | +--ro (ipmsi-tunnel-attribute)? 361 | | +--:(p2mp-te) 362 | | | +--ro te-p2mp-template? string 363 | | +--:(p2mp-mldp) 364 | | +--:(pim-ssm) 365 | | | +--ro ssm-default-group-addr? rt-types:ip-multicast-group-address 366 | | +--:(pim-sm) 367 | | | +--ro sm-default-group-addr? rt-types:ip-multicast-group-address 368 | | +--:(bidir-pim) 369 | | | +--ro bidir-default-group-addr? rt-types:ip-multicast-group-address 370 | | +--:(ingress-replication) 371 | | +--:(mp2mp-mldp) 372 | +--ro (pmsi-tunnel-state-attribute)? 373 | | +--:(p2mp-te) 374 | | | +--ro te-p2mp-id? uint16 375 | | | +--ro te-tunnel-id? uint16 376 | | | +--ro te-extend-tunnel-id? uint16 377 | | +--:(p2mp-mldp) 378 | | | +--ro mldp-root-addr? inet:ip-address 379 | | | +--ro mldp-lsp-id? string 380 | | +--:(pim-ssm) 381 | | | +--ro ssm-group-addr? rt-types:ip-multicast-group-address 382 | | +--:(pim-sm) 383 | | | +--ro sm-group-addr? rt-types:ip-multicast-group-address 384 | | +--:(bidir-pim) 385 | | | +--ro bidir-group-addr? rt-types:ip-multicast-group-address 386 | | +--:(ingress-replication) 387 | | +--:(mp2mp-mldp) 388 | +--ro tunnel-role? enumeration 389 | +--ro mvpn-pmsi-ipv6-ref-sg-entries 390 | +--ro mvpn-pmsi-ipv6-ref-sg-entries* [ipv6-source-address ipv6-group-address] 391 | +--ro ipv6-source-address inet:ipv6-address 392 | +--ro ipv6-group-address rt-types:ipv6-multicast-group-address 393 +--rw mvpn-spmsi-tunnels-ipv6 394 +--rw switch-delay-time? uint8 395 +--rw switch-back-holddown-time? uint16 396 +--rw tunnel-limit? uint16 397 +--rw mvpn-spmsi-tunnel-ipv6* [tunnel-type] 398 +--rw tunnel-type enumeration 399 +--rw (spmsi-tunnel-attribute)? 400 | +--:(p2mp-te) 401 | | +--rw te-p2mp-template? string 402 | +--:(p2mp-mldp) 403 | +--:(pim-ssm) 404 | | +--rw ssm-group-pool-addr? rt-types:ip-multicast-group-address 405 | | +--rw ssm-group-pool-masklength? uint8 406 | +--:(pim-sm) 407 | | +--rw sm-group-pool-addr? rt-types:ip-multicast-group-address 408 | | +--rw sm-group-pool-masklength? uint8 409 | +--:(bidir-pim) 410 | | +--rw bidir-group-pool-addr? rt-types:ip-multicast-group-address 411 | | +--rw bidir-group-pool-masklength? uint8 412 | +--:(ingress-replication) 413 | +--:(mp2mp-mldp) 414 +--rw switch-threshold? uint32 415 +--rw per-item-tunnel-limit? uint16 416 +--rw switch-wildcard-mode? enumeration {mvpn-switch-wildcard-mode}? 417 +--rw (address-mask-or-acl)? 418 | +--:(address-mask) 419 | | +--rw ipv6-group-addr? rt-types:ipv6-multicast-group-address 420 | | +--rw ipv6-groupmasklength? uint8 421 | | +--rw ipv6-source-addr? inet:ipv6-address 422 | | +--rw ipv6-source-masklength? uint8 423 | +--:(acl-name) 424 | +--rw group-acl-ipv6? -> /acl:acls/acl/name 425 +--ro (pmsi-tunnel-state-attribute)? 426 | +--:(p2mp-te) 427 | | +--ro te-p2mp-id? uint16 428 | | +--ro te-tunnel-id? uint16 429 | | +--ro te-extend-tunnel-id? uint16 430 | +--:(p2mp-mldp) 431 | | +--ro mldp-root-addr? inet:ip-address 432 | | +--ro mldp-lsp-id? string 433 | +--:(pim-ssm) 434 | | +--ro ssm-group-addr? rt-types:ip-multicast-group-address 435 | +--:(pim-sm) 436 | | +--ro sm-group-addr? rt-types:ip-multicast-group-address 437 | +--:(bidir-pim) 438 | | +--ro bidir-group-addr? rt-types:ip-multicast-group-address 439 | +--:(ingress-replication) 440 | +--:(mp2mp-mldp) 441 +--ro tunnel-role? enumeration 442 +--ro mvpn-pmsi-ipv6-ref-sg-entries 443 +--ro mvpn-pmsi-ipv6-ref-sg-entries* [ipv6-source-address ipv6-group-address] 444 +--ro ipv6-source-address inet:ipv6-address 445 +--ro ipv6-group-address rt-types:ipv6-multicast-group-address 447 4. MVPN YANG Modules 449 file ietf-mvpn@2018-11-08.yang 450 module ietf-mvpn { 451 yang-version 1.1; 452 namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn"; 453 prefix mvpn; 455 import ietf-network-instance { 456 prefix ni; 457 } 459 import ietf-bgp-l3vpn { 460 prefix l3vpn; 461 } 463 import ietf-inet-types { 464 prefix inet; 465 } 467 import ietf-routing-types { 468 prefix rt-types; 469 } 471 import ietf-access-control-list { 472 prefix acl; 473 } 475 organization 476 "IETF BESS(BGP Enabled Services) Working Group"; 477 contact 478 " 479 Yisong Liu 480 481 Stephane Litkowski 482 483 Feng Guo 484 485 Xufeng Liu 486 487 Robert Kebler 488 489 Mahesh Sivakumar 490 "; 491 description 492 "This YANG module defines the generic configuration 493 and operational state data for mvpn, which is common across 494 all of the vendor implementations of the protocol. It is 495 intended that the module will be extended by vendors to 496 define vendor-specific mvpn parameters."; 498 revision 2018-11-08 { 499 description 500 "Update for leaf type and reference."; 501 reference 502 "RFC XXXX: A YANG Data Model for MVPN"; 503 } 504 revision 2018-05-10 { 505 description 506 "Update for Model structure and errata."; 507 reference 508 "RFC XXXX: A YANG Data Model for MVPN"; 509 } 510 revision 2017-09-15 { 511 description 512 "Update for NMDA version and errata."; 513 reference 514 "RFC XXXX: A YANG Data Model for MVPN"; 515 } 516 revision 2017-07-03 { 517 description 518 "Update S-PMSI configuration and errata."; 519 reference 520 "RFC XXXX: A YANG Data Model for MVPN"; 521 } 522 revision 2016-10-28 { 523 description 524 "Initial revision."; 525 reference 526 "RFC XXXX: A YANG Data Model for MVPN"; 527 } 529 /* Features */ 530 feature mvpn-sender { 531 description 532 "Support configuration to specify the current PE as the sender PE"; 533 } 534 feature mvpn-separate-rt { 535 description 536 "Support route-targets configuration of MVPN when they are 537 different from the route-targets of unicast L3VPN."; 538 } 539 feature mvpn-switch-wildcard-mode { 540 description 541 "Support configuration to use wildcard mode when multicast 542 packets switch from I-PMSI to S-PMSI."; 543 } 545 grouping mvpn-instance-config { 546 description "Mvpn basic configuration per instance."; 548 leaf signaling-mode { 549 type enumeration { 550 enum invalid { 551 value "0"; 552 description "invalid"; 553 } 554 enum bgp { 555 value "1"; 556 description "bgp"; 557 } 558 enum pim { 559 value "2"; 560 description "pim"; 561 } 562 enum mldp { 563 value "3"; 564 description "mldp"; 565 } 566 } 567 default "invalid"; 568 description "Signaling mode for C-multicast route."; 569 } 570 leaf auto-discovery-mode { 571 type enumeration { 572 enum invalid { 573 value "0"; 574 description "no auto-discovery"; 575 } 576 enum pim { 577 value "1"; 578 description "auto-discovery by PIM signaling"; 579 } 580 enum bgp { 581 value "2"; 582 description "auto-discovery by BGP signaling"; 583 } 585 } 586 default "invalid"; 587 description "Auto discovery mode."; 588 } 589 leaf mvpn-type { 590 type enumeration { 591 enum rosen-mvpn { 592 value "0"; 593 description "Rosen mvpn mode referenced RFC6037"; 594 } 595 enum ng-mvpn { 596 value "1"; 597 description "BGP/MPLS mvpn mode referenced RFC6513&RFC6514"; 598 } 599 } 600 default "ng-mvpn"; 601 description 602 "Mvpn type, which can be rosen mvpn mode or ng mvpn mode."; 603 } 604 leaf is-sender-site { 605 if-feature mvpn-sender; 606 type boolean; 607 default false; 608 description "Configure the current PE as a sender PE."; 609 } 610 leaf rpt-spt-mode { 611 type enumeration { 612 enum spt-only { 613 value "0"; 614 description 615 "Only spt mode for crossing public net."; 616 } 617 enum rpt-spt { 618 value "1"; 619 description 620 "Both rpt and spt mode for corssing public net."; 621 } 622 } 623 description 624 "ASM mode in multicast private net for crossing public net."; 625 } 626 }/* mvpn-instance-config */ 628 grouping mvpn-rts { 629 description "May be different from l3vpn unicast route-targets"; 630 container mvpn-route-targets{ 631 if-feature mvpn-separate-rt; 632 description "Multicast vpn route-targets"; 633 list mvpn-route-target { 634 key "mvpn-rt-type mvpn-rt-value" ; 635 description 636 "List of multicast route-targets" ; 637 leaf mvpn-rt-type { 638 type enumeration { 639 enum export-extcommunity { 640 value "0"; 641 description "export-extcommunity"; 642 } 643 enum import-extcommunity { 644 value "1"; 645 description "import-extcommunity"; 646 } 647 } 648 description 649 "rt types are as follows: 650 export-extcommunity: specifies the value of 651 the extended community attribute of the 652 route from an outbound interface to the 653 destination vpn. 654 import-extcommunity: receives routes that 655 carry the specified extended community 656 attribute"; 657 } 658 leaf mvpn-rt-value { 659 type string { 660 length "3..21"; 661 } 662 description 663 "the available mvpn target formats are as 664 follows: 665 - 16-bit as number:32-bit user-defined 666 number, for example, 1:3. an as number 667 ranges from 0 to 65535, and a user-defined 668 number ranges from 0 to 4294967295. The as 669 number and user-defined number cannot be 670 both 0s. That is, a vpn target cannot be 0:0. 671 - 32-bit ip address:16-bit user-defined 672 number, for example, 192.168.122.15:1. 673 The ip address ranges from 0.0.0.0 to 674 255.255.255.255, and the user-defined 675 number ranges from 0 to 65535."; 676 } 677 } 678 } 679 } 681 grouping mvpn-ipmsi-tunnel-config { 682 description 683 "Configuration of default mdt for rosen mvpn 684 and I-PMSI for ng mvpn"; 686 leaf tunnel-type { 687 type enumeration { 688 enum no-tunnel { 689 value "0"; 690 description "no tunnel information present"; 691 } 692 enum p2mp-te { 693 value "1"; 694 description "p2mp-te"; 695 } 696 enum p2mp-mldp { 697 value "2"; 698 description "p2mp-mldp"; 699 } 700 enum pim-ssm { 701 value "3"; 702 description "pim-ssm"; 703 } 704 enum pim-sm { 705 value "4"; 706 description "pim-sm"; 707 } 708 enum bidir-pim { 709 value "5"; 710 description "bidir-pim"; 711 } 712 enum ingress-replication { 713 value "6"; 714 description "ingress-replication"; 715 } 716 enum mp2mp-mldp { 717 value "7"; 718 description "mp2mp-mldp"; 719 } 720 } 721 description "I-PMSI tunnel type."; 722 } 723 choice ipmsi-tunnel-attribute { 724 description "I-PMSI tunnel attributes configuration"; 725 case p2mp-te { 726 description "P2mp TE tunnel"; 727 leaf te-p2mp-template { 728 type string { 729 length "1..31"; 730 } 731 description "P2mp te tunnel template"; 733 } 734 } 735 case p2mp-mldp { 736 description "Mldp tunnel"; 737 } 738 case pim-ssm { 739 description "Pim ssm tunnel"; 740 leaf ssm-default-group-addr { 741 type rt-types:ip-multicast-group-address; 742 description "Default mdt or I-PMSI group address."; 743 } 744 } 745 case pim-sm { 746 description "Pim sm tunnel"; 747 leaf sm-default-group-addr { 748 type rt-types:ip-multicast-group-address; 749 description "Default mdt or I-PMSI group address."; 750 } 751 } 752 case bidir-pim { 753 description "Bidir pim tunnel"; 754 leaf bidir-default-group-addr { 755 type rt-types:ip-multicast-group-address; 756 description "Default mdt or I-PMSI group address."; 757 } 758 } 759 case ingress-replication { 760 description "Ingress replication p2p tunnel"; 761 } 762 case mp2mp-mldp { 763 description "Mp2mp mldp tunnel"; 764 } 765 } 766 }/* mvpn-ipmsi-tunnel-config */ 768 grouping mvpn-spmsi-tunnel-per-item-config { 769 description "S-PMSI tunnel basic configuration"; 770 leaf tunnel-type { 771 type enumeration { 772 enum no-tunnel { 773 value "0"; 774 description "no tunnel information present"; 775 } 776 enum p2mp-te { 777 value "1"; 778 description "p2mp-te"; 779 } 780 enum p2mp-mldp { 781 value "2"; 782 description "p2mp-mldp"; 783 } 784 enum pim-ssm { 785 value "3"; 786 description "pim-ssm"; 787 } 788 enum pim-sm { 789 value "4"; 790 description "pim-sm"; 791 } 792 enum bidir-pim { 793 value "5"; 794 description "bidir-pim"; 795 } 796 enum ingress-replication { 797 value "6"; 798 description "ingress-replication"; 799 } 800 enum mp2mp-mldp { 801 value "7"; 802 description "mp2mp-mldp"; 803 } 804 } 805 description "S-PMSI tunnel type."; 806 } 807 choice spmsi-tunnel-attribute { 808 description "S-PMSI tunnel attributes configuration"; 809 case p2mp-te { 810 description "P2mp te tunnel"; 811 leaf te-p2mp-template { 812 type string { 813 length "1..31"; 814 } 815 description "P2mp te tunnel template"; 816 } 817 } 818 case p2mp-mldp { 819 description "Mldp tunnel"; 820 } 821 case pim-ssm { 822 description "Pim ssm tunnel"; 823 leaf ssm-group-pool-addr { 824 type rt-types:ip-multicast-group-address; 825 description "Group pool address for data mdt or pim s-pmsi."; 826 } 827 leaf ssm-group-pool-masklength { 828 type uint8 { 829 range "8..128"; 830 } 831 description "Group pool mask for data mdt or pim s-pmsi"; 832 } 833 } 834 case pim-sm { 835 description "Pim sm tunnel"; 836 leaf sm-group-pool-addr { 837 type rt-types:ip-multicast-group-address; 838 description "Group pool address for data mdt or pim s-pmsi."; 839 } 840 leaf sm-group-pool-masklength { 841 type uint8 { 842 range "8..128"; 843 } 844 description "Group pool mask for data mdt or pim s-pmsi"; 845 } 846 } 847 case bidir-pim { 848 description "Bidir pim tunnel"; 849 leaf bidir-group-pool-addr { 850 type rt-types:ip-multicast-group-address; 851 description "Group pool address for data mdt or pim s-pmsi."; 852 } 853 leaf bidir-group-pool-masklength { 854 type uint8 { 855 range "8..128"; 856 } 857 description "Group pool mask for data mdt or pim s-pmsi"; 858 } 859 } 860 case ingress-replication { 861 description "Ingress replication p2p tunnel"; 862 } 863 case mp2mp-mldp { 864 description "Mp2mp mldp tunnel"; 865 } 866 } 867 leaf switch-threshold { 868 type uint32 { 869 range "0..4194304"; 870 } 871 units "kbps"; 872 default "0"; 873 description 874 "Multicast packet rate threshold for 875 triggering the switching from the 876 I-PMSI to the S-PMSI. The value is 877 an integer ranging from 0 to 4194304, in 878 kbps. The default value is 0."; 879 } 880 leaf per-item-tunnel-limit { 881 type uint16 { 882 range "1..1024"; 883 } 884 description 885 "Maximum number of S-PMSI tunnels allowed 886 per S-PMSI configuration item per mvpn instance."; 887 } 888 leaf switch-wildcard-mode { 889 if-feature mvpn-switch-wildcard-mode; 890 type enumeration { 891 enum source-group { 892 value "0"; 893 description 894 "Wildcard neither for source or group address."; 895 } 896 enum star-star { 897 value "1"; 898 description 899 "Wildcard for both source and group address."; 900 } 901 enum star-group { 902 value "2"; 903 description 904 "Wildcard only for source address."; 905 } 906 enum source-star { 907 value "3"; 908 description 909 "Wildcard only for group address."; 910 } 911 } 912 default "source-group"; 913 description 914 "I-PMSI switching to S-PMSI mode for private net 915 wildcard mode, which including (*,*), (*,G), (S,*), 916 (S,G) four modes."; 917 } 918 }/* mvpn-spmsi-tunnel-per-item-config */ 920 grouping mvpn-spmsi-tunnel-common-config { 921 description 922 "Data mdt for rosen mvpn or S-PMSI for ng mvpn configuration 923 attributes for both IPv4 and IPv6 private network"; 924 leaf switch-delay-time { 925 type uint8 { 926 range "3..60"; 927 } 928 units seconds; 929 default "5"; 930 description 931 "Delay for switching from the I-PMSI to 932 the S-PMSI. The value is an integer 933 ranging from 3 to 60, in seconds. "; 934 } 935 leaf switch-back-holddown-time { 936 type uint16 { 937 range "0..512"; 938 } 939 units seconds; 940 default "60"; 941 description 942 "Delay for switching back from the S-PMSI 943 to the I-PMSI. The value is an integer 944 ranging from 0 to 512, in seconds. "; 945 } 946 leaf tunnel-limit { 947 type uint16 { 948 range "1..8192"; 949 } 950 description 951 "Maximum number of s-pmsi tunnels allowed 952 per mvpn instance."; 953 } 954 }/* mvpn-spmsi-tunnel-common-config */ 956 grouping mvpn-pmsi-state { 957 description "PMSI tunnel operational state information"; 959 choice pmsi-tunnel-state-attribute { 960 config false; 961 description 962 "PMSI tunnel operational state information for each type"; 963 case p2mp-te { 964 description "P2mp te tunnel"; 965 leaf te-p2mp-id { 966 type uint16 { 967 range "0..65535"; 968 } 969 default "0"; 970 description "P2mp id of the p2mp tunnel."; 971 } 972 leaf te-tunnel-id { 973 type uint16 { 974 range "1..65535"; 975 } 976 description "Id of the p2mp tunnel."; 977 } 978 leaf te-extend-tunnel-id { 979 type uint16 { 980 range "1..65535"; 981 } 982 description "P2mp extended tunnel interface id."; 983 } 984 } 985 case p2mp-mldp { 986 description "P2mp mldp tunnel"; 987 leaf mldp-root-addr { 988 type inet:ip-address; 989 description "Ip address of the root of a p2mp ldp lsp."; 990 } 991 leaf mldp-lsp-id { 992 type string { 993 length "1..256"; 994 } 995 description "P2mp ldp lsp id."; 996 } 997 } 998 case pim-ssm { 999 description "Pim ssm tunnel"; 1000 leaf ssm-group-addr { 1001 type rt-types:ip-multicast-group-address; 1002 description "Group address for pim ssm"; 1003 } 1004 } 1005 case pim-sm { 1006 description "Pim sm tunnel"; 1007 leaf sm-group-addr { 1008 type rt-types:ip-multicast-group-address; 1009 description "Group address for pim sm"; 1010 } 1011 } 1012 case bidir-pim { 1013 description "Bidir pim tunnel"; 1014 leaf bidir-group-addr { 1015 type rt-types:ip-multicast-group-address; 1016 description "Group address for bidir-pim"; 1017 } 1018 } 1019 case ingress-replication { 1020 description "Ingress replication p2p tunnel"; 1021 } 1022 case mp2mp-mldp { 1023 description "mp2mp mldp tunnel"; 1024 } 1025 } 1026 leaf tunnel-role { 1027 type enumeration { 1028 enum none { 1029 value "0"; 1030 description "none"; 1031 } 1032 enum root { 1033 value "1"; 1034 description "root"; 1035 } 1036 enum leaf { 1037 value "2"; 1038 description "leaf"; 1039 } 1040 enum root-and-leaf { 1041 value "3"; 1042 description "root-and-leaf"; 1043 } 1044 } 1045 config false; 1046 description "Role of a node for a p-tunnel."; 1047 } 1048 }/* mvpn-pmsi-state */ 1050 grouping mvpn-pmsi-ipv4-entry { 1051 description 1052 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1053 container mvpn-pmsi-ipv4-ref-sg-entries { 1054 config false; 1055 description 1056 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1057 list mvpn-pmsi-ipv4-ref-sg-entries { 1058 key "ipv4-source-address ipv4-group-address"; 1059 description 1060 "IPv4 source and group address of private network entry"; 1061 leaf ipv4-source-address { 1062 type inet:ipv4-address; 1063 description 1064 "IPv4 source address of private network entry 1065 in I-PMSI or S-PMSI."; 1066 } 1067 leaf ipv4-group-address { 1068 type rt-types:ipv4-multicast-group-address; 1069 description 1070 "IPv4 group address of private network entry 1071 in I-PMSI or S-PMSI."; 1072 } 1073 } 1074 } 1075 }/* mvpn-pmsi-ipv4-entry */ 1076 grouping mvpn-pmsi-ipv6-entry { 1077 description 1078 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1079 container mvpn-pmsi-ipv6-ref-sg-entries { 1080 config false; 1081 description 1082 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1083 list mvpn-pmsi-ipv6-ref-sg-entries { 1084 key "ipv6-source-address ipv6-group-address"; 1085 description 1086 "IPv6 source and group address of private network entry"; 1087 leaf ipv6-source-address { 1088 type inet:ipv6-address; 1089 description 1090 "IPv6 source address of private network entry 1091 in I-PMSI or S-PMSI."; 1092 } 1093 leaf ipv6-group-address { 1094 type rt-types:ipv6-multicast-group-address; 1095 description 1096 "IPv6 group address of private network entry 1097 in I-PMSI or S-PMSI."; 1098 } 1099 } 1100 } 1101 }/* mvpn-pmsi-ipv6-entry */ 1103 grouping mvpn-ipmsi-tunnel-info-ipv4 { 1104 description 1105 "Default mdt or I-PMSI configuration and 1106 operational state information"; 1107 container mvpn-ipmsi-tunnel-ipv4 { 1108 description 1109 "Default mdt or I-PMSI configuration and 1110 operational state information"; 1111 uses mvpn-ipmsi-tunnel-config; 1112 uses mvpn-pmsi-state; 1113 uses mvpn-pmsi-ipv4-entry; 1114 } 1115 } 1117 grouping mvpn-ipmsi-tunnel-info-ipv6 { 1118 description 1119 "Default mdt or I-PMSI configuration and 1120 operational state information"; 1121 container mvpn-ipmsi-tunnel-ipv6 { 1122 config false; 1123 description 1124 "Default mdt or I-PMSI configuration and 1125 operational state information"; 1126 uses mvpn-ipmsi-tunnel-config; 1127 uses mvpn-pmsi-state; 1128 uses mvpn-pmsi-ipv6-entry; 1129 } 1130 } 1132 grouping mvpn-spmsi-tunnel-info-ipv4 { 1133 description 1134 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 1135 IPv4 private network"; 1137 container mvpn-spmsi-tunnels-ipv4 { 1138 description 1139 "S-PMSI tunnel configuration and 1140 operational state information."; 1141 uses mvpn-spmsi-tunnel-common-config; 1143 list mvpn-spmsi-tunnel-ipv4 { 1144 key "tunnel-type"; 1145 description 1146 "S-PMSI tunnel attributes configuration and 1147 operational state information."; 1149 uses mvpn-spmsi-tunnel-per-item-config; 1150 choice address-mask-or-acl { 1151 description 1152 "Type of definition of private net multicast address range"; 1153 case address-mask { 1154 description "Use the type of address and mask"; 1155 leaf ipv4-group-addr { 1156 type rt-types:ipv4-multicast-group-address; 1157 description 1158 "Start address of the IPv4 group 1159 address range in private net. "; 1160 } 1161 leaf ipv4-group-masklength { 1162 type uint8 { 1163 range "4..32"; 1164 } 1165 description 1166 "Group mask length for the IPv4 1167 group address range in private net."; 1168 } 1169 leaf ipv4-source-addr { 1170 type inet:ipv4-address; 1171 description 1172 "Start address of the IPv4 source 1173 address range in private net."; 1174 } 1175 leaf ipv4-source-masklength { 1176 type uint8 { 1177 range "0..32"; 1178 } 1179 description 1180 "Source mask length for the IPv4 1181 source address range in private net."; 1182 } 1183 } 1184 case acl-name { 1185 description "Use the type of acl"; 1186 leaf group-acl-ipv4 { 1187 type leafref { 1188 path "/acl:acls/acl:acl/acl:name"; 1189 } 1190 description 1191 "Specify the (s, g) entry on which the 1192 S-PMSI tunnel takes effect. 1193 The value is an integer ranging from 3000 1194 to 3999 or a string of 32 case-sensitive 1195 characters. If no value is specified, the 1196 switch-group address pool takes effect on 1197 all (s, g)."; 1198 } 1199 } 1200 } 1201 uses mvpn-pmsi-state; 1202 uses mvpn-pmsi-ipv4-entry; 1203 }/* list mvpn-spmsi-tunnel-ipv4 */ 1204 }/* container mvpn-spmsi-tunnels-ipv4 */ 1205 }/* grouping mvpn-spmsi-tunnel-info-ipv4 */ 1207 grouping mvpn-spmsi-tunnel-info-ipv6 { 1208 description 1209 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 1210 IPv6 private network"; 1212 container mvpn-spmsi-tunnels-ipv6 { 1213 description 1214 "S-PMSI tunnel configuration and 1215 operational state information."; 1216 uses mvpn-spmsi-tunnel-common-config; 1218 list mvpn-spmsi-tunnel-ipv6 { 1219 key "tunnel-type"; 1220 description 1221 "S-PMSI tunnel attributes configuration and 1222 operational state information."; 1223 uses mvpn-spmsi-tunnel-per-item-config; 1225 choice address-mask-or-acl { 1226 description 1227 "Type of definition of private net multicast address range"; 1228 case address-mask { 1229 description "Use the type of address and mask"; 1231 leaf ipv6-group-addr { 1232 type rt-types:ipv6-multicast-group-address; 1233 description 1234 "Start address of the IPv6 group 1235 address range in private net. "; 1236 } 1237 leaf ipv6-groupmasklength { 1238 type uint8 { 1239 range "8..128"; 1240 } 1241 description 1242 "Group mask length for the IPv6 1243 group address range in private net."; 1244 } 1245 leaf ipv6-source-addr { 1246 type inet:ipv6-address; 1247 description 1248 "Start address of the IPv6 source 1249 address range in private net."; 1250 } 1251 leaf ipv6-source-masklength { 1252 type uint8 { 1253 range "0..128"; 1254 } 1255 description 1256 "Source mask length for the IPv6 1257 source address range in private net."; 1258 } 1259 } 1260 case acl-name { 1261 description "Use the type of acl"; 1262 leaf group-acl-ipv6 { 1263 type leafref { 1264 path "/acl:acls/acl:acl/acl:name"; 1265 } 1266 description 1267 "Specify the (s, g) entry on which the 1268 S-PMSI tunnel takes effect. 1269 The value is an integer ranging from 3000 1270 to 3999 or a string of 32 case-sensitive 1271 characters. If no value is specified, the 1272 switch-group address pool takes effect on 1273 all (s, g)."; 1274 } 1275 } 1276 } 1277 uses mvpn-pmsi-state; 1278 uses mvpn-pmsi-ipv6-entry; 1279 }/* list mvpn-spmsi-tunnel-ipv6 */ 1280 }/* container mvpn-spmsi-tunnels-ipv6 */ 1281 }/* grouping mvpn-spmsi-tunnel-info-ipv6 */ 1283 augment "/ni:network-instances/ni:network-instance/ni:ni-type/" 1284 +"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv4" { 1285 description 1286 "Augment l3vpn ipv4 container for per multicast VRF 1287 configuration and operational state."; 1288 container multicast { 1289 description 1290 "Configuration of multicast IPv4 vpn specific parameters and 1291 operational state of multicast IPv4 vpn specific parameters"; 1292 uses mvpn-instance-config; 1293 uses mvpn-rts; 1294 uses mvpn-ipmsi-tunnel-info-ipv4; 1295 uses mvpn-spmsi-tunnel-info-ipv4; 1296 } 1297 } 1299 augment "/ni:network-instances/ni:network-instance/ni:ni-type/" 1300 +"l3vpn:l3vpn/l3vpn:l3vpn/l3vpn:ipv6" { 1301 description 1302 "Augment l3vpn ipv6 container for per multicast VRF 1303 configuration and operational state."; 1304 container multicast { 1305 description 1306 "Configuration of multicast IPv6 vpn specific parameters and 1307 operational state of multicast IPv6 vpn specific parameters"; 1308 uses mvpn-instance-config; 1309 uses mvpn-rts; 1310 uses mvpn-ipmsi-tunnel-info-ipv6; 1311 uses mvpn-spmsi-tunnel-info-ipv6; 1312 } 1313 } 1314 } 1315 1317 5. Security Considerations 1319 TBD 1321 6. IANA Considerations 1323 TBD 1325 7. References 1327 7.1. Normative References 1329 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1330 the Network Configuration Protocol (NETCONF)", RFC 6020, 1331 October 2010 1333 [RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems' 1334 Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037, 1335 October 2010. 1337 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1338 and A. Bierman, Ed., "Network Configuration Protocol 1339 (NETCONF)", RFC 6241, June 2011 1341 [RFC6513] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP 1342 VPNs", RFC 6513, February 2012. 1344 [RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP 1345 Encodings and Procedures for Multicast in MPLS/BGP IP 1346 VPNs", RFC 6514, February 2012. 1348 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1349 RFC 6991, July 2013 1351 [RFC7246] IJ. Wijnands, P. Hitchen, N. Leymann, W. Henderickx, A. 1352 Gulko and J. Tantsura, " Multipoint Label Distribution 1353 Protocol In-Band Signaling in a Virtual Routing and 1354 Forwarding (VRF) Table Context ", RFC 7246, June 2014. 1356 [RFC7900] Y. Rekhter, E. Rosen, R. Aggarwal, Arktan, Y. Cai and T. 1357 Morin, " Extranet Multicast in BGP/IP MPLS VPNs ", RFC 1358 7900, June 2016. 1360 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1361 RFC 7950, August 2016 1363 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1364 "Common YANG Data Types for the Routing Area", RFC 8294, 1365 December 2017 1367 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1368 and R. Wilton, "Network Management Datastore Architecture 1369 (NMDA)", RFC 8342, March 2018 1371 [I-D.ietf-acl-yang] M. Jethanandani, L. Huang, S. Agarwal and D. 1372 Blair, "Network Access Control List (ACL) YANG Data 1373 Model", draft-ietf-netmod-acl-model-19(work in progress), 1374 April 2018 1376 [I-D.ietf-ni-model] Berger, L., Hopps, C., Lindem, A., and D. 1377 Bogdanovic, X. Liu, "Network Instance Model", draft-ietf- 1378 rtgwg-ni-model-12(work in progress), March 2018. 1380 [I-D.ietf-l3vpn-yang] D. Jain, K. Patel, P. Brissette, Z. Li, S. 1381 Zhuang, X. Liu, J. Haas, S. Esale and B. Wen, "Yang Data 1382 Model for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang- 1383 04(work in progress), October 2018. 1385 7.2. Informative References 1387 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1388 BCP 215, RFC 8340, March 2018 1390 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1391 and Reviewers of YANG Data Model Documents", draft-ietf- 1392 netmod-rfc6087bis-20(work in progress), March 2018 1394 8. Acknowledgments 1396 The authors would like to thank Anish Peter, Stig Venaas for their 1397 valuable contributions. 1399 Authors' Addresses 1401 Yisong Liu 1402 Huawei Technologies 1403 Huawei Bld., No.156 Beiqing Rd. 1404 Beijing 100095 1405 China 1407 Email: liuyisong@huawei.com 1409 Feng Guo 1410 Huawei Technologies 1411 Huawei Bld., No.156 Beiqing Rd. 1412 Beijing 100095 1413 China 1415 Email: guofeng@huawei.com 1417 Stephane Litkowski 1418 Orange 1420 Email: stephane.litkowski@orange.com 1422 Xufeng Liu 1423 Volta Networks 1425 Email: xufeng.liu.ietf@gmail.com 1427 Robert Kebler 1428 Juniper Networks 1429 10 Technology Park Drive 1430 Westford, MA 01886 1431 USA 1433 Email: rkebler@juniper.net 1434 Mahesh Sivakumar 1435 Juniper Networks 1436 1133 Innovation Way 1437 Sunnyvale, California 1438 USA 1440 Email: sivakumar.mahesh@gmail.com