idnits 2.17.1 draft-liu-bess-mvpn-yang-03.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 73 instances of too long lines in the document, the longest one being 21 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 206 has weird spacing: '...t-value str...' == Line 268 has weird spacing: '...t-value str...' == Line 348 has weird spacing: '...t-value str...' == Line 421 has weird spacing: '...address ine...' == Line 447 has weird spacing: '...address ine...' == (3 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 7, 2017) is 2606 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 1458, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-05 ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) Summary: 2 errors (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 BESS Working Group Y. Liu 2 Internet Draft F. Guo 3 Intended status: Standards Track Huawei Technologies 4 Expires: September 7, 2017 X. Liu 5 Jabil 6 R. Kebler 7 Juniper Networks 8 M. Sivakumar 9 Cisco 10 March 7, 2017 12 Yang Data Model for Multicast in MPLS/BGP IP VPNs 13 draft-liu-bess-mvpn-yang-03 15 Status of this Memo 17 This Internet-Draft is submitted in full conformance with the 18 provisions of BCP 78 and BCP 79. 20 Internet-Drafts are working documents of the Internet Engineering 21 Task Force (IETF), its areas, and its working groups. Note that 22 other groups may also distribute working documents as Internet- 23 Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six 26 months and may be updated, replaced, or obsoleted by other documents 27 at any time. It is inappropriate to use Internet-Drafts as 28 reference material or to cite them other than as "work in progress." 30 The list of current Internet-Drafts can be accessed at 31 http://www.ietf.org/ietf/1id-abstracts.txt 33 The list of Internet-Draft Shadow Directories can be accessed at 34 http://www.ietf.org/shadow.html 36 This Internet-Draft will expire on September 7, 2017. 38 Copyright Notice 40 Copyright (c) 2017 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with 48 respect to this document. Code Components extracted from this 49 document must include Simplified BSD License text as described in 50 Section 4.e of the Trust Legal Provisions and are provided without 51 warranty as described in the Simplified BSD License. 53 Abstract 55 This document defines a YANG data model that can be used to 56 configure and manage multicast in MPLS/BGP IP VPNs. 58 Table of Contents 60 1. Introduction ................................................ 2 61 1.1. Requirements Language................................... 3 62 1.2. Terminology ............................................ 3 63 2. Design of Data model......................................... 3 64 2.1. Scope of model ......................................... 3 65 2.2. Optional capabilities................................... 3 66 2.3. Position of address family in hierarchy................. 4 67 3. Module Structure ............................................ 4 68 3.1. MVPN Configuration...................................... 4 69 3.2. MVPN Operational State.................................. 7 70 4. MVPN YANG Modules .......................................... 12 71 5. Security Considerations..................................... 30 72 6. IANA Considerations ........................................ 30 73 7. References ................................................. 30 74 7.1. Normative References................................... 30 75 7.2. Informative References................................. 31 76 8. Acknowledgments ............................................ 31 78 1. Introduction 80 YANG[RFC6020] is a data definition language that was introduced to 81 define the contents of a conceptual data store that allows networked 82 devices to be managed using NETCONF[RFC6241]. YANG is proving 83 relevant beyond its initial confines, as bindings to other 84 interfaces(e.g. REST) and encoding other than XML (e.g. JSON) are 85 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 includes 91 Cisco systems' solution [RFC6037], BGP MVPN [RFC6513] [RFC6514] etc. 92 Currently this model is incomplete, but it will support the core 93 MVPN protocols, as well as many other features mentioned in separate 94 MVPN RFCs. In addition, Non-core features described in MVPN 95 standards other than mentioned above RFC in future version. 97 1.1. Requirements Language 99 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 100 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 101 document are to be interpreted as described in RFC-2119 [RFC2119]. 103 1.2. Terminology 105 The terminology for describing YANG data models is found 106 in[RFC6020]. 108 This draft employs YANG tree diagrams, which are explained in [I- 109 D.ietf-netmod-rfc6087bis]. 111 2. Design of Data model 113 2.1. Scope of model 115 The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514]. 116 The representation of some of extension features is not completely 117 specified in this draft of the data model. This model is being 118 circulated in its current form for early oversight and review of the 119 basic hierarchy. 121 The operational state fields of this model are also incomplete, 122 though the structure of what has been written may be taken as 123 representative of the structure of the model when complete. 125 This model does not cover other MVPN related protocols such as MVPN 126 Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc., 127 these will be covered by future Internet Drafts. 129 2.2. Optional capabilities 131 This model is designed to represent the capabilities of MVPN devices 132 with various specifications, including some with basic subsets of 133 the MVPN protocols. The main design goals of this draft are that 134 any major now-existing implementation may be said to support the 135 basic model, and that the configuration of all implementations 136 meeting the specification is easy to express through some 137 combination of the features in the basic model and simple vendor 138 augmentations. 140 On the other hand, operational state parameters are not so widely 141 designated as features, as there are many cases where the defaulting 142 of an operational state parameter would not cause any harm to the 143 system, and it is much more likely that an implementation without 144 native support for a piece of operational state would be able to 145 derive a suitable value for a state variable that is not natively 146 supported. 148 For the same reason, wide constant ranges (for example, timer 149 maximum and minimum) will be used in the model. It is expected that 150 vendors will augment the model with any specific restrictions that 151 might be required. Vendors may also extend the features list with 152 proprietary extensions. 154 2.3. Position of address family in hierarchy 156 The current draft contains MVPN ipv4 and ipv6 as separate schema 157 branches in the structure. The reason for this is to inherit l3vpn 158 yang model structure and make it easier for implementations which 159 may optionally choose to support specific address families. And the 160 names of objects may be different between the ipv4 and ipv6 address 161 families. 163 3. Module Structure 165 3.1. MVPN Configuration 167 The MVPN modules define the network-instance-wide configuration 168 options in a two-level hierarchy as listed below: 170 Instance level: MVPN configuration attributes for the entire 171 routing instance, including route-target, I-PMSI tunnel and S-PMSI 172 number, common timer etc. 174 PMSI tunnel level: MVPN configuration attributes applicable to 175 the I-PMSI and per S-PMSI tunnel configuration attributes, including 176 tunnel mode, tunnel specific parameters and threshold etc. 178 Where fields are not genuinely essential to protocol operation, they 179 are marked as optional. Some fields will be essential but have a 180 default specified, so that they need not be configured explicitly. 181 The module structure also applies, where applicable, to the 182 operational state as well. 184 Our current direction is to agree to a network-instance-centric 185 (VRF) model as opposed to protocol-centric mainly because it 186 inherits l3vpn and it can as a part of l3vpn yang model. It fits 187 well into the routing-instance model, and it is easier to map from 188 the VRF-centric to the protocol-centric than the other way around 189 due to forward references. 191 The MVPN model will augment "/ni:network-instances/ni:network- 192 instance/l3vpn:". 194 augment /ni:network-instances/ni:network-instance: 195 +--rw l3vpn 196 +--rw ipv4 197 | +--rw mvpn 198 | | +--rw signaling-mode? enumeration 199 | | +--rw auto-discovery-mode? enumeration 200 | | +--rw config-type? enumeration 201 | | +--rw is-sender-site? boolean 202 | | +--rw rpt-spt-mode? boolean 203 | | +--rw mvpn-route-targets 204 | | | +--rw mvpn-route-target* [rt-type rt-value] 205 | | | +--rw rt-type enumeration 206 | | | +--rw rt-value string 207 | | +--rw mvpn-ipmsi-tunnel 208 | | | +--rw tunnel-mode? enumeration 209 | | | +--rw (ipmsi-type)? 210 | | | +--:(p2mp-te) 211 | | | | +--rw te-p2mp-template? string 212 | | | +--:(p2mp-mldp) 213 | | | +--:(pim-ssm) 214 | | | | +--rw ssm-default-group-addr? inet:ip-address 215 | | | +--:(pim-sm) 216 | | | | +--rw sm-default-group-addr? inet:ip-address 217 | | | +--:(bidir-pim) 218 | | | | +--rw bidir-default-group-addr? inet:ip-address 219 | | | +--:(pim-dm) 220 | | | | +--rw dm-default-group-addr? inet:ip-address 221 | | | +--:(ingress-replication) 222 | | | +--:(mp2mp-mldp) 223 | | +--rw mvpn-spmsi-tunnels 224 | | +--rw switch-delay-time? uint8 225 | | +--rw hold-down-time? uint16 226 | | +--rw tunnel-limit? uint16 227 | | +--rw mvpn-spmsi-tunnel* [tunnel-mode] 228 | | +--rw tunnel-mode enumeration 229 | | +--rw (spmsi-type)? 230 | | | +--:(p2mp-te) 231 | | | | +--rw te-p2mp-template? string 232 | | | +--:(p2mp-mldp) 233 | | | +--:(pim-ssm) 234 | | | | +--rw ssm-group-pool-addr? inet:ip-address 235 | | | | +--rw ssm-group-pool-masklength? uint8 236 | | | +--:(pim-sm) 237 | | | | +--rw sm-group-pool-addr? inet:ip-address 238 | | | | +--rw sm-group-pool-masklength? uint8 239 | | | +--:(bidir-pim) 240 | | | | +--rw bidir-group-pool-addr? inet:ip-address 241 | | | | +--rw bidir-group-pool-masklength? uint8 242 | | | +--:(pim-dm) 243 | | | | +--rw dm-group-pool-addr? inet:ip-address 244 | | | | +--rw dm-group-pool-masklength? uint8 245 | | | +--:(ingress-replication) 246 | | | +--:(mp2mp-mldp) 247 | | +--rw switch-threshold? uint32 248 | | +--rw (address-mask-or-acl)? 249 | | +--:(address-mask) 250 | | | +--rw ipv4-group-addr? inet:ipv4-address 251 | | | +--rw ipv4-group-masklength? uint8 252 | | | +--rw ipv4-source-addr? inet:ipv4-address 253 | | | +--rw ipv4-source-masklength? uint8 254 | | +--:(acl) 255 | | +--rw group-acl-ipv4? string 256 | +--ro mvpn-state 257 | 258 +--rw ipv6 259 +--rw mvpn 260 | +--rw signaling-mode? enumeration 261 | +--rw auto-discovery-mode? enumeration 262 | +--rw config-type? enumeration 263 | +--rw is-sender-site? boolean 264 | +--rw rpt-spt-mode? boolean 265 | +--rw mvpn-route-targets 266 | | +--rw mvpn-route-target* [rt-type rt-value] 267 | | +--rw rt-type enumeration 268 | | +--rw rt-value string 269 | +--rw mvpn-ipmsi-tunnel 270 | | +--rw tunnel-mode? enumeration 271 | | +--rw (ipmsi-type)? 272 | | +--:(p2mp-te) 273 | | | +--rw te-p2mp-template? string 274 | | +--:(p2mp-mldp) 275 | | +--:(pim-ssm) 276 | | | +--rw ssm-default-group-addr? inet:ip-address 277 | | +--:(pim-sm) 278 | | | +--rw sm-default-group-addr? inet:ip-address 279 | | +--:(bidir-pim) 280 | | | +--rw bidir-default-group-addr? inet:ip-address 281 | | +--:(pim-dm) 282 | | | +--rw dm-default-group-addr? inet:ip-address 283 | | +--:(ingress-replication) 284 | | +--:(mp2mp-mldp) 285 | +--rw mvpn-spmsi-tunnels 286 | +--rw switch-delay-time? uint8 287 | +--rw hold-down-time? uint16 288 | +--rw tunnel-limit? uint16 289 | +--rw mvpn-spmsi-tunnel* [tunnel-mode] 290 | +--rw tunnel-mode enumeration 291 | +--rw (spmsi-type)? 292 | | +--:(p2mp-te) 293 | | | +--rw te-p2mp-template? string 294 | | +--:(p2mp-mldp) 295 | | +--:(pim-ssm) 296 | | | +--rw ssm-group-pool-addr? inet:ip-address 297 | | | +--rw ssm-group-pool-masklength? uint8 298 | | +--:(pim-sm) 299 | | | +--rw sm-group-pool-addr? inet:ip-address 300 | | | +--rw sm-group-pool-masklength? uint8 301 | | +--:(bidir-pim) 302 | | | +--rw bidir-group-pool-addr? inet:ip-address 303 | | | +--rw bidir-group-pool-masklength? uint8 304 | | +--:(pim-dm) 305 | | | +--rw dm-group-pool-addr? inet:ip-address 306 | | | +--rw dm-group-pool-masklength? uint8 307 | | +--:(ingress-replication) 308 | | +--:(mp2mp-mldp) 309 | +--rw switch-threshold? uint32 310 | +--rw (address-mask-or-acl)? 311 | +--:(address-mask) 312 | | +--rw ipv6-group-addr? inet:ipv6-address 313 | | +--rw ipv6-groupmasklength? uint8 314 | | +--rw ipv6-source-addr? inet:ipv6-address 315 | | +--rw ipv6-source-masklength? uint8 316 | +--:(acl) 317 | +--rw group-acl-ipv6? string 318 +--ro mvpn-state 320 3.2. MVPN Operational State 322 The MVPN module contains operational state information also in a 323 two-level hierarchy as mentioned earlier. 325 Instance level: MVPN operational state attributes for the entire routing 326 instance, including route-target, I-PMSI tunnel and S-PMSI number, common 327 timer etc. 329 PMSI tunnel level: MVPN PMSI tunnel operational state attributes 330 applicable to the I-PMSI and per S-PMSI tunnel operational state 331 attributes, including tunnel mode, tunnel role, tunnel specific 332 parameters and referenced private source and group address etc. 334 augment /ni:network-instances/ni:network-instance: 335 +--rw l3vpn 336 +--rw ipv4 337 | +--rw mvpn 338 | | 339 | +--ro mvpn-state 340 | +--ro signaling-mode? enumeration 341 | +--ro auto-discovery-mode? enumeration 342 | +--ro config-type? enumeration 343 | +--ro is-sender-site? boolean 344 | +--ro rpt-spt-mode? boolean 345 | +--ro mvpn-route-targets 346 | | +--ro mvpn-route-target* [rt-type rt-value] 347 | | +--ro rt-type enumeration 348 | | +--ro rt-value string 349 | +--ro mvpn-ipmsi-tunnel 350 | | +--ro tunnel-mode? enumeration 351 | | +--ro (ipmsi-type)? 352 | | +--:(p2mp-te) 353 | | | +--ro te-p2mp-template? string 354 | | +--:(p2mp-mldp) 355 | | +--:(pim-ssm) 356 | | | +--ro ssm-default-group-addr? inet:ip-address 357 | | +--:(pim-sm) 358 | | | +--ro sm-default-group-addr? inet:ip-address 359 | | +--:(bidir-pim) 360 | | | +--ro bidir-default-group-addr? inet:ip-address 361 | | +--:(pim-dm) 362 | | | +--ro dm-default-group-addr? inet:ip-address 363 | | +--:(ingress-replication) 364 | | +--:(mp2mp-mldp) 365 | +--ro mvpn-spmsi-tunnels 366 | | +--ro switch-delay-time? uint8 367 | | +--ro hold-down-time? uint16 368 | | +--ro tunnel-limit? uint16 369 | | +--ro mvpn-spmsi-tunnel* [tunnel-mode] 370 | | +--ro tunnel-mode enumeration 371 | | +--ro (spmsi-type)? 372 | | | +--:(p2mp-te) 373 | | | | +--ro te-p2mp-template? string 374 | | | +--:(p2mp-mldp) 375 | | | +--:(pim-ssm) 376 | | | | +--ro ssm-group-pool-addr? inet:ip-address 377 | | | | +--ro ssm-group-pool-masklength? uint8 378 | | | +--:(pim-sm) 379 | | | | +--ro sm-group-pool-addr? inet:ip-address 380 | | | | +--ro sm-group-pool-masklength? uint8 381 | | | +--:(bidir-pim) 382 | | | | +--ro bidir-group-pool-addr? inet:ip-address 383 | | | | +--ro bidir-group-pool-masklength? uint8 384 | | | +--:(pim-dm) 385 | | | | +--ro dm-group-pool-addr? inet:ip-address 386 | | | | +--ro dm-group-pool-masklength? uint8 387 | | | +--:(ingress-replication) 388 | | | +--:(mp2mp-mldp) 389 | | +--ro switch-threshold? uint32 390 | | +--ro (address-mask-or-acl)? 391 | | +--:(address-mask) 392 | | | +--ro ipv4-group-addr? inet:ipv4-address 393 | | | +--ro ipv4-group-masklength? uint8 394 | | | +--ro ipv4-source-addr? inet:ipv4-address 395 | | | +--ro ipv4-source-masklength? uint8 396 | | +--:(acl) 397 | | +--ro group-acl-ipv4? string 398 | +--ro mvpn-ipmsi-tunnel-info 399 | | +--ro tunnel-mode? enumeration 400 | | +--ro (pmsi-type)? 401 | | | +--:(p2mp-te) 402 | | | | +--ro te-p2mp-id? uint16 403 | | | | +--ro te-tunnel-id? uint16 404 | | | | +--ro te-extend-tunnel-id? uint16 405 | | | +--:(p2mp-mldp) 406 | | | | +--ro mldp-root-addr? inet:ip-address 407 | | | | +--ro mldp-lsp-id? string 408 | | | +--:(pim-ssm) 409 | | | | +--ro ssm-group-addr? inet:ip-address 410 | | | +--:(pim-sm) 411 | | | | +--ro sm-group-addr? inet:ip-address 412 | | | +--:(bidir-pim) 413 | | | | +--ro bidir-group-addr? inet:ip-address 414 | | | +--:(pim-dm) 415 | | | | +--ro dm-group-addr? inet:ip-address 416 | | | +--:(ingress-replication) 417 | | | +--:(mp2mp-mldp) 418 | | +--ro tunnel-role? enumeration 419 | | +--ro mvpn-pmsi-sg-ref-ipv4s 420 | | +--ro mvpn-pmsi-sg-ref-ipv4* [ipv4-source-address ipv4-group-address] 421 | | +--ro ipv4-source-address inet:ipv4-address 422 | | +--ro ipv4-group-address inet:ipv4-address 423 | +--ro mvpn-spmsi-tunnel-ipv4-infos 424 | +--ro mvpn-spmsi-tunnel-ipv4-info* [tunnel-mode] 425 | +--ro tunnel-mode enumeration 426 | +--ro (pmsi-type)? 427 | | +--:(p2mp-te) 428 | | | +--ro te-p2mp-id? uint16 429 | | | +--ro te-tunnel-id? uint16 430 | | | +--ro te-extend-tunnel-id? uint16 431 | | +--:(p2mp-mldp) 432 | | | +--ro mldp-root-addr? inet:ip-address 433 | | | +--ro mldp-lsp-id? string 434 | | +--:(pim-ssm) 435 | | | +--ro ssm-group-addr? inet:ip-address 436 | | +--:(pim-sm) 437 | | | +--ro sm-group-addr? inet:ip-address 438 | | +--:(bidir-pim) 439 | | | +--ro bidir-group-addr? inet:ip-address 440 | | +--:(pim-dm) 441 | | | +--ro dm-group-addr? inet:ip-address 442 | | +--:(ingress-replication) 443 | | +--:(mp2mp-mldp) 444 | +--ro tunnel-role? enumeration 445 | +--ro mvpn-pmsi-sg-ref-ipv4s 446 | +--ro mvpn-pmsi-sg-ref-ipv4* [ipv4-source-address ipv4-group-address] 447 | +--ro ipv4-source-address inet:ipv4-address 448 | +--ro ipv4-group-address inet:ipv4-address 449 +--rw ipv6 450 +--rw mvpn 451 | 452 +--ro mvpn-state 453 +--ro signaling-mode? enumeration 454 +--ro auto-discovery-mode? enumeration 455 +--ro config-type? enumeration 456 +--ro is-sender-site? boolean 457 +--ro rpt-spt-mode? boolean 458 +--ro mvpn-route-targets 459 | +--ro mvpn-route-target* [rt-type rt-value] 460 | +--ro rt-type enumeration 461 | +--ro rt-value string 462 +--ro mvpn-ipmsi-tunnel 463 | +--ro tunnel-mode? enumeration 464 | +--ro (ipmsi-type)? 465 | +--:(p2mp-te) 466 | | +--ro te-p2mp-template? string 467 | +--:(p2mp-mldp) 468 | +--:(pim-ssm) 469 | | +--ro ssm-default-group-addr? inet:ip-address 470 | +--:(pim-sm) 471 | | +--ro sm-default-group-addr? inet:ip-address 472 | +--:(bidir-pim) 473 | | +--ro bidir-default-group-addr? inet:ip-address 474 | +--:(pim-dm) 475 | | +--ro dm-default-group-addr? inet:ip-address 476 | +--:(ingress-replication) 477 | +--:(mp2mp-mldp) 478 +--ro mvpn-spmsi-tunnels 479 | +--ro switch-delay-time? uint8 480 | +--ro hold-down-time? uint16 481 | +--ro tunnel-limit? uint16 482 | +--ro mvpn-spmsi-tunnel* [tunnel-mode] 483 | +--ro tunnel-mode enumeration 484 | +--ro (spmsi-type)? 485 | | +--:(p2mp-te) 486 | | | +--ro te-p2mp-template? string 487 | | +--:(p2mp-mldp) 488 | | +--:(pim-ssm) 489 | | | +--ro ssm-group-pool-addr? inet:ip-address 490 | | | +--ro ssm-group-pool-masklength? uint8 491 | | +--:(pim-sm) 492 | | | +--ro sm-group-pool-addr? inet:ip-address 493 | | | +--ro sm-group-pool-masklength? uint8 494 | | +--:(bidir-pim) 495 | | | +--ro bidir-group-pool-addr? inet:ip-address 496 | | | +--ro bidir-group-pool-masklength? uint8 497 | | +--:(pim-dm) 498 | | | +--ro dm-group-pool-addr? inet:ip-address 499 | | | +--ro dm-group-pool-masklength? uint8 500 | | +--:(ingress-replication) 501 | | +--:(mp2mp-mldp) 502 | +--ro switch-threshold? uint32 503 | +--ro (address-mask-or-acl)? 504 | +--:(address-mask) 505 | | +--ro ipv6-group-addr? inet:ipv6-address 506 | | +--ro ipv6-groupmasklength? uint8 507 | | +--ro ipv6-source-addr? inet:ipv6-address 508 | | +--ro ipv6-source-masklength? uint8 509 | +--:(acl) 510 | +--ro group-acl-ipv6? string 511 +--ro mvpn-ipmsi-tunnel-info 512 | +--ro tunnel-mode? enumeration 513 | +--ro (pmsi-type)? 514 | | +--:(p2mp-te) 515 | | | +--ro te-p2mp-id? uint16 516 | | | +--ro te-tunnel-id? uint16 517 | | | +--ro te-extend-tunnel-id? uint16 518 | | +--:(p2mp-mldp) 519 | | | +--ro mldp-root-addr? inet:ip-address 520 | | | +--ro mldp-lsp-id? string 521 | | +--:(pim-ssm) 522 | | | +--ro ssm-group-addr? inet:ip-address 523 | | +--:(pim-sm) 524 | | | +--ro sm-group-addr? inet:ip-address 525 | | +--:(bidir-pim) 526 | | | +--ro bidir-group-addr? inet:ip-address 527 | | +--:(pim-dm) 528 | | | +--ro dm-group-addr? inet:ip-address 529 | | +--:(ingress-replication) 530 | | +--:(mp2mp-mldp) 531 | +--ro tunnel-role? enumeration 532 | +--ro mvpn-pmsi-sg-ref-ipv6s 533 | +--ro mvpn-pmsi-sg-ref-ipv6* [ipv6-source-address ipv6-group-address] 534 | +--ro ipv6-source-address inet:ipv6-address 535 | +--ro ipv6-group-address inet:ipv6-address 536 +--ro mvpn-spmsi-tunnel-ipv6-infos 537 +--ro mvpn-spmsi-tunnel-ipv6-info* [tunnel-mode] 538 +--ro tunnel-mode enumeration 539 +--ro (pmsi-type)? 540 | +--:(p2mp-te) 541 | | +--ro te-p2mp-id? uint16 542 | | +--ro te-tunnel-id? uint16 543 | | +--ro te-extend-tunnel-id? uint16 544 | +--:(p2mp-mldp) 545 | | +--ro mldp-root-addr? inet:ip-address 546 | | +--ro mldp-lsp-id? string 547 | +--:(pim-ssm) 548 | | +--ro ssm-group-addr? inet:ip-address 549 | +--:(pim-sm) 550 | | +--ro sm-group-addr? inet:ip-address 551 | +--:(bidir-pim) 552 | | +--ro bidir-group-addr? inet:ip-address 553 | +--:(pim-dm) 554 | | +--ro dm-group-addr? inet:ip-address 555 | +--:(ingress-replication) 556 | +--:(mp2mp-mldp) 557 +--ro tunnel-role? enumeration 558 +--ro mvpn-pmsi-sg-ref-ipv6s 559 +--ro mvpn-pmsi-sg-ref-ipv6* [ipv6-source-address ipv6-group-address] 560 +--ro ipv6-source-address inet:ipv6-address 561 +--ro ipv6-group-address inet:ipv6-address 563 4. MVPN YANG Modules 565 file "ietf-mvpn@2017-03-07.yang" 566 module ietf-mvpn { 567 namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn"; 568 prefix mvpn; 570 import ietf-network-instance { 571 prefix ni; 572 } 574 import ietf-inet-types { 575 prefix inet; 576 } 578 organization 579 "IETF BESS(BGP Enabled Services) Working Group"; 580 contact 581 "liuyisong@huawei.com 582 guofeng@huawei.com 583 Xufeng_Liu@jabil.com 584 rkebler@juniper.net 585 masivaku@cisco.com"; 586 description 587 "This YANG module defines the generic configuration 588 data for mvpn, which is common across all of the vendor 589 implementations of the protocol. It is intended that the module 590 will be extended by vendors to define vendor-specific 591 mvpn configuration parameters."; 593 revision 2017-03-07 { 594 description 595 "Initial revision."; 596 reference 597 "RFC XXXX: A YANG Data Model for MVPN"; 598 } 600 grouping mvpn-instance-config { 601 description "Mvpn basic configuration per instance."; 603 leaf signaling-mode { 604 type enumeration { 605 enum invalid { 606 value "0"; 607 description "invalid"; 608 } 609 enum bgp { 610 value "1"; 611 description "bgp"; 612 } 613 enum pim { 614 value "2"; 615 description "pim"; 616 } 617 } 618 default "invalid"; 619 description "Signaling mode."; 620 } 621 leaf auto-discovery-mode { 622 type enumeration { 623 enum none { 624 value "0"; 625 description "none"; 626 } 627 enum ad { 628 value "1"; 629 description "auto-discovery"; 630 } 631 } 632 default "none"; 633 description "Auto discovery mode."; 634 } 635 leaf config-type { 636 type enumeration { 637 enum md { 638 value "0"; 639 description "md"; 640 } 641 enum ng { 642 value "1"; 643 description "ng"; 644 } 645 } 646 default "md"; 647 description "Mvpn type, which can be md(rosen) mvpn or ng mvpn."; 648 } 649 leaf is-sender-site { 650 type boolean; 651 default "false"; 652 description "Configure the current PE as a sender PE."; 653 } 654 leaf rpt-spt-mode { 655 type boolean; 656 default "false"; 657 description "Rpt and spt mode in multicast private net."; 658 } 660 } 662 grouping mvpn-vpn-targets { 663 description "May be different from l3vpn unicast route-targets"; 664 container mvpn-route-targets{ 665 description "Multicast vpn route-targets"; 666 list mvpn-route-target { 667 key "rt-type rt-value" ; 668 description 669 "List of multicast route-targets" ; 670 leaf rt-type { 671 type enumeration { 672 enum export-extcommunity { 673 value "0"; 674 description "export-extcommunity"; 675 } 676 enum import-extcommunity { 677 value "1"; 678 description "import-extcommunity"; 679 } 680 } 681 mandatory "true"; 682 description 683 "rt types are as follows: 684 export-extcommunity: specifies the value of 685 the extended community attribute of the 686 route from an outbound interface to the 687 destination vpn. 688 import-extcommunity: receives routes that 689 carry the specified extended community 690 attribute"; 691 } 692 leaf rt-value { 693 type string { 694 length "3..21"; 695 } 696 description 697 "the available mvpn target formats are as 698 follows: 699 - 16-bit as number:32-bit user-defined 700 number, for example, 1:3. an as number 701 ranges from 0 to 65535, and a user-defined 702 number ranges from 0 to 4294967295. The as 703 number and user-defined number cannot be 704 both 0s. That is, a vpn target cannot be 0:0. 705 - 32-bit ip address:16-bit user-defined 706 number, for example, 192.168.122.15:1. 707 The ip address ranges from 0.0.0.0 to 708 255.255.255.255, and the user-defined 709 number ranges from 0 to 65535."; 710 } 711 } 712 } 713 } 715 grouping mvpn-ipmsi-tunnel-config { 716 description "Default mdt for rosen mvpn and I-PMSI for ng mvpn"; 718 container mvpn-ipmsi-tunnel { 719 description "I-PMSI tunnel configuraton"; 720 leaf tunnel-mode { 721 type enumeration { 722 enum invalid { 723 value "0"; 724 description "invalid"; 725 } 726 enum p2mp-te { 727 value "1"; 728 description "p2mp-te"; 729 } 730 enum p2mp-mldp { 731 value "2"; 732 description "p2mp-mldp"; 733 } 734 enum pim-ssm { 735 value "3"; 736 description "pim-ssm"; 737 } 738 enum pim-sm { 739 value "4"; 740 description "pim-sm"; 741 } 742 enum bidir-pim { 743 value "5"; 744 description "bidir-pim"; 745 } 746 enum ingress-replication { 747 value "6"; 748 description "ingress-replication"; 749 } 750 enum mp2mp-mldp { 751 value "7"; 752 description "mp2mp-mldp"; 753 } 754 enum pim-dm { 755 value "8"; 756 description "pim-dm"; 757 } 758 } 759 description "I-PMSI tunnel mode."; 760 } 761 choice ipmsi-type { 762 description "I-PMSI tunnel parameter configuration"; 763 case p2mp-te { 764 description "P2mp TE tunnel"; 765 leaf te-p2mp-template { 766 type string { 767 length "1..31"; 768 } 769 description "P2mp te tunnel template"; 770 } 771 } 772 case p2mp-mldp { 773 description "Mldp tunnel"; 774 } 775 case pim-ssm { 776 description "Pim ssm tunnel"; 777 leaf ssm-default-group-addr { 778 type inet:ip-address; 779 description "Default mdt or I-PMSI group address."; 780 } 781 } 782 case pim-sm { 783 description "Pim sm tunnel"; 784 leaf sm-default-group-addr { 785 type inet:ip-address; 786 description "Default mdt or I-PMSI group address."; 787 } 788 } 789 case bidir-pim { 790 description "Bidir pim tunnel"; 791 leaf bidir-default-group-addr { 792 type inet:ip-address; 793 description "Default mdt or I-PMSI group address."; 794 } 795 } 796 case pim-dm { 797 description "Pim dm tunnel"; 798 leaf dm-default-group-addr { 799 type inet:ip-address; 800 description "Default mdt or I-PMSI group address."; 801 } 802 } 803 case ingress-replication { 804 description "Ingress replication p2p tunnel"; 805 } 806 case mp2mp-mldp { 807 description "Mp2mp mldp tunnel"; 808 } 809 } 810 } 811 } 813 grouping mvpn-spmsi-tunnel-basic-config { 814 description "S-PMSI tunnel basic configuration"; 815 leaf tunnel-mode { 816 type enumeration { 817 enum invalid { 818 value "0"; 819 description "invalid"; 820 } 821 enum p2mp-te { 822 value "1"; 823 description "p2mp-te"; 824 } 825 enum p2mp-mldp { 826 value "2"; 827 description "p2mp-mldp"; 828 } 829 enum pim-ssm { 830 value "3"; 831 description "pim-ssm"; 832 } 833 enum pim-sm { 834 value "4"; 835 description "pim-sm"; 836 } 837 enum bidir-pim { 838 value "5"; 839 description "bidir-pim"; 840 } 841 enum ingress-replication { 842 value "6"; 843 description "ingress-replication"; 844 } 845 enum mp2mp-mldp { 846 value "7"; 847 description "mp2mp-mldp"; 848 } 849 enum pim-dm { 850 value "8"; 851 description "pim-dm"; 852 } 853 } 854 description "S-PMSI tunnel mode."; 855 } 856 choice spmsi-type { 857 description "S-PMSI tunnel parameter configuration"; 858 case p2mp-te { 859 description "P2mp te tunnel"; 860 leaf te-p2mp-template { 861 type string { 862 length "1..31"; 863 } 864 description "P2mp te tunnel template"; 865 } 866 } 867 case p2mp-mldp { 868 description "Mldp tunnel"; 869 } 870 case pim-ssm { 871 description "Pim ssm tunnel"; 872 leaf ssm-group-pool-addr { 873 type inet:ip-address; 874 description "Group pool address for data mdt or pim s-pmsi."; 876 } 877 leaf ssm-group-pool-masklength { 878 type uint8 { 879 range "8..128"; 880 } 881 description "Group pool mask for data mdt or pim s-pmsi"; 882 } 883 } 884 case pim-sm { 885 description "Pim sm tunnel"; 886 leaf sm-group-pool-addr { 887 type inet:ip-address; 888 description "Group pool address for data mdt or pim s-pmsi."; 889 } 890 leaf sm-group-pool-masklength { 891 type uint8 { 892 range "8..128"; 893 } 894 description "Group pool mask for data mdt or pim s-pmsi"; 895 } 896 } 897 case bidir-pim { 898 description "Bidir pim tunnel"; 899 leaf bidir-group-pool-addr { 900 type inet:ip-address; 901 description "Group pool address for data mdt or pim s-pmsi."; 902 } 903 leaf bidir-group-pool-masklength { 904 type uint8 { 905 range "8..128"; 906 } 907 description "Group pool mask for data mdt or pim s-pmsi"; 908 } 909 } 910 case pim-dm { 911 description "Pim dm tunnel"; 912 leaf dm-group-pool-addr { 913 type inet:ip-address; 914 description "Group pool address for data mdt or pim s-pmsi."; 915 } 916 leaf dm-group-pool-masklength { 917 type uint8 { 918 range "8..128"; 919 } 920 description "Group pool mask for data mdt or pim s-pmsi"; 921 } 922 } 923 case ingress-replication { 924 description "Ingress replication p2p tunnel"; 926 } 927 case mp2mp-mldp { 928 description "Mp2mp mldp tunnel"; 929 } 930 } 931 leaf switch-threshold { 932 type uint32 { 933 range "0..4194304"; 934 } 935 default "0"; 936 description 937 "Multicast packet rate threshold for 938 triggering the switching from the 939 I-PMSI to the S-PMSI. The value is 940 an integer ranging from 0 to 4194304, in 941 kbit/s. The default value is 0."; 942 } 943 } 945 grouping mvpn-spmsi-tunnel-config-ipv4 { 946 description "Data mdt for rosen mvpn and S-PMSI for ng mvpn"; 948 container mvpn-spmsi-tunnels { 949 description "S-PMSI tunnel configuration"; 950 leaf switch-delay-time { 951 type uint8 { 952 range "3..60"; 953 } 954 default "5"; 955 description 956 "Delay for switching from the I-PMSI to 957 the S-PMSI. The value is an integer 958 ranging from 3 to 60, in seconds. "; 959 } 960 leaf hold-down-time { 961 type uint16 { 962 range "0..512"; 963 } 964 default "60"; 965 description 966 "Delay for switching back from the S-PMSI 967 to the I-PMSI. The value is an integer 968 ranging from 0 to 512, in seconds. "; 969 } 970 leaf tunnel-limit { 971 type uint16 { 972 range "1..1024"; 973 } 974 description 975 "Maximum number of s-pmsi tunnels allowed."; 976 } 978 list mvpn-spmsi-tunnel { 979 key "tunnel-mode"; 980 description "S-PMSI tunnel parameter configuration"; 982 uses mvpn-spmsi-tunnel-basic-config; 984 choice address-mask-or-acl { 985 description "Type of define private net multicast address range"; 986 case address-mask { 987 description "Use the type of address and mask"; 988 leaf ipv4-group-addr { 989 type inet:ipv4-address; 990 description 991 "Start and end ipv4 addresses of the group 992 address in private net. "; 993 } 994 leaf ipv4-group-masklength { 995 type uint8 { 996 range "4..32"; 997 } 998 description 999 "Group mask length for ipv4 addresses in 1000 the group address pool in private net."; 1001 } 1002 leaf ipv4-source-addr { 1003 type inet:ipv4-address; 1004 description 1005 "Start and end ipv4 addresses of the source 1006 address in private net."; 1007 } 1008 leaf ipv4-source-masklength { 1009 type uint8 { 1010 range "0..32"; 1011 } 1012 description 1013 "Source mask length for ipv4 addresses in 1014 the group address pool in private net."; 1015 } 1016 } 1017 case acl { 1018 description "Use the type of acl"; 1019 leaf group-acl-ipv4 { 1020 type string { 1021 length "1..32"; 1022 } 1023 description 1024 "Specify the (s, g) entry on which the 1025 S-PMSI tunnel takes effect. 1026 The value is an integer ranging from 3000 1027 to 3999 or a string of 32 case-sensitive 1028 characters. If no value is specified, the 1029 switch-group address pool takes effect on 1030 all (s, g)."; 1031 } 1032 } 1033 } 1034 } 1035 } 1036 } 1038 grouping mvpn-spmsi-tunnel-config-ipv6 { 1039 description "Data mdt for rosen mvpn and S-PMSI for ng mvpn"; 1041 container mvpn-spmsi-tunnels { 1042 description "S-PMSI tunnel configuration"; 1043 leaf switch-delay-time { 1044 type uint8 { 1045 range "3..60"; 1046 } 1047 default "5"; 1048 description 1049 "Delay for switching from the I-PMSI to 1050 the S-PMSI. The value is an integer 1051 ranging from 3 to 60, in seconds. "; 1052 } 1053 leaf hold-down-time { 1054 type uint16 { 1055 range "0..512"; 1056 } 1057 default "60"; 1058 description 1059 "Delay for switching back from the S-PMSI 1060 to the I-PMSI. The value is an integer 1061 ranging from 0 to 512, in seconds. "; 1062 } 1063 leaf tunnel-limit { 1064 type uint16 { 1065 range "1..1024"; 1066 } 1067 description 1068 "Maximum number of s-pmsi tunnels allowed."; 1069 } 1071 list mvpn-spmsi-tunnel { 1072 key "tunnel-mode"; 1073 description "S-PMSI tunnel parameter configuration"; 1075 uses mvpn-spmsi-tunnel-basic-config; 1077 choice address-mask-or-acl { 1078 description "Type of define private net multicast address range"; 1079 case address-mask { 1080 description "Use the type of address and mask"; 1081 leaf ipv6-group-addr { 1082 type inet:ipv6-address; 1083 description 1084 "Start and end ipv6 addresses of the group 1085 address in private net."; 1086 } 1087 leaf ipv6-groupmasklength { 1088 type uint8 { 1089 range "8..128"; 1090 } 1091 description 1092 "Group mask length for ipv6 addresses in 1093 the group address pool in private net."; 1094 } 1095 leaf ipv6-source-addr { 1096 type inet:ipv6-address; 1097 description 1098 "Start and end ipv6 addresses of the source 1099 address in private net."; 1100 } 1101 leaf ipv6-source-masklength { 1102 type uint8 { 1103 range "0..128"; 1104 } 1105 description 1106 "Source mask length for ipv6 addresses in 1107 the group address pool in private net."; 1108 } 1109 } 1110 case acl { 1111 description "Use the type of acl"; 1112 leaf group-acl-ipv6 { 1113 type string { 1114 length "1..32"; 1115 } 1116 description 1117 "Specify the (s, g) entry on which the 1118 S-PMSI tunnel takes effect. 1119 The value is an integer ranging from 3000 1120 to 3999 or a string of 32 case-sensitive 1121 characters. If no value is specified, the 1122 switch-group address pool takes effect on 1123 all (s, g)."; 1124 } 1125 } 1126 } 1127 } 1128 } 1129 } 1131 grouping mvpn-pmsi-state { 1132 description "PMSI tunnel operational state information"; 1133 leaf tunnel-mode { 1134 type enumeration { 1135 enum invalid { 1136 value "0"; 1137 description "invalid"; 1138 } 1139 enum p2mp-te { 1140 value "1"; 1141 description "p2mp-te"; 1142 } 1143 enum p2mp-mldp { 1144 value "2"; 1145 description "p2mp-mldp"; 1146 } 1147 enum pim-ssm { 1148 value "3"; 1149 description "pim-ssm"; 1150 } 1151 enum pim-sm { 1152 value "4"; 1153 description "pim-sm"; 1154 } 1155 enum bidir-pim { 1156 value "5"; 1157 description "bidir-pim"; 1158 } 1159 enum ingress-replication { 1160 value "6"; 1161 description "ingress-replication"; 1162 } 1163 enum mp2mp-mldp { 1164 value "7"; 1165 description "mp2mp-mldp"; 1166 } 1167 enum pim-dm { 1168 value "8"; 1169 description "pim-dm"; 1170 } 1172 } 1173 description "PMSI tunnel mode."; 1174 } 1175 choice pmsi-type { 1176 description "PMSI tunnel operational state information for each type"; 1177 case p2mp-te { 1178 description "P2mp te tunnel"; 1179 leaf te-p2mp-id { 1180 type uint16 { 1181 range "0..65535"; 1182 } 1183 default "0"; 1184 description "P2mp id of the p2mp tunnel."; 1185 } 1186 leaf te-tunnel-id { 1187 type uint16 { 1188 range "1..65535"; 1189 } 1190 description "Id of the p2mp tunnel."; 1191 } 1192 leaf te-extend-tunnel-id { 1193 type uint16 { 1194 range "1..65535"; 1195 } 1196 description "P2mp extended tunnel interface id."; 1197 } 1198 } 1199 case p2mp-mldp { 1200 description "P2mp mldp tunnel"; 1201 leaf mldp-root-addr { 1202 type inet:ip-address; 1203 description "Ip address of the root of a p2mp ldp lsp."; 1204 } 1205 leaf mldp-lsp-id { 1206 type string { 1207 length "1..256"; 1208 } 1209 description "P2mp ldp lsp id."; 1210 } 1211 } 1212 case pim-ssm { 1213 description "Pim ssm tunnel"; 1214 leaf ssm-group-addr { 1215 type inet:ip-address; 1216 description "Group address for pim ssm"; 1217 } 1218 } 1219 case pim-sm { 1220 description "Pim sm tunnel"; 1221 leaf sm-group-addr { 1222 type inet:ip-address; 1223 description "Group address for pim sm"; 1224 } 1225 } 1226 case bidir-pim { 1227 description "Bidir pim tunnel"; 1228 leaf bidir-group-addr { 1229 type inet:ip-address; 1230 description "Group address for bidir-pim"; 1231 } 1232 } 1233 case pim-dm { 1234 description "Pim dm tunnel"; 1235 leaf dm-group-addr { 1236 type inet:ip-address; 1237 description "Group address for pim-dm"; 1238 } 1239 } 1240 case ingress-replication { 1241 description "Ingress replication p2p tunnel"; 1242 } 1243 case mp2mp-mldp { 1244 description "mp2mp mldp tunnel"; 1245 } 1246 } 1247 leaf tunnel-role { 1248 type enumeration { 1249 enum none { 1250 value "0"; 1251 description "none"; 1252 } 1253 enum root { 1254 value "1"; 1255 description "root"; 1256 } 1257 enum leaf { 1258 value "2"; 1259 description "leaf"; 1260 } 1261 enum root-and-leaf { 1262 value "3"; 1263 description "root-and-leaf"; 1264 } 1265 } 1266 description "Role of a tunnel node."; 1267 } 1268 } 1269 grouping mvpn-pmsi-entry-ipv4 { 1270 description 1271 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1272 container mvpn-pmsi-sg-ref-ipv4s { 1273 description 1274 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1275 list mvpn-pmsi-sg-ref-ipv4 { 1276 key "ipv4-source-address ipv4-group-address"; 1277 description "Ipv4 source and group address"; 1278 leaf ipv4-source-address { 1279 type inet:ipv4-address; 1280 description "Source address in I-PMSI or S-PMSI for ipv4."; 1281 } 1282 leaf ipv4-group-address { 1283 type inet:ipv4-address; 1284 description "Group address in I-PMSI or S-PMSI for ipv4."; 1285 } 1286 } 1287 } 1288 } 1290 grouping mvpn-pmsi-entry-ipv6 { 1291 description 1292 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1293 container mvpn-pmsi-sg-ref-ipv6s { 1294 description 1295 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1296 list mvpn-pmsi-sg-ref-ipv6 { 1297 key "ipv6-source-address ipv6-group-address"; 1298 description "Ipv6 source and group address"; 1299 leaf ipv6-source-address { 1300 type inet:ipv6-address; 1301 description "Source address in I-PMSI or S-PMSI for ipv6."; 1302 } 1303 leaf ipv6-group-address { 1304 type inet:ipv6-address; 1305 description "Group address in I-PMSI or S-PMSI for ipv6."; 1306 } 1307 } 1308 } 1309 } 1311 grouping mvpn-ipmsi-tunnel-state-ipv4 { 1312 description 1313 "Default mdt or I-PMSI operational state information"; 1314 container mvpn-ipmsi-tunnel-info { 1315 description 1316 "Default mdt or I-PMSI operational state information"; 1318 uses mvpn-pmsi-state; 1319 uses mvpn-pmsi-entry-ipv4; 1320 } 1321 } 1323 grouping mvpn-ipmsi-tunnel-state-ipv6 { 1324 description 1325 "Default mdt or I-PMSI operational state information"; 1326 container mvpn-ipmsi-tunnel-info { 1327 description 1328 "Default mdt or I-PMSI operational state information"; 1329 uses mvpn-pmsi-state; 1330 uses mvpn-pmsi-entry-ipv6; 1331 } 1332 } 1334 grouping mvpn-spmsi-tunnel-state-ipv4 { 1335 description 1336 "Data mdt or S-PMSI operational state information"; 1337 container mvpn-spmsi-tunnel-ipv4-infos { 1338 description 1339 "Data mdt or S-PMSI operational state information"; 1340 list mvpn-spmsi-tunnel-ipv4-info { 1341 key "tunnel-mode"; 1342 description 1343 "Data mdt or S-PMSI operational state information"; 1344 uses mvpn-pmsi-state; 1345 uses mvpn-pmsi-entry-ipv4; 1346 } 1347 } 1348 } 1350 grouping mvpn-spmsi-tunnel-state-ipv6 { 1351 description 1352 "Data mdt or S-PMSI operational state information"; 1353 container mvpn-spmsi-tunnel-ipv6-infos { 1354 description 1355 "Data mdt or S-PMSI operational state information"; 1356 list mvpn-spmsi-tunnel-ipv6-info { 1357 key "tunnel-mode"; 1358 description 1359 "Data mdt or S-PMSI operational state information"; 1360 uses mvpn-pmsi-state; 1361 uses mvpn-pmsi-entry-ipv6; 1362 } 1363 } 1364 } 1366 grouping l3vpn-mvrf-params { 1367 description 1368 "Specify multicast vrf parameters and provide 1369 multicast vrf operational state information"; 1370 container ipv4 { 1371 description 1372 "Specify multicast ipv4 vrf parameters and provide 1373 multicast ipv4 vrf operational state information"; 1374 container mvpn { 1375 description "Specify multicast ipv4 vrf parameters"; 1376 uses mvpn-instance-config; 1377 uses mvpn-vpn-targets; 1378 uses mvpn-ipmsi-tunnel-config; 1379 uses mvpn-spmsi-tunnel-config-ipv4; 1380 } 1381 container mvpn-state { 1382 config "false"; 1383 description 1384 "Multicast ipv4 vrf operational state information"; 1385 uses mvpn-instance-config; 1386 uses mvpn-vpn-targets; 1387 uses mvpn-ipmsi-tunnel-config; 1388 uses mvpn-spmsi-tunnel-config-ipv4; 1389 uses mvpn-ipmsi-tunnel-state-ipv4; 1390 uses mvpn-spmsi-tunnel-state-ipv4; 1391 } 1392 } 1393 container ipv6 { 1394 description 1395 "Ipv6 address family specific multicast vrf parameters and 1396 multicast vrf operational state information"; 1397 container mvpn { 1398 description "Ipv6 address family specific multicast vrf parameters"; 1399 uses mvpn-instance-config; 1400 uses mvpn-vpn-targets; 1401 uses mvpn-ipmsi-tunnel-config; 1402 uses mvpn-spmsi-tunnel-config-ipv6; 1403 } 1404 container mvpn-state { 1405 config "false"; 1406 description 1407 "Ipv6 address family multicast vrf operational state information"; 1408 uses mvpn-instance-config; 1409 uses mvpn-vpn-targets; 1410 uses mvpn-ipmsi-tunnel-config; 1411 uses mvpn-spmsi-tunnel-config-ipv6; 1412 uses mvpn-ipmsi-tunnel-state-ipv6; 1413 uses mvpn-spmsi-tunnel-state-ipv6; 1414 } 1415 } 1417 } 1419 augment "/ni:network-instances/ni:network-instance" { 1420 description 1421 "Augment network instance container for per multicast VRF configuration"; 1422 container l3vpn { 1423 description 1424 "Configuration of multicast vpn specific parameters and 1425 operational state of multicast vpn specific parameters"; 1426 uses l3vpn-mvrf-params; 1427 } 1428 } 1430 } 1431 1433 5. Security Considerations 1435 The data model defined does not introduce any security implications. 1436 This draft does not change any underlying security issues inherent 1437 in [RFC8022]. 1439 6. IANA Considerations 1441 TBD 1443 7. References 1445 7.1. Normative References 1447 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1448 Requirement Levels", BCP 14, RFC 2119, March 1997. 1450 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1451 the Network Configuration Protocol (NETCONF)", RFC 6020, 1452 October 2010 1454 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1455 and A. Bierman, Ed., "Network Configuration Protocol 1456 (NETCONF)", RFC 6241, June 2011 1458 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1459 and Reviewers of YANG Data Model Documents", draft-ietf- 1460 netmod-rfc6087bis-05 (work in progress), October 2015. 1462 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1463 Management", RFC 8022, November 2016. 1465 7.2. Informative References 1467 [RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems' 1468 Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037, 1469 October 2010. 1471 [RFC6513] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP 1472 VPNs", RFC 6513, February 2012. 1474 [RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP 1475 Encodings and Procedures for Multicast in MPLS/BGP IP 1476 VPNs", RFC 6514, February 2012. 1478 [RFC7246] IJ. Wijnands, P. Hitchen, N. Leymann, W. Henderickx, A. 1479 Gulko and J. Tantsura, " Multipoint Label Distribution 1480 Protocol In-Band Signaling in a Virtual Routing and 1481 Forwarding (VRF) Table Context ", RFC 7246, June 2014. 1483 [RFC7900] Y. Rekhter, E. Rosen, R. Aggarwal, Arktan, Y. Cai and T. 1484 Morin, " Extranet Multicast in BGP/IP MPLS VPNs ", RFC 1485 7900, June 2016. 1487 8. Acknowledgments 1489 The authors would like to thank Anish Peter, Stig Venaas for their 1490 valuable contributions. 1492 Authors' Addresses 1494 Yisong Liu 1495 Huawei Technologies 1496 Huawei Bld., No.156 Beiqing Rd. 1497 Beijing 100095 1498 China 1500 Email: liuyisong@huawei.com 1502 Feng Guo 1503 Huawei Technologies 1504 Huawei Bld., No.156 Beiqing Rd. 1505 Beijing 100095 1506 China 1508 Email: guofeng@huawei.com 1510 Xufeng Liu 1511 Jabil 1512 8281 Greensboro Drive, Suite 200 1513 McLean VA 22102 1514 USA 1516 Email: Xufeng_Liu@jabil.com 1518 Robert Kebler 1519 Juniper Networks 1520 10 Technology Park Drive 1521 Westford, MA 01886 1522 USA 1524 Email: rkebler@juniper.net 1526 Mahesh Sivakumar 1527 Cisco Systems, Inc 1528 510 McCarthy Blvd 1529 Milpitas, California 95035 1530 USA 1532 Email: masivaku@cisco.com