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