idnits 2.17.1 draft-liu-bess-mvpn-yang-05.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 42 instances of too long lines in the document, the longest one being 24 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 201 has weird spacing: '...t-value str...' == Line 268 has weird spacing: '...address ine...' == Line 292 has weird spacing: '...address ine...' == Line 303 has weird spacing: '...t-value str...' == Line 370 has weird spacing: '...address ine...' == (1 more instance...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (Sep 19, 2017) is 2412 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: 'RFC8022' is mentioned on line 1287, but not defined ** Obsolete undefined reference: RFC 8022 (Obsoleted by RFC 8349) == Unused Reference: 'I-D.ietf-netmod-rfc6087bis' is defined on line 1311, but no explicit reference was found in the text == Unused Reference: 'I-D.dsdt-nmda-guidelines' is defined on line 1315, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-bess-l3vpn-yang' is defined on line 1345, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-14 ** Downref: Normative reference to an Informational draft: draft-dsdt-nmda-guidelines (ref. 'I-D.dsdt-nmda-guidelines') == Outdated reference: A later version (-12) exists of draft-ietf-rtgwg-ni-model-03 == Outdated reference: A later version (-05) exists of draft-ietf-bess-l3vpn-yang-01 Summary: 3 errors (**), 0 flaws (~~), 16 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: March 19, 2018 X. Liu 5 Jabil 6 R. Kebler 7 Juniper Networks 8 M. Sivakumar 9 Cisco 10 Sep 19, 2017 12 Yang Data Model for Multicast in MPLS/BGP IP VPNs 13 draft-liu-bess-mvpn-yang-05 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 March 19, 2018. 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 4. MVPN YANG Modules ........................................... 9 69 5. Security Considerations..................................... 27 70 6. IANA Considerations ........................................ 27 71 7. References ................................................. 27 72 7.1. Normative References................................... 27 73 7.2. Informative References................................. 28 74 8. Acknowledgments ............................................ 28 76 1. Introduction 78 YANG [RFC6020] [RFC7950] is a data definition language that was 79 introduced to define the contents of a conceptual data store that 80 allows networked devices to be managed using NETCONF [RFC6241]. 81 YANG is proving relevant beyond its initial confines, as bindings to 82 other interfaces (e.g. REST) and encoding other than XML (e.g. JSON) 83 are being defined. Furthermore, YANG data models can be used as the 84 basis of implementation for other interface, such as CLI and 85 Programmatic APIs. 87 This document defines a YANG data model that can be used to 88 configure and manage Multicast in MPLS/BGP IP VPN (MVPN). It 89 includes Cisco systems' solution [RFC6037], BGP MVPN [RFC6513] 90 [RFC6514] etc. Currently this model is incomplete, but it will 91 support the core MVPN protocols, as well as many other features 92 mentioned in separate MVPN RFCs. In addition, Non-core features 93 described in MVPN standards other than mentioned above RFC in future 94 version. 96 1.1. Requirements Language 98 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 99 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 100 document are to be interpreted as described in RFC-2119 [RFC2119]. 102 1.2. Terminology 104 The terminology for describing YANG data models is found in 105 [RFC6020]. 107 This draft employs YANG tree diagrams, which are explained in [I- 108 D.ietf-netmod-rfc6087bis]. 110 2. Design of Data model 112 2.1. Scope of model 114 The model covers Rosen MVPN [RFC6037], BGP MVPN [RFC6513] [RFC6514]. 115 The representation of some of extension features is not completely 116 specified in this draft of the data model. This model is being 117 circulated in its current form for early oversight and review of the 118 basic hierarchy. 120 The operational state fields of this model are also incomplete, 121 though the structure of what has been written may be taken as 122 representative of the structure of the model when complete. 124 This model does not cover other MVPN related protocols such as MVPN 125 Extranet [RFC7900] or MVPN MLDP In-band signaling [RFC7246] etc., 126 these will be covered by future Internet Drafts. 128 2.2. Optional capabilities 130 This model is designed to represent the capabilities of MVPN devices 131 with various specifications, including some with basic subsets of 132 the MVPN protocols. The main design goals of this draft are that 133 any major now-existing implementation may be said to support the 134 basic model, and that the configuration of all implementations 135 meeting the specification is easy to express through some 136 combination of the features in the basic model and simple vendor 137 augmentations. 139 On the other hand, operational state parameters are not so widely 140 designated as features, as there are many cases where the defaulting 141 of an operational state parameter would not cause any harm to the 142 system, and it is much more likely that an implementation without 143 native support for a piece of operational state would be able to 144 derive a suitable value for a state variable that is not natively 145 supported. 147 For the same reason, wide constant ranges (for example, timer 148 maximum and minimum) will be used in the model. It is expected that 149 vendors will augment the model with any specific restrictions that 150 might be required. Vendors may also extend the features list with 151 proprietary extensions. 153 2.3. Position of address family in hierarchy 155 The current draft contains MVPN IPv4 and IPv6 as separate schema 156 branches in the structure. The reason for this is to inherit l3vpn 157 yang model structure and make it easier for implementations which 158 may optionally choose to support specific address families. And the 159 names of objects may be different between the IPv4 and IPv6 address 160 families. 162 3. Module Structure 164 The MVPN YANG model follows the Guidelines for YANG Module Authors 165 (NMDA) [draft-dsdt-nmda-guidelines-01].The MVPN modules define the 166 network-instance-wide configuration and operational state options in 167 a two-level hierarchy as listed below: 169 Instance level: Only including configuration data nodes now. MVPN 170 configuration attributes for the entire routing instance, including 171 route-target, I-PMSI tunnel and S-PMSI number, common timer etc. 173 PMSI tunnel level: MVPN configuration attributes applicable to 174 the I-PMSI and per S-PMSI tunnel configuration attributes, including 175 tunnel mode, tunnel specific parameters and threshold etc. MVPN PMSI 176 tunnel operational state attributes applicable to the I-PMSI and per 177 S-PMSI tunnel operational state attributes, including tunnel mode, 178 tunnel role, tunnel specific parameters and referenced private 179 source and group address etc. 181 Where fields are not genuinely essential to protocol operation, they 182 are marked as optional. Some fields will be essential but have a 183 default specified, so that they need not be configured explicitly. 185 We define the MVPN model as a network-instance-centric model, and 186 the MVPN model will augment "/ni:network-instances/ni:network- 187 instance:" in [I-D.ietf-rtgwg-ni-model] and will allow a single mvpn 188 instance per VRF. 190 augment /ni:network-instances/ni:network-instance: 191 +--rw mvpn 192 +--rw mvpnv4 193 | +--rw signaling-mode? enumeration 194 | +--rw auto-discovery-mode? enumeration 195 | +--rw config-type? enumeration 196 | +--rw is-sender-site? boolean 197 | +--rw rpt-spt-mode? enumeration 198 | +--rw mvpn-route-targets 199 | | +--rw mvpn-route-target* [rt-type rt-value] 200 | | +--rw rt-type enumeration 201 | | +--rw rt-value string 202 | +--rw mvpn-ipmsi-tunnel 203 | | +--rw tunnel-type? enumeration 204 | | +--rw (ipmsi-tunnel-attribute)? 205 | | +--:(p2mp-te) 206 | | | +--rw te-p2mp-template? string 207 | | +--:(p2mp-mldp) 208 | | +--:(pim-ssm) 209 | | | +--rw ssm-default-group-addr? inet:ip-address 210 | | +--:(pim-sm) 211 | | | +--rw sm-default-group-addr? inet:ip-address 212 | | +--:(bidir-pim) 213 | | | +--rw bidir-default-group-addr? inet:ip-address 214 | | +--:(ingress-replication) 215 | | +--:(mp2mp-mldp) 216 | +--rw mvpn-spmsi-tunnels 217 | | +--rw switch-delay-time? uint8 218 | | +--rw switch-back-holddown-time? uint16 219 | | +--rw tunnel-limit? uint16 220 | | +--rw mvpn-spmsi-tunnel* [tunnel-type] 221 | | +--rw tunnel-type enumeration 222 | | +--rw (spmsi-tunnel-attribute)? 223 | | | +--:(p2mp-te) 224 | | | | +--rw te-p2mp-template? string 225 | | | +--:(p2mp-mldp) 226 | | | +--:(pim-ssm) 227 | | | | +--rw ssm-group-pool-addr? inet:ip-address 228 | | | | +--rw ssm-group-pool-masklength? uint8 229 | | | +--:(pim-sm) 230 | | | | +--rw sm-group-pool-addr? inet:ip-address 231 | | | | +--rw sm-group-pool-masklength? uint8 232 | | | +--:(bidir-pim) 233 | | | | +--rw bidir-group-pool-addr? inet:ip-address 234 | | | | +--rw bidir-group-pool-masklength? uint8 235 | | | +--:(ingress-replication) 236 | | | +--:(mp2mp-mldp) 237 | | +--rw switch-threshold? uint32 238 | | +--rw switch-wildcard-mode? enumeration 239 | | +--rw (address-mask-or-acl)? 240 | | +--:(address-mask) 241 | | | +--rw ipv4-group-addr? inet:ipv4-address 242 | | | +--rw ipv4-group-masklength? uint8 243 | | | +--rw ipv4-source-addr? inet:ipv4-address 244 | | | +--rw ipv4-source-masklength? uint8 245 | | +--:(acl) 246 | | +--rw group-acl-ipv4? string 247 | +--ro mvpn-ipmsi-tunnel-info 248 | | +--ro tunnel-type? enumeration 249 | | +--ro (pmsi-tunnel-attribute)? 250 | | | +--:(p2mp-te) 251 | | | | +--ro te-p2mp-id? uint16 252 | | | | +--ro te-tunnel-id? uint16 253 | | | | +--ro te-extend-tunnel-id? uint16 254 | | | +--:(p2mp-mldp) 255 | | | | +--ro mldp-root-addr? inet:ip-address 256 | | | | +--ro mldp-lsp-id? string 257 | | | +--:(pim-ssm) 258 | | | | +--ro ssm-group-addr? inet:ip-address 259 | | | +--:(pim-sm) 260 | | | | +--ro sm-group-addr? inet:ip-address 261 | | | +--:(bidir-pim) 262 | | | | +--ro bidir-group-addr? inet:ip-address 263 | | | +--:(ingress-replication) 264 | | | +--:(mp2mp-mldp) 265 | | +--ro tunnel-role? enumeration 266 | | +--ro mvpn-pmsi-ipv4-ref-sg-entries 267 | | +--ro mvpn-pmsi-ipv4-ref-sg-entries* [ipv4-source-address ipv4-group-address] 268 | | +--ro ipv4-source-address inet:ipv4-address 269 | | +--ro ipv4-group-address inet:ipv4-address 270 | +--ro mvpn-spmsi-tunnel-ipv4-info 271 | +--ro mvpn-spmsi-tunnel-ipv4-info* [tunnel-type] 272 | +--ro tunnel-type enumeration 273 | +--ro (pmsi-tunnel-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? inet:ip-address 283 | | +--:(pim-sm) 284 | | | +--ro sm-group-addr? inet:ip-address 285 | | +--:(bidir-pim) 286 | | | +--ro bidir-group-addr? inet:ip-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 inet:ipv4-address 294 +--rw mvpnv6 295 +--rw signaling-mode? enumeration 296 +--rw auto-discovery-mode? enumeration 297 +--rw config-type? enumeration 298 +--rw is-sender-site? boolean 299 +--rw rpt-spt-mode? enumeration 300 +--rw mvpn-route-targets 301 | +--rw mvpn-route-target* [rt-type rt-value] 302 | +--rw rt-type enumeration 303 | +--rw rt-value string 304 +--rw mvpn-ipmsi-tunnel 305 | +--rw tunnel-type? enumeration 306 | +--rw (ipmsi-tunnel-attribute)? 307 | +--:(p2mp-te) 308 | | +--rw te-p2mp-template? string 309 | +--:(p2mp-mldp) 310 | +--:(pim-ssm) 311 | | +--rw ssm-default-group-addr? inet:ip-address 312 | +--:(pim-sm) 313 | | +--rw sm-default-group-addr? inet:ip-address 314 | +--:(bidir-pim) 315 | | +--rw bidir-default-group-addr? inet:ip-address 316 | +--:(ingress-replication) 317 | +--:(mp2mp-mldp) 318 +--rw mvpn-spmsi-tunnels 319 | +--rw switch-delay-time? uint8 320 | +--rw switch-back-holddown-time? uint16 321 | +--rw tunnel-limit? uint16 322 | +--rw mvpn-spmsi-tunnel* [tunnel-type] 323 | +--rw tunnel-type enumeration 324 | +--rw (spmsi-tunnel-attribute)? 325 | | +--:(p2mp-te) 326 | | | +--rw te-p2mp-template? string 327 | | +--:(p2mp-mldp) 328 | | +--:(pim-ssm) 329 | | | +--rw ssm-group-pool-addr? inet:ip-address 330 | | | +--rw ssm-group-pool-masklength? uint8 331 | | +--:(pim-sm) 332 | | | +--rw sm-group-pool-addr? inet:ip-address 333 | | | +--rw sm-group-pool-masklength? uint8 334 | | +--:(bidir-pim) 335 | | | +--rw bidir-group-pool-addr? inet:ip-address 336 | | | +--rw bidir-group-pool-masklength? uint8 337 | | +--:(ingress-replication) 338 | | +--:(mp2mp-mldp) 339 | +--rw switch-threshold? uint32 340 | +--rw switch-wildcard-mode? enumeration 341 | +--rw (address-mask-or-acl)? 342 | +--:(address-mask) 343 | | +--rw ipv6-group-addr? inet:ipv6-address 344 | | +--rw ipv6-groupmasklength? uint8 345 | | +--rw ipv6-source-addr? inet:ipv6-address 346 | | +--rw ipv6-source-masklength? uint8 347 | +--:(acl) 348 | +--rw group-acl-ipv6? string 349 +--ro mvpn-ipmsi-tunnel-info 350 | +--ro tunnel-type? enumeration 351 | +--ro (pmsi-tunnel-attribute)? 352 | | +--:(p2mp-te) 353 | | | +--ro te-p2mp-id? uint16 354 | | | +--ro te-tunnel-id? uint16 355 | | | +--ro te-extend-tunnel-id? uint16 356 | | +--:(p2mp-mldp) 357 | | | +--ro mldp-root-addr? inet:ip-address 358 | | | +--ro mldp-lsp-id? string 359 | | +--:(pim-ssm) 360 | | | +--ro ssm-group-addr? inet:ip-address 361 | | +--:(pim-sm) 362 | | | +--ro sm-group-addr? inet:ip-address 363 | | +--:(bidir-pim) 364 | | | +--ro bidir-group-addr? inet:ip-address 365 | | +--:(ingress-replication) 366 | | +--:(mp2mp-mldp) 367 | +--ro tunnel-role? enumeration 368 | +--ro mvpn-pmsi-ipv6-ref-sg-entries 369 | +--ro mvpn-pmsi-ipv6-ref-sg-entries* [ipv6-source-address ipv6-group-address] 370 | +--ro ipv6-source-address inet:ipv6-address 371 | +--ro ipv6-group-address inet:ipv6-address 372 +--ro mvpn-spmsi-tunnel-ipv6-info 373 +--ro mvpn-spmsi-tunnel-ipv6-info* [tunnel-type] 374 +--ro tunnel-type enumeration 375 +--ro (pmsi-tunnel-attribute)? 376 | +--:(p2mp-te) 377 | | +--ro te-p2mp-id? uint16 378 | | +--ro te-tunnel-id? uint16 379 | | +--ro te-extend-tunnel-id? uint16 380 | +--:(p2mp-mldp) 381 | | +--ro mldp-root-addr? inet:ip-address 382 | | +--ro mldp-lsp-id? string 383 | +--:(pim-ssm) 384 | | +--ro ssm-group-addr? inet:ip-address 385 | +--:(pim-sm) 386 | | +--ro sm-group-addr? inet:ip-address 387 | +--:(bidir-pim) 388 | | +--ro bidir-group-addr? inet:ip-address 389 | +--:(ingress-replication) 390 | +--:(mp2mp-mldp) 391 +--ro tunnel-role? enumeration 392 +--ro mvpn-pmsi-ipv6-ref-sg-entries 393 +--ro mvpn-pmsi-ipv6-ref-sg-entries* [ipv6-source-address ipv6-group-address] 394 +--ro ipv6-source-address inet:ipv6-address 395 +--ro ipv6-group-address inet:ipv6-address 397 4. MVPN YANG Modules 399 file "ietf-mvpn@2017-09-15.yang" 400 module ietf-mvpn { 401 namespace "urn:ietf:params:xml:ns:yang:ietf-mvpn"; 402 prefix mvpn; 404 import ietf-network-instance { 405 prefix ni; 406 } 408 import ietf-inet-types { 409 prefix inet; 410 } 412 organization 413 "IETF BESS(BGP Enabled Services) Working Group"; 414 contact 415 " 416 Yisong Liu 417 418 Feng Guo 419 420 Xufeng Liu 421 422 Robert Kebler 423 424 Mahesh Sivakumar 425 "; 426 description 427 "This YANG module defines the generic configuration 428 and operational state data for mvpn, which is common across 429 all of the vendor implementations of the protocol. It is 430 intended that the module will be extended by vendors to 431 define vendor-specific mvpn parameters."; 433 revision 2017-09-15 { 434 description 435 "Update for NMDA version and errata."; 436 reference 437 "RFC XXXX: A YANG Data Model for MVPN"; 438 } 439 revision 2017-07-03 { 440 description 441 "Update S-PMSI configuration and errata."; 442 reference 443 "RFC XXXX: A YANG Data Model for MVPN"; 444 } 445 revision 2016-10-28 { 446 description 447 "Initial revision."; 448 reference 449 "RFC XXXX: A YANG Data Model for MVPN"; 450 } 452 grouping mvpn-instance-config { 453 description "Mvpn basic configuration per instance."; 455 leaf signaling-mode { 456 type enumeration { 457 enum invalid { 458 value "0"; 459 description "invalid"; 460 } 461 enum bgp { 462 value "1"; 463 description "bgp"; 464 } 465 enum pim { 466 value "2"; 467 description "pim"; 468 } 469 enum mldp { 470 value "3"; 471 description "mldp"; 472 } 473 } 474 default "invalid"; 475 description "Signaling mode for C-multicast route."; 476 } 477 leaf auto-discovery-mode { 478 type enumeration { 479 enum none { 480 value "0"; 481 description "none"; 482 } 483 enum ad { 484 value "1"; 485 description "auto-discovery by BGP"; 486 } 487 } 488 default "none"; 489 description "Auto discovery mode."; 490 } 491 leaf config-type { 492 type enumeration { 493 enum md { 494 value "0"; 495 description "md(rosen)"; 496 } 497 enum ng { 498 value "1"; 499 description "ng"; 500 } 501 } 502 default "md"; 503 description "Mvpn type, which can be md(rosen) mvpn or ng mvpn."; 504 } 505 leaf is-sender-site { 506 type boolean; 507 default "false"; 508 description "Configure the current PE as a sender PE."; 509 } 510 leaf rpt-spt-mode { 511 type enumeration { 512 enum spt-only { 513 value "0"; 514 description 515 "Only spt mode for crossing public net."; 516 } 517 enum rpt-spt { 518 value "1"; 519 description 520 "Both rpt and spt mode for corssing public net."; 521 } 522 } 523 default "spt-only"; 524 description 525 "ASM mode in multicast private net for crossing public net."; 526 } 528 } 530 grouping mvpn-vpn-targets { 531 description "May be different from l3vpn unicast route-targets"; 532 container mvpn-route-targets{ 533 description "Multicast vpn route-targets"; 534 list mvpn-route-target { 535 key "rt-type rt-value" ; 536 description 537 "List of multicast route-targets" ; 538 leaf rt-type { 539 type enumeration { 540 enum export-extcommunity { 541 value "0"; 542 description "export-extcommunity"; 543 } 544 enum import-extcommunity { 545 value "1"; 546 description "import-extcommunity"; 547 } 548 } 549 mandatory "true"; 550 description 551 "rt types are as follows: 552 export-extcommunity: specifies the value of 553 the extended community attribute of the 554 route from an outbound interface to the 555 destination vpn. 556 import-extcommunity: receives routes that 557 carry the specified extended community 558 attribute"; 559 } 560 leaf rt-value { 561 type string { 562 length "3..21"; 563 } 564 description 565 "the available mvpn target formats are as 566 follows: 567 - 16-bit as number:32-bit user-defined 568 number, for example, 1:3. an as number 569 ranges from 0 to 65535, and a user-defined 570 number ranges from 0 to 4294967295. The as 571 number and user-defined number cannot be 572 both 0s. That is, a vpn target cannot be 0:0. 573 - 32-bit ip address:16-bit user-defined 574 number, for example, 192.168.122.15:1. 575 The ip address ranges from 0.0.0.0 to 576 255.255.255.255, and the user-defined 577 number ranges from 0 to 65535."; 578 } 579 } 580 } 581 } 583 grouping mvpn-ipmsi-tunnel-config { 584 description "Default mdt for rosen mvpn and I-PMSI for ng mvpn"; 586 container mvpn-ipmsi-tunnel { 587 description "I-PMSI tunnel configuraton"; 588 leaf tunnel-type { 589 type enumeration { 590 enum invalid { 591 value "0"; 592 description "invalid"; 593 } 594 enum p2mp-te { 595 value "1"; 596 description "p2mp-te"; 597 } 598 enum p2mp-mldp { 599 value "2"; 600 description "p2mp-mldp"; 601 } 602 enum pim-ssm { 603 value "3"; 604 description "pim-ssm"; 605 } 606 enum pim-sm { 607 value "4"; 608 description "pim-sm"; 609 } 610 enum bidir-pim { 611 value "5"; 612 description "bidir-pim"; 613 } 614 enum ingress-replication { 615 value "6"; 616 description "ingress-replication"; 617 } 618 enum mp2mp-mldp { 619 value "7"; 620 description "mp2mp-mldp"; 621 } 622 } 623 description "I-PMSI tunnel type."; 624 } 625 choice ipmsi-tunnel-attribute { 626 description "I-PMSI tunnel attributes configuration"; 627 case p2mp-te { 628 description "P2mp TE tunnel"; 629 leaf te-p2mp-template { 630 type string { 631 length "1..31"; 632 } 633 description "P2mp te tunnel template"; 634 } 635 } 636 case p2mp-mldp { 637 description "Mldp tunnel"; 638 } 639 case pim-ssm { 640 description "Pim ssm tunnel"; 641 leaf ssm-default-group-addr { 642 type inet:ip-address; 643 description "Default mdt or I-PMSI group address."; 644 } 645 } 646 case pim-sm { 647 description "Pim sm tunnel"; 648 leaf sm-default-group-addr { 649 type inet:ip-address; 650 description "Default mdt or I-PMSI group address."; 651 } 652 } 653 case bidir-pim { 654 description "Bidir pim tunnel"; 655 leaf bidir-default-group-addr { 656 type inet:ip-address; 657 description "Default mdt or I-PMSI group address."; 658 } 659 } 660 case ingress-replication { 661 description "Ingress replication p2p tunnel"; 662 } 663 case mp2mp-mldp { 664 description "Mp2mp mldp tunnel"; 665 } 666 } 667 } 668 } 670 grouping mvpn-spmsi-tunnel-basic-config { 671 description "S-PMSI tunnel basic configuration"; 672 leaf tunnel-type { 673 type enumeration { 674 enum invalid { 675 value "0"; 676 description "invalid"; 677 } 678 enum p2mp-te { 679 value "1"; 680 description "p2mp-te"; 681 } 682 enum p2mp-mldp { 683 value "2"; 684 description "p2mp-mldp"; 685 } 686 enum pim-ssm { 687 value "3"; 688 description "pim-ssm"; 689 } 690 enum pim-sm { 691 value "4"; 692 description "pim-sm"; 693 } 694 enum bidir-pim { 695 value "5"; 696 description "bidir-pim"; 697 } 698 enum ingress-replication { 699 value "6"; 700 description "ingress-replication"; 701 } 702 enum mp2mp-mldp { 703 value "7"; 704 description "mp2mp-mldp"; 705 } 706 } 707 description "S-PMSI tunnel type."; 708 } 709 choice spmsi-tunnel-attribute { 710 description "S-PMSI tunnel attributes configuration"; 711 case p2mp-te { 712 description "P2mp te tunnel"; 713 leaf te-p2mp-template { 714 type string { 715 length "1..31"; 716 } 717 description "P2mp te tunnel template"; 718 } 719 } 720 case p2mp-mldp { 721 description "Mldp tunnel"; 722 } 723 case pim-ssm { 724 description "Pim ssm tunnel"; 725 leaf ssm-group-pool-addr { 726 type inet:ip-address; 727 description "Group pool address for data mdt or pim s-pmsi."; 728 } 729 leaf ssm-group-pool-masklength { 730 type uint8 { 731 range "8..128"; 732 } 733 description "Group pool mask for data mdt or pim s-pmsi"; 734 } 735 } 736 case pim-sm { 737 description "Pim sm tunnel"; 738 leaf sm-group-pool-addr { 739 type inet:ip-address; 740 description "Group pool address for data mdt or pim s-pmsi."; 741 } 742 leaf sm-group-pool-masklength { 743 type uint8 { 744 range "8..128"; 745 } 746 description "Group pool mask for data mdt or pim s-pmsi"; 747 } 748 } 749 case bidir-pim { 750 description "Bidir pim tunnel"; 751 leaf bidir-group-pool-addr { 752 type inet:ip-address; 753 description "Group pool address for data mdt or pim s-pmsi."; 754 } 755 leaf bidir-group-pool-masklength { 756 type uint8 { 757 range "8..128"; 758 } 759 description "Group pool mask for data mdt or pim s-pmsi"; 760 } 761 } 762 case ingress-replication { 763 description "Ingress replication p2p tunnel"; 764 } 765 case mp2mp-mldp { 766 description "Mp2mp mldp tunnel"; 767 } 768 } 769 leaf switch-threshold { 770 type uint32 { 771 range "0..4194304"; 772 } 773 default "0"; 774 description 775 "Multicast packet rate threshold for 776 triggering the switching from the 777 I-PMSI to the S-PMSI. The value is 778 an integer ranging from 0 to 4194304, in 779 kbit/s. The default value is 0."; 780 } 781 leaf switch-wildcard-mode { 782 type enumeration { 783 enum source-group { 784 value "0"; 785 description 786 "Wildcard neither for source or group address."; 787 } 788 enum star-star { 789 value "1"; 790 description 791 "Wildcard for both source and group address."; 792 } 793 enum star-group { 794 value "2"; 795 description 796 "Wildcard only for source address."; 797 } 798 enum source-star { 799 value "3"; 800 description 801 "Wildcard only for group address."; 802 } 803 } 804 default "source-group"; 805 description 806 "I-PMSI switching to S-PMSI mode for private net 807 wildcard mode, which including (*,*), (*,G), (S,*), 808 (S,G) four modes."; 809 } 810 } 812 grouping mvpn-spmsi-tunnel-config-ipv4 { 813 description 814 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 815 IPv4 private network"; 817 container mvpn-spmsi-tunnels { 818 description "S-PMSI tunnel configuration"; 819 leaf switch-delay-time { 820 type uint8 { 821 range "3..60"; 822 } 823 units seconds; 824 default "5"; 825 description 826 "Delay for switching from the I-PMSI to 827 the S-PMSI. The value is an integer 828 ranging from 3 to 60, in seconds. "; 829 } 830 leaf switch-back-holddown-time { 831 type uint16 { 832 range "0..512"; 833 } 834 units seconds; 835 default "60"; 836 description 837 "Delay for switching back from the S-PMSI 838 to the I-PMSI. The value is an integer 839 ranging from 0 to 512, in seconds. "; 840 } 841 leaf tunnel-limit { 842 type uint16 { 843 range "1..1024"; 844 } 845 description 846 "Maximum number of s-pmsi tunnels allowed."; 847 } 849 list mvpn-spmsi-tunnel { 850 key "tunnel-type"; 851 description "S-PMSI tunnel attributes configuration"; 853 uses mvpn-spmsi-tunnel-basic-config; 855 choice address-mask-or-acl { 856 description 857 "Type of definition of private net multicast address range"; 858 case address-mask { 859 description "Use the type of address and mask"; 860 leaf ipv4-group-addr { 861 type inet:ipv4-address; 862 description 863 "Start and end ipv4 addresses of the group 864 address in private net. "; 865 } 866 leaf ipv4-group-masklength { 867 type uint8 { 868 range "4..32"; 869 } 870 description 871 "Group mask length for ipv4 addresses in 872 the group address pool in private net."; 873 } 874 leaf ipv4-source-addr { 875 type inet:ipv4-address; 876 description 877 "Start and end ipv4 addresses of the source 878 address in private net."; 879 } 880 leaf ipv4-source-masklength { 881 type uint8 { 882 range "0..32"; 883 } 884 description 885 "Source mask length for ipv4 addresses in 886 the group address pool in private net."; 887 } 888 } 889 case acl { 890 description "Use the type of acl"; 891 leaf group-acl-ipv4 { 892 type string { 893 length "1..32"; 894 } 895 description 896 "Specify the (s, g) entry on which the 897 S-PMSI tunnel takes effect. 898 The value is an integer ranging from 3000 899 to 3999 or a string of 32 case-sensitive 900 characters. If no value is specified, the 901 switch-group address pool takes effect on 902 all (s, g)."; 903 } 904 } 905 } 906 } 907 } 908 } 910 grouping mvpn-spmsi-tunnel-config-ipv6 { 911 description 912 "Data mdt for rosen mvpn or S-PMSI for ng mvpn in 913 IPv6 private network"; 915 container mvpn-spmsi-tunnels { 916 description "S-PMSI tunnel configuration"; 917 leaf switch-delay-time { 918 type uint8 { 919 range "3..60"; 920 } 921 units seconds; 922 default "5"; 923 description 924 "Delay for switching from the I-PMSI to 925 the S-PMSI. The value is an integer 926 ranging from 3 to 60, in seconds. "; 927 } 928 leaf switch-back-holddown-time { 929 type uint16 { 930 range "0..512"; 931 } 932 units seconds; 933 default "60"; 934 description 935 "Delay for switching back from the S-PMSI 936 to the I-PMSI. The value is an integer 937 ranging from 0 to 512, in seconds. "; 938 } 939 leaf tunnel-limit { 940 type uint16 { 941 range "1..1024"; 942 } 943 description 944 "Maximum number of s-pmsi tunnels allowed."; 945 } 947 list mvpn-spmsi-tunnel { 948 key "tunnel-type"; 949 description "S-PMSI tunnel parameter configuration"; 951 uses mvpn-spmsi-tunnel-basic-config; 953 choice address-mask-or-acl { 954 description 955 "Type of definition of private net multicast address range"; 956 case address-mask { 957 description "Use the type of address and mask"; 958 leaf ipv6-group-addr { 959 type inet:ipv6-address; 960 description 961 "Start and end ipv6 addresses of the group 962 address in private net."; 963 } 964 leaf ipv6-groupmasklength { 965 type uint8 { 966 range "8..128"; 967 } 968 description 969 "Group mask length for ipv6 addresses in 970 the group address pool in private net."; 971 } 972 leaf ipv6-source-addr { 973 type inet:ipv6-address; 974 description 975 "Start and end ipv6 addresses of the source 976 address in private net."; 977 } 978 leaf ipv6-source-masklength { 979 type uint8 { 980 range "0..128"; 981 } 982 description 983 "Source mask length for ipv6 addresses in 984 the group address pool in private net."; 985 } 986 } 987 case acl { 988 description "Use the type of acl"; 989 leaf group-acl-ipv6 { 990 type string { 991 length "1..32"; 992 } 993 description 994 "Specify the (s, g) entry on which the 995 S-PMSI tunnel takes effect. 996 The value is an integer ranging from 3000 997 to 3999 or a string of 32 case-sensitive 998 characters. If no value is specified, the 999 switch-group address pool takes effect on 1000 all (s, g)."; 1001 } 1002 } 1003 } 1004 } 1005 } 1006 } 1008 grouping mvpn-pmsi-state { 1009 description "PMSI tunnel operational state information"; 1010 leaf tunnel-type { 1011 type enumeration { 1012 enum invalid { 1013 value "0"; 1014 description "invalid"; 1015 } 1016 enum p2mp-te { 1017 value "1"; 1018 description "p2mp-te"; 1019 } 1020 enum p2mp-mldp { 1021 value "2"; 1022 description "p2mp-mldp"; 1024 } 1025 enum pim-ssm { 1026 value "3"; 1027 description "pim-ssm"; 1028 } 1029 enum pim-sm { 1030 value "4"; 1031 description "pim-sm"; 1032 } 1033 enum bidir-pim { 1034 value "5"; 1035 description "bidir-pim"; 1036 } 1037 enum ingress-replication { 1038 value "6"; 1039 description "ingress-replication"; 1040 } 1041 enum mp2mp-mldp { 1042 value "7"; 1043 description "mp2mp-mldp"; 1044 } 1045 } 1046 description "PMSI tunnel type."; 1047 } 1048 choice pmsi-tunnel-attribute { 1049 description "PMSI tunnel operational state information for each type"; 1050 case p2mp-te { 1051 description "P2mp te tunnel"; 1052 leaf te-p2mp-id { 1053 type uint16 { 1054 range "0..65535"; 1055 } 1056 default "0"; 1057 description "P2mp id of the p2mp tunnel."; 1058 } 1059 leaf te-tunnel-id { 1060 type uint16 { 1061 range "1..65535"; 1062 } 1063 description "Id of the p2mp tunnel."; 1064 } 1065 leaf te-extend-tunnel-id { 1066 type uint16 { 1067 range "1..65535"; 1068 } 1069 description "P2mp extended tunnel interface id."; 1070 } 1071 } 1072 case p2mp-mldp { 1073 description "P2mp mldp tunnel"; 1074 leaf mldp-root-addr { 1075 type inet:ip-address; 1076 description "Ip address of the root of a p2mp ldp lsp."; 1077 } 1078 leaf mldp-lsp-id { 1079 type string { 1080 length "1..256"; 1081 } 1082 description "P2mp ldp lsp id."; 1083 } 1084 } 1085 case pim-ssm { 1086 description "Pim ssm tunnel"; 1087 leaf ssm-group-addr { 1088 type inet:ip-address; 1089 description "Group address for pim ssm"; 1090 } 1091 } 1092 case pim-sm { 1093 description "Pim sm tunnel"; 1094 leaf sm-group-addr { 1095 type inet:ip-address; 1096 description "Group address for pim sm"; 1097 } 1098 } 1099 case bidir-pim { 1100 description "Bidir pim tunnel"; 1101 leaf bidir-group-addr { 1102 type inet:ip-address; 1103 description "Group address for bidir-pim"; 1104 } 1105 } 1106 case ingress-replication { 1107 description "Ingress replication p2p tunnel"; 1108 } 1109 case mp2mp-mldp { 1110 description "mp2mp mldp tunnel"; 1111 } 1112 } 1113 leaf tunnel-role { 1114 type enumeration { 1115 enum none { 1116 value "0"; 1117 description "none"; 1118 } 1119 enum root { 1120 value "1"; 1121 description "root"; 1123 } 1124 enum leaf { 1125 value "2"; 1126 description "leaf"; 1127 } 1128 enum root-and-leaf { 1129 value "3"; 1130 description "root-and-leaf"; 1131 } 1132 } 1133 description "Role of a tunnel node."; 1134 } 1135 } 1137 grouping mvpn-pmsi-ipv4-entry { 1138 description 1139 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1140 container mvpn-pmsi-ipv4-ref-sg-entries { 1141 description 1142 "Multicast entries in ipv4 mvpn referenced the pmsi tunnel"; 1143 list mvpn-pmsi-ipv4-ref-sg-entries { 1144 key "ipv4-source-address ipv4-group-address"; 1145 description 1146 "IPv4 source and group address of private network entry"; 1147 leaf ipv4-source-address { 1148 type inet:ipv4-address; 1149 description 1150 "IPv4 source address of private network entry 1151 in I-PMSI or S-PMSI."; 1152 } 1153 leaf ipv4-group-address { 1154 type inet:ipv4-address; 1155 description 1156 "IPv4 group address of private network entry 1157 in I-PMSI or S-PMSI."; 1158 } 1159 } 1160 } 1161 } 1163 grouping mvpn-pmsi-ipv6-entry { 1164 description 1165 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1166 container mvpn-pmsi-ipv6-ref-sg-entries { 1167 description 1168 "Multicast entries in ipv6 mvpn referenced the pmsi tunnel"; 1169 list mvpn-pmsi-ipv6-ref-sg-entries { 1170 key "ipv6-source-address ipv6-group-address"; 1171 description 1172 "IPv6 source and group address of private network entry"; 1173 leaf ipv6-source-address { 1174 type inet:ipv6-address; 1175 description 1176 "IPv6 source address of private network entry 1177 in I-PMSI or S-PMSI."; 1178 } 1179 leaf ipv6-group-address { 1180 type inet:ipv6-address; 1181 description 1182 "IPv6 group address of private network entry 1183 in I-PMSI or S-PMSI."; 1184 } 1185 } 1186 } 1187 } 1189 grouping mvpn-ipmsi-tunnel-state-ipv4 { 1190 description 1191 "Default mdt or I-PMSI operational state information"; 1192 container mvpn-ipmsi-tunnel-info { 1193 config false; 1194 description 1195 "Default mdt or I-PMSI operational state information"; 1196 uses mvpn-pmsi-state; 1197 uses mvpn-pmsi-ipv4-entry; 1198 } 1199 } 1201 grouping mvpn-ipmsi-tunnel-state-ipv6 { 1202 description 1203 "Default mdt or I-PMSI operational state information"; 1204 container mvpn-ipmsi-tunnel-info { 1205 config false; 1206 description 1207 "Default mdt or I-PMSI operational state information"; 1208 uses mvpn-pmsi-state; 1209 uses mvpn-pmsi-ipv6-entry; 1210 } 1211 } 1213 grouping mvpn-spmsi-tunnel-state-ipv4 { 1214 description 1215 "Data mdt or S-PMSI operational state information"; 1216 container mvpn-spmsi-tunnel-ipv4-info { 1217 config false; 1218 description 1219 "Data mdt or S-PMSI operational state information"; 1221 list mvpn-spmsi-tunnel-ipv4-info { 1222 key "tunnel-type"; 1223 description 1224 "Data mdt or S-PMSI operational state information"; 1225 uses mvpn-pmsi-state; 1226 uses mvpn-pmsi-ipv4-entry; 1227 } 1228 } 1229 } 1231 grouping mvpn-spmsi-tunnel-state-ipv6 { 1232 description 1233 "Data mdt or S-PMSI operational state information"; 1234 container mvpn-spmsi-tunnel-ipv6-info { 1235 config false; 1236 description 1237 "Data mdt or S-PMSI operational state information"; 1238 list mvpn-spmsi-tunnel-ipv6-info { 1239 key "tunnel-type"; 1240 description 1241 "Data mdt or S-PMSI operational state information"; 1242 uses mvpn-pmsi-state; 1243 uses mvpn-pmsi-ipv6-entry; 1244 } 1245 } 1246 } 1248 augment "/ni:network-instances/ni:network-instance" { 1249 description 1250 "Augment network instance container for per multicast VRF 1251 configuration and operational state."; 1252 container mvpn { 1253 description 1254 "Mvpn configuration and operational state information."; 1255 container mvpnv4 { 1256 description 1257 "Configuration of multicast IPv4 vpn specific parameters and 1258 operational state of multicast IPv4 vpn specific parameters"; 1259 uses mvpn-instance-config; 1260 uses mvpn-vpn-targets; 1261 uses mvpn-ipmsi-tunnel-config; 1262 uses mvpn-spmsi-tunnel-config-ipv4; 1263 uses mvpn-ipmsi-tunnel-state-ipv4; 1264 uses mvpn-spmsi-tunnel-state-ipv4; 1265 } 1266 container mvpnv6 { 1267 description 1268 "Configuration of multicast IPv6 vpn specific parameters and 1269 operational state of multicast IPv6 vpn specific parameters"; 1271 uses mvpn-instance-config; 1272 uses mvpn-vpn-targets; 1273 uses mvpn-ipmsi-tunnel-config; 1274 uses mvpn-spmsi-tunnel-config-ipv6; 1275 uses mvpn-ipmsi-tunnel-state-ipv6; 1276 uses mvpn-spmsi-tunnel-state-ipv6; 1277 } 1278 } 1279 } 1280 } 1281 1283 5. Security Considerations 1285 The data model defined does not introduce any security implications. 1286 This draft does not change any underlying security issues inherent 1287 in [RFC8022]. 1289 6. IANA Considerations 1291 TBD 1293 7. References 1295 7.1. Normative References 1297 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1298 Requirement Levels", BCP 14, RFC 2119, March 1997. 1300 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1301 the Network Configuration Protocol (NETCONF)", RFC 6020, 1302 October 2010 1304 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1305 and A. Bierman, Ed., "Network Configuration Protocol 1306 (NETCONF)", RFC 6241, June 2011 1308 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1309 RFC 7950, August 2016 1311 [I-D.ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors 1312 and Reviewers of YANG Data Model Documents", draft-ietf- 1313 netmod-rfc6087bis-14, September 2017. 1315 [I-D.dsdt-nmda-guidelines] M. Bjorklund, J. Schoenwaelder, P. 1316 Shafer, K. Watsen, R. Wilton, "Guidelines for YANG Module 1317 Authors (NMDA)", draft-dsdt-nmda-guidelines-01, May 2017 1319 7.2. Informative References 1321 [RFC6037] Rosen, E., Cai, Y., and IJ. Wijnands, "Cisco Systems' 1322 Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037, 1323 October 2010. 1325 [RFC6513] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP 1326 VPNs", RFC 6513, February 2012. 1328 [RFC6514] Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP 1329 Encodings and Procedures for Multicast in MPLS/BGP IP 1330 VPNs", RFC 6514, February 2012. 1332 [RFC7246] IJ. Wijnands, P. Hitchen, N. Leymann, W. Henderickx, A. 1333 Gulko and J. Tantsura, " Multipoint Label Distribution 1334 Protocol In-Band Signaling in a Virtual Routing and 1335 Forwarding (VRF) Table Context ", RFC 7246, June 2014. 1337 [RFC7900] Y. Rekhter, E. Rosen, R. Aggarwal, Arktan, Y. Cai and T. 1338 Morin, " Extranet Multicast in BGP/IP MPLS VPNs ", RFC 1339 7900, June 2016. 1341 [I-D.ietf-rtgwg-ni-model] Berger, L., Hopps, C., Lindem, A., and D. 1342 Bogdanovic, X. Liu, "Network Instance Model", draft-ietf- 1343 rtgwg-ni-model-03, July 2017. 1345 [I-D.ietf-bess-l3vpn-yang] D. Jain, K. Patel, P. Brissette, Z. Li, 1346 S. Zhuang, X. Liu, J. Haas, S. Esale and B. Wen, "Yang 1347 Data Model for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn- 1348 yang-01, April 2017. 1350 8. Acknowledgments 1352 The authors would like to thank Anish Peter, Stig Venaas for their 1353 valuable contributions. 1355 Authors' Addresses 1357 Yisong Liu 1358 Huawei Technologies 1359 Huawei Bld., No.156 Beiqing Rd. 1360 Beijing 100095 1361 China 1363 Email: liuyisong@huawei.com 1365 Feng Guo 1366 Huawei Technologies 1367 Huawei Bld., No.156 Beiqing Rd. 1368 Beijing 100095 1369 China 1371 Email: guofeng@huawei.com 1373 Xufeng Liu 1374 Jabil 1375 8281 Greensboro Drive, Suite 200 1376 McLean VA 22102 1377 USA 1379 Email: Xufeng_Liu@jabil.com 1381 Robert Kebler 1382 Juniper Networks 1383 10 Technology Park Drive 1384 Westford, MA 01886 1385 USA 1387 Email: rkebler@juniper.net 1389 Mahesh Sivakumar 1390 Cisco Systems, Inc 1391 510 McCarthy Blvd 1392 Milpitas, California 95035 1393 USA 1395 Email: masivaku@cisco.com