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