idnits 2.17.1 draft-shah-bess-l2vpn-yang-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 27 instances of too long lines in the document, the longest one being 52 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 486 has weird spacing: '...t-value str...' == Line 513 has weird spacing: '...rw name str...' == Line 551 has weird spacing: '...t-value str...' == Line 645 has weird spacing: '...t-value str...' == Line 733 has weird spacing: '...t-value str...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- Couldn't find a document date in the document -- date freshness check skipped. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Obsolete informational reference (is this intentional?): RFC 4447 (Obsoleted by RFC 8077) -- Obsolete informational reference (is this intentional?): RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 BESS Working Group H. Shah 3 Internet-Draft Ciena Corporation 4 Intended status: Standards Track P. Brissette 5 Expires: September 15, 2016 R. Rahman 6 K. Raza 7 Cisco Systems, Inc. 8 Z. Li 9 Z. Shunwan 10 W. Haibo 11 Huawei Technologies 12 I. Chen 13 S. Ahmed 14 Ericsson 15 M. Bocci 16 Alcatel-Lucent 17 J. Hardwick 18 Metaswitch 19 S. Esale 20 K. Tiruveedhula 21 T. Singh 22 Juniper Networks 23 I. Hussain 24 Infinera Corporation 25 B. Wen 26 J. Walker 27 Comcast 28 N. Delregno 29 L. Jalil 30 M. Joecylyn 31 Verizon 32 March 14, 2016 34 YANG Data Model for MPLS-based L2VPN 35 draft-shah-bess-l2vpn-yang-01.txt 37 Abstract 39 This document describes a YANG data model for Layer 2 VPN services 40 over MPLS networks. These services include Virtual Private Wire 41 Service (VPWS) and Virtual Private LAN service (VPLS) that uses LDP 42 and BGP signaled Pseudowires. The current version of the document 43 expands the L2VPN object model to include VPLS services in addition 44 to the VPWS services described in the last revision. This is a 45 living document and contains aspects of object models that have been 46 discussed extensively in the working group with consensus. The 47 intention is to continue to seek input from larger audience during 48 evolution of the L2VPN service model through this document. 50 Status of This Memo 52 This Internet-Draft is submitted in full conformance with the 53 provisions of BCP 78 and BCP 79. 55 Internet-Drafts are working documents of the Internet Engineering 56 Task Force (IETF). Note that other groups may also distribute 57 working documents as Internet-Drafts. The list of current Internet- 58 Drafts is at http://datatracker.ietf.org/drafts/current/. 60 Internet-Drafts are draft documents valid for a maximum of six months 61 and may be updated, replaced, or obsoleted by other documents at any 62 time. It is inappropriate to use Internet-Drafts as reference 63 material or to cite them other than as "work in progress." 65 This Internet-Draft will expire on September 15, 2016. 67 Copyright Notice 69 Copyright (c) 2016 IETF Trust and the persons identified as the 70 document authors. All rights reserved. 72 This document is subject to BCP 78 and the IETF Trust's Legal 73 Provisions Relating to IETF Documents 74 (http://trustee.ietf.org/license-info) in effect on the date of 75 publication of this document. Please review these documents 76 carefully, as they describe your rights and restrictions with respect 77 to this document. Code Components extracted from this document must 78 include Simplified BSD License text as described in Section 4.e of 79 the Trust Legal Provisions and are provided without warranty as 80 described in the Simplified BSD License. 82 Table of Contents 84 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 85 2. Updates in this revision . . . . . . . . . . . . . . . . . . 4 86 3. Specification of Requirements . . . . . . . . . . . . . . . . 4 87 4. L2VPN YANG Model . . . . . . . . . . . . . . . . . . . . . . 4 88 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 89 4.2. L2VPN Common . . . . . . . . . . . . . . . . . . . . . . 8 90 4.2.1. ac-templates . . . . . . . . . . . . . . . . . . . . 8 91 4.2.2. pw-templates . . . . . . . . . . . . . . . . . . . . 8 92 4.3. VPWS and Bridge-Table-Instance (formerly referred as 93 VPLS) . . . . . . . . . . . . . . . . . . . . . . . . . . 8 94 4.3.1. ac list . . . . . . . . . . . . . . . . . . . . . . . 8 95 4.3.2. pw list . . . . . . . . . . . . . . . . . . . . . . . 8 96 4.3.3. redundancy-grp choice . . . . . . . . . . . . . . . . 9 97 4.3.4. endpoint container . . . . . . . . . . . . . . . . . 9 98 4.3.5. vpws-instances and bridge-table-instances container . 9 99 4.4. Operational State . . . . . . . . . . . . . . . . . . . . 10 100 4.5. Open items . . . . . . . . . . . . . . . . . . . . . . . 10 101 4.6. Yang tree . . . . . . . . . . . . . . . . . . . . . . . . 10 102 5. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 20 103 6. Security Considerations . . . . . . . . . . . . . . . . . . . 45 104 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 105 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 45 106 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 107 9.1. Normative References . . . . . . . . . . . . . . . . . . 45 108 9.2. Informative References . . . . . . . . . . . . . . . . . 45 109 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 111 1. Introduction 113 The Network Configuration Protocol (NETCONF) [RFC6241] is a network 114 management protocol that defines mechanisms to manage network 115 devices. YANG [RFC6020] is a modular language that represents data 116 structures in an XML or JSON tree format, and is used as a data 117 modeling language for the NETCONF. 119 This document introduces a YANG data model for MPLS based Layer 2 VPN 120 services (L2VPN) [RFC4664] as well as switching between the local 121 attachment circuits. The L2VPN services include point-to-point VPWS 122 and Multipoint VPLS services. These services are realized by 123 signaling Pseudowires across MPLS networks using LDP 124 [RFC4447][RFC4762] or BGP[RFC4761]. 126 The YANG data model in this document defines Ethernet based Layer 2 127 services. Other Layer 2 services, such as ATM, Frame Relay, TDM, etc 128 are included in the scope but will be covered as the future work 129 items. The Ethernet based Layer 2 services will leverage the 130 definitions used in other standards organizations such as IEEE 802.1 131 and Metro Ethernet Forum (MEF). 133 The goal is to propose a data object model consisting of building 134 blocks that can be assembled in different order to realize different 135 services. The definition work is undertaken initially by a smaller 136 working group with members representing various vendors and service 137 providers. The VPWS service definitions were covered first in the 138 last revision of the document. The current version documents VPLS 139 services that build on the data blocks defined for VPWS. 141 In the current version of this document, refinements to the 142 configuration objects and Operational State objects for the same are 143 added. 145 The data model is defined for following constructs that are used for 146 managing the services: 148 o Configuration 150 o Operational State 152 o Executables (Actions) 154 o Notifications 156 The document is organized to first define the data model for the 157 configuration of all the L2VPN services followed by definition of 158 operational state, actions and notifications for the same. The L2VPN 159 data object model defined in this document uses the instance centric 160 approach. The attributes of each service, VPWS, VPLS, etc are 161 specified for a given service instance. 163 2. Updates in this revision 165 The organization of the configuration objects has been updated. The 166 ac-templates in the common container is removed and a new redundancy- 167 group-templates is added. 169 The vpls-instances container is removed and replaced with bridge- 170 table-instances container to include the PBB, BGP parameters. This 171 revision also introduces a reference to EVPN instance. This revision 172 removes the definition of Attachment Circuits, "ac". Instead, the 173 L2VPN data object model will rely on standard definitions of 174 Attachment Circuits that IEEE and IETF are coordinating to define. 175 Thus, this revision uses a string as a placeholder for an Attachment 176 Circuit within the ac-or-pw-redundancy-grp within the respective 177 endpoints list of bridge-table-instances or VPWS instances, and 178 expect to update this field once the standard definitions of 179 Attachment Circuits are available. 181 3. Specification of Requirements 183 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 184 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 185 document are to be interpreted as described in [RFC2119]. 187 4. L2VPN YANG Model 188 4.1. Overview 190 One single top level container, l2vpn, is defined as a parent for 191 three different second level containers that are vpws-instances, 192 bridge-table-instances, and common building blocks of redundancy-grp 193 templates and pseudowire-templates. The current version of the 194 document is extended to include refinements to configuration of vpws- 195 instance and bridge-table-instances. The operations state object has 196 been added to hold read-only information of objects that has either 197 been configured or dynamically created. 199 The L2VPN services have been defined in the IETF L2VPN working group 200 but leverages the pseudowire technologies that were defined in the 201 PWE3 working group. A large number of RFCs from these working groups 202 cover this subject matter. Hence, it is prudent that this document 203 state the scope of the MPLS L2VPN object model definitions. 205 The following documents are within the scope. This is not an 206 exhaustive list but a representation of documents that are covered 207 for this work: 209 o Requirements for Pseudo-wire Emulation Edge-to-Edge (PWE3) 210 [RFC3916] 212 o Pseudo-wire Emulation Edge-to-Edge (PWE3) Architecture [RFC3985] 214 o IANA Allocations for Pseudowire Edge to Edge Emulation (PWE3) 215 [RFC4446] 217 o Pseudowire Setup and Maintenance Using the Label Distribution 218 Protocol (LDP) [RFC4447] 220 o Encapsulation Methods for Transport of Ethernet over MPLS Networks 221 [RFC4448] 223 o Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over 224 an MPLS PSN [RFC4385] 226 o Requirements for Multi-Segment Pseudowire Emulation Edge-to-Edge 227 (PWE3) [RFC5254] 229 o An Architecture for Multi-Segment Pseudowire Emulation Edge-to- 230 Edge [RFC5659] 232 o Segmented Pseudowire [RFC6073] 234 o Framework for Layer 2 Virtual Private Networks [RFC4664] 235 o Service Requirements for Layer 2 Provider-Provisioned Virtual 236 Private Networks [RFC4665] 238 o Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery 239 and Signaling [RFC4761] 241 o Virtual Private LAN Service (VPLS) Using Label Distribution 242 Protocol (LDP) Signaling [RFC4762] 244 o Attachment Individual Identifier (AII) Types for Aggregation 245 [RFC5003] 247 o Provisioning, Auto-Discovery, and Signaling in Layer 2 Virtual 248 Private Networks (L2VPNs) [RFC6074] 250 o Flow-Aware Transport of Pseudowires over an MPLS Packet Switched 251 Network [RFC6391] 253 o Layer 2 Virtual Private Networks Using BGP for Auto-Discovery and 254 Signaling [RFC6624] 256 o Extensions to the Virtual Private LAN Service (VPLS) Provider Edge 257 (PE) Model for Provider Backbone Bridging [RFC7041] 259 o LDP Extensions for Optimized MAC Address Withdrawal in a 260 Hierarchical Virtual Private LAN Service (H-VPLS) [RFC7361] 262 o Using the generic associated channel label for Pseudowire in the 263 MPLS Transport Profile [RFC6423] 265 o Pseudowire status for static pseudowire [RFC6478] 267 Note that while pseudowire over MPLS-TP related work is in scope, the 268 initial effort will only address definitions of object models for 269 services that are commonly deployed. 271 The ietf work in L2VPN and PWE3 working group relating to L2TP, OAM, 272 multicast (e.g. p2mp, etree, etc) and access specific protocols such 273 as G.8032, MSTP, etc is out-of-scope for this document. 275 The following is the high level view of the L2VPN data model. 277 template-ref PW // PW 278 template 279 attributes 281 template-ref Redundancy-Group // redundancy-group 282 template 283 attributes 285 bridge-table-instance name // container 287 common attributes 289 PBB-parameters // container 290 pbb specific attributes 292 BGP-parameters // container 293 common attributes 294 auto-discovery attributes 295 signaling attributes 297 evpn-instance // reference 299 // list of PWs being used 300 PW // container 301 template-ref PW 302 attribute-override 304 // List of endpoints, where each member endpoint container is - 305 PW // reference 306 redundancy-grp // container 307 AC // eventual reference to standard AC 308 PW // reference 310 vpws-instance name // container 312 common attributes 314 BGP-parameters // container 315 common attributes 316 auto-discovery attributes 317 signaling attributes 319 // list of PWs being used 320 PW // container 321 template-ref PW 322 attribute-override 323 pw type 324 static-or-ldp 325 bgp-pw 326 bgp-ad-pw 328 // ONLY 2 endpoints!!! 329 endpoint-A // container 330 redundancy-grp // container 331 AC // eventual reference to standard AC 332 PW // reference 334 endpoint-Z // container 335 redundancy-grp // container 336 AC // eventual reference to standard AC 337 PW // reference 339 l2vpn-state // read-only container 341 Figure 1 343 4.2. L2VPN Common 345 4.2.1. ac-templates 347 The ac-templates container is removed. The AC will eventually 348 reference standard AC definitions defined with coordination between 349 the IEEE and IETF, and will inherit all the attributes defined in 350 that reference. 352 4.2.2. pw-templates 354 The pw-templates container contains a list of pw-template. Each pw- 355 template defines a list of common pseudowire attributes such as PW 356 MTU, control word support etc. 358 4.3. VPWS and Bridge-Table-Instance (formerly referred as VPLS) 360 4.3.1. ac list 362 AC resides within endpoint container as member of ac-or-pw-or- 363 redundandancy-grp. 365 4.3.2. pw list 367 Each VPWS and Bridge-Table-Instance defines a list of PWs which are 368 participating members of the given service instance. Each entry of 369 the PW consists of one pw-template with pre-defined attributes and 370 values, but also defines attributes that override those defined in 371 referenced pw-template. 373 No restrictions are placed on type of signaling (i.e. LDP or BGP) 374 used for a given PW. It is entirely possible to define two PWs, one 375 signaled by LDP and other by BGP. 377 The VPLS specific attribute(s) are present in the definition of the 378 PW that are member of VPLS instance only and not applicable to VPWS 379 service. 381 4.3.3. redundancy-grp choice 383 The redundancy-grp is a generic redundancy construct which can hold 384 primary and backup members of AC and PWs. This flexibility permits 385 combinations of - 387 o primary and backup AC 389 o primary and backup PW 391 o primary AC and backup PW 393 o primary PW and backup AC 395 4.3.4. endpoint container 397 The endpoint container in general holds AC, PW or redundancy-grp 398 references. The core aspect of endpoint container is its flexible 399 personality based on what user decides to include in it. It is 400 future-proofed with possible extensions that can be included in the 401 endpoint container such as Integrated Route Bridging (IRB), PW 402 Headend, Virtual Switch Instance, etc. 404 The endpoint container for the VPLS service holds references to a 405 list of ACs, a list of PWs or a redundancy group that contains a list 406 of ACs and/or a list of PWs. This differs from the VPWS instance 407 where an endpoint contains exactly one member; AC or PW or redundancy 408 group and not a list. 410 4.3.5. vpws-instances and bridge-table-instances container 412 The vpws-instances container contains a list of vpws-instance. Each 413 entry of the vpws-instance represents a layer-2 cross-connection of 414 two endpoints. This model defines three possible types of endpoints, 415 ac, pw, and redundancy-grp, and allows a vpws-instance to cross- 416 connect any one type of endpoint to all other types of endpoint. 418 The bridge-table-instances container contains a list of bridge-table- 419 instance. Each entry of the bridge-table-instance represent a list 420 of endpoints that are member of the broadcast/bridge domain. The 421 bridge-table-instance endpoints introduces an additional forwarding 422 characteristics to a list of PWs and/or ACs. This split-horizon 423 forwarding behavior is typical in bridge-table instance. 425 The augmentation of ietf-l2vpn module is TBD. All IP addresses 426 defined in this module are currently scoped under global VRF/table. 428 4.4. Operational State 430 The operational state of L2VPN can be queried and obtained from the 431 read-only container defined in this document as "l2vpn-state". This 432 container holds the runtime information of the bridge-table-instance 433 and vpws-instance. 435 4.5. Open items 437 The design team has identified several attributes that need to be 438 included in the YANG tree. These attributes are listed here for the 439 purpose of keeping track and are candidates for future revisions. 441 These attributes are : 443 o configuration - vccv configuration knobs 445 o operational state - vccv and cw-negotiation 447 This list is not exhaustive and expected to grow. The list will 448 shrink as items are processed and included in the YANG tree. 450 4.6. Yang tree 452 module: ietf-l2vpn 453 +--rw l2vpn 454 | +--rw common 455 | | +--rw pw-templates 456 | | | +--rw pw-template* [name] 457 | | | +--rw name string 458 | | | +--rw mtu? uint32 459 | | | +--rw cw-negotiation? cw-negotiation-type 460 | | | +--rw tunnel-policy? string 461 | | +--rw redundancy-group-templates 462 | | +--rw redundancy-group-template* [name] 463 | | +--rw name string 464 | | +--rw protection-mode? enumeration 465 | | +--rw reroute-mode? enumeration 466 | | +--rw reroute-delay? uint16 467 | | +--rw dual-receive? boolean 468 | | +--rw revert? boolean 469 | | +--rw revert-delay? uint16 470 | +--rw bridge-table-instances 471 | | +--rw bridge-table-instance* [name] 472 | | +--rw name string 473 | | +--rw mtu? uint32 474 | | +--rw mac-aging-timer? uint32 475 | | +--rw pbb-parameters 476 | | | +--rw (component-type)? 477 | | | +--:(i-component) 478 | | | | +--rw i-tag? uint32 479 | | | | +--rw backbone-src-mac? yang:mac-address 480 | | | +--:(b-component) 481 | | | +--rw bind-b-component? bridge-table-instance-ref 482 | | +--rw bgp-parameters 483 | | | +--rw common 484 | | | | +--rw route-distinguisher? string 485 | | | | +--rw vpn-targets* [rt-value] 486 | | | | +--rw rt-value string 487 | | | | +--rw rt-type bgp-rt-type 488 | | | +--rw discovery 489 | | | | +--rw vpn-id? string 490 | | | +--rw signaling 491 | | | +--rw site-id? uint16 492 | | | +--rw site-range? uint16 493 | | +--rw evpn-instance? string 494 | | +--rw pw* [name] 495 | | | +--rw name string 496 | | | +--rw template? pw-template-ref 497 | | | +--rw mtu? uint32 498 | | | +--rw mac-withdraw? boolean 499 | | | +--rw cw-negotiation? cw-negotiation-type 500 | | | +--rw discovery-type? l2vpn-discovery-type 501 | | | +--rw signaling-type? l2vpn-signaling-type 502 | | | +--rw peer-ip? inet:ip-address 503 | | | +--rw pw-id? uint32 504 | | | +--rw transmit-label? uint32 505 | | | +--rw receive-label? uint32 506 | | | +--rw tunnel-policy? string 507 | | +--rw endpoint* [id] 508 | | +--rw id uint16 509 | | +--rw split-horizon-group? string 510 | | +--rw (ac-or-pw-or-redundancy-grp)? 511 | | +--:(ac) 512 | | | +--rw ac* [name] 513 | | | +--rw name string 514 | | +--:(pw) 515 | | | +--rw pw* [name] 516 | | | +--rw name -> ../../../pw/name 517 | | +--:(redundancy-grp) 518 | | +--rw (primary) 519 | | | +--:(primary-pw) 520 | | | | +--rw primary-pw* [name] 521 | | | | +--rw name -> ../../../pw/name 522 | | | +--:(primary-ac) 523 | | | +--rw primary-ac? string 524 | | +--rw (backup)? 525 | | | +--:(backup-pw) 526 | | | | +--rw backup-pw* [name] 527 | | | | +--rw name -> ../../../pw/name 528 | | | | +--rw precedence? uint32 529 | | | +--:(backup-ac) 530 | | | +--rw backup-ac? string 531 | | +--rw template? -> /l2vpn/common/redundancy-group-templates/redundancy-group-template/name 532 | | +--rw protection-mode? enumeration 533 | | +--rw reroute-mode? enumeration 534 | | +--rw reroute-delay? uint16 535 | | +--rw dual-receive? boolean 536 | | +--rw revert? boolean 537 | | +--rw revert-delay? uint16 538 | +--rw vpws-instances 539 | +--rw vpws-instance* [name] 540 | +--rw name string 541 | +--rw description? string 542 | +--rw mtu? uint32 543 | +--rw mac-aging-timer? uint32 544 | +--rw service-type? l2vpn-service-type 545 | +--rw discovery-type? l2vpn-discovery-type 546 | +--rw signaling-type l2vpn-signaling-type 547 | +--rw bgp-parameters 548 | | +--rw common 549 | | | +--rw route-distinguisher? string 550 | | | +--rw vpn-targets* [rt-value] 551 | | | +--rw rt-value string 552 | | | +--rw rt-type bgp-rt-type 553 | | +--rw discovery 554 | | | +--rw vpn-id? string 555 | | +--rw signaling 556 | | +--rw site-id? uint16 557 | | +--rw site-range? uint16 558 | +--rw pw* [name] 559 | | +--rw name string 560 | | +--rw template? pw-template-ref 561 | | +--rw mtu? uint32 562 | | +--rw mac-withdraw? boolean 563 | | +--rw cw-negotiation? cw-negotiation-type 564 | | +--rw vccv-ability? boolean 565 | | +--rw tunnel-policy? string 566 | | +--rw request-vlanid? uint16 567 | | +--rw vlan-tpid? string 568 | | +--rw ttl? uint8 569 | | +--rw (pw-type)? 570 | | +--:(ldp-or-static-pw) 571 | | | +--rw peer-ip? inet:ip-address 572 | | | +--rw pw-id? uint32 573 | | | +--rw icb? boolean 574 | | | +--rw transmit-label? uint32 575 | | | +--rw receive-label? uint32 576 | | +--:(bgp-pw) 577 | | | +--rw remote-pe-id? inet:ip-address 578 | | +--:(bgp-ad-pw) 579 | | +--rw remote-ve-id? uint16 580 | +--rw endpoint-a 581 | | +--rw (ac-or-pw-or-redundancy-grp)? 582 | | +--:(ac) 583 | | | +--rw ac? string 584 | | +--:(pw) 585 | | | +--rw pw? -> ../../pw/name 586 | | +--:(redundancy-grp) 587 | | +--rw (primary) 588 | | | +--:(primary-pw) 589 | | | | +--rw primary-pw? -> ../../pw/name 590 | | | +--:(primary-ac) 591 | | | +--rw primary-ac? string 592 | | +--rw (backup) 593 | | | +--:(backup-pw) 594 | | | | +--rw backup-pw? -> ../../pw/name 595 | | | +--:(backup-ac) 596 | | | +--rw backup-ac? string 597 | | +--rw template? -> /l2vpn/common/redundancy-group-templates/redundancy-group-template/name 598 | | +--rw protection-mode? enumeration 599 | | +--rw reroute-mode? enumeration 600 | | +--rw reroute-delay? uint16 601 | | +--rw dual-receive? boolean 602 | | +--rw revert? boolean 603 | | +--rw revert-delay? uint16 604 | +--rw endpoint-z 605 | +--rw (ac-or-pw-or-redundancy-grp)? 606 | +--:(ac) 607 | | +--rw ac? string 608 | +--:(pw) 609 | | +--rw pw? -> ../../pw/name 610 | +--:(redundancy-grp) 611 | +--rw (primary) 612 | | +--:(primary-pw) 613 | | | +--rw primary-pw? -> ../../pw/name 614 | | +--:(primary-ac) 615 | | +--rw primary-ac? string 616 | +--rw (backup) 617 | | +--:(backup-pw) 618 | | | +--rw backup-pw? -> ../../pw/name 619 | | +--:(backup-ac) 620 | | +--rw backup-ac? string 621 | +--rw template? -> /l2vpn/common/redundancy-group-templates/redundancy-group-template/name 622 | +--rw protection-mode? enumeration 623 | +--rw reroute-mode? enumeration 624 | +--rw reroute-delay? uint16 625 | +--rw dual-receive? boolean 626 | +--rw revert? boolean 627 | +--rw revert-delay? uint16 628 +--ro l2vpn-state 629 +--ro bridge-table-instances-state 630 | +--ro bridge-table-instance-state* [name] 631 | +--ro name string 632 | +--ro mtu? uint32 633 | +--ro mac-aging-timer? uint32 634 | +--ro pbb-parameters 635 | | +--ro (component-type)? 636 | | +--:(i-component) 637 | | | +--ro i-tag? uint32 638 | | | +--ro backbone-src-mac? yang:mac-address 639 | | +--:(b-component) 640 | | +--ro bind-b-component? string 641 | +--ro bgp-parameters 642 | | +--ro common 643 | | | +--ro route-distinguisher? string 644 | | | +--ro vpn-targets* [rt-value] 645 | | | +--ro rt-value string 646 | | | +--ro rt-type bgp-rt-type 647 | | +--ro discovery 648 | | | +--ro vpn-id? string 649 | | +--ro signaling 650 | | +--ro site-id? uint16 651 | | +--ro site-range? uint16 652 | +--ro evpn-instance-name? string 653 | +--ro endpoint* [id] 654 | +--ro id uint16 655 | +--ro split-horizon-group? string 656 | +--ro (ac-or-pw-or-redundancy-grp)? 657 | +--:(ac) 658 | | +--ro ac* [name] 659 | | +--ro name string 660 | | +--ro state? operational-state-type 661 | +--:(pw) 662 | | +--ro pw* [name] 663 | | +--ro name string 664 | | +--ro state? operational-state-type 665 | | +--ro mtu? uint32 666 | | +--ro mac-withdraw? boolean 667 | | +--ro cw-negotiation? cw-negotiation-type 668 | | +--ro discovery-type? l2vpn-discovery-type 669 | | +--ro signaling-type? l2vpn-signaling-type 670 | | +--ro peer-ip? inet:ip-address 671 | | +--ro pw-id? uint32 672 | | +--ro transmit-label? uint32 673 | | +--ro receive-label? uint32 674 | | +--ro tunnel-policy? string 675 | +--:(redundancy-grp) 676 | +--ro (primary) 677 | | +--:(primary-pw) 678 | | | +--ro primary-pw* [name] 679 | | | +--ro name string 680 | | | +--ro state? operational-state-type 681 | | | +--ro mtu? uint32 682 | | | +--ro mac-withdraw? boolean 683 | | | +--ro cw-negotiation? cw-negotiation-type 684 | | | +--ro discovery-type? l2vpn-discovery-type 685 | | | +--ro signaling-type? l2vpn-signaling-type 686 | | | +--ro peer-ip? inet:ip-address 687 | | | +--ro pw-id? uint32 688 | | | +--ro transmit-label? uint32 689 | | | +--ro receive-label? uint32 690 | | | +--ro tunnel-policy? string 691 | | +--:(primary-ac) 692 | | +--ro primary-ac 693 | | +--ro name? string 694 | | +--ro state? operational-state-type 695 | +--ro (backup)? 696 | | +--:(backup-pw) 697 | | | +--ro backup-pw* [name] 698 | | | +--ro name string 699 | | | +--ro state? operational-state-type 700 | | | +--ro mtu? uint32 701 | | | +--ro mac-withdraw? boolean 702 | | | +--ro cw-negotiation? cw-negotiation-type 703 | | | +--ro discovery-type? l2vpn-discovery-type 704 | | | +--ro signaling-type? l2vpn-signaling-type 705 | | | +--ro peer-ip? inet:ip-address 706 | | | +--ro pw-id? uint32 707 | | | +--ro transmit-label? uint32 708 | | | +--ro receive-label? uint32 709 | | | +--ro tunnel-policy? string 710 | | | +--ro precedence? uint32 711 | | +--:(backup-ac) 712 | | +--ro backup-ac 713 | | +--ro name? string 714 | | +--ro state? operational-state-type 715 | +--ro protection-mode? enumeration 716 | +--ro reroute-mode? enumeration 717 | +--ro reroute-delay? uint16 718 | +--ro dual-receive? boolean 719 | +--ro revert? boolean 720 | +--ro revert-delay? uint16 721 +--ro vpws-instances-state 722 +--ro vpws-instance-state* [name] 723 +--ro name string 724 +--ro mtu? uint32 725 +--ro mac-aging-timer? uint32 726 +--ro service-type? l2vpn-service-type 727 +--ro discovery-type? l2vpn-discovery-type 728 +--ro signaling-type l2vpn-signaling-type 729 +--ro bgp-parameters 730 | +--ro common 731 | | +--ro route-distinguisher? string 732 | | +--ro vpn-targets* [rt-value] 733 | | +--ro rt-value string 734 | | +--ro rt-type bgp-rt-type 735 | +--ro discovery 736 | | +--ro vpn-id? string 737 | +--ro signaling 738 | +--ro site-id? uint16 739 | +--ro site-range? uint16 740 +--ro endpoint-a 741 | +--ro (ac-or-pw-or-redundancy-grp)? 742 | +--:(ac) 743 | | +--ro ac 744 | | +--ro name? string 745 | | +--ro state? operational-state-type 746 | +--:(pw) 747 | | +--ro pw 748 | | +--ro name? string 749 | | +--ro state? operational-state-type 750 | | +--ro mtu? uint32 751 | | +--ro mac-withdraw? boolean 752 | | +--ro cw-negotiation? cw-negotiation-type 753 | | +--ro vccv-ability? boolean 754 | | +--ro tunnel-policy? string 755 | | +--ro request-vlanid? uint16 756 | | +--ro vlan-tpid? string 757 | | +--ro ttl? uint8 758 | | +--ro (pw-type)? 759 | | +--:(ldp-or-static-pw) 760 | | | +--ro peer-ip? inet:ip-address 761 | | | +--ro pw-id? uint32 762 | | | +--ro icb? boolean 763 | | | +--ro transmit-label? uint32 764 | | | +--ro receive-label? uint32 765 | | +--:(bgp-pw) 766 | | | +--ro remote-pe-id? inet:ip-address 767 | | +--:(bgp-ad-pw) 768 | | +--ro remote-ve-id? uint16 769 | +--:(redundancy-grp) 770 | +--ro (primary) 771 | | +--:(primary-pw) 772 | | | +--ro primary-pw 773 | | | +--ro name? string 774 | | | +--ro state? operational-state-type 775 | | | +--ro mtu? uint32 776 | | | +--ro mac-withdraw? boolean 777 | | | +--ro cw-negotiation? cw-negotiation-type 778 | | | +--ro vccv-ability? boolean 779 | | | +--ro tunnel-policy? string 780 | | | +--ro request-vlanid? uint16 781 | | | +--ro vlan-tpid? string 782 | | | +--ro ttl? uint8 783 | | | +--ro (pw-type)? 784 | | | +--:(ldp-or-static-pw) 785 | | | | +--ro peer-ip? inet:ip-address 786 | | | | +--ro pw-id? uint32 787 | | | | +--ro icb? boolean 788 | | | | +--ro transmit-label? uint32 789 | | | | +--ro receive-label? uint32 790 | | | +--:(bgp-pw) 791 | | | | +--ro remote-pe-id? inet:ip-address 792 | | | +--:(bgp-ad-pw) 793 | | | +--ro remote-ve-id? uint16 794 | | +--:(primary-ac) 795 | | +--ro primary-ac-name? string 796 | +--ro (backup) 797 | | +--:(backup-pw) 798 | | | +--ro backup-pw 799 | | | +--ro name? string 800 | | | +--ro state? operational-state-type 801 | | | +--ro mtu? uint32 802 | | | +--ro mac-withdraw? boolean 803 | | | +--ro cw-negotiation? cw-negotiation-type 804 | | | +--ro vccv-ability? boolean 805 | | | +--ro tunnel-policy? string 806 | | | +--ro request-vlanid? uint16 807 | | | +--ro vlan-tpid? string 808 | | | +--ro ttl? uint8 809 | | | +--ro (pw-type)? 810 | | | +--:(ldp-or-static-pw) 811 | | | | +--ro peer-ip? inet:ip-address 812 | | | | +--ro pw-id? uint32 813 | | | | +--ro icb? boolean 814 | | | | +--ro transmit-label? uint32 815 | | | | +--ro receive-label? uint32 816 | | | +--:(bgp-pw) 817 | | | | +--ro remote-pe-id? inet:ip-address 818 | | | +--:(bgp-ad-pw) 819 | | | +--ro remote-ve-id? uint16 820 | | +--:(backup-ac) 821 | | +--ro backup-ac-name? string 822 | +--ro protection-mode? enumeration 823 | +--ro reroute-mode? enumeration 824 | +--ro reroute-delay? uint16 825 | +--ro dual-receive? boolean 826 | +--ro revert? boolean 827 | +--ro revert-delay? uint16 828 +--ro endpoint-z 829 +--ro (ac-or-pw-or-redundancy-grp)? 830 +--:(ac) 831 | +--ro ac 832 | +--ro name? string 833 | +--ro state? operational-state-type 834 +--:(pw) 835 | +--ro pw 836 | +--ro name? string 837 | +--ro state? operational-state-type 838 | +--ro mtu? uint32 839 | +--ro mac-withdraw? boolean 840 | +--ro cw-negotiation? cw-negotiation-type 841 | +--ro vccv-ability? boolean 842 | +--ro tunnel-policy? string 843 | +--ro request-vlanid? uint16 844 | +--ro vlan-tpid? string 845 | +--ro ttl? uint8 846 | +--ro (pw-type)? 847 | +--:(ldp-or-static-pw) 848 | | +--ro peer-ip? inet:ip-address 849 | | +--ro pw-id? uint32 850 | | +--ro icb? boolean 851 | | +--ro transmit-label? uint32 852 | | +--ro receive-label? uint32 853 | +--:(bgp-pw) 854 | | +--ro remote-pe-id? inet:ip-address 855 | +--:(bgp-ad-pw) 856 | +--ro remote-ve-id? uint16 857 +--:(redundancy-grp) 858 +--ro (primary) 859 | +--:(primary-pw) 860 | | +--ro primary-pw 861 | | +--ro name? string 862 | | +--ro state? operational-state-type 863 | | +--ro mtu? uint32 864 | | +--ro mac-withdraw? boolean 865 | | +--ro cw-negotiation? cw-negotiation-type 866 | | +--ro vccv-ability? boolean 867 | | +--ro tunnel-policy? string 868 | | +--ro request-vlanid? uint16 869 | | +--ro vlan-tpid? string 870 | | +--ro ttl? uint8 871 | | +--ro (pw-type)? 872 | | +--:(ldp-or-static-pw) 873 | | | +--ro peer-ip? inet:ip-address 874 | | | +--ro pw-id? uint32 875 | | | +--ro icb? boolean 876 | | | +--ro transmit-label? uint32 877 | | | +--ro receive-label? uint32 878 | | +--:(bgp-pw) 879 | | | +--ro remote-pe-id? inet:ip-address 880 | | +--:(bgp-ad-pw) 881 | | +--ro remote-ve-id? uint16 882 | +--:(primary-ac) 883 | +--ro primary-ac-name? string 884 +--ro (backup) 885 | +--:(backup-pw) 886 | | +--ro backup-pw 887 | | +--ro name? string 888 | | +--ro state? operational-state-type 889 | | +--ro mtu? uint32 890 | | +--ro mac-withdraw? boolean 891 | | +--ro cw-negotiation? cw-negotiation-type 892 | | +--ro vccv-ability? boolean 893 | | +--ro tunnel-policy? string 894 | | +--ro request-vlanid? uint16 895 | | +--ro vlan-tpid? string 896 | | +--ro ttl? uint8 897 | | +--ro (pw-type)? 898 | | +--:(ldp-or-static-pw) 899 | | | +--ro peer-ip? inet:ip-address 900 | | | +--ro pw-id? uint32 901 | | | +--ro icb? boolean 902 | | | +--ro transmit-label? uint32 903 | | | +--ro receive-label? uint32 904 | | +--:(bgp-pw) 905 | | | +--ro remote-pe-id? inet:ip-address 906 | | +--:(bgp-ad-pw) 907 | | +--ro remote-ve-id? uint16 908 | +--:(backup-ac) 909 | +--ro backup-ac-name? string 910 +--ro protection-mode? enumeration 911 +--ro reroute-mode? enumeration 912 +--ro reroute-delay? uint16 913 +--ro dual-receive? boolean 914 +--ro revert? boolean 915 +--ro revert-delay? uint16 917 Figure 2 919 5. YANG Module 921 The L2VPN configuration container is logically divided into following 922 high level config areas: 924 file "ietf-l2vpn@2016-03-07.yang" 925 module ietf-l2vpn { 926 namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn"; 927 prefix "l2vpn"; 929 import ietf-inet-types { 930 prefix "inet"; 931 } 933 import ietf-yang-types { 934 prefix "yang"; 935 } 937 organization "ietf"; 938 contact "ietf"; 939 description "l2vpn"; 941 revision "2016-03-07" { 942 description "Third revision " + 943 " - Changed the module name to ietf-l2vpn " + 944 " - Merged EVPN into L2VPN " + 945 " - Eliminated the definitions of attachment " + 946 " circuit with the intention to reuse other " + 947 " layer-2 definitions " + 948 " - Added state branch"; 949 reference ""; 950 } 952 revision "2015-10-08" { 953 description "Second revision " + 954 " - Added container vpls-instances " + 955 " - Rearranged groupings and typedefs to be " + 956 " reused across vpls-instance and vpws-instances"; 957 reference ""; 958 } 960 revision "2015-06-30" { 961 description "Initial revision"; 962 reference ""; 963 } 965 /* identities */ 967 identity link-discovery-protocol { 968 description "Base identiy from which identities describing " + 969 "link discovery protocols are derived."; 970 } 972 identity lacp { 973 base "link-discovery-protocol"; 974 description "This identity represents LACP"; 975 } 977 identity lldp { 978 base "link-discovery-protocol"; 979 description "This identity represents LLDP"; 980 } 982 identity bpdu { 983 base "link-discovery-protocol"; 984 description "This identity represens BPDU"; 985 } 987 identity cpd { 988 base "link-discovery-protocol"; 989 description "This identity represents CPD"; 990 } 992 identity udld { 993 base "link-discovery-protocol"; 994 description "This identity represens UDLD"; 995 } 996 /* typedefs */ 998 typedef l2vpn-service-type { 999 type enumeration { 1000 enum ethernet { 1001 description "Ethernet service"; 1002 } 1003 enum ATM { 1004 description "Asynchronous Transfer Mode"; 1005 } 1006 enum FR { 1007 description "Frame-Relay"; 1008 } 1009 enum TDM { 1010 description "Time Division Multiplexing"; 1011 } 1012 } 1013 description "L2VPN service type"; 1014 } 1016 typedef l2vpn-discovery-type { 1017 type enumeration { 1018 enum manual { 1019 description "Manual configuration"; 1020 } 1021 enum bgp-ad { 1022 description "Border Gateway Protocol (BGP) auto-discovery"; 1023 } 1024 enum ldp { 1025 description "Label Distribution Protocol (LDP)"; 1026 } 1027 enum mixed { 1028 description "Mixed"; 1029 } 1030 } 1031 description "L2VPN discovery type"; 1032 } 1034 typedef l2vpn-signaling-type { 1035 type enumeration { 1036 enum static { 1037 description "Static configuration of labels (no signaling)"; 1038 } 1039 enum ldp { 1040 description "Label Distribution Protocol (LDP) signaling"; 1041 } 1042 enum bgp { 1043 description "Border Gateway Protocol (BGP) signaling"; 1045 } 1046 enum mixed { 1047 description "Mixed"; 1048 } 1049 } 1050 description "L2VPN signaling type"; 1051 } 1053 typedef bgp-rt-type { 1054 type enumeration { 1055 enum import { 1056 description "For import"; 1057 } 1058 enum export { 1059 description "For export"; 1060 } 1061 enum both { 1062 description "For both import and export"; 1063 } 1064 } 1065 description "BGP route-target type. Import from BGP YANG"; 1066 } 1068 typedef cw-negotiation-type { 1069 type enumeration { 1070 enum "non-preferred" { 1071 description "No preference for control-word"; 1072 } 1073 enum "preferred" { 1074 description "Prefer to have control-word negotiation"; 1075 } 1076 } 1077 description "control-word negotiation preference type"; 1078 } 1080 typedef link-discovery-protocol-type { 1081 type identityref { 1082 base "link-discovery-protocol"; 1083 } 1084 description "This type is used to identify " + 1085 "link discovery protocol"; 1086 } 1088 typedef pbb-component-type { 1089 type enumeration { 1090 enum "b-component" { 1091 description "Identifies as a b-component"; 1092 } 1093 enum "i-component" { 1094 description "Identifies as an i-component"; 1095 } 1096 } 1097 description "This type is used to identify " + 1098 "the type of PBB component"; 1099 } 1101 typedef pw-template-ref { 1102 type leafref { 1103 path "/l2vpn/common/pw-templates/pw-template/name"; 1104 } 1105 description "pw-template-ref"; 1106 } 1108 typedef redundancy-group-template-ref { 1109 type leafref { 1110 path "/l2vpn/common/redundancy-group-templates" + 1111 "/redundancy-group-template/name"; 1112 } 1113 description "redundancy-group-template-ref"; 1114 } 1116 typedef bridge-table-instance-ref { 1117 type leafref { 1118 path "/l2vpn/bridge-table-instances" + 1119 "/bridge-table-instance/name"; 1120 } 1121 description "bridge-table-instance-ref"; 1122 } 1124 typedef operational-state-type { 1125 type enumeration { 1126 enum 'up' { 1127 description "Operational state is up"; 1128 } 1129 enum 'down' { 1130 description "Operational state is down"; 1131 } 1132 } 1133 description "operational-state-type"; 1134 } 1136 /* groupings */ 1138 grouping pbb-parameters-grp { 1139 description "PBB parameters grouping"; 1140 container pbb-parameters { 1141 description "pbb-parameters"; 1142 choice component-type { 1143 description "PBB component type"; 1144 case i-component { 1145 leaf i-tag { 1146 type uint32; 1147 description "i-tag"; 1148 } 1149 leaf backbone-src-mac { 1150 type yang:mac-address; 1151 description "backbone-src-mac"; 1152 } 1153 } 1154 case b-component { 1155 leaf bind-b-component { 1156 type bridge-table-instance-ref; 1157 description "Reference to the associated b-component"; 1158 } 1159 } 1160 } 1161 } 1162 } 1164 grouping pbb-parameters-state-grp { 1165 description "PBB parameters grouping"; 1166 container pbb-parameters { 1167 description "pbb-parameters"; 1168 choice component-type { 1169 description "PBB component type"; 1170 case i-component { 1171 leaf i-tag { 1172 type uint32; 1173 description "i-tag"; 1174 } 1175 leaf backbone-src-mac { 1176 type yang:mac-address; 1177 description "backbone-src-mac"; 1178 } 1179 } 1180 case b-component { 1181 leaf bind-b-component { 1182 type string; 1183 description "Name of the associated b-component"; 1184 } 1185 } 1186 } 1187 } 1188 } 1189 grouping bgp-parameters-grp { 1190 description "BGP parameters grouping"; 1191 container bgp-parameters { 1192 description "Parameters for BGP"; 1193 container common { 1194 when "../../discovery-type = 'bgp-ad'" { 1195 description "Check discovery type: " + 1196 "Can only configure BGP discovery if " + 1197 "discovery type is BGP-AD"; 1198 } 1199 description "Common BGP parameters"; 1200 leaf route-distinguisher { 1201 type string; 1202 description "BGP RD"; 1203 } 1204 list vpn-targets { 1205 key rt-value; 1206 description "Route Targets"; 1207 leaf rt-value { 1208 type string; 1209 description "Route-Target value"; 1210 } 1211 leaf rt-type { 1212 type bgp-rt-type; 1213 mandatory true; 1214 description "Type of RT"; 1215 } 1216 } 1217 } 1218 container discovery { 1219 when "../../discovery-type = 'bgp-ad'" { 1220 description "BGP parameters for discovery: " + 1221 "Can only configure BGP discovery if " + 1222 "discovery type is BGP-AD"; 1223 } 1224 description "BGP parameters for discovery"; 1225 leaf vpn-id { 1226 type string; 1227 description "VPN ID"; 1228 } 1229 } 1230 container signaling { 1231 when "../../signaling-type = 'bgp'" { 1232 description "Check signaling type: " + 1233 "Can only configure BGP signaling if " + 1234 "signaling type is BGP"; 1235 } 1236 description "BGP parameters for signaling"; 1237 leaf site-id { 1238 type uint16; 1239 description "Site ID"; 1240 } 1241 leaf site-range { 1242 type uint16; 1243 description "Site Range"; 1244 } 1245 } 1246 } 1247 } 1249 grouping pw-type-grp { 1250 description "pseudowire type grouping"; 1251 choice pw-type { 1252 description "A choice of pseudowire type"; 1253 case ldp-or-static-pw { 1254 leaf peer-ip { 1255 type inet:ip-address; 1256 description "peer IP address"; 1257 } 1258 leaf pw-id { 1259 type uint32; 1260 description "pseudowire id"; 1261 } 1262 leaf icb { 1263 type boolean; 1264 description "inter-chassis backup"; 1265 } 1266 leaf transmit-label { 1267 type uint32; 1268 description "transmit lable"; 1269 } 1270 leaf receive-label { 1271 type uint32; 1272 description "receive label"; 1273 } 1274 } 1275 case bgp-pw { 1276 leaf remote-pe-id { 1277 type inet:ip-address; 1278 description "remote pe id"; 1279 } 1280 } 1281 case bgp-ad-pw { 1282 leaf remote-ve-id { 1283 type uint16; 1284 description "remote ve id"; 1286 } 1287 } 1288 } 1289 } 1291 grouping bridge-table-instance-pw-list-grp { 1292 description "bridge-table-instance-pw-list-grp"; 1293 list pw { 1294 key "name"; 1295 leaf name { 1296 type leafref { 1297 path "../../../pw/name"; 1298 } 1299 description "name of pseudowire"; 1300 } 1301 description "A bridge table instance's pseudowire list"; 1302 } 1303 } 1305 grouping bridge-table-instance-ac-list-grp { 1306 description "bridge-table-instance-ac-list-grp"; 1307 list ac { 1308 key "name"; 1309 leaf name { 1310 type string; 1311 description "Name of attachment circuit. This field " + 1312 "is intended to reference standardized " + 1313 "layer-2 definitions."; 1314 } 1315 description "A bridge table instance's " + 1316 "attachment circuit list"; 1317 } 1318 } 1320 grouping redundancy-group-properties-grp { 1321 description "redundancy-group-properties-grp"; 1322 leaf protection-mode { 1323 type enumeration { 1324 enum "frr" { 1325 value 0; 1326 description "fast reroute"; 1327 } 1328 enum "master-slave" { 1329 value 1; 1330 description "master-slave"; 1331 } 1332 enum "independent" { 1333 value 2; 1334 description "independent"; 1335 } 1336 } 1337 description "protection-mode"; 1338 } 1339 leaf reroute-mode { 1340 type enumeration { 1341 enum "immediate" { 1342 value 0; 1343 description "immediate reroute"; 1344 } 1345 enum "delayed" { 1346 value 1; 1347 description "delayed reroute"; 1348 } 1349 enum "never" { 1350 value 2; 1351 description "never reroute"; 1352 } 1353 } 1354 description "reroute-mode"; 1355 } 1356 leaf reroute-delay { 1357 when "../reroute-mode = 'delayed'" { 1358 description "Specify amount of time to delay reroute " + 1359 "only when delayed route is configured"; 1360 } 1361 type uint16; 1362 description "amount of time to delay reroute"; 1363 } 1364 leaf dual-receive { 1365 type boolean; 1366 description 1367 "allow extra traffic to be carried by backup"; 1368 } 1369 leaf revert { 1370 type boolean; 1371 description "allow forwarding to revert to primary " + 1372 "after restoring primary"; 1373 /* This is called "revertive" during the discussion. */ 1374 } 1375 leaf revert-delay { 1376 when "../revert = 'true'" { 1377 description "Specify the amount of time to wait to revert " + 1378 "to primary only if reversion is configured"; 1379 } 1380 type uint16; 1381 description "amount ot time to wait to revert to primary"; 1382 /* This is called "wtr" during discussion. */ 1383 } 1384 } 1386 grouping bridge-table-instance-endpoint-grp { 1387 description "A bridge table instance's endpoint"; 1388 choice ac-or-pw-or-redundancy-grp { 1389 description "A choice ofattachment circuit or " + 1390 "pseudowire or redundancy group"; 1391 case ac { 1392 uses bridge-table-instance-ac-list-grp; 1393 description "reference to attachment circuits"; 1394 } 1395 case pw { 1396 uses bridge-table-instance-pw-list-grp; 1397 description "reference to pseudowires"; 1398 } 1399 case redundancy-grp { 1400 choice primary { 1401 mandatory true; 1402 description "primary options"; 1403 case primary-pw { 1404 description "primary-pw"; 1405 list primary-pw { 1406 key "name"; 1407 leaf name { 1408 type leafref { 1409 path "../../../pw/name"; 1410 } 1411 description "Reference a pseudowire"; 1412 } 1413 description "A list of primary pseudowires"; 1414 } 1415 } 1416 case primary-ac { 1417 description "primary-ac"; 1418 leaf primary-ac { 1419 type string; 1420 description "Name of primary attachment circuit. " + 1421 "This field is intended to reference " + 1422 "standardized layer-2 definitions."; 1423 } 1424 } 1425 } 1426 choice backup { 1427 description "backup options"; 1428 case backup-pw { 1429 list backup-pw { 1430 key "name"; 1431 leaf name { 1432 type leafref { 1433 path "../../../pw/name"; 1434 } 1435 description "Reference an attachment circuit"; 1436 } 1437 leaf precedence { 1438 type uint32; 1439 description "precedence of the pseudowire"; 1440 } 1441 description "A list of backup pseudowires"; 1442 } 1443 } 1444 case backup-ac { 1445 leaf backup-ac { 1446 type string; 1447 description "Name of backup attachment circuit. " + 1448 "This field is intended to reference " + 1449 "standardized layer-2 definitions."; 1450 } 1451 description "backup-ac"; 1452 } 1453 } 1454 leaf template { 1455 type leafref { 1456 path "/l2vpn/common/redundancy-group-templates" + 1457 "/redundancy-group-template/name"; 1458 } 1459 description "Reference a redundancy group " + 1460 "properties template"; 1461 } 1462 uses redundancy-group-properties-grp; 1463 } 1464 } 1465 } 1467 grouping vpws-endpoint-grp { 1468 description 1469 "A vpws-endpoint could either be an ac or a pw"; 1470 choice ac-or-pw-or-redundancy-grp { 1471 description "A choice ofattachment circuit or " + 1472 "pseudowire or redundancy group"; 1473 case ac { 1474 leaf ac { 1475 type string; 1476 description "Name of attachment circuit. This " + 1477 "field is intended to reference " + 1478 "standardized layer-2 definitions."; 1479 } 1480 } 1481 case pw { 1482 leaf pw { 1483 type leafref { 1484 path "../../pw/name"; 1485 } 1486 description "reference to a pseudowire"; 1487 } 1488 } 1489 case redundancy-grp { 1490 choice primary { 1491 mandatory true; 1492 description "primary options"; 1493 case primary-pw { 1494 leaf primary-pw { 1495 type leafref { 1496 path "../../pw/name"; 1497 } 1498 description "primary pseudowire"; 1499 } 1500 } 1501 case primary-ac { 1502 leaf primary-ac { 1503 type string; 1504 description "Name of primary attachment circuit. " + 1505 "This field is intended to reference " + 1506 "standardized layer-2 definitions."; 1507 } 1508 } 1509 } 1510 choice backup { 1511 mandatory true; 1512 description "backup options"; 1513 case backup-pw { 1514 leaf backup-pw { 1515 type leafref { 1516 path "../../pw/name"; 1517 } 1518 description "backup pseudowire"; 1519 } 1520 } 1521 case backup-ac { 1522 leaf backup-ac { 1523 type string; 1524 description "Name of backup attachment circuit. " + 1525 "This field is intended to reference " + 1526 "standardized layer-2 definitions."; 1527 } 1528 } 1529 } 1530 leaf template { 1531 type leafref { 1532 path "/l2vpn/common/redundancy-group-templates" + 1533 "/redundancy-group-template/name"; 1534 } 1535 description "Reference a redundancy group " + 1536 "properties template"; 1537 } 1538 uses redundancy-group-properties-grp; 1539 } 1540 } 1541 } 1543 grouping vpws-endpoint-state-grp { 1544 description 1545 "A vpws-endpoint could either be an ac or a pw"; 1546 choice ac-or-pw-or-redundancy-grp { 1547 description "A choice ofattachment circuit or " + 1548 "pseudowire or redundancy group"; 1549 case ac { 1550 container ac { 1551 description "ac"; 1552 uses ac-state-grp; 1553 } 1554 } 1555 case pw { 1556 container pw { 1557 description "pw"; 1558 uses vpws-pw-state-grp; 1559 } 1560 } 1561 case redundancy-grp { 1562 choice primary { 1563 mandatory true; 1564 description "primary options"; 1565 case primary-pw { 1566 container primary-pw { 1567 description "primary pseudowire"; 1568 uses vpws-pw-state-grp; 1569 } 1570 } 1571 case primary-ac { 1572 leaf primary-ac-name { 1573 type string; 1574 description "Name of primary attachment circuit. " + 1575 "This field is intended to reference " + 1576 "standardized layer-2 definitions."; 1577 } 1578 } 1579 } 1580 choice backup { 1581 mandatory true; 1582 description "backup options"; 1583 case backup-pw { 1584 container backup-pw { 1585 description "backup pseudowire"; 1586 uses vpws-pw-state-grp; 1587 } 1588 } 1589 case backup-ac { 1590 leaf backup-ac-name { 1591 type string; 1592 description "Name of backup attachment circuit. " + 1593 "This field is intended to reference " + 1594 "standardized layer-2 definitions."; 1595 } 1596 } 1597 } 1598 uses redundancy-group-properties-grp; 1599 } 1600 } 1601 } 1603 grouping vpls-pw-state-grp { 1604 description "vpls-pw-state-grp"; 1605 leaf name { 1606 type string; 1607 description "pseudowire name"; 1608 } 1609 leaf state { 1610 type operational-state-type; 1611 description "pseudowire up/down state"; 1612 } 1613 leaf mtu { 1614 type uint32; 1615 description "pseudowire mtu"; 1616 } 1617 leaf mac-withdraw { 1618 type boolean; 1619 description "MAC withdraw is enabled (true) or disabled (false)"; 1620 } 1621 leaf cw-negotiation { 1622 type cw-negotiation-type; 1623 description "cw-negotiation"; 1624 } 1625 leaf discovery-type { 1626 type l2vpn-discovery-type; 1627 description "VPLS discovery type"; 1628 } 1629 leaf signaling-type { 1630 type l2vpn-signaling-type; 1631 description "VPLS signaling type"; 1632 } 1633 leaf peer-ip { 1634 type inet:ip-address; 1635 description "peer IP address"; 1636 } 1637 leaf pw-id { 1638 type uint32; 1639 description "pseudowire id"; 1640 } 1641 leaf transmit-label { 1642 type uint32; 1643 description "transmit lable"; 1644 } 1645 leaf receive-label { 1646 type uint32; 1647 description "receive label"; 1648 } 1649 leaf tunnel-policy { 1650 type string; 1651 description "tunnel policy name"; 1652 } 1653 } 1655 grouping ac-state-grp { 1656 description "vpls-ac-state-grp"; 1657 leaf name { 1658 type string; 1659 description "attachment circuit name"; 1660 } 1661 leaf state { 1662 type operational-state-type; 1663 description "attachment circuit up/down state"; 1664 } 1665 } 1667 grouping vpws-pw-state-grp { 1668 description "vpws-pw-state-grp"; 1669 leaf name { 1670 type string; 1671 description "pseudowire name"; 1672 } 1673 leaf state { 1674 type operational-state-type; 1675 description "pseudowire operation state up/down"; 1676 } 1677 leaf mtu { 1678 type uint32; 1679 description "PW MTU"; 1680 } 1681 leaf mac-withdraw { 1682 type boolean; 1683 description "MAC withdraw is enabled (ture) or disabled (false)"; 1684 } 1685 leaf cw-negotiation { 1686 type cw-negotiation-type; 1687 description "Override the control-word negotiation " + 1688 "preference specified in the " + 1689 "pseudowire template."; 1690 } 1691 leaf vccv-ability { 1692 type boolean; 1693 description "vccv-ability"; 1694 } 1695 leaf tunnel-policy { 1696 type string; 1697 description "Used to override the tunnel policy name " + 1698 "specified in the pseduowire template"; 1699 } 1700 leaf request-vlanid { 1701 type uint16; 1702 description "request vlanid"; 1703 } 1704 leaf vlan-tpid { 1705 type string; 1706 description "vlan tpid"; 1707 } 1708 leaf ttl { 1709 type uint8; 1710 description "time-to-live"; 1711 } 1712 uses pw-type-grp; 1713 } 1715 /* L2VPN YANG Model */ 1717 container l2vpn { 1718 description "l2vpn"; 1719 container common { 1720 description "common l2pn attributes"; 1721 container pw-templates { 1722 description "pw-templates"; 1723 list pw-template { 1724 key "name"; 1725 description "pw-template"; 1726 leaf name { 1727 type string; 1728 description "name"; 1729 } 1730 leaf mtu { 1731 type uint32; 1732 description "pseudowire mtu"; 1733 } 1734 leaf cw-negotiation { 1735 type cw-negotiation-type; 1736 default "preferred"; 1737 description 1738 "control-word negotiation preference"; 1739 } 1740 leaf tunnel-policy { 1741 type string; 1742 description "tunnel policy name"; 1743 } 1744 } 1745 } 1746 container redundancy-group-templates { 1747 description "redundancy group templates"; 1748 list redundancy-group-template { 1749 key "name"; 1750 description "redundancy-group-template"; 1751 leaf name { 1752 type string; 1753 description "name"; 1754 } 1755 uses redundancy-group-properties-grp; 1756 } 1757 } 1758 } 1759 container bridge-table-instances { 1760 /* To be fleshed out in future revisions */ 1761 description "bridge-table-instances"; 1762 list bridge-table-instance { 1763 key "name"; 1764 description "A bridge table instance"; 1765 leaf name { 1766 type string; 1767 description "Name of a bridge table instance"; 1768 } 1769 leaf mtu { 1770 type uint32; 1771 description "Bridge MTU"; 1772 } 1773 leaf mac-aging-timer { 1774 type uint32; 1775 description "mac-aging-timer"; 1776 } 1777 uses pbb-parameters-grp; 1778 uses bgp-parameters-grp; 1779 leaf evpn-instance { 1780 type string; 1781 description "Eventual reference to standard EVPN instance"; 1782 } 1783 list pw { 1784 key "name"; 1785 description "pseudowire"; 1786 leaf name { 1787 type string; 1788 description "pseudowire name"; 1789 } 1790 leaf template { 1791 type pw-template-ref; 1792 description "pseudowire template"; 1793 } 1794 leaf mtu { 1795 type uint32; 1796 description "PW MTU"; 1797 } 1798 leaf mac-withdraw { 1799 type boolean; 1800 default false; 1801 description "Enable (true) or disable (false) MAC withdraw"; 1802 } 1803 leaf cw-negotiation { 1804 type cw-negotiation-type; 1805 description "cw-negotiation"; 1806 } 1807 leaf discovery-type { 1808 type l2vpn-discovery-type; 1809 description "VPLS discovery type"; 1810 } 1811 leaf signaling-type { 1812 type l2vpn-signaling-type; 1813 description "VPLS signaling type"; 1815 } 1816 leaf peer-ip { 1817 type inet:ip-address; 1818 description "peer IP address"; 1819 } 1820 leaf pw-id { 1821 type uint32; 1822 description "pseudowire id"; 1823 } 1824 leaf transmit-label { 1825 type uint32; 1826 description "transmit lable"; 1827 } 1828 leaf receive-label { 1829 type uint32; 1830 description "receive label"; 1831 } 1832 leaf tunnel-policy { 1833 type string; 1834 description "tunnel policy name"; 1835 } 1836 } 1837 list endpoint { 1838 key "id"; 1839 leaf id { 1840 type uint16; 1841 description "endpoint ID"; 1842 } 1843 leaf split-horizon-group { 1844 type string; 1845 description "Identify a split horizon group"; 1846 } 1847 uses bridge-table-instance-endpoint-grp; 1848 description "List of endpoints"; 1849 } 1850 } 1851 } 1852 container vpws-instances { 1853 description "vpws-instances"; 1854 list vpws-instance { 1855 key "name"; 1856 description "A VPWS instance"; 1857 leaf name { 1858 type string; 1859 description "Name of VPWS instance"; 1860 } 1861 leaf description { 1862 type string; 1863 description "Description of the VPWS instance"; 1864 } 1865 leaf mtu { 1866 type uint32; 1867 description "VPWS MTU"; 1868 } 1869 leaf mac-aging-timer { 1870 type uint32; 1871 description "mac-aging-timer"; 1872 } 1873 leaf service-type { 1874 type l2vpn-service-type; 1875 default ethernet; 1876 description "VPWS service type"; 1877 } 1878 leaf discovery-type { 1879 type l2vpn-discovery-type; 1880 default manual; 1881 description "VPWS discovery type"; 1882 } 1883 leaf signaling-type { 1884 type l2vpn-signaling-type; 1885 mandatory true; 1886 description "VPWS signaling type"; 1887 } 1888 uses bgp-parameters-grp; 1889 list pw { 1890 key "name"; 1891 description "pseudowire"; 1892 leaf name { 1893 type string; 1894 description "pseudowire name"; 1895 } 1896 leaf template { 1897 type pw-template-ref; 1898 description "pseudowire template"; 1899 } 1900 leaf mtu { 1901 type uint32; 1902 description "PW MTU"; 1903 } 1904 leaf mac-withdraw { 1905 type boolean; 1906 default false; 1907 description "Enable (true) or disable (false) MAC withdraw"; 1908 } 1909 leaf cw-negotiation { 1910 type cw-negotiation-type; 1911 default "preferred"; 1912 description "Override the control-word negotiation " + 1913 "preference specified in the " + 1914 "pseudowire template."; 1915 } 1916 leaf vccv-ability { 1917 type boolean; 1918 description "vccvability"; 1919 } 1920 leaf tunnel-policy { 1921 type string; 1922 description "Used to override the tunnel policy name " + 1923 "specified in the pseduowire template"; 1924 } 1925 leaf request-vlanid { 1926 type uint16; 1927 description "request vlanid"; 1928 } 1929 leaf vlan-tpid { 1930 type string; 1931 description "vlan tpid"; 1932 } 1933 leaf ttl { 1934 type uint8; 1935 description "time-to-live"; 1936 } 1937 uses pw-type-grp; 1938 } 1939 container endpoint-a { 1940 description "endpoint-a"; 1941 uses vpws-endpoint-grp; 1942 } 1943 container endpoint-z { 1944 description "endpoint-z"; 1945 uses vpws-endpoint-grp; 1946 } 1947 } 1948 } 1949 } 1951 container l2vpn-state { 1952 config false; 1953 description "l2vpn state"; 1954 container bridge-table-instances-state { 1955 /* To be fleshed out in future revisions */ 1956 description "bridge-table-instances-state"; 1957 list bridge-table-instance-state { 1958 key "name"; 1959 description "A bridge table instance's state data"; 1960 leaf name { 1961 type string; 1962 description "Name of a bridge table instance"; 1963 } 1964 leaf mtu { 1965 type uint32; 1966 description "Bridge MTU"; 1967 } 1968 leaf mac-aging-timer { 1969 type uint32; 1970 description "mac-aging-timer"; 1971 } 1972 uses pbb-parameters-state-grp; 1973 uses bgp-parameters-grp; 1974 leaf evpn-instance-name { 1975 type string; 1976 description "Name of associated an EVPN instance"; 1977 } 1978 list endpoint { 1979 key "id"; 1980 leaf id { 1981 type uint16; 1982 description "endpoint ID"; 1983 } 1984 leaf split-horizon-group { 1985 type string; 1986 description "Identify a split horizon group"; 1987 } 1988 choice ac-or-pw-or-redundancy-grp { 1989 description "A choice ofattachment circuit or " + 1990 "pseudowire or redundancy group"; 1991 case ac { 1992 list ac { 1993 key "name"; 1994 uses ac-state-grp; 1995 description "A list of attachment circuits"; 1996 } 1997 description "attachment circuit endpoint state"; 1998 } 1999 case pw { 2000 list pw { 2001 key "name"; 2002 uses vpls-pw-state-grp; 2003 description "A list of pseudowires"; 2004 } 2005 description "pseudowire endpoint state"; 2006 } 2007 case redundancy-grp { 2008 choice primary { 2009 mandatory true; 2010 description "primary options"; 2011 case primary-pw { 2012 description "primary-pw"; 2013 list primary-pw { 2014 key "name"; 2015 uses vpls-pw-state-grp; 2016 description "A list of primary pseudowires"; 2017 } 2018 } 2019 case primary-ac { 2020 description "primary-ac"; 2021 container primary-ac { 2022 description "primary-ac"; 2023 uses ac-state-grp; 2024 } 2025 } 2026 } 2027 choice backup { 2028 description "backup options"; 2029 case backup-pw { 2030 list backup-pw { 2031 key "name"; 2032 uses vpls-pw-state-grp; 2033 leaf precedence { 2034 type uint32; 2035 description "precedence of the pseudowire"; 2036 } 2037 description "A list of backup pseudowires"; 2038 } 2039 } 2040 case backup-ac { 2041 description "backup-ac"; 2042 container backup-ac { 2043 description "primary-ac"; 2044 uses ac-state-grp; 2045 } 2046 } 2047 } 2048 uses redundancy-group-properties-grp; 2049 } 2050 } 2051 description "List of endpoints"; 2052 } 2053 } 2054 } 2055 container vpws-instances-state { 2056 description "vpws-instances-state"; 2057 list vpws-instance-state { 2058 key "name"; 2059 description "A VPWS instance's state data"; 2060 leaf name { 2061 type string; 2062 description "Name of VPWS instance"; 2063 } 2064 leaf mtu { 2065 type uint32; 2066 description "VPWS MTU"; 2067 } 2068 leaf mac-aging-timer { 2069 type uint32; 2070 description "mac-aging-timer"; 2071 } 2072 leaf service-type { 2073 type l2vpn-service-type; 2074 default ethernet; 2075 description "VPWS service type"; 2076 } 2077 leaf discovery-type { 2078 type l2vpn-discovery-type; 2079 default manual; 2080 description "VPWS discovery type"; 2081 } 2082 leaf signaling-type { 2083 type l2vpn-signaling-type; 2084 mandatory true; 2085 description "VPWS signaling type"; 2086 } 2087 uses bgp-parameters-grp; 2088 container endpoint-a { 2089 description "endpoint-a"; 2090 uses vpws-endpoint-state-grp; 2091 } 2092 container endpoint-z { 2093 description "endpoint-z"; 2094 uses vpws-endpoint-state-grp; 2095 } 2096 } 2097 } 2098 } 2099 } 2101 2102 Figure 3 2104 6. Security Considerations 2106 The configuration, state, action and notification data defined in 2107 this document are designed to be accessed via the NETCONF protocol 2108 [RFC6241]. The lowest NETCONF layer is the secure transport layer 2109 and the mandatory-to-implement secure transport is SSH [RFC6242]. 2110 The NETCONF access control model [RFC6536] provides means to restrict 2111 access for particular NETCONF users to a pre-configured subset of all 2112 available NETCONF protocol operations and content. 2114 The security concerns listed above are, however, no different than 2115 faced by other routing protocols. Hence, this draft does not change 2116 any underlying security issues inherent in [I-D.ietf-netmod-routing- 2117 cfg] 2119 7. IANA Considerations 2121 None. 2123 8. Acknowledgments 2125 The authors would like to acknowledge TBD for their useful comments. 2127 9. References 2129 9.1. Normative References 2131 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2132 Requirement Levels", BCP 14, RFC 2119, 2133 DOI 10.17487/RFC2119, March 1997, 2134 . 2136 9.2. Informative References 2138 [RFC3916] Xiao, X., Ed., McPherson, D., Ed., and P. Pate, Ed., 2139 "Requirements for Pseudo-Wire Emulation Edge-to-Edge 2140 (PWE3)", RFC 3916, DOI 10.17487/RFC3916, September 2004, 2141 . 2143 [RFC3985] Bryant, S., Ed. and P. Pate, Ed., "Pseudo Wire Emulation 2144 Edge-to-Edge (PWE3) Architecture", RFC 3985, 2145 DOI 10.17487/RFC3985, March 2005, 2146 . 2148 [RFC4385] Bryant, S., Swallow, G., Martini, L., and D. McPherson, 2149 "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for 2150 Use over an MPLS PSN", RFC 4385, DOI 10.17487/RFC4385, 2151 February 2006, . 2153 [RFC4446] Martini, L., "IANA Allocations for Pseudowire Edge to Edge 2154 Emulation (PWE3)", BCP 116, RFC 4446, 2155 DOI 10.17487/RFC4446, April 2006, 2156 . 2158 [RFC4447] Martini, L., Ed., Rosen, E., El-Aawar, N., Smith, T., and 2159 G. Heron, "Pseudowire Setup and Maintenance Using the 2160 Label Distribution Protocol (LDP)", RFC 4447, 2161 DOI 10.17487/RFC4447, April 2006, 2162 . 2164 [RFC4448] Martini, L., Ed., Rosen, E., El-Aawar, N., and G. Heron, 2165 "Encapsulation Methods for Transport of Ethernet over MPLS 2166 Networks", RFC 4448, DOI 10.17487/RFC4448, April 2006, 2167 . 2169 [RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer 2170 2 Virtual Private Networks (L2VPNs)", RFC 4664, 2171 DOI 10.17487/RFC4664, September 2006, 2172 . 2174 [RFC4665] Augustyn, W., Ed. and Y. Serbest, Ed., "Service 2175 Requirements for Layer 2 Provider-Provisioned Virtual 2176 Private Networks", RFC 4665, DOI 10.17487/RFC4665, 2177 September 2006, . 2179 [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private 2180 LAN Service (VPLS) Using BGP for Auto-Discovery and 2181 Signaling", RFC 4761, DOI 10.17487/RFC4761, January 2007, 2182 . 2184 [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private 2185 LAN Service (VPLS) Using Label Distribution Protocol (LDP) 2186 Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007, 2187 . 2189 [RFC5003] Metz, C., Martini, L., Balus, F., and J. Sugimoto, 2190 "Attachment Individual Identifier (AII) Types for 2191 Aggregation", RFC 5003, DOI 10.17487/RFC5003, September 2192 2007, . 2194 [RFC5254] Bitar, N., Ed., Bocci, M., Ed., and L. Martini, Ed., 2195 "Requirements for Multi-Segment Pseudowire Emulation Edge- 2196 to-Edge (PWE3)", RFC 5254, DOI 10.17487/RFC5254, October 2197 2008, . 2199 [RFC5659] Bocci, M. and S. Bryant, "An Architecture for Multi- 2200 Segment Pseudowire Emulation Edge-to-Edge", RFC 5659, 2201 DOI 10.17487/RFC5659, October 2009, 2202 . 2204 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2205 the Network Configuration Protocol (NETCONF)", RFC 6020, 2206 DOI 10.17487/RFC6020, October 2010, 2207 . 2209 [RFC6073] Martini, L., Metz, C., Nadeau, T., Bocci, M., and M. 2210 Aissaoui, "Segmented Pseudowire", RFC 6073, 2211 DOI 10.17487/RFC6073, January 2011, 2212 . 2214 [RFC6074] Rosen, E., Davie, B., Radoaca, V., and W. Luo, 2215 "Provisioning, Auto-Discovery, and Signaling in Layer 2 2216 Virtual Private Networks (L2VPNs)", RFC 6074, 2217 DOI 10.17487/RFC6074, January 2011, 2218 . 2220 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2221 and A. Bierman, Ed., "Network Configuration Protocol 2222 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2223 . 2225 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2226 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2227 . 2229 [RFC6391] Bryant, S., Ed., Filsfils, C., Drafz, U., Kompella, V., 2230 Regan, J., and S. Amante, "Flow-Aware Transport of 2231 Pseudowires over an MPLS Packet Switched Network", 2232 RFC 6391, DOI 10.17487/RFC6391, November 2011, 2233 . 2235 [RFC6423] Li, H., Martini, L., He, J., and F. Huang, "Using the 2236 Generic Associated Channel Label for Pseudowire in the 2237 MPLS Transport Profile (MPLS-TP)", RFC 6423, 2238 DOI 10.17487/RFC6423, November 2011, 2239 . 2241 [RFC6478] Martini, L., Swallow, G., Heron, G., and M. Bocci, 2242 "Pseudowire Status for Static Pseudowires", RFC 6478, 2243 DOI 10.17487/RFC6478, May 2012, 2244 . 2246 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2247 Protocol (NETCONF) Access Control Model", RFC 6536, 2248 DOI 10.17487/RFC6536, March 2012, 2249 . 2251 [RFC6624] Kompella, K., Kothari, B., and R. Cherukuri, "Layer 2 2252 Virtual Private Networks Using BGP for Auto-Discovery and 2253 Signaling", RFC 6624, DOI 10.17487/RFC6624, May 2012, 2254 . 2256 [RFC7041] Balus, F., Ed., Sajassi, A., Ed., and N. Bitar, Ed., 2257 "Extensions to the Virtual Private LAN Service (VPLS) 2258 Provider Edge (PE) Model for Provider Backbone Bridging", 2259 RFC 7041, DOI 10.17487/RFC7041, November 2013, 2260 . 2262 [RFC7361] Dutta, P., Balus, F., Stokes, O., Calvignac, G., and D. 2263 Fedyk, "LDP Extensions for Optimized MAC Address 2264 Withdrawal in a Hierarchical Virtual Private LAN Service 2265 (H-VPLS)", RFC 7361, DOI 10.17487/RFC7361, September 2014, 2266 . 2268 Authors' Addresses 2270 Himanshu Shah 2271 Ciena Corporation 2273 Email: hshah@ciena.com 2275 Patrice Brissette 2276 Cisco Systems, Inc. 2278 Email: pbrisset@cisco.com 2280 Reshad Rahman 2281 Cisco Systems, Inc. 2283 Email: rrahman@cisco.com 2284 Kamran Raza 2285 Cisco Systems, Inc. 2287 Email: skraza@cisco.com 2289 Zhenbin Li 2290 Huawei Technologies 2292 Email: lizhenbin@huawei.com 2294 Zhuang Shunwan 2295 Huawei Technologies 2297 Email: Zhuangshunwan@huawei.com 2299 Wang Haibo 2300 Huawei Technologies 2302 Email: rainsword.wang@huawei.com 2304 Ing-When Chen 2305 Ericsson 2307 Email: ichen@kuatrotech.com 2309 Sajjad Ahmed 2310 Ericsson 2312 Email: sajjad.ahmed@ericsson.com 2314 Mathew Bocci 2315 Alcatel-Lucent 2317 Email: mathew.bocci@alcatel-lucent.com 2319 Jonathan Hardwick 2320 Metaswitch 2322 Email: jonathan.hardwick@metaswitch.com 2323 Santosh Esale 2324 Juniper Networks 2326 Email: sesale@juniper.net 2328 Kishore Tiruveedhula 2329 Juniper Networks 2331 Email: kishoret@juniper.net 2333 Tapraj Singh 2334 Juniper Networks 2336 Email: tsingh@juniper.net 2338 Iftekar Hussain 2339 Infinera Corporation 2341 Email: ihussain@infinera.com 2343 Bin Wen 2344 Comcast 2346 Email: Bin_Wen@cable.comcast.com 2348 Jason Walker 2349 Comcast 2351 Email: jason_walker2@cable.comcast.com 2353 Nick Delregno 2354 Verizon 2356 Email: nick.deregno@verizon.com 2358 Luay Jalil 2359 Verizon 2361 Email: luay.jalil@verizon.com 2362 Maria Joecylyn 2363 Verizon 2365 Email: joecylyn.malit@verizon.com