| < draft-ietf-bess-l2vpn-yang-08.txt | draft-ietf-bess-l2vpn-yang-09.txt > | |||
|---|---|---|---|---|
| BESS Working Group H. Shah, Ed. | BESS Working Group H. Shah, Ed. | |||
| Internet-Draft Ciena Corporation | Internet-Draft Ciena Corporation | |||
| Intended status: Standards Track P. Brissette, Ed. | Intended status: Standards Track P. Brissette, Ed. | |||
| Expires: August 21, 2018 Cisco Systems, Inc. | Expires: April 25, 2019 Cisco Systems, Inc. | |||
| I. Chen, Ed. | I. Chen, Ed. | |||
| Jabil | Individual Contributor | |||
| I. Hussain, Ed. | I. Hussain, Ed. | |||
| Infinera Corporation | Infinera Corporation | |||
| B. Wen, Ed. | B. Wen, Ed. | |||
| Comcast | Comcast | |||
| K. Tiruveedhula, Ed. | K. Tiruveedhula, Ed. | |||
| Juniper Networks | Juniper Networks | |||
| February 17, 2018 | October 22, 2018 | |||
| YANG Data Model for MPLS-based L2VPN | YANG Data Model for MPLS-based L2VPN | |||
| draft-ietf-bess-l2vpn-yang-08.txt | draft-ietf-bess-l2vpn-yang-09.txt | |||
| Abstract | Abstract | |||
| This document describes a YANG data model for Layer 2 VPN (L2VPN) | This document describes a YANG data model for Layer 2 VPN (L2VPN) | |||
| services over MPLS networks. These services include point-to-point | services over MPLS networks. These services include point-to-point | |||
| Virtual Private Wire Service (VPWS) and multipoint Virtual Private | Virtual Private Wire Service (VPWS) and multipoint Virtual Private | |||
| LAN service (VPLS) that uses LDP and BGP signaled Pseudowires. It is | LAN service (VPLS) that uses LDP and BGP signaled Pseudowires. It is | |||
| expected that this model will be used by the management tools run by | expected that this model will be used by the management tools run by | |||
| the network operators in order to manage and monitor the network | the network operators in order to manage and monitor the network | |||
| resources that they use to deliver L2VPN services. | resources that they use to deliver L2VPN services. | |||
| skipping to change at page 1, line 49 ¶ | skipping to change at page 1, line 49 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 21, 2018. | This Internet-Draft will expire on April 25, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Specification of Requirements . . . . . . . . . . . . . . . . 4 | 2. Specification of Requirements . . . . . . . . . . . . . . . . 4 | |||
| 3. L2VPN YANG Model . . . . . . . . . . . . . . . . . . . . . . 4 | 3. L2VPN YANG Model . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Open issues and next steps . . . . . . . . . . . . . . . 7 | 3.2. Changes in this version . . . . . . . . . . . . . . . . . 7 | |||
| 3.3. Pseudowire Common . . . . . . . . . . . . . . . . . . . . 8 | 3.3. Open issues and next steps . . . . . . . . . . . . . . . 8 | |||
| 3.3.1. Pseudowire . . . . . . . . . . . . . . . . . . . . . 8 | 3.4. Pseudowire Common . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.3.2. pw-templates . . . . . . . . . . . . . . . . . . . . 8 | 3.4.1. Pseudowire . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. L2VPN Common . . . . . . . . . . . . . . . . . . . . . . 8 | 3.4.2. pw-templates . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4.1. redundancy-group-templates . . . . . . . . . . . . . 8 | 3.5. L2VPN Common . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.5. L2VPN instance . . . . . . . . . . . . . . . . . . . . . 8 | 3.5.1. redundancy-group-templates . . . . . . . . . . . . . 8 | |||
| 3.5.1. common attributes . . . . . . . . . . . . . . . . . . 8 | 3.6. L2VPN instance . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.5.2. PW list . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.6.1. common attributes . . . . . . . . . . . . . . . . . . 9 | |||
| 3.5.3. List of endpoints . . . . . . . . . . . . . . . . . . 9 | 3.6.2. PW list . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.5.4. point-to-point or multipoint service . . . . . . . . 10 | 3.6.3. List of endpoints . . . . . . . . . . . . . . . . . . 9 | |||
| 3.6. Operational State . . . . . . . . . . . . . . . . . . . . 10 | 3.6.4. point-to-point or multipoint service . . . . . . . . 10 | |||
| 3.7. Yang tree . . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.6.5. multi-segment pseudowire . . . . . . . . . . . . . . 11 | |||
| 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 3.7. Operational State . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | 3.8. Yang tree . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 | 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 43 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 42 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 42 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| Appendix A. Example Configuration . . . . . . . . . . . . . . . 45 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 43 | |||
| Appendix B. Contributors . . . . . . . . . . . . . . . . . . . . 45 | 8.2. Informative References . . . . . . . . . . . . . . . . . 43 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | Appendix A. Example Configuration . . . . . . . . . . . . . . . 46 | |||
| Appendix B. Contributors . . . . . . . . . . . . . . . . . . . . 46 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 | ||||
| 1. Introduction | 1. Introduction | |||
| The Network Configuration Protocol (NETCONF) [RFC6241] is a network | The Network Configuration Protocol (NETCONF) [RFC6241] is a network | |||
| management protocol that defines mechanisms to manage network | management protocol that defines mechanisms to manage network | |||
| devices. YANG [RFC6020] is a modular language that represents data | devices. YANG [RFC6020] is a modular language that represents data | |||
| structures in an XML or JSON tree format, and is used as a data | structures in an XML or JSON tree format, and is used as a data | |||
| modeling language for the NETCONF. | modeling language for the NETCONF. | |||
| This document defines a YANG data model for MPLS based Layer 2 VPN | This document defines a YANG data model for MPLS based Layer 2 VPN | |||
| skipping to change at page 3, line 50 ¶ | skipping to change at page 3, line 50 ¶ | |||
| o Notifications | o Notifications | |||
| The current document focuses on definition of configuration, state | The current document focuses on definition of configuration, state | |||
| and notification objects. | and notification objects. | |||
| The L2VPN data object model uses the instance centric approach. The | The L2VPN data object model uses the instance centric approach. The | |||
| L2VPN instance is recognized by network instance model. The network- | L2VPN instance is recognized by network instance model. The network- | |||
| instance container is defined in network instance model [I-D.ietf- | instance container is defined in network instance model [I-D.ietf- | |||
| netmod-ni-model]. | netmod-ni-model]. | |||
| Within this network instance, L2VPN container contains a set of common | Within this network instance, L2VPN container contains a set of | |||
| parameters, a list of PWs and a list of endpoints are defined. A | common parameters, a list of PWs and a list of endpoints are defined. | |||
| special constraint is added for the VPWS configuration such that only | ||||
| two endpoints are allowed in the list of endpoints. | A special constraint is added for the VPWS configuration such that | |||
| only two endpoints are allowed in the list of endpoints. | ||||
| The Pseudowire data object model is defined independent of the L2VPN | The Pseudowire data object model is defined independent of the L2VPN | |||
| data object model to allow its inclusion in the Ethernet Segment and | data object model to allow its inclusion in the Ethernet Segment and | |||
| EVPN data objects. | EVPN data objects. | |||
| The L2VPN data object model augments Psuedowire data object for its | The L2VPN data object model augments Psuedowire data object for its | |||
| definition. | definition. | |||
| The document also includes Notifications used by the L2VPN object | The document also includes Notifications used by the L2VPN object | |||
| model | model | |||
| skipping to change at page 7, line 14 ¶ | skipping to change at page 7, line 14 ¶ | |||
| PW // Container | PW // Container | |||
| PW specific attributes | PW specific attributes | |||
| PW template definition | PW template definition | |||
| template-ref Redundancy-Group // redundancy-group | template-ref Redundancy-Group // redundancy-group | |||
| template | template | |||
| attributes | attributes | |||
| Network Instance // containter | Network Instance // container | |||
| l2vpn //container | l2vpn // containter | |||
| common attributes | common attributes | |||
| BGP-parameters // container | BGP-parameters // container | |||
| common attributes | common attributes | |||
| auto-discovery attributes | auto-discovery attributes | |||
| signaling attributes | signaling attributes | |||
| // list of PWs being used | // list of PWs being used | |||
| PW // container | PW // container | |||
| template-ref PW | template-ref PW | |||
| skipping to change at page 7, line 39 ¶ | skipping to change at page 7, line 40 ¶ | |||
| pbb specific attributes | pbb specific attributes | |||
| VPWS-constraints // rule to limit number of endpoints to two | VPWS-constraints // rule to limit number of endpoints to two | |||
| // List of endpoints, where each member endpoint container is - | // List of endpoints, where each member endpoint container is - | |||
| PW // reference | PW // reference | |||
| redundancy-grp // container | redundancy-grp // container | |||
| AC // eventual reference to standard AC | AC // eventual reference to standard AC | |||
| PW // reference | PW // reference | |||
| 3.2. Open issues and next steps | Figure 1 | |||
| 3.2. Changes in this version | ||||
| Pseudowire module is extended to include, | ||||
| Multi-segment PW - a new attribute is added to pseudowire that | ||||
| identifies the pseudowire as a member of the multi-segment | ||||
| pseudowire. Two pseudowire members in a VPWS, configures a multi- | ||||
| segment pseudowire at the switching PE. | ||||
| Pseudowire load-balancing - The load-balancing behaviour for a | ||||
| pseudowire can be configured either using the FAT label that resides | ||||
| below the pseudowire label or Entropy label with Entropy label | ||||
| indicator above the pseudowire label. By default, the load-balancing | ||||
| is disabled. | ||||
| FEC 129 related - AGI, SAII and TAII string configurations is added | ||||
| to faciliate FEC 129 based pseudowire configuration. | ||||
| 3.3. Open issues and next steps | ||||
| Most of the open issues have been resolved in this document. There | Most of the open issues have been resolved in this document. There | |||
| are some items for considerations, such as PW headend, VPLS IRB. | are some items for considerations, such as PW headend, VPLS IRB. | |||
| These may or may not be convered in this document. If the working | These may or may not be convered in this document. If the working | |||
| group intends these topics be addressed in a separate document, | group intends these topics be addressed in a separate document, | |||
| authors will proceed to finalize this document with comments received | authors will proceed to finalize this document with comments received | |||
| on the definitions included in the current document. | on the definitions included in the current document. | |||
| 3.3. Pseudowire Common | 3.4. Pseudowire Common | |||
| 3.3.1. Pseudowire | 3.4.1. Pseudowire | |||
| Pseudowire definitions is moved to a seperate container in order to | Pseudowire definitions is moved to a seperate container in order to | |||
| allow Ethernet Segment and EVPN models can refer without having to | allow Ethernet Segment and EVPN models can refer without having to | |||
| pull down L2VPN container. | pull down L2VPN container. | |||
| 3.3.2. pw-templates | 3.4.2. pw-templates | |||
| The pw-templates container contains a list of pw-template. Each pw- | The pw-templates container contains a list of pw-template. Each pw- | |||
| template defines a list of common pseudowire attributes such as PW | template defines a list of common pseudowire attributes such as PW | |||
| MTU, control word support etc. | MTU, control word support etc. | |||
| 3.4. L2VPN Common | 3.5. L2VPN Common | |||
| 3.4.1. redundancy-group-templates | 3.5.1. redundancy-group-templates | |||
| The redundancy-group-template contains a list of templates. Each | The redundancy-group-template contains a list of templates. Each | |||
| template defines common attributes related to redundancy such as | template defines common attributes related to redundancy such as | |||
| protection mode, reversion parameters, etc. | protection mode, reversion parameters, etc. | |||
| 3.5. L2VPN instance | 3.6. L2VPN instance | |||
| The network instance container defined in the network instance model | The network instance container defined in the network instance model | |||
| [I-D.ietf-rtgwg-ni-model] identifies the L2VPN instance. One of the | [I-D.ietf-rtgwg-ni-model] identifies the L2VPN instance. One of the | |||
| value defined by the ni-type used in the instance model refers to VSI | value defined by the ni-type used in the instance model refers to VSI | |||
| (Virtual Switch Instance) to denote the L2VPN instance. The name | (Virtual Switch Instance) to denote the L2VPN instance. The name | |||
| attribute is used as the key to refer to specific network instance. | attribute is used as the key to refer to specific network instance. | |||
| Network Instance of type VSI anchors L2VPN container with a list | Network Instance of type VSI anchors L2VPN container with a list of | |||
| of endpoints which when limited to two entries represents point to | endpoints which when limited to two entries represents point to point | |||
| point service (i.e. VPWS) while more than two endpoints represent | service (i.e. VPWS) while more than two endpoints represent | |||
| multipoint service (i.e. VPLS). Within a service instance, a set of | multipoint service (i.e. VPLS). Within a service instance, a set of | |||
| common attributes are defined, followed by a list of PWs and a list | common attributes are defined, followed by a list of PWs and a list | |||
| of endpoints. | of endpoints. | |||
| 3.5.1. common attributes | 3.6.1. common attributes | |||
| The common attributes apply to entire L2VPN instance. These | The common attributes apply to entire L2VPN instance. These | |||
| attributes typically include attributes such as mac-aging-timer, BGP | attributes typically include attributes such as mac-aging-timer, BGP | |||
| related parameters (if using BGP signaling), discovery-type, etc. | related parameters (if using BGP signaling), discovery-type, etc. | |||
| 3.5.2. PW list | 3.6.2. PW list | |||
| The PW list is the number of PWs that are being used for a given | The PW list is the number of PWs that are being used for a given | |||
| L2VPN instance. Each PW entry refers to PW template to inherit | L2VPN instance. Each PW entry refers to PW template to inherit | |||
| common attributes for the PW. The one or more attributes from the | common attributes for the PW. The one or more attributes from the | |||
| template can be overriden. It further extends definitions of more PW | template can be overriden. It further extends definitions of more PW | |||
| specific attributes such as use of control word, mac withdraw, what | specific attributes such as use of control word, mac withdraw, what | |||
| type of signaling (i.e. LDP or BGP), setting of the TTL, etc. | type of signaling (i.e. LDP or BGP), setting of the TTL, etc. | |||
| 3.5.3. List of endpoints | 3.6.3. List of endpoints | |||
| The list of endpoints define the characteristics of the L2VPN | The list of endpoints define the characteristics of the L2VPN | |||
| service. In the case of VPWS, the list is limited to two entries | service. In the case of VPWS, the list is limited to two entries | |||
| while for VPLS, there could be many. | while for VPLS, there could be many. | |||
| Each entry in the endpoint list, may hold AC, PW or redundancy-grp | Each entry in the endpoint list, may hold AC, PW or redundancy-grp | |||
| references. The core aspect of endpoint container is its flexible | references. The core aspect of endpoint container is its flexible | |||
| personality based on what user decides to include in it. It is | personality based on what user decides to include in it. It is | |||
| future-proofed with possible extensions that can be included in the | future-proofed with possible extensions that can be included in the | |||
| endpoint container such as Integrated Route Bridging (IRB), PW | endpoint container such as Integrated Route Bridging (IRB), PW | |||
| Headend, Virtual Switch Instance, etc. | Headend, Virtual Switch Instance, etc. | |||
| The endpoint entry also defines the split-horizon attribute which | The endpoint entry also defines the split-horizon attribute which | |||
| defines the frame forwarding restrictions between the endpoints | defines the frame forwarding restrictions between the endpoints | |||
| belonging to same split-horizon group. This construct permits | belonging to same split-horizon group. This construct permits | |||
| multiple instances of split horizon groups with its own endpoint | multiple instances of split horizon groups with its own endpoint | |||
| members. The frame forwarding restrictions does not apply between | members. The frame forwarding restrictions does not apply between | |||
| endpoints that belong to two different split horizon groups. | endpoints that belong to two different split horizon groups. | |||
| 3.5.3.1. ac | 3.6.3.1. ac | |||
| Attachment Circuit (AC)resides within endpoint entry either as an | Attachment Circuit (AC)resides within endpoint entry either as an | |||
| independent entity or as a member of the redundancy group. AC is not | independent entity or as a member of the redundancy group. AC is not | |||
| defined in this document but references the definitions being | defined in this document but references the definitions being | |||
| specified by other working groups and standard bodies. | specified by other working groups and standard bodies. | |||
| 3.5.3.2. pw | 3.6.3.2. pw | |||
| The Pseudo-wire resides within endpoint entry either as an | The Pseudo-wire resides within endpoint entry either as an | |||
| independent entity or as a member of the redundancy group. The PW | independent entity or as a member of the redundancy group. The PW | |||
| refers to one of the entry in the list of PWs defined with the L2VPN | refers to one of the entry in the list of PWs defined with the L2VPN | |||
| instance. | instance. | |||
| 3.5.3.3. redundancy-grp choice | 3.6.3.3. redundancy-grp choice | |||
| The redundancy-grp is a generic redundancy construct which can hold | The redundancy-grp is a generic redundancy construct which can hold | |||
| primary and backup members of AC and PWs. This flexibility permits | primary and backup members of AC and PWs. This flexibility permits | |||
| combinations of - | combinations of - | |||
| o primary and backup AC | o primary and backup AC | |||
| o primary and backup PW | o primary and backup PW | |||
| o primary AC and backup PW | o primary AC and backup PW | |||
| skipping to change at page 10, line 4 ¶ | skipping to change at page 10, line 30 ¶ | |||
| The redundancy-grp is a generic redundancy construct which can hold | The redundancy-grp is a generic redundancy construct which can hold | |||
| primary and backup members of AC and PWs. This flexibility permits | primary and backup members of AC and PWs. This flexibility permits | |||
| combinations of - | combinations of - | |||
| o primary and backup AC | o primary and backup AC | |||
| o primary and backup PW | o primary and backup PW | |||
| o primary AC and backup PW | o primary AC and backup PW | |||
| o primary PW and backup AC | o primary PW and backup AC | |||
| The redundancy group also defines attributes of the type of | The redundancy group also defines attributes of the type of | |||
| redundancy, such as protection mode, reroute mode, reversion related | redundancy, such as protection mode, reroute mode, reversion related | |||
| parameters, etc. | parameters, etc. | |||
| 3.5.4. point-to-point or multipoint service | 3.6.4. point-to-point or multipoint service | |||
| The point-to-point service as defined for VPWS is represented by a | The point-to-point service as defined for VPWS is represented by a | |||
| list of endpoints and is limited to two entries by the VPWS constrain | list of endpoints and is limited to two entries by the VPWS constrain | |||
| rules | rules | |||
| The multipoint service as defined for VPLS is represented by a list | The multipoint service as defined for VPLS is represented by a list | |||
| of endpoints. | of endpoints. | |||
| The augmentation of ietf-l2vpn module is TBD. All IP addresses | The augmentation of ietf-l2vpn module is TBD. All IP addresses | |||
| defined in this module are currently scoped under global VRF/table. | defined in this module are currently scoped under global VRF/table. | |||
| 3.6. Operational State | 3.6.5. multi-segment pseudowire | |||
| The multi-segment pseudowire is expressed as configuration of two | ||||
| pseudowire segments at the switching PEs that provides end-to-end PW | ||||
| path between two terminating PEs consisting of multiple pseudowire | ||||
| segments. | ||||
| The multi-segment pseudowire is configured at switching PE using two | ||||
| endpoints that consists of pseudowires of type "ms-pw-members". The | ||||
| VPWS service construct is used with "vpws constraint" that restricts | ||||
| the number of endpoints to two. | ||||
| To verify consistency, a) verify that both endpoints are using ms-pw- | ||||
| member pseudowires and b) it is only used as for VPWS configuration | ||||
| at the switching PE. | ||||
| 3.7. Operational State | ||||
| The operational state of L2VPN attributes has been consolidated with | The operational state of L2VPN attributes has been consolidated with | |||
| the configuration as per recommendations from the guidelines for the | the configuration as per recommendations from the guidelines for the | |||
| YANG author document. | YANG author document. | |||
| 3.7. Yang tree | 3.8. Yang tree | |||
| module: ietf-pseudowires | module: ietf-pseudowires | |||
| +--rw pseudowires | +--rw pseudowires | |||
| +--rw pseudowire* [name] | +--rw pseudowire* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--ro state? pseudowire-status-type | | +--ro state? pseudowire-status-type | |||
| | +--rw template? pw-template-ref | | +--rw template? pw-template-ref | |||
| | +--rw mtu? uint16 | | +--rw mtu? uint16 | |||
| | +--rw mac-withdraw? boolean | | +--rw mac-withdraw? boolean | |||
| | +--rw cw-negotiation? cw-negotiation-type | | +--rw pw-loadbalance? enumeration | |||
| | +--rw tunnel-policy? string | | +--rw ms-pw-member? boolean | |||
| | +--rw (pw-type)? | | +--rw cw-negotiation? cw-negotiation-type | |||
| | +--:(configured-pw) | | +--rw tunnel-policy? string | |||
| | +--rw configured-pw | | +--rw (pw-type)? | |||
| | +--rw peer-ip? inet:ip-address | | +--:(configured-pw) | |||
| | +--rw pw-id? uint32 | | | +--rw peer-ip? inet:ip-address | |||
| | +--rw icb? boolean | | | +--rw pw-id? uint32 | |||
| | +--rw transmit-label? rt-types:mpls-label | | | +--rw group-id? uint32 | |||
| | +--rw receive-label? rt-types:mpls-label | | | +--rw icb? boolean | |||
| +--rw pw-templates | | | +--rw transmit-label? rt-types:mpls-label | |||
| +--rw pw-template* [name] | | | +--rw receive-label? rt-types:mpls-label | |||
| +--rw name string | | | +--rw generalized? boolean | |||
| +--rw mtu? uint16 | | | +--rw agi? string | |||
| +--rw cw-negotiation? cw-negotiation-type | | | +--rw saii? string | |||
| +--rw tunnel-policy? string | | | +--rw taii? string | |||
| | +--:(bgp-pw) | ||||
| | | +--rw remote-pe-id? inet:ip-address | ||||
| | +--:(bgp-ad-pw) | ||||
| | +--rw remote-ve-id? uint16 | ||||
| +--rw pw-templates | ||||
| +--rw pw-template* [name] | ||||
| +--rw name string | ||||
| +--rw mtu? uint16 | ||||
| +--rw cw-negotiation? cw-negotiation-type | ||||
| +--rw tunnel-policy? string | ||||
| module: ietf-l2vpn | module: ietf-l2vpn | |||
| +--rw l2vpn | +--rw l2vpn | |||
| +--rw redundancy-group-templates | +--rw redundancy-group-templates | |||
| +--rw redundancy-group-template* [name] | +--rw redundancy-group-template* [name] | |||
| +--rw name string | +--rw name string | |||
| +--rw protection-mode? enumeration | +--rw protection-mode? enumeration | |||
| +--rw reroute-mode? enumeration | +--rw reroute-mode? enumeration | |||
| +--rw dual-receive? boolean | +--rw dual-receive? boolean | |||
| +--rw revert? boolean | +--rw revert? boolean | |||
| skipping to change at page 13, line 24 ¶ | skipping to change at page 14, line 33 ¶ | |||
| | | | +--ro primary-ac? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/primary-ac/name | | | | +--ro primary-ac? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/primary-ac/name | |||
| | | +--:(primary-pw) | | | +--:(primary-pw) | |||
| | | +--ro primary-pw? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/primary-pw/name | | | +--ro primary-pw? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/primary-pw/name | |||
| | +--ro (backup)? | | +--ro (backup)? | |||
| | +--:(backup-ac) | | +--:(backup-ac) | |||
| | | +--ro backup-ac? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/backup-ac/name | | | +--ro backup-ac? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/backup-ac/name | |||
| | +--:(backup-pw) | | +--:(backup-pw) | |||
| | +--ro backup-pw? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/backup-pw/name | | +--ro backup-pw? -> /ni:network-instances/network-instance[ni:name=current()/../l2vpn-instance-name]/l2vpn:endpoint[l2vpn:name=current()/../endpoint]/backup-pw/name | |||
| +--ro state? identityref | +--ro state? identityref | |||
| Figure 2 | ||||
| 4. YANG Module | 4. YANG Module | |||
| The L2VPN configuration container is logically divided into following | The L2VPN configuration container is logically divided into following | |||
| high level config areas: | high level config areas: | |||
| <CODE BEGINS> file "ietf-pseudowires@2017-06-26.yang" | <CODE BEGINS> file "ietf-pseudowires@2018-10-22.yang" | |||
| module ietf-pseudowires { | module ietf-pseudowires { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-pseudowires"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pseudowires"; | |||
| prefix "pw"; | prefix "pw"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| } | } | |||
| organization "ietf"; | organization "ietf"; | |||
| contact "ietf"; | contact "ietf"; | |||
| description "Pseudowire YANG model"; | description "Pseudowire YANG model"; | |||
| revision "2018-10-22" { | ||||
| description "Second revision " + | ||||
| " - Added group-id and attachment identifiers " + | ||||
| ""; | ||||
| reference ""; | ||||
| } | ||||
| revision "2017-06-26" { | revision "2017-06-26" { | |||
| description "Initial revision " + | description "Initial revision " + | |||
| " - Created a new model for pseudowires, which used " + | " - Created a new model for pseudowires, which used " + | |||
| " to be defined within the L2VPN model " + | " to be defined within the L2VPN model " + | |||
| ""; | ""; | |||
| reference ""; | reference ""; | |||
| } | } | |||
| /* Typedefs */ | /* Typedefs */ | |||
| skipping to change at page 15, line 34 ¶ | skipping to change at page 16, line 49 ¶ | |||
| bit PW-request-switchover-status { | bit PW-request-switchover-status { | |||
| position 7; | position 7; | |||
| description "Pseudowire request switchover status"; | description "Pseudowire request switchover status"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Pseudowire status type, as registered in the IANA " + | "Pseudowire status type, as registered in the IANA " + | |||
| "Pseudowire Status Code Registry"; | "Pseudowire Status Code Registry"; | |||
| } | } | |||
| /* Groupings */ | ||||
| grouping pw-type-grp { | ||||
| description "pseudowire type grouping"; | ||||
| choice pw-type { | ||||
| description "A choice of pseudowire type"; | ||||
| case ldp-or-static-pw { | ||||
| leaf peer-ip { | ||||
| type inet:ip-address; | ||||
| description "peer IP address"; | ||||
| } | ||||
| leaf pw-id { | ||||
| type uint32; | ||||
| description "pseudowire id"; | ||||
| } | ||||
| leaf icb { | ||||
| type boolean; | ||||
| description "inter-chassis backup"; | ||||
| } | ||||
| leaf transmit-label { | ||||
| type rt-types:mpls-label; | ||||
| description "transmit lable"; | ||||
| } | ||||
| leaf receive-label { | ||||
| type rt-types:mpls-label; | ||||
| description "receive label"; | ||||
| } | ||||
| } | ||||
| case bgp-pw { | ||||
| leaf remote-pe-id { | ||||
| type inet:ip-address; | ||||
| description "remote pe id"; | ||||
| } | ||||
| } | ||||
| case bgp-ad-pw { | ||||
| leaf remote-ve-id { | ||||
| type uint16; | ||||
| description "remote ve id"; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| /* Data */ | /* Data */ | |||
| container pseudowires { | container pseudowires { | |||
| description "Configuration management of pseudowires"; | description "Configuration management of pseudowires"; | |||
| list pseudowire { | list pseudowire { | |||
| key "name"; | key "name"; | |||
| description "A pseudowire"; | description "A pseudowire"; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description "pseudowire name"; | description "pseudowire name"; | |||
| skipping to change at page 17, line 12 ¶ | skipping to change at page 17, line 32 ¶ | |||
| } | } | |||
| leaf mtu { | leaf mtu { | |||
| type uint16; | type uint16; | |||
| description "PW MTU"; | description "PW MTU"; | |||
| } | } | |||
| leaf mac-withdraw { | leaf mac-withdraw { | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description "Enable (true) or disable (false) MAC withdraw"; | description "Enable (true) or disable (false) MAC withdraw"; | |||
| } | } | |||
| leaf pw-loadbalance { | ||||
| type enumeration { | ||||
| enum "disabled" { | ||||
| value 0; | ||||
| description "load-balancing disabled"; | ||||
| } | ||||
| enum "fat-pw" { | ||||
| value 1; | ||||
| description "load-balance using FAT label below PW label"; | ||||
| } | ||||
| enum "entropy" { | ||||
| value 2; | ||||
| description "load-balance using ELI/EL above PW label"; | ||||
| } | ||||
| } | ||||
| description "PW load-balancing"; | ||||
| } | ||||
| leaf ms-pw-member { | ||||
| type boolean; | ||||
| default false; | ||||
| description "Enable (true) or disable (false) not a member of MS-PW"; | ||||
| } | ||||
| leaf cw-negotiation { | leaf cw-negotiation { | |||
| type cw-negotiation-type; | type cw-negotiation-type; | |||
| description "cw-negotiation"; | description "cw-negotiation"; | |||
| } | } | |||
| leaf tunnel-policy { | leaf tunnel-policy { | |||
| type string; | type string; | |||
| description "tunnel policy name"; | description "tunnel policy name"; | |||
| } | } | |||
| choice pw-type { | choice pw-type { | |||
| description "A choice of pseudowire type"; | description "A choice of pseudowire type"; | |||
| case configured-pw { | case configured-pw { | |||
| container configured-pw { | leaf peer-ip { | |||
| description "LDP or static pseudowire that requires " + | type inet:ip-address; | |||
| "manual configuration"; | description "peer IP address"; | |||
| leaf peer-ip { | } | |||
| type inet:ip-address; | leaf pw-id { | |||
| description "peer IP address"; | type uint32; | |||
| } | description "pseudowire id"; | |||
| leaf pw-id { | } | |||
| type uint32; | leaf group-id { | |||
| description "pseudowire id"; | type uint32; | |||
| } | description "group id"; | |||
| leaf icb { | } | |||
| type boolean; | leaf icb { | |||
| description "inter-chassis backup"; | type boolean; | |||
| } | description "inter-chassis backup"; | |||
| leaf transmit-label { | } | |||
| type rt-types:mpls-label; | leaf transmit-label { | |||
| description "transmit lable"; | type rt-types:mpls-label; | |||
| } | description "transmit lable"; | |||
| leaf receive-label { | } | |||
| type rt-types:mpls-label; | leaf receive-label { | |||
| description "receive label"; | type rt-types:mpls-label; | |||
| } | description "receive label"; | |||
| } | ||||
| leaf generalized { | ||||
| type boolean; | ||||
| description "generalized pseudowire id FEC element"; | ||||
| } | ||||
| leaf agi { | ||||
| type string; | ||||
| description "attachment group identifier"; | ||||
| } | ||||
| leaf saii { | ||||
| type string; | ||||
| description "source attachment individual identifier"; | ||||
| } | ||||
| leaf taii { | ||||
| type string; | ||||
| description "target attachment individual identifier"; | ||||
| } | ||||
| } | ||||
| case bgp-pw { | ||||
| leaf remote-pe-id { | ||||
| type inet:ip-address; | ||||
| description "remote pe id"; | ||||
| } | ||||
| } | ||||
| case bgp-ad-pw { | ||||
| leaf remote-ve-id { | ||||
| type uint16; | ||||
| description "remote ve id"; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container pw-templates { | container pw-templates { | |||
| description "pw-templates"; | description "pw-templates"; | |||
| list pw-template { | list pw-template { | |||
| key "name"; | key "name"; | |||
| description "pw-template"; | description "pw-template"; | |||
| leaf name { | leaf name { | |||
| skipping to change at page 41, line 37 ¶ | skipping to change at page 43, line 9 ¶ | |||
| base l2vpn-notification-state; | base l2vpn-notification-state; | |||
| } | } | |||
| description "State change notification"; | description "State change notification"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| Figure 3 | ||||
| 5. Security Considerations | 5. Security Considerations | |||
| The configuration, state, action and notification data defined in | The configuration, state, action and notification data defined in | |||
| this document are designed to be accessed via the NETCONF protocol | this document are designed to be accessed via the NETCONF protocol | |||
| [RFC6241]. The lowest NETCONF layer is the secure transport layer | [RFC6241]. The lowest NETCONF layer is the secure transport layer | |||
| and the mandatory-to-implement secure transport is SSH [RFC6242]. | and the mandatory-to-implement secure transport is SSH [RFC6242]. | |||
| The NETCONF access control model [RFC6536] provides means to restrict | The NETCONF access control model [RFC6536] provides means to restrict | |||
| access for particular NETCONF users to a pre-configured subset of all | access for particular NETCONF users to a pre-configured subset of all | |||
| available NETCONF protocol operations and content. | available NETCONF protocol operations and content. | |||
| skipping to change at page 46, line 36 ¶ | skipping to change at page 48, line 10 ¶ | |||
| Email: nick.deregno@verizon.com | Email: nick.deregno@verizon.com | |||
| Luay Jalil | Luay Jalil | |||
| Verizon | Verizon | |||
| Email: luay.jalil@verizon.com | Email: luay.jalil@verizon.com | |||
| Maria Joecylyn | Maria Joecylyn | |||
| Verizon | Verizon | |||
| Email: joecylyn.malit@verizon.com | Email: joecylyn.malit@verizon.com | |||
| Figure 4 | ||||
| Authors' Addresses | Authors' Addresses | |||
| Himanshu Shah | Himanshu Shah | |||
| Ciena Corporation | Ciena Corporation | |||
| Email: hshah@ciena.com | Email: hshah@ciena.com | |||
| Patrice Brissette | Patrice Brissette | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| skipping to change at page 47, line 4 ¶ | skipping to change at page 48, line 23 ¶ | |||
| Himanshu Shah | Himanshu Shah | |||
| Ciena Corporation | Ciena Corporation | |||
| Email: hshah@ciena.com | Email: hshah@ciena.com | |||
| Patrice Brissette | Patrice Brissette | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: pbrisset@cisco.com | Email: pbrisset@cisco.com | |||
| Ing-When Chen | Ing-When Chen | |||
| Jabil | Individual Contributor | |||
| Email: ing-wher_chen@jabil.com | Email: ichen.ietf@outlook.com | |||
| Iftekar Hussain | Iftekar Hussain | |||
| Infinera Corporation | Infinera Corporation | |||
| Email: ihussain@infinera.com | Email: ihussain@infinera.com | |||
| Bin Wen | Bin Wen | |||
| Comcast | Comcast | |||
| Email: Bin_Wen@cable.comcast.com | Email: Bin_Wen@cable.comcast.com | |||
| End of changes. 39 change blocks. | ||||
| 147 lines changed or deleted | 219 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||