| rfc9181.original | rfc9181.txt | |||
|---|---|---|---|---|
| opsawg S. Barguil | Internet Engineering Task Force (IETF) S. Barguil | |||
| Internet-Draft O. Gonzalez de Dios, Ed. | Request for Comments: 9181 O. Gonzalez de Dios, Ed. | |||
| Intended status: Standards Track Telefonica | Category: Standards Track Telefonica | |||
| Expires: 2 April 2022 M. Boucadair, Ed. | ISSN: 2070-1721 M. Boucadair, Ed. | |||
| Orange | Orange | |||
| Q. Wu | Q. Wu | |||
| Huawei | Huawei | |||
| 29 September 2021 | February 2022 | |||
| A Layer 2/3 VPN Common YANG Model | A Common YANG Data Model for Layer 2 and Layer 3 VPNs | |||
| draft-ietf-opsawg-vpn-common-12 | ||||
| Abstract | Abstract | |||
| This document defines a common YANG module that is meant to be reused | This document defines a common YANG module that is meant to be reused | |||
| by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN | by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN | |||
| network models. | network models. | |||
| Editorial Note (To be removed by RFC Editor) | ||||
| Please update these statements within the document with the RFC | ||||
| number to be assigned to this document: | ||||
| * "This version of this YANG module is part of RFC XXXX;" | ||||
| * "RFC XXXX: A Layer 2/3 VPN Common YANG Model"; | ||||
| * reference: RFC XXXX | ||||
| Also, please update the "revision" date of the YANG module. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 2 April 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9181. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
| as described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Simplified BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology | |||
| 3. Description of the VPN Common YANG Module . . . . . . . . . . 3 | 3. Description of the VPN Common YANG Module | |||
| 4. Layer 2/3 VPN Common Module . . . . . . . . . . . . . . . . . 13 | 4. Layer 2/3 VPN Common Module | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 59 | 5. Security Considerations | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60 | 6. IANA Considerations | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 60 | 7. References | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 61 | 7.1. Normative References | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 61 | 7.2. Informative References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 61 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 62 | ||||
| Appendix A. Example of Common Data Nodes in Early L2NM/L3NM | Appendix A. Example of Common Data Nodes in Early L2NM/L3NM | |||
| Designs . . . . . . . . . . . . . . . . . . . . . . . . . 69 | Designs | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 69 | Acknowledgements | |||
| Contributors | ||||
| Authors' Addresses | ||||
| 1. Introduction | 1. Introduction | |||
| The IETF has specified YANG data modules for VPN services, e.g., | The IETF has specified YANG modules for VPN services, e.g., the Layer | |||
| Layer 3 VPN Service Model (L3SM) [RFC8299] or Layer 2 VPN Service | 3 VPN Service Model (L3SM) [RFC8299] or the Layer 2 VPN Service Model | |||
| Model (L2SM) [RFC8466]. Other relevant YANG models are the Layer 3 | (L2SM) [RFC8466]. Other relevant YANG data models are the Layer 3 | |||
| VPN Network Model (L3NM) [I-D.ietf-opsawg-l3sm-l3nm] and the Layer 2 | VPN Network Model (L3NM) [RFC9182] and the Layer 2 VPN Network Model | |||
| VPN Network Model (L2NM) [I-D.ietf-opsawg-l2nm]. There are common | (L2NM) [L2NM-YANG]. There are common data nodes and structures that | |||
| data nodes and structures that are present in all of these models or | are present in all of these models or at least a subset of them. | |||
| at least a subset of them. | ||||
| This document defines a common YANG module that is meant to be reused | This document defines a common YANG module that is meant to be reused | |||
| by various VPN-related modules such as L3NM | by various VPN-related modules such as the L3NM [RFC9182] and the | |||
| [I-D.ietf-opsawg-l3sm-l3nm] and L2NM [I-D.ietf-opsawg-l2nm]: "ietf- | L2NM [L2NM-YANG]: "ietf-vpn-common" (Section 4). | |||
| vpn-common" (Section 4). | ||||
| The "ietf-vpn-common" module includes a set of identities, types, and | The "ietf-vpn-common" module includes a set of identities, types, and | |||
| groupings that are meant to be reused by other VPN-related YANG | groupings that are meant to be reused by other VPN-related YANG | |||
| modules independently of their layer (e.g., Layer 2, Layer 3) and the | modules independently of their layer (e.g., Layer 2, Layer 3) and the | |||
| type of the module (e.g., network model, service model) including | type of the module (e.g., network model, service model), including | |||
| possible future revisions of existing models (e.g., L3SM [RFC8299] or | possible future revisions of existing models (e.g., the L3SM | |||
| L2SM [RFC8466]). | [RFC8299] or the L2SM [RFC8466]). | |||
| 2. Terminology | 2. Terminology | |||
| The terminology for describing YANG modules is defined in [RFC7950]. | The terminology for describing YANG modules is defined in [RFC7950]. | |||
| The meaning of the symbols in tree diagrams is defined in [RFC8340]. | The meanings of the symbols in tree diagrams are defined in | |||
| [RFC8340]. | ||||
| The reader may refer to [RFC4026] and [RFC4176] for VPN-related | The reader may refer to [RFC4026] and [RFC4176] for VPN-related | |||
| terms. | terms. | |||
| The document inherits many terms from [RFC8299] and [RFC8466] (e.g., | This document inherits many terms from [RFC8299] and [RFC8466] (e.g., | |||
| Enhanced Mobile Broadband (eMBB), Ultra-Reliable and Low Latency | Enhanced Mobile Broadband (eMBB), Ultra-Reliable and Low Latency | |||
| Communications (URLLC), Massive Machine Type Communications (mMTC)). | Communications (URLLC), Massive Machine Type Communications (mMTC)). | |||
| 3. Description of the VPN Common YANG Module | 3. Description of the VPN Common YANG Module | |||
| The "ietf-vpn-common" module defines a set of common VPN-related | The "ietf-vpn-common" module defines a set of common VPN-related | |||
| features, including: | features, including the following: | |||
| Encapsulation features such as: | Encapsulation features, such as the following: | |||
| * Dot1q [IEEE802.1Q], | * dot1Q [IEEE802.1Q], | |||
| * QinQ [IEEE802.1ad], | * QinQ [IEEE802.1ad], | |||
| * link aggregation [IEEE802.1AX], and | * link aggregation [IEEE802.1AX], and | |||
| * Virtual eXtensible Local Area Network (VXLAN) [RFC7348]. | * Virtual eXtensible Local Area Networks (VXLANs) [RFC7348]. | |||
| Multicast [RFC6513]. | Multicast [RFC6513]. | |||
| Routing features such as: | Routing features, such as the following: | |||
| * BGP [RFC4271], | * BGP [RFC4271], | |||
| * OSPF [RFC4577][RFC6565], | * OSPF [RFC4577] [RFC6565], | |||
| * IS-IS [ISO10589], | * IS-IS [ISO10589], | |||
| * RIP [RFC2080][RFC2453], | * RIP [RFC2080] [RFC2453], | |||
| * Bidirectional Forwarding Detection (BFD) [RFC5880][RFC7880], | * Bidirectional Forwarding Detection (BFD) [RFC5880] [RFC7880], | |||
| and | and | |||
| * Virtual Router Redundancy Protocol (VRRP) [RFC5798]. | * Virtual Router Redundancy Protocol (VRRP) [RFC5798]. | |||
| Also, the module defines a set of identities, including: | Also, the module defines a set of identities, including the | |||
| following: | ||||
| 'service-type': Used to identify the VPN service type. Examples of | 'service-type': Used to identify the VPN service type. Examples of | |||
| supported service types are: | supported service types are as follows: | |||
| * L3VPN, | * L3VPN, | |||
| * Virtual Private LAN Service (VPLS) using BGP [RFC4761], | * Virtual Private LAN Service (VPLS) using BGP [RFC4761], | |||
| * VPLS using Label Distribution Protocol (LDP) [RFC4762], | * VPLS using the Label Distribution Protocol (LDP) [RFC4762], | |||
| * Virtual Private Wire Service (VPWS) [RFC8214], | * Virtual Private Wire Service (VPWS) [RFC8214], | |||
| * BGP MPLS-Based Ethernet VPN [RFC7432], | * BGP MPLS-Based Ethernet VPN [RFC7432], | |||
| * Ethernet VPN (EVPN) [RFC8365], and | * Ethernet VPN (EVPN) [RFC8365], and | |||
| * Provider Backbone Bridging Combined with Ethernet VPN | * Provider Backbone Bridging Combined with Ethernet VPN | |||
| (PBB-EVPN) [RFC7623]. | (PBB-EVPN) [RFC7623]. | |||
| 'vpn-signaling-type': Used to identify the signaling mode used for a | 'vpn-signaling-type': Used to identify the signaling mode used for a | |||
| given service type. Examples of supported VPN signaling types | given service type. Examples of supported VPN signaling types are | |||
| are: | as follows: | |||
| * L2VPNs using BGP [RFC6624]. | * L2VPNs using BGP [RFC6624], | |||
| * LDP [RFC5036], and | * LDP [RFC5036], and | |||
| * Layer Two Tunneling Protocol (L2TP) [RFC3931]. | * Layer Two Tunneling Protocol (L2TP) [RFC3931]. | |||
| The module covers both IPv4 [RFC0791] and IPv6 [RFC8200] identities. | The module covers both IPv4 [RFC0791] and IPv6 [RFC8200] identities. | |||
| It also includes multicast related identities such as Internet Group | It also includes multicast-related identities such as Internet Group | |||
| Management Protocol version 1 (IGMPv1) [RFC1112], IGMPv2 [RFC2236], | Management Protocol version 1 (IGMPv1) [RFC1112], IGMPv2 [RFC2236], | |||
| IGMPv3 [RFC3376], Multicast Listener Discovery version 1 (MLDv1) | IGMPv3 [RFC3376], Multicast Listener Discovery version 1 (MLDv1) | |||
| [RFC2710], MLDv2 [RFC3810], and Protocol Independent Multicast (PIM) | [RFC2710], MLDv2 [RFC3810], and Protocol Independent Multicast (PIM) | |||
| [RFC7761]. | [RFC7761]. | |||
| The reader should refer to Section 4 for the full list of supported | The reader should refer to Section 4 for the full list of supported | |||
| identities (identities related to address families, VPN topologies, | identities (identities related to address families, VPN topologies, | |||
| network access types, operational and administrative status, site or | network access types, operational and administrative status, site or | |||
| node roles, VPN service constraints, routing protocols, routes | node role, VPN service constraints, routing protocols, route import | |||
| imports and exports, bandwidth and Quality of Service (QoS), etc.). | and export policies, bandwidth, Quality of Service (QoS), etc.). | |||
| The "ietf-vpn-common" module also contains a set of reusable VPN- | The "ietf-vpn-common" module also contains a set of reusable VPN- | |||
| related groupings. The tree diagram of the "ietf-vpn-common" module | related groupings. Figure 1 provides the tree diagram that depicts | |||
| that depicts the common groupings is provided in Figure 1. | the common groupings for the "ietf-vpn-common" module. | |||
| module: ietf-vpn-common | ||||
| grouping vpn-description | ||||
| +-- vpn-id? vpn-id | ||||
| +-- vpn-name? string | ||||
| +-- vpn-description? string | ||||
| +-- customer-name? string | ||||
| grouping vpn-profile-cfg | ||||
| +-- valid-provider-identifiers | ||||
| +-- external-connectivity-identifier* [id] | ||||
| | {external-connectivity}? | ||||
| | +-- id string | ||||
| +-- encryption-profile-identifier* [id] | ||||
| | +-- id string | ||||
| +-- qos-profile-identifier* [id] | ||||
| | +-- id string | ||||
| +-- bfd-profile-identifier* [id] | ||||
| | +-- id string | ||||
| +-- forwarding-profile-identifier* [id] | ||||
| | +-- id string | ||||
| +-- routing-profile-identifier* [id] | ||||
| +-- id string | ||||
| grouping oper-status-timestamp | ||||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
| grouping service-status | ||||
| +-- status | ||||
| +-- admin-status | ||||
| | +-- status? identityref | ||||
| | +-- last-change? yang:date-and-time | ||||
| +-- oper-status | ||||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
| grouping underlay-transport | ||||
| +-- (type)? | ||||
| +--:(abstract) | ||||
| | +-- transport-instance-id? string | ||||
| +--:(protocol) | ||||
| +-- protocol* identityref | ||||
| grouping vpn-route-targets | ||||
| +-- vpn-target* [id] | ||||
| | +-- id uint8 | ||||
| | +-- route-targets* [route-target] | ||||
| | | +-- route-target rt-types:route-target | ||||
| | +-- route-target-type rt-types:route-target-type | ||||
| +-- vpn-policies | ||||
| +-- import-policy? string | ||||
| +-- export-policy? string | ||||
| grouping route-distinguisher | module: ietf-vpn-common | |||
| ... | grouping vpn-description: | |||
| grouping vpn-components-group | +-- vpn-id? vpn-id | |||
| +-- groups | +-- vpn-name? string | |||
| +-- group* [group-id] | +-- vpn-description? string | |||
| +-- group-id string | +-- customer-name? string | |||
| grouping placement-constraints | grouping vpn-profile-cfg: | |||
| +-- constraint* [constraint-type] | +-- valid-provider-identifiers | |||
| +-- constraint-type? identityref | +-- external-connectivity-identifier* [id] | |||
| +-- target | | {external-connectivity}? | |||
| +-- (target-flavor)? | | +-- id string | |||
| +--:(id) | +-- encryption-profile-identifier* [id] | |||
| | +-- group* [group-id] | | +-- id string | |||
| | +-- group-id string | +-- qos-profile-identifier* [id] | |||
| +--:(all-accesses) | | +-- id string | |||
| | +-- all-other-accesses? empty | +-- bfd-profile-identifier* [id] | |||
| +--:(all-groups) | | +-- id string | |||
| +-- all-other-groups? empty | +-- forwarding-profile-identifier* [id] | |||
| grouping ports | | +-- id string | |||
| ... | +-- routing-profile-identifier* [id] | |||
| grouping qos-classification-policy | +-- id string | |||
| ... | grouping oper-status-timestamp: | |||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
| grouping service-status: | ||||
| +-- status | ||||
| +-- admin-status | ||||
| | +-- status? identityref | ||||
| | +-- last-change? yang:date-and-time | ||||
| +--ro oper-status | ||||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
| grouping underlay-transport: | ||||
| +-- (type)? | ||||
| +--:(abstract) | ||||
| | +-- transport-instance-id? string | ||||
| | +-- instance-type? identityref | ||||
| +--:(protocol) | ||||
| +-- protocol* identityref | ||||
| grouping vpn-route-targets: | ||||
| +-- vpn-target* [id] | ||||
| | +-- id uint8 | ||||
| | +-- route-targets* [route-target] | ||||
| | | +-- route-target rt-types:route-target | ||||
| | +-- route-target-type rt-types:route-target-type | ||||
| +-- vpn-policies | ||||
| +-- import-policy? string | ||||
| +-- export-policy? string | ||||
| grouping route-distinguisher: | ||||
| ... | ||||
| grouping vpn-components-group: | ||||
| +-- groups | ||||
| +-- group* [group-id] | ||||
| +-- group-id string | ||||
| grouping placement-constraints: | ||||
| +-- constraint* [constraint-type] | ||||
| +-- constraint-type? identityref | ||||
| +-- target | ||||
| +-- (target-flavor)? | ||||
| +--:(id) | ||||
| | +-- group* [group-id] | ||||
| | +-- group-id string | ||||
| +--:(all-accesses) | ||||
| | +-- all-other-accesses? empty | ||||
| +--:(all-groups) | ||||
| +-- all-other-groups? empty | ||||
| grouping ports: | ||||
| ... | ||||
| grouping qos-classification-policy: | ||||
| ... | ||||
| Figure 1: VPN Common Tree | Figure 1: VPN Common Tree | |||
| The description of the common groupings is provided below: | The descriptions of the common groupings are provided below: | |||
| 'vpn-description': | 'vpn-description': | |||
| A YANG grouping that provides common administrative VPN | A YANG grouping that provides common administrative VPN | |||
| information such as an identifier, a name, a textual | information such as an identifier, a name, a textual description, | |||
| description, and a customer name. | and a customer name. | |||
| 'vpn-profile-cfg': | 'vpn-profile-cfg': | |||
| A YANG grouping that defines a set of valid profiles | A YANG grouping that defines a set of valid profiles (encryption, | |||
| (encryption, routing, forwarding, etc.) that can be bound to a | routing, forwarding, etc.) that can be bound to a Layer 2/3 VPN. | |||
| Layer 2/3 VPN. This document does not make any assumption | This document does not make any assumptions about the structure of | |||
| about the structure of such profiles, but allows "gluing" a VPN | such profiles but allows "gluing" a VPN service with other | |||
| service with other parameters that can be required locally to | parameters that can be required locally to provide value-added | |||
| provide added value features to requesting customers. | features to requesting customers. | |||
| For example, a service provider may provide an external | For example, a service provider may provide external connectivity | |||
| connectivity to a VPN customer (e.g., to a private or public | to a VPN customer (e.g., to a private or public cloud, Internet). | |||
| cloud, Internet). Such service may involve tweaking both | Such a service may involve tweaking both filtering and NAT rules | |||
| filtering and NAT rules (e.g., bind a Virtual Routing and | (e.g., binding a Virtual Routing and Forwarding (VRF) interface | |||
| Forwarding (VRF) interface with a NAT instance as discussed in | with a NAT instance as discussed in Section 2.10 of [RFC8512]). | |||
| Section 2.10 of [RFC8512]). These added value features may be | These value-added features may be bound to all, or a subset of, | |||
| bound to all or a subset of network accesses. Some of these | network accesses. Some of these value-added features may be | |||
| added value features may be implemented in nodes other than PEs | implemented in nodes other than Provider Edges (PEs) (e.g., a P | |||
| (e.g., a P node or even a dedicated node that hosts the NAT | node or even a dedicated node that hosts the NAT function). | |||
| function). | ||||
| It is out of the scope of this document to elaborate the | Elaborating on the structure of these profiles is beyond the scope | |||
| structure of these profiles. | of this document. | |||
| 'oper-status-timestamp': | 'oper-status-timestamp': | |||
| A YANG grouping that defines the operational status updates of | A YANG grouping that defines the operational status updates of a | |||
| a VPN service or component. | VPN service or component. | |||
| 'service-status': | 'service-status': | |||
| A YANG grouping that defines the administrative and operational | A YANG grouping that defines the administrative and operational | |||
| status of a component. The grouping can be applied to the | status of a component. The grouping can be applied to the whole | |||
| whole service or an endpoint. | service or an endpoint. | |||
| 'underlay-transport': | 'underlay-transport': | |||
| A YANG grouping that defines the type of the underlay transport | A YANG grouping that defines the type of the underlay transport | |||
| for a VPN service or how that underlay is set. | for a VPN service or how that underlay is set. | |||
| The underlay transport can be expressed as an abstract | The underlay transport can be expressed as an abstract transport | |||
| transport instance (e.g., an identifier of a VPN+ instance | instance (e.g., an identifier of a VPN+ instance | |||
| [I-D.ietf-teas-enhanced-vpn], a virtual network identifier | [Enhanced-VPN-Framework], a virtual network identifier | |||
| [I-D.ietf-teas-actn-vn-yang][RFC8453], or a network slice name | [ACTN-VN-YANG] [RFC8453], or a network slice name | |||
| [I-D.ietf-teas-ietf-network-slices]) or as an ordered list of | [Network-Slices-Framework]) or as an ordered list of the actual | |||
| the actual protocols to be enabled in the network. | protocols to be enabled in the network. | |||
| The module supports a rich set of protocol identifiers that can | The module supports a rich set of protocol identifiers that can be | |||
| be used, e.g., to refer to an underlay transport. Examples of | used, for example, to refer to an underlay transport. Examples of | |||
| supported protocols are: | supported protocols are as follows: | |||
| - IP-in-IP [RFC2003][RFC2473], | * IP in IP [RFC2003] [RFC2473], | |||
| - GRE [RFC1701][RFC1702][RFC7676], | * Generic Routing Encapsulation (GRE) [RFC1701] [RFC1702] | |||
| [RFC7676], | ||||
| - MPLS-in-UDP [RFC7510], | * MPLS in UDP [RFC7510], | |||
| - Generic Network Virtualization Encapsulation (GENEVE) | * Generic Network Virtualization Encapsulation (Geneve) | |||
| [RFC8926], | [RFC8926], | |||
| - Segment Routing (SR) [RFC8660][RFC8663][RFC8754], | * Segment Routing (SR) [RFC8660] [RFC8663] [RFC8754], | |||
| - Resource ReSerVation Protocol (RSVP) with traffic | ||||
| engineering extensions [RFC3209], and | ||||
| - BGP with labeled prefixes [RFC8277]. | * Resource ReSerVation Protocol (RSVP) with traffic engineering | |||
| extensions [RFC3209], and | ||||
| * BGP with labeled prefixes [RFC8277]. | ||||
| 'vpn-route-targets': | 'vpn-route-targets': | |||
| A YANG grouping that defines Route Target (RT) import/export | A YANG grouping that defines Route Target (RT) import/export rules | |||
| rules used in a BGP-enabled VPN. This grouping can be used for | used in a BGP-enabled VPN. This grouping can be used for both | |||
| both L3VPNs [RFC4364] and L2VPNs[RFC4664]. Note that this is | L3VPNs [RFC4364] and L2VPNs [RFC4664]. Note that this is modeled | |||
| modelled as a list to ease the reuse of this grouping in | as a list to ease the reuse of this grouping in modules where an | |||
| modules where an RT identifier is needed (e.g., associate an | RT identifier is needed (e.g., associating an operator with RTs). | |||
| operator with RTs). | ||||
| 'route-distinguisher': | 'route-distinguisher': | |||
| A YANG grouping that defines Route Distinguishers (RDs). | A YANG grouping that defines Route Distinguishers (RDs). | |||
| As depicted in Figure 2, the module supports these RD | As depicted in Figure 2, the module supports the following RD | |||
| assignment modes: direct assignment, automatic assignment from | assignment modes: direct assignment, full automatic assignment, | |||
| a given pool, automatic assignment, and no assignment. | automatic assignment from a given pool, and no assignment. | |||
| Also, the module accommodates deployments where only the | Also, the module accommodates deployments where only the Assigned | |||
| Assigned Number subfield of RDs (Section 4.2 of [RFC4364]) is | Number subfield of RDs (Section 4.2 of [RFC4364]) is assigned from | |||
| assigned from a pool while the Administrator subfield is set | a pool while the Administrator subfield is set to, for example, | |||
| to, e.g., the router-id that is assigned to a VPN node. The | the Router ID that is assigned to a VPN node. The module supports | |||
| module supports these modes for managing the Assigned Number | three modes for managing the Assigned Number subfield: explicit | |||
| subfield: explicit assignment, auto-assignment from a pool, and | assignment, automatic assignment from a given pool, and full | |||
| full auto-assignment. | automatic assignment. | |||
| grouping route-distinguisher | grouping route-distinguisher: | |||
| +-- (rd-choice)? | +-- (rd-choice)? | |||
| +--:(directly-assigned) | +--:(directly-assigned) | |||
| | +-- rd? rt-types:route-distinguisher | | +-- rd? rt-types:route-distinguisher | |||
| +--:(directly-assigned-suffix) | +--:(directly-assigned-suffix) | |||
| | +-- rd-suffix? uint16 | | +-- rd-suffix? uint16 | |||
| +--:(auto-assigned) | +--:(auto-assigned) | |||
| | +-- rd-auto | | +-- rd-auto | |||
| | +-- (auto-mode)? | | +-- (auto-mode)? | |||
| | | +--:(from-pool) | | | +--:(from-pool) | |||
| | | | +-- rd-pool-name? string | | | | +-- rd-pool-name? string | |||
| | | +--:(full-auto) | | | +--:(full-auto) | |||
| | | +-- auto? empty | | | +-- auto? empty | |||
| | +--ro auto-assigned-rd? rt-types:route-distinguisher | | +--ro auto-assigned-rd? | |||
| +--:(auto-assigned-suffix) | | | rt-types:route-distinguisher | |||
| | +-- rd-auto-suffix | +--:(auto-assigned-suffix) | |||
| | +-- (auto-mode)? | | +-- rd-auto-suffix | |||
| | | +--:(from-pool) | | +-- (auto-mode)? | |||
| | | | +-- rd-pool-name? string | | | +--:(from-pool) | |||
| | | +--:(full-auto) | | | | +-- rd-pool-name? string | |||
| | | +-- auto? empty | | | +--:(full-auto) | |||
| | +--ro auto-assigned-rd-suffix? uint16 | | | +-- auto? empty | |||
| +--:(no-rd) | | +--ro auto-assigned-rd-suffix? uint16 | |||
| +-- no-rd? empty | +--:(no-rd) | |||
| +-- no-rd? empty | ||||
| Figure 2: Route Distinguisher Grouping Subtree | Figure 2: Route Distinguisher Grouping Subtree | |||
| 'vpn-components-group': | 'vpn-components-group': | |||
| A YANG grouping that is used to group VPN nodes, VPN network | A YANG grouping that is used to group VPN nodes, VPN network | |||
| accesses, or sites. For example, diversity or redundancy | accesses, or sites. For example, diversity or redundancy | |||
| constraints can be applied on a per-group basis. | constraints can be applied on a per-group basis. | |||
| 'placement-constraints': | 'placement-constraints': | |||
| A YANG grouping that is used to define the placement | A YANG grouping that is used to define the placement constraints | |||
| constraints of a VPN node, VPN network access, or site. | of a VPN node, VPN network access, or site. | |||
| 'ports': | 'ports': | |||
| A YANG grouping that defines ranges of source and destination | A YANG grouping that defines ranges of source and destination port | |||
| port numbers and operators. The subtree of this grouping is | numbers and operators. The subtree of this grouping is depicted | |||
| depicted in Figure 3. | in Figure 3. | |||
| grouping ports | grouping ports: | |||
| +-- (source-port)? | +-- (source-port)? | |||
| | +--:(source-port-range-or-operator) | | +--:(source-port-range-or-operator) | |||
| | +-- source-port-range-or-operator | | +-- source-port-range-or-operator | |||
| | +-- (port-range-or-operator)? | | +-- (port-range-or-operator)? | |||
| | +--:(range) | | +--:(range) | |||
| | | +-- lower-port inet:port-number | | | +-- lower-port inet:port-number | |||
| | | +-- upper-port inet:port-number | | | +-- upper-port inet:port-number | |||
| | +--:(operator) | | +--:(operator) | |||
| | +-- operator? operator | | +-- operator? operator | |||
| | +-- port inet:port-number | | +-- port inet:port-number | |||
| +-- (destination-port)? | +-- (destination-port)? | |||
| +--:(destination-port-range-or-operator) | +--:(destination-port-range-or-operator) | |||
| +-- destination-port-range-or-operator | +-- destination-port-range-or-operator | |||
| +-- (port-range-or-operator)? | +-- (port-range-or-operator)? | |||
| +--:(range) | +--:(range) | |||
| | +-- lower-port inet:port-number | | +-- lower-port inet:port-number | |||
| | +-- upper-port inet:port-number | | +-- upper-port inet:port-number | |||
| +--:(operator) | +--:(operator) | |||
| +-- operator? operator | +-- operator? operator | |||
| +-- port inet:port-number | +-- port inet:port-number | |||
| Figure 3: Port Numbers Grouping Subtree | Figure 3: Port Numbers Grouping Subtree | |||
| 'qos-classification-policy': | 'qos-classification-policy': | |||
| A YANG grouping that defines a set of QoS classification | A YANG grouping that defines a set of QoS classification policies | |||
| policies based on various match Layer 3/4 and application | based on various Layer 3/4 and application match criteria. The | |||
| criteria. The subtree of this grouping is depicted in | subtree of this grouping is depicted in Figure 4. | |||
| Figure 4. | ||||
| The QoS match criteria reuse groupings that are defined in the | The QoS match criteria reuse groupings that are defined in the | |||
| packet fields module "ietf-packet-fields" (Section 4.2 of | packet fields module "ietf-packet-fields" (Section 4.2 of | |||
| [RFC8519]). | [RFC8519]). | |||
| Any layer 4 protocol can be indicated in the 'protocol' data | Any Layer 4 protocol can be indicated in the 'protocol' data node | |||
| node under 'l3', but only TCP and UDP specific match criteria | under 'l3', but only TCP- and UDP-specific match criteria are | |||
| are elaborated in this version as these protocols are widely | elaborated on in this version, as these protocols are widely used | |||
| used in the context of VPN services. Future revisions can be | in the context of VPN services. Future revisions can be | |||
| considered to add other Layer 4 specific parameters (e.g., | considered to add other Layer-4-specific parameters (e.g., the | |||
| Stream Control Transmission Protocol [RFC4960]), if needed. | Stream Control Transmission Protocol [RFC4960]), if needed. | |||
| Some transport protocols use existing protocols (e.g., TCP or | Some transport protocols use existing protocols (e.g., TCP or UDP) | |||
| UDP) as substrate. The match criteria for such protocols may | as the substrate. The match criteria for such protocols may rely | |||
| rely upon the 'protocol' under 'l3', TCP/UDP match criteria | upon the 'protocol' under 'l3', TCP/UDP match criteria as shown in | |||
| shown in Figure 4, part of the TCP/UDP payload, or a | Figure 4, part of the TCP/UDP payload, or a combination thereof. | |||
| combination thereof. This version of the module does not | This version of the module does not support such advanced match | |||
| support such advanced match criteria. Future revisions of the | criteria. Future revisions of the module may consider adding | |||
| module may consider adding match criteria based on the | match criteria based on the transport protocol payload (e.g., by | |||
| transport protocol payload (e.g., by means of a bitmask match). | means of a bitmask match). | |||
| grouping qos-classification-policy | grouping qos-classification-policy: | |||
| +-- rule* [id] | +-- rule* [id] | |||
| +-- id string | +-- id string | |||
| +-- (match-type)? | +-- (match-type)? | |||
| | +--:(match-flow) | | +--:(match-flow) | |||
| | | +-- (l3)? | | | +-- (l3)? | |||
| | | | +--:(ipv4) | | | | +--:(ipv4) | |||
| | | | | +-- ipv4 | | | | | +-- ipv4 | |||
| | | | | +-- dscp? inet:dscp | | | | | +-- dscp? inet:dscp | |||
| | | | | +-- ecn? uint8 | | | | | +-- ecn? uint8 | |||
| | | | | +-- length? uint16 | | | | | +-- length? uint16 | |||
| | | | | +-- ttl? uint8 | | | | | +-- ttl? uint8 | |||
| | | | | +-- protocol? uint8 | | | | | +-- protocol? uint8 | |||
| | | | | +-- ihl? uint8 | | | | | +-- ihl? uint8 | |||
| | | | | +-- flags? bits | | | | | +-- flags? bits | |||
| | | | | +-- offset? uint16 | | | | | +-- offset? uint16 | |||
| | | | | +-- identification? uint16 | | | | | +-- identification? uint16 | |||
| | | | | +-- (destination-network)? | | | | | +-- (destination-network)? | |||
| | | | | | +--:(destination-ipv4-network) | | | | | | +--:(destination-ipv4-network) | |||
| | | | | | +-- destination-ipv4-network? | | | | | | +-- destination-ipv4-network? | |||
| | | | | | inet:ipv4-prefix | | | | | | inet:ipv4-prefix | |||
| | | | | +-- (source-network)? | | | | | +-- (source-network)? | |||
| | | | | +--:(source-ipv4-network) | | | | | +--:(source-ipv4-network) | |||
| | | | | +-- source-ipv4-network? | | | | | +-- source-ipv4-network? | |||
| | | | | inet:ipv4-prefix | | | | | inet:ipv4-prefix | |||
| | | | +--:(ipv6) | | | | +--:(ipv6) | |||
| | | | +-- ipv6 | | | | +-- ipv6 | |||
| | | | +-- dscp? inet:dscp | | | | +-- dscp? inet:dscp | |||
| | | | +-- ecn? uint8 | | | | +-- ecn? uint8 | |||
| | | | +-- length? uint16 | | | | +-- length? uint16 | |||
| | | | +-- ttl? uint8 | | | | +-- ttl? uint8 | |||
| | | | +-- protocol? uint8 | | | | +-- protocol? uint8 | |||
| | | | +-- (destination-network)? | | | | +-- (destination-network)? | |||
| | | | | +--:(destination-ipv6-network) | | | | | +--:(destination-ipv6-network) | |||
| | | | | +-- destination-ipv6-network? | | | | | +-- destination-ipv6-network? | |||
| | | | | inet:ipv6-prefix | | | | | inet:ipv6-prefix | |||
| | | | +-- (source-network)? | | | | +-- (source-network)? | |||
| | | | | +--:(source-ipv6-network) | | | | | +--:(source-ipv6-network) | |||
| | | | | +-- source-ipv6-network? | | | | | +-- source-ipv6-network? | |||
| | | | | inet:ipv6-prefix | | | | | inet:ipv6-prefix | |||
| | | | +-- flow-label? | | | | +-- flow-label? | |||
| | | | inet:ipv6-flow-label | | | | inet:ipv6-flow-label | |||
| | | +-- (l4)? | | | +-- (l4)? | |||
| | | +--:(tcp) | | | +--:(tcp) | |||
| | | | +-- tcp | | | | +-- tcp | |||
| | | | +-- sequence-number? uint32 | | | | +-- sequence-number? uint32 | |||
| | | | +-- acknowledgement-number? uint32 | | | | +-- acknowledgement-number? uint32 | |||
| | | | +-- data-offset? uint8 | | | | +-- data-offset? uint8 | |||
| | | | +-- reserved? uint8 | | | | +-- reserved? uint8 | |||
| | | | +-- flags? bits | | | | +-- flags? bits | |||
| | | | +-- window-size? uint16 | | | | +-- window-size? uint16 | |||
| | | | +-- urgent-pointer? uint16 | | | | +-- urgent-pointer? uint16 | |||
| | | | +-- options? binary | | | | +-- options? binary | |||
| | | | +-- (source-port)? | | | | +-- (source-port)? | |||
| | | | | +--:(source-port-range-or-operator) | | | | | +--:(source-port-range-or-operator) | |||
| | | | | +-- source-port-range-or-operator | | | | | +-- source-port-range-or-operator | |||
| | | | | +-- (port-range-or-operator)? | | | | | +-- (port-range-or-operator)? | |||
| | | | | +--:(range) | | | | | +--:(range) | |||
| | | | | | +-- lower-port | | | | | | +-- lower-port | |||
| | | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | | +-- upper-port | | | | | | +-- upper-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | +--:(operator) | |||
| | | | | +-- operator? operator | | | | | +-- operator? operator | |||
| | | | | +-- port | | | | | +-- port | |||
| | | | | inet:port-number | | | | | inet:port-number | |||
| | | | +-- (destination-port)? | | | | +-- (destination-port)? | |||
| | | | +--:(destination-port-range-or-operator) | | | | +--:(destination-port-range-or-operator) | |||
| | | | +-- destination-port-range-or-operator | | | | +-- destination-port-range-or-operator | |||
| | | | +-- (port-range-or-operator)? | | | | +-- (port-range-or-operator)? | |||
| | | | +--:(range) | | | | +--:(range) | |||
| | | | | +-- lower-port | | | | | +-- lower-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +-- upper-port | | | | | +-- upper-port | |||
| | | | | inet:port-number | | | | | inet:port-number | |||
| | | | +--:(operator) | | | | +--:(operator) | |||
| | | | +-- operator? operator | | | | +-- operator? operator | |||
| | | | +-- port | | | | +-- port | |||
| | | | inet:port-number | | | | inet:port-number | |||
| | | +--:(udp) | | | +--:(udp) | |||
| | | +-- udp | | | +-- udp | |||
| | | +-- length? uint16 | | | +-- length? uint16 | |||
| | | +-- (source-port)? | | | +-- (source-port)? | |||
| | | | +--:(source-port-range-or-operator) | | | | +--:(source-port-range-or-operator) | |||
| | | | +-- source-port-range-or-operator | | | | +-- source-port-range-or-operator | |||
| | | | +-- (port-range-or-operator)? | | | | +-- (port-range-or-operator)? | |||
| | | | +--:(range) | | | | +--:(range) | |||
| | | | | +-- lower-port | | | | | +-- lower-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +-- upper-port | | | | | +-- upper-port | |||
| | | | | inet:port-number | | | | | inet:port-number | |||
| | | | +--:(operator) | | | | +--:(operator) | |||
| | | | +-- operator? operator | | | | +-- operator? operator | |||
| | | | +-- port | | | | +-- port | |||
| | | | inet:port-number | | | | inet:port-number | |||
| | | +-- (destination-port)? | | | +-- (destination-port)? | |||
| | | +--:(destination-port-range-or-operator) | | | +--:(destination-port-range-or-operator) | |||
| | | +-- destination-port-range-or-operator | | | +-- destination-port-range-or-operator | |||
| | | +-- (port-range-or-operator)? | | | +-- (port-range-or-operator)? | |||
| | | +--:(range) | | | +--:(range) | |||
| | | | +-- lower-port | | | | +-- lower-port | |||
| | | | | inet:port-number | | | | | inet:port-number | |||
| | | | +-- upper-port | | | | +-- upper-port | |||
| | | | inet:port-number | | | | inet:port-number | |||
| | | +--:(operator) | | | +--:(operator) | |||
| | | +-- operator? operator | | | +-- operator? operator | |||
| | | +-- port | | | +-- port | |||
| | | inet:port-number | | | inet:port-number | |||
| | +--:(match-application) | | +--:(match-application) | |||
| | +-- match-application? identityref | | +-- match-application? identityref | |||
| +-- target-class-id? string {qos}? | +-- target-class-id? string | |||
| Figure 4: QoS Classification Subtree | Figure 4: QoS Classification Subtree | |||
| 4. Layer 2/3 VPN Common Module | 4. Layer 2/3 VPN Common Module | |||
| This module uses types defined in [RFC6991], [RFC8294], and | This module uses types defined in [RFC6991], [RFC8294], and | |||
| [RFC8519]. It also uses the extension defined in [RFC8341]. | [RFC8519]. It also uses the extension defined in [RFC8341]. | |||
| <CODE BEGINS> file "ietf-vpn-common@2021-09-10.yang" | <CODE BEGINS> file "ietf-vpn-common@2022-02-11.yang" | |||
| module ietf-vpn-common { | module ietf-vpn-common { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-vpn-common"; | namespace "urn:ietf:params:xml:ns:yang:ietf-vpn-common"; | |||
| prefix vpn-common; | prefix vpn-common; | |||
| import ietf-netconf-acm { | import ietf-netconf-acm { | |||
| prefix nacm; | prefix nacm; | |||
| reference | reference | |||
| "RFC 8341: Network Configuration Access Control Model"; | "RFC 8341: Network Configuration Access Control Model"; | |||
| } | } | |||
| skipping to change at page 14, line 4 ¶ | skipping to change at line 566 ¶ | |||
| import ietf-netconf-acm { | import ietf-netconf-acm { | |||
| prefix nacm; | prefix nacm; | |||
| reference | reference | |||
| "RFC 8341: Network Configuration Access Control Model"; | "RFC 8341: Network Configuration Access Control Model"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix rt-types; | prefix rt-types; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types, Section 3"; | "RFC 6991: Common YANG Data Types, Section 3"; | |||
| } | } | |||
| import ietf-packet-fields { | import ietf-packet-fields { | |||
| prefix packet-fields; | prefix packet-fields; | |||
| reference | reference | |||
| "RFC 8519: YANG Data Model for Network Access | "RFC 8519: YANG Data Model for Network Access | |||
| Control Lists (ACLs)"; | Control Lists (ACLs)"; | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSAWG (Operations and Management Area Working Group)"; | "IETF OPSAWG (Operations and Management Area Working Group)"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| Author: Samier Barguil | Author: Samier Barguil | |||
| <mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
| Author: Oscar Gonzalez de Dios | Editor: Oscar Gonzalez de Dios | |||
| <mailto:oscar.gonzalezdedios@telefonica.com> | <mailto:oscar.gonzalezdedios@telefonica.com> | |||
| Author: Qin Wu | Author: Qin Wu | |||
| <mailto:bill.wu@huawei.com>"; | <mailto:bill.wu@huawei.com>"; | |||
| description | description | |||
| "This YANG module defines a common module that is meant | "This YANG module defines a common module that is meant | |||
| to be reused by various VPN-related modules (e.g., | to be reused by various VPN-related modules (e.g., the | |||
| Layer 3 VPN Service Model (L3SM), Layer 2 VPN Service | Layer 3 VPN Service Model (L3SM), the Layer 2 VPN Service | |||
| Model (L2SM), Layer 3 VPN Network Model (L3NM), Layer 2 | Model (L2SM), the Layer 3 VPN Network Model (L3NM), and | |||
| VPN Network Model (L2NM)). | the Layer 2 VPN Network Model (L2NM)). | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject to | |||
| to the license terms contained in, the Simplified BSD License | the license terms contained in, the Revised BSD License set | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9181; see the | |||
| the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| revision 2021-09-10 { | revision 2022-02-11 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A Layer 2/3 VPN Common YANG Model"; | "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 | |||
| VPNs"; | ||||
| } | } | |||
| /******** Collection of VPN-related Features ********/ | /******** Collection of VPN-related features ********/ | |||
| /* | /* | |||
| * Features related to encapsulation schemes | * Features related to encapsulation schemes | |||
| */ | */ | |||
| feature dot1q { | feature dot1q { | |||
| description | description | |||
| "Indicates the support for the Dot1q encapsulation."; | "Indicates support for dot1Q encapsulation."; | |||
| reference | reference | |||
| "IEEE Std 802.1Q: Bridges and Bridged Networks"; | "IEEE Std 802.1Q: IEEE Standard for Local and Metropolitan | |||
| Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| feature qinq { | feature qinq { | |||
| description | description | |||
| "Indicates the support for the QinQ encapsulation."; | "Indicates support for QinQ encapsulation."; | |||
| reference | reference | |||
| "IEEE Std 802.1ad: Provider Bridges"; | "IEEE Std 802.1ad: IEEE Standard for Local and Metropolitan | |||
| Area Networks---Virtual Bridged Local | ||||
| Area Networks---Amendment 4: Provider | ||||
| Bridges"; | ||||
| } | } | |||
| feature vxlan { | feature vxlan { | |||
| description | description | |||
| "Indicates the support for the Virtual eXtensible | "Indicates support for Virtual eXtensible Local Area | |||
| Local Area Network (VXLAN) encapsulation."; | Network (VXLAN) encapsulation."; | |||
| reference | reference | |||
| "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): | "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): | |||
| A Framework for Overlaying Virtualized Layer 2 | A Framework for Overlaying Virtualized Layer 2 | |||
| Networks over Layer 3 Networks"; | Networks over Layer 3 Networks"; | |||
| } | } | |||
| feature qinany { | feature qinany { | |||
| description | description | |||
| "Indicates the support for the QinAny encapsulation. | "Indicates support for QinAny encapsulation. | |||
| The outer VLAN tag is set to a specific value but | The outer VLAN tag is set to a specific value, but | |||
| the inner VLAN tag is set to any."; | the inner VLAN tag is set to any."; | |||
| } | } | |||
| feature lag-interface { | feature lag-interface { | |||
| description | description | |||
| "Indicates the support for Link Aggregation Group (LAG) | "Indicates support for Link Aggregation Groups (LAGs) | |||
| between VPN network accesses."; | between VPN network accesses."; | |||
| reference | reference | |||
| "IEEE Std. 802.1AX: Link Aggregation"; | "IEEE Std 802.1AX: IEEE Standard for Local and Metropolitan | |||
| Area Networks--Link Aggregation"; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to multicast | * Features related to multicast | |||
| */ | */ | |||
| feature multicast { | feature multicast { | |||
| description | description | |||
| "Indicates multicast capabilities support in a VPN."; | "Indicates support for multicast capabilities in a VPN."; | |||
| reference | reference | |||
| "RFC 6513: Multicast in MPLS/BGP IP VPNs"; | "RFC 6513: Multicast in MPLS/BGP IP VPNs"; | |||
| } | } | |||
| feature igmp { | feature igmp { | |||
| description | description | |||
| "Indicates support for Internet Group Management Protocol | "Indicates support for the Internet Group Management | |||
| (IGMP)."; | Protocol (IGMP)."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting | "RFC 1112: Host Extensions for IP Multicasting | |||
| RFC 2236: Internet Group Management Protocol, Version 2 | RFC 2236: Internet Group Management Protocol, Version 2 | |||
| RFC 3376: Internet Group Management Protocol, Version 3"; | RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| feature mld { | feature mld { | |||
| description | description | |||
| "Indicates support for Multicast Listener Discovery (MLD)."; | "Indicates support for Multicast Listener Discovery (MLD)."; | |||
| reference | reference | |||
| "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 | "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 | |||
| RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| feature pim { | feature pim { | |||
| description | description | |||
| "Indicates support for Protocol Independent Multicast (PIM)."; | "Indicates support for Protocol Independent Multicast | |||
| (PIM)."; | ||||
| reference | reference | |||
| "RFC 7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
| (PIM-SM): Protocol Specification (Revised)"; | (PIM-SM): Protocol Specification (Revised)"; | |||
| } | } | |||
| /* | /* | |||
| * Features related to address family types | * Features related to address family types | |||
| */ | */ | |||
| feature ipv4 { | feature ipv4 { | |||
| description | description | |||
| "Indicates IPv4 support in a VPN. That is, IPv4 traffic | "Indicates IPv4 support in a VPN. That is, IPv4 traffic | |||
| can be carried in the VPN, IPv4 addresses/prefixes can | can be carried in the VPN, IPv4 addresses/prefixes can | |||
| be assigned to a VPN network access, IPv4 routes can be | be assigned to a VPN network access, IPv4 routes can be | |||
| installed for the CE/PE link, etc."; | installed for the Customer Edge to Provider Edge (CE-PE) | |||
| link, etc."; | ||||
| reference | reference | |||
| "RFC 791: Internet Protocol"; | "RFC 791: Internet Protocol"; | |||
| } | } | |||
| feature ipv6 { | feature ipv6 { | |||
| description | description | |||
| "Indicates IPv6 support in a VPN. That is, IPv6 traffic | "Indicates IPv6 support in a VPN. That is, IPv6 traffic | |||
| can be carried in the VPN, IPv6 addresses/prefixes can | can be carried in the VPN, IPv6 addresses/prefixes can | |||
| be assigned to a VPN network access, IPv6 routes can be | be assigned to a VPN network access, IPv6 routes can be | |||
| installed for the CE/PE link, etc."; | installed for the CE-PE link, etc."; | |||
| reference | reference | |||
| "RFC 8200: Internet Protocol, Version 6 (IPv6)"; | "RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
| Specification"; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to routing protocols | * Features related to routing protocols | |||
| */ | */ | |||
| feature rtg-ospf { | feature rtg-ospf { | |||
| description | description | |||
| "Indicates support for the OSPF as the Provider Edge (PE)/ | "Indicates support for OSPF as the Provider Edge to | |||
| Customer Edge (CE) routing protocol."; | Customer Edge (PE-CE) routing protocol."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks (VPNs) | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol"; | (PE-CE) Routing Protocol"; | |||
| } | } | |||
| feature rtg-ospf-sham-link { | feature rtg-ospf-sham-link { | |||
| description | description | |||
| "Indicates support for OSPF sham links."; | "Indicates support for OSPF sham links."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks (VPNs), | for BGP/MPLS IP Virtual Private Networks (VPNs), | |||
| Section 4.2.7 | Section 4.2.7 | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol, Section 5"; | (PE-CE) Routing Protocol, Section 5"; | |||
| } | } | |||
| feature rtg-bgp { | feature rtg-bgp { | |||
| description | description | |||
| "Indicates support for BGP as the PE/CE routing protocol."; | "Indicates support for BGP as the PE-CE routing protocol."; | |||
| reference | reference | |||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
| } | } | |||
| feature rtg-rip { | feature rtg-rip { | |||
| description | description | |||
| "Indicates support for RIP as the PE/CE routing protocol."; | "Indicates support for RIP as the PE-CE routing protocol."; | |||
| reference | reference | |||
| "RFC 2453: RIP Version 2 | "RFC 2453: RIP Version 2 | |||
| RFC 2080: RIPng for IPv6"; | RFC 2080: RIPng for IPv6"; | |||
| } | } | |||
| feature rtg-isis { | feature rtg-isis { | |||
| description | description | |||
| "Indicates support for IS-IS as the PE/CE routing protocol."; | "Indicates support for IS-IS as the PE-CE routing | |||
| protocol."; | ||||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| feature rtg-vrrp { | feature rtg-vrrp { | |||
| description | description | |||
| "Indicates support for the Virtual Router Redundancy | "Indicates support for the Virtual Router Redundancy | |||
| Protocol (VRRP) in CE/PE link."; | Protocol (VRRP) in the CE-PE link."; | |||
| reference | reference | |||
| "RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 | "RFC 5798: Virtual Router Redundancy Protocol (VRRP) | |||
| for IPv4 and IPv6"; | Version 3 for IPv4 and IPv6"; | |||
| } | } | |||
| feature bfd { | feature bfd { | |||
| description | description | |||
| "Indicates support for Bidirectional Forwarding Detection (BFD) | "Indicates support for Bidirectional Forwarding Detection | |||
| between the CE and the PE."; | (BFD) between the CE and the PE."; | |||
| reference | reference | |||
| "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
| } | } | |||
| /* | /* | |||
| * Features related to VPN service constraints | * Features related to VPN service constraints | |||
| */ | */ | |||
| feature bearer-reference { | feature bearer-reference { | |||
| description | description | |||
| "A bearer refers to properties of the CE-PE attachment that | "A bearer refers to properties of the CE-PE attachment that | |||
| are below Layer 3. | are below Layer 3. | |||
| This feature indicates support for the bearer reference access | This feature indicates support for the bearer reference | |||
| constraint. That is, the reuse of a network connection that was | access constraint, i.e., the reuse of a network connection | |||
| already ordered to the service provider apart from the IP VPN | that was already ordered to the service provider apart from | |||
| site."; | the IP VPN site."; | |||
| } | } | |||
| feature placement-diversity { | feature placement-diversity { | |||
| description | description | |||
| "Indicates support for placement diversity constraints in the | "Indicates support for placement diversity constraints in | |||
| customer premises. An example of these constraints may be to | the customer premises. An example of these constraints | |||
| avoid connecting a site network access to the same Provider | may be to avoid connecting a site network access to the | |||
| Edge as a target site network access."; | same PE as a target site network access."; | |||
| } | } | |||
| /* | /* | |||
| * Features related to bandwidth and Quality of Service (QoS) | * Features related to bandwidth and Quality of Service (QoS) | |||
| */ | */ | |||
| feature qos { | feature qos { | |||
| description | description | |||
| "Indicates support for Classes of Service (CoSes) in the VPN."; | "Indicates support for Classes of Service (CoSes) in | |||
| the VPN."; | ||||
| } | } | |||
| feature inbound-bw { | feature inbound-bw { | |||
| description | description | |||
| "Indicates support for the inbound bandwidth in a VPN. That is, | "Indicates support for the inbound bandwidth in a VPN, | |||
| support for specifying the download bandwidth from the service | i.e., support for specifying the download bandwidth from | |||
| provider network to the VPN site. Note that the L3SM uses | the service provider network to the VPN site. Note that | |||
| 'input' to identify the same feature. That terminology should | the L3SM uses 'input' to identify the same feature. | |||
| be deprecated in favor of the one defined in this module."; | That terminology should be deprecated in favor of | |||
| the terminology defined in this module."; | ||||
| } | } | |||
| feature outbound-bw { | feature outbound-bw { | |||
| description | description | |||
| "Indicates support for the outbound bandwidth in a VPN. That is, | "Indicates support for the outbound bandwidth in a VPN, | |||
| support for specifying the upload bandwidth from the VPN site | i.e., support for specifying the upload bandwidth from | |||
| to the service provider network. Note that the L3SM uses | the VPN site to the service provider network. Note that | |||
| 'output' to identify the same feature. That terminology should | the L3SM uses 'output' to identify the same feature. | |||
| be deprecated in favor of the one defined in this module."; | That terminology should be deprecated in favor of the | |||
| terminology defined in this module."; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to security and resilience | * Features related to security and resilience | |||
| */ | */ | |||
| feature encryption { | feature encryption { | |||
| description | description | |||
| "Indicates support for encryption in the VPN."; | "Indicates support for encryption in the VPN."; | |||
| } | } | |||
| skipping to change at page 20, line 23 ¶ | skipping to change at line 890 ¶ | |||
| description | description | |||
| "Indicates support for the VPN to provide external | "Indicates support for the VPN to provide external | |||
| connectivity (e.g., Internet, private or public cloud)."; | connectivity (e.g., Internet, private or public cloud)."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 11"; | (VPNs), Section 11"; | |||
| } | } | |||
| feature extranet-vpn { | feature extranet-vpn { | |||
| description | description | |||
| "Indicates support for extranet VPNs. That is, the capability of | "Indicates support for extranet VPNs, i.e., the capability | |||
| a VPN to access a list of other VPNs."; | of a VPN to access a list of other VPNs."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 1.1"; | (VPNs), Section 1.1"; | |||
| } | } | |||
| feature carriers-carrier { | feature carriers-carrier { | |||
| description | description | |||
| "Indicates support for Carrier-of-Carrier VPNs."; | "Indicates support for Carriers' Carriers in VPNs."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 9"; | (VPNs), Section 9"; | |||
| } | } | |||
| /* | /* | |||
| * Address family related identities | * Identities related to address families | |||
| */ | */ | |||
| identity address-family { | identity address-family { | |||
| description | description | |||
| "Defines a type for the address family."; | "Defines a type for the address family."; | |||
| } | } | |||
| identity ipv4 { | identity ipv4 { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv4 address family."; | "Identity for an IPv4 address family."; | |||
| } | } | |||
| identity ipv6 { | identity ipv6 { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv6 address family."; | "Identity for an IPv6 address family."; | |||
| } | } | |||
| identity dual-stack { | identity dual-stack { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv4 and IPv6 address family."; | "Identity for IPv4 and IPv6 address families."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN topology | * Identities related to VPN topology | |||
| */ | */ | |||
| identity vpn-topology { | identity vpn-topology { | |||
| description | description | |||
| "Base identity of the VPN topology."; | "Base identity of the VPN topology."; | |||
| } | } | |||
| identity any-to-any { | identity any-to-any { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for any-to-any VPN topology. All VPN sites | "Identity for any-to-any VPN topology. All VPN sites | |||
| can communicate with each other without any restrictions."; | can communicate with each other without any restrictions."; | |||
| } | } | |||
| identity hub-spoke { | identity hub-spoke { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for Hub-and-Spoke VPN topology. All Spokes can | "Identity for Hub-and-Spoke VPN topology. All Spokes can | |||
| communicate only with Hubs but not with each other. Hubs | communicate with Hubs only and not with each other. Hubs | |||
| can communicate with each other."; | can communicate with each other."; | |||
| } | } | |||
| identity hub-spoke-disjoint { | identity hub-spoke-disjoint { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for Hub-and-Spoke VPN topology where Hubs cannot | "Identity for Hub-and-Spoke VPN topology where Hubs cannot | |||
| communicate with each other."; | communicate with each other."; | |||
| } | } | |||
| identity custom { | identity custom { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for custom VPN topologies where the role of the nodes | "Identity for custom VPN topologies where the role of the | |||
| is not strictly Hub or Spoke. The VPN topology is controlled by | nodes is not strictly Hub or Spoke. The VPN topology is | |||
| the import/export policies. The custom topology reflects more | controlled by the import/export policies. The custom | |||
| complex VPN nodes such as VPN node that acts as Hub for certain | topology reflects more complex VPN nodes, such as a | |||
| nodes and Spoke to others."; | VPN node that acts as a Hub for certain nodes and a Spoke | |||
| for others."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to network access types | * Identities related to network access types | |||
| */ | */ | |||
| identity site-network-access-type { | identity site-network-access-type { | |||
| description | description | |||
| "Base identity for site network access type."; | "Base identity for site network access types."; | |||
| } | } | |||
| identity point-to-point { | identity point-to-point { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Point-to-point access type."; | "Point-to-point access type."; | |||
| } | } | |||
| identity multipoint { | identity multipoint { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Multipoint access type."; | "Multipoint access type."; | |||
| } | } | |||
| identity irb { | identity irb { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Integrated Routing Bridge (IRB). | "Integrated Routing and Bridging (IRB). | |||
| Identity for pseudowire connections."; | Identity for pseudowire connections."; | |||
| } | } | |||
| identity loopback { | identity loopback { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Loopback access type."; | "Loopback access type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to operational and administrative status | * Identities related to operational and administrative status | |||
| */ | */ | |||
| identity operational-status { | identity operational-status { | |||
| description | description | |||
| "Base identity for the operational status."; | "Base identity for operational status."; | |||
| } | } | |||
| identity op-up { | identity op-up { | |||
| base operational-status; | base operational-status; | |||
| description | description | |||
| "Operational status is Up/Enabled."; | "Operational status is Up/Enabled."; | |||
| } | } | |||
| identity op-down { | identity op-down { | |||
| base operational-status; | base operational-status; | |||
| description | description | |||
| "Operational status is Down/Disabled."; | "Operational status is Down/Disabled."; | |||
| skipping to change at page 23, line 42 ¶ | skipping to change at line 1055 ¶ | |||
| identity admin-down { | identity admin-down { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is Down/Disabled."; | "Administrative status is Down/Disabled."; | |||
| } | } | |||
| identity admin-testing { | identity admin-testing { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is up for testing purposes."; | "Administrative status is Up for testing purposes."; | |||
| } | } | |||
| identity admin-pre-deployment { | identity admin-pre-deployment { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is pre-deployment phase. That is, | "Administrative status reflects a pre-deployment phase, | |||
| prior to the actual deployment of a service."; | i.e., prior to the actual deployment of a service."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to site or node role | * Identities related to site or node roles | |||
| */ | */ | |||
| identity role { | identity role { | |||
| description | description | |||
| "Base identity of a site or a node role."; | "Base identity of a site or node role."; | |||
| } | } | |||
| identity any-to-any-role { | identity any-to-any-role { | |||
| base role; | base role; | |||
| description | description | |||
| "Any-to-any role."; | "Any-to-any role."; | |||
| } | } | |||
| identity spoke-role { | identity spoke-role { | |||
| base role; | base role; | |||
| skipping to change at page 24, line 34 ¶ | skipping to change at line 1095 ¶ | |||
| identity hub-role { | identity hub-role { | |||
| base role; | base role; | |||
| description | description | |||
| "A node or a site is acting as a Hub."; | "A node or a site is acting as a Hub."; | |||
| } | } | |||
| identity custom-role { | identity custom-role { | |||
| base role; | base role; | |||
| description | description | |||
| "VPN node with custom or complex role in the VPN. For some | "VPN node with a custom or complex role in the VPN. For | |||
| sources/destinations it can behave as a Hub, but for others it | some sources/destinations, it can behave as a Hub, but for | |||
| can act as a Spoke depending on the configured policy."; | others, it can act as a Spoke, depending on the configured | |||
| policy."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN service constraints | * Identities related to VPN service constraints | |||
| */ | */ | |||
| identity placement-diversity { | identity placement-diversity { | |||
| description | description | |||
| "Base identity for access placement constraints."; | "Base identity for access placement constraints."; | |||
| } | } | |||
| skipping to change at page 25, line 17 ¶ | skipping to change at line 1127 ¶ | |||
| identity pe-diverse { | identity pe-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "PE diversity."; | "PE diversity."; | |||
| } | } | |||
| identity pop-diverse { | identity pop-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "Point Of Presence (POP) diversity."; | "Point of Presence (POP) diversity."; | |||
| } | } | |||
| identity linecard-diverse { | identity linecard-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "Linecard diversity."; | "Linecard diversity."; | |||
| } | } | |||
| identity same-pe { | identity same-pe { | |||
| base placement-diversity; | base placement-diversity; | |||
| skipping to change at page 25, line 44 ¶ | skipping to change at line 1154 ¶ | |||
| description | description | |||
| "Having sites connected using the same bearer."; | "Having sites connected using the same bearer."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to service types | * Identities related to service types | |||
| */ | */ | |||
| identity service-type { | identity service-type { | |||
| description | description | |||
| "Base identity for service type."; | "Base identity for service types."; | |||
| } | } | |||
| identity l3vpn { | identity l3vpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "L3VPN service."; | "L3VPN service."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | |||
| } | } | |||
| identity vpls { | identity vpls { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "VPLS service."; | "Virtual Private LAN Service (VPLS)."; | |||
| reference | reference | |||
| "RFC 4761: Virtual Private LAN Service (VPLS) Using BGP for | "RFC 4761: Virtual Private LAN Service (VPLS) Using BGP for | |||
| Auto-Discovery and Signaling | Auto-Discovery and Signaling | |||
| RFC 4762: Virtual Private LAN Service (VPLS) Using Label | RFC 4762: Virtual Private LAN Service (VPLS) Using Label | |||
| Distribution Protocol (LDP) Signaling"; | Distribution Protocol (LDP) Signaling"; | |||
| } | } | |||
| identity vpws { | identity vpws { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "Virtual Private Wire Service (VPWS) service."; | "Virtual Private Wire Service (VPWS)."; | |||
| reference | reference | |||
| "RFC 4664: Framework for Layer 2 Virtual Private Networks | "RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
| (L2VPNs), Section 3.1.1"; | (L2VPNs), Section 3.1.1"; | |||
| } | } | |||
| identity vpws-evpn { | identity vpws-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "EVPN used to support VPWS service."; | "Ethernet VPN (EVPN) used to support VPWS."; | |||
| reference | reference | |||
| "RFC 8214: Virtual Private Wire Service Support in Ethernet VPN"; | "RFC 8214: Virtual Private Wire Service Support in | |||
| Ethernet VPN"; | ||||
| } | } | |||
| identity pbb-evpn { | identity pbb-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "Provider Backbone Bridging (PBB) EVPNs service."; | "Provider Backbone Bridging (PBB) EVPN service."; | |||
| reference | reference | |||
| "RFC 7623: Provider Backbone Bridging Combined with Ethernet VPN | "RFC 7623: Provider Backbone Bridging Combined with | |||
| (PBB-EVPN)"; | Ethernet VPN (PBB-EVPN)"; | |||
| } | } | |||
| identity mpls-evpn { | identity mpls-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "MPLS-based EVPN service."; | "MPLS-based EVPN service."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN"; | "RFC 7432: BGP MPLS-Based Ethernet VPN"; | |||
| } | } | |||
| identity vxlan-evpn { | identity vxlan-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "VXLAN-based EVPN service."; | "VXLAN-based EVPN service."; | |||
| reference | reference | |||
| "RFC 8365: A Network Virtualization Overlay Solution Using | "RFC 8365: A Network Virtualization Overlay Solution Using | |||
| Ethernet VPN (EVPN)"; | Ethernet VPN (EVPN)"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN signaling type | * Identities related to VPN signaling types | |||
| */ | */ | |||
| identity vpn-signaling-type { | identity vpn-signaling-type { | |||
| description | description | |||
| "Base identity for VPN signaling types"; | "Base identity for VPN signaling types."; | |||
| } | } | |||
| identity bgp-signaling { | identity bgp-signaling { | |||
| base vpn-signaling-type; | base vpn-signaling-type; | |||
| description | description | |||
| "Layer 2 VPNs using BGP signaling."; | "Layer 2 VPNs using BGP signaling."; | |||
| reference | reference | |||
| "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | |||
| Auto-Discovery and Signaling | Auto-Discovery and Signaling | |||
| RFC 7432: BGP MPLS-Based Ethernet VPN"; | RFC 7432: BGP MPLS-Based Ethernet VPN"; | |||
| skipping to change at page 28, line 5 ¶ | skipping to change at line 1261 ¶ | |||
| reference | reference | |||
| "RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)"; | "RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to routing protocols | * Identities related to routing protocols | |||
| */ | */ | |||
| identity routing-protocol-type { | identity routing-protocol-type { | |||
| description | description | |||
| "Base identity for routing protocol type."; | "Base identity for routing protocol types."; | |||
| } | } | |||
| identity static-routing { | identity static-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Static routing protocol."; | "Static routing protocol."; | |||
| } | } | |||
| identity bgp-routing { | identity bgp-routing { | |||
| if-feature "rtg-bgp"; | if-feature "rtg-bgp"; | |||
| skipping to change at page 28, line 30 ¶ | skipping to change at line 1286 ¶ | |||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
| } | } | |||
| identity ospf-routing { | identity ospf-routing { | |||
| if-feature "rtg-ospf"; | if-feature "rtg-ospf"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "OSPF routing protocol."; | "OSPF routing protocol."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks(VPNs) | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol"; | (PE-CE) Routing Protocol"; | |||
| } | } | |||
| identity rip-routing { | identity rip-routing { | |||
| if-feature "rtg-rip"; | if-feature "rtg-rip"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "RIP routing protocol."; | "RIP routing protocol."; | |||
| reference | reference | |||
| "RFC 2453: RIP Version 2 | "RFC 2453: RIP Version 2 | |||
| RFC 2080: RIPng for IPv6"; | RFC 2080: RIPng for IPv6"; | |||
| } | } | |||
| identity isis-routing { | identity isis-routing { | |||
| if-feature "rtg-isis"; | if-feature "rtg-isis"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "IS-IS routing protocol."; | "IS-IS routing protocol."; | |||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| identity vrrp-routing { | identity vrrp-routing { | |||
| if-feature "rtg-vrrp"; | if-feature "rtg-vrrp"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "VRRP protocol. | "VRRP protocol. | |||
| This is to be used when LANs are directly connected to PEs."; | This is to be used when LANs are directly connected to | |||
| PEs."; | ||||
| reference | reference | |||
| "RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 | "RFC 5798: Virtual Router Redundancy Protocol (VRRP) | |||
| for IPv4 and IPv6"; | Version 3 for IPv4 and IPv6"; | |||
| } | } | |||
| identity direct-routing { | identity direct-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Direct routing. | "Direct routing. | |||
| This is to be used when LANs are directly connected to PEs | This is to be used when LANs are directly connected to PEs | |||
| and must be advertised in the VPN."; | and must be advertised in the VPN."; | |||
| } | } | |||
| identity any-routing { | identity any-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Any routing protocol. | "Any routing protocol. | |||
| This can be, e.g., used to set policies that apply to any | For example, this can be used to set policies that apply | |||
| routing protocol in place."; | to any routing protocol in place."; | |||
| } | } | |||
| identity isis-level { | identity isis-level { | |||
| if-feature "rtg-isis"; | if-feature "rtg-isis"; | |||
| description | description | |||
| "Base identity for the IS-IS level."; | "Base identity for the IS-IS level."; | |||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| identity level-1 { | identity level-1 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS level 1."; | "IS-IS Level 1."; | |||
| } | } | |||
| identity level-2 { | identity level-2 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS level 2."; | "IS-IS Level 2."; | |||
| } | } | |||
| identity level-1-2 { | identity level-1-2 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS levels 1 and 2."; | "IS-IS Levels 1 and 2."; | |||
| } | } | |||
| identity bfd-session-type { | identity bfd-session-type { | |||
| if-feature "bfd"; | if-feature "bfd"; | |||
| description | description | |||
| "Base identity for the BFD session type."; | "Base identity for the BFD session type."; | |||
| } | } | |||
| identity classic-bfd { | identity classic-bfd { | |||
| base bfd-session-type; | base bfd-session-type; | |||
| skipping to change at page 30, line 41 ¶ | skipping to change at line 1398 ¶ | |||
| "Classic BFD."; | "Classic BFD."; | |||
| reference | reference | |||
| "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
| } | } | |||
| identity s-bfd { | identity s-bfd { | |||
| base bfd-session-type; | base bfd-session-type; | |||
| description | description | |||
| "Seamless BFD."; | "Seamless BFD."; | |||
| reference | reference | |||
| "RFC 7880: Seamless Bidirectional Forwarding Detection (S-BFD)"; | "RFC 7880: Seamless Bidirectional Forwarding Detection | |||
| (S-BFD)"; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to Routes Import and Export | * Identities related to route import and export policies | |||
| */ | */ | |||
| identity ie-type { | identity ie-type { | |||
| description | description | |||
| "Base identity for 'import/export' routing profiles. | "Base identity for import/export routing profiles. | |||
| These profiles can be reused between VPN nodes."; | These profiles can be reused between VPN nodes."; | |||
| } | } | |||
| identity import { | identity import { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Import' routing profile."; | "Import routing profile."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 4.3.1"; | (VPNs), Section 4.3.1"; | |||
| } | } | |||
| identity export { | identity export { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Export' routing profile."; | "Export routing profile."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 4.3.1"; | (VPNs), Section 4.3.1"; | |||
| } | } | |||
| identity import-export { | identity import-export { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Import/export' routing profile."; | "Import/export routing profile."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to bandwidth and QoS | * Identities related to bandwidth and QoS | |||
| */ | */ | |||
| identity bw-direction { | identity bw-direction { | |||
| description | description | |||
| "Base identity for the bandwidth direction."; | "Base identity for the bandwidth direction."; | |||
| } | } | |||
| skipping to change at page 32, line 4 ¶ | skipping to change at line 1458 ¶ | |||
| description | description | |||
| "Inbound bandwidth."; | "Inbound bandwidth."; | |||
| } | } | |||
| identity outbound-bw { | identity outbound-bw { | |||
| if-feature "outbound-bw"; | if-feature "outbound-bw"; | |||
| base bw-direction; | base bw-direction; | |||
| description | description | |||
| "Outbound bandwidth."; | "Outbound bandwidth."; | |||
| } | } | |||
| identity bw-type { | identity bw-type { | |||
| description | description | |||
| "Base identity for the bandwidth type."; | "Base identity for the bandwidth type."; | |||
| } | } | |||
| identity bw-per-cos { | identity bw-per-cos { | |||
| if-feature "qos"; | if-feature "qos"; | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-CoS."; | "The bandwidth is per CoS."; | |||
| } | } | |||
| identity bw-per-port { | identity bw-per-port { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-site network access."; | "The bandwidth is per a given site network access."; | |||
| } | } | |||
| identity bw-per-site { | identity bw-per-site { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-site. It is applicable to all the site | "The bandwidth is per site. It is applicable to all the | |||
| network accesses within a site."; | site network accesses within a site."; | |||
| } | } | |||
| identity bw-per-service { | identity bw-per-service { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-VPN service."; | "The bandwidth is per VPN service."; | |||
| } | } | |||
| identity qos-profile-direction { | identity qos-profile-direction { | |||
| if-feature "qos"; | if-feature "qos"; | |||
| description | description | |||
| "Base identity for the QoS profile direction."; | "Base identity for the QoS profile direction."; | |||
| } | } | |||
| identity site-to-wan { | identity site-to-wan { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Customer site to provider's network direction. | "From the customer site to the provider's network. | |||
| This is typically the CE-to-PE direction."; | This is typically the CE-to-PE direction."; | |||
| } | } | |||
| identity wan-to-site { | identity wan-to-site { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Provider's network to customer site direction. | "From the provider's network to the customer site. | |||
| This is typically the PE-to-CE direction."; | This is typically the PE-to-CE direction."; | |||
| } | } | |||
| identity both { | identity both { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Both WAN-to-Site and Site-to-WAN directions."; | "Both the WAN-to-site direction and the site-to-WAN | |||
| direction."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to underlay transport instances | * Identities related to underlay transport instances | |||
| */ | */ | |||
| identity transport-instance-type { | identity transport-instance-type { | |||
| description | description | |||
| "Base identity for underlay transport instance type."; | "Base identity for underlay transport instance types."; | |||
| } | } | |||
| identity virtual-network { | identity virtual-network { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "Virtual network."; | "Virtual network."; | |||
| reference | reference | |||
| "RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
| Networks (ACTN)"; | Networks (ACTN)"; | |||
| } | } | |||
| identity enhanced-vpn { | identity enhanced-vpn { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "Enhanced VPN (VPN+). VPN+ is an approach that is | "Enhanced VPN (VPN+). VPN+ is an approach that is | |||
| based on existing VPN and Traffic Engineering (TE) | based on existing VPN and Traffic Engineering (TE) | |||
| technologies but adds characteristics that specific | technologies but adds characteristics that specific | |||
| services require over and above classical VPNs."; | services require over and above classical VPNs."; | |||
| reference | reference | |||
| "I-D.ietf-teas-enhanced-vpn: | "draft-ietf-teas-enhanced-vpn-09: | |||
| A Framework for Enhanced Virtual Private Network | A Framework for Enhanced Virtual Private Network | |||
| (VPN+) Services"; | (VPN+) Services"; | |||
| } | } | |||
| identity ietf-network-slice { | identity ietf-network-slice { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "IETF network slice. An IETF network slice | "IETF network slice. An IETF network slice | |||
| is a logical network topology connecting a number of | is a logical network topology connecting a number of | |||
| endpoints using a set of shared or dedicated network | endpoints using a set of shared or dedicated network | |||
| resources that are used to satisfy specific service | resources that are used to satisfy specific service | |||
| objectives."; | objectives."; | |||
| reference | reference | |||
| "I-D.ietf-teas-ietf-network-slices: | "draft-ietf-teas-ietf-network-slices-05: | |||
| Framework for IETF Network Slices"; | Framework for IETF Network Slices"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to protocol types. These types are typically | * Identities related to protocol types. These types are | |||
| * used to identify the underlay transport. | * typically used to identify the underlay transport. | |||
| */ | */ | |||
| identity protocol-type { | identity protocol-type { | |||
| description | description | |||
| "Base identity for Protocol Type."; | "Base identity for protocol types."; | |||
| } | } | |||
| identity ip-in-ip { | identity ip-in-ip { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on IP-in-IP."; | "Transport is based on IP in IP."; | |||
| reference | reference | |||
| "RFC 2003: IP Encapsulation within IP | "RFC 2003: IP Encapsulation within IP | |||
| RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | |||
| } | } | |||
| identity ip-in-ipv4 { | identity ip-in-ipv4 { | |||
| base ip-in-ip; | base ip-in-ip; | |||
| description | description | |||
| "Transport is based on IP over IPv4."; | "Transport is based on IP over IPv4."; | |||
| reference | reference | |||
| skipping to change at page 34, line 48 ¶ | skipping to change at line 1599 ¶ | |||
| base ip-in-ip; | base ip-in-ip; | |||
| description | description | |||
| "Transport is based on IP over IPv6."; | "Transport is based on IP over IPv6."; | |||
| reference | reference | |||
| "RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | "RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | |||
| } | } | |||
| identity gre { | identity gre { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Generic Routing Encapsulation (GRE)."; | "Transport is based on Generic Routing Encapsulation | |||
| (GRE)."; | ||||
| reference | reference | |||
| "RFC 1701: Generic Routing Encapsulation (GRE) | "RFC 1701: Generic Routing Encapsulation (GRE) | |||
| RFC 1702: Generic Routing Encapsulation over IPv4 networks | RFC 1702: Generic Routing Encapsulation over IPv4 networks | |||
| RFC 7676: IPv6 Support for Generic Routing Encapsulation (GRE)"; | RFC 7676: IPv6 Support for Generic Routing Encapsulation | |||
| (GRE)"; | ||||
| } | } | |||
| identity gre-v4 { | identity gre-v4 { | |||
| base gre; | base gre; | |||
| description | description | |||
| "Transport is based on GRE over IPv4."; | "Transport is based on GRE over IPv4."; | |||
| reference | reference | |||
| "RFC 1702: Generic Routing Encapsulation over IPv4 networks"; | "RFC 1702: Generic Routing Encapsulation over IPv4 | |||
| networks"; | ||||
| } | } | |||
| identity gre-v6 { | identity gre-v6 { | |||
| base gre; | base gre; | |||
| description | description | |||
| "Transport is based on GRE over IPv6."; | "Transport is based on GRE over IPv6."; | |||
| reference | reference | |||
| "RFC 7676: IPv6 Support for Generic Routing Encapsulation (GRE)"; | "RFC 7676: IPv6 Support for Generic Routing Encapsulation | |||
| (GRE)"; | ||||
| } | } | |||
| identity vxlan-trans { | identity vxlan-trans { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on VXLAN."; | "Transport is based on VXLANs."; | |||
| reference | reference | |||
| "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): | "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): | |||
| A Framework for Overlaying Virtualized Layer 2 | A Framework for Overlaying Virtualized Layer 2 | |||
| Networks over Layer 3 Networks"; | Networks over Layer 3 Networks"; | |||
| } | } | |||
| identity geneve { | identity geneve { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Generic Network Virtualization | "Transport is based on Generic Network Virtualization | |||
| Encapsulation (GENEVE)."; | Encapsulation (Geneve)."; | |||
| reference | reference | |||
| "RFC 8926: Geneve: Generic Network Virtualization Encapsulation"; | "RFC 8926: Geneve: Generic Network Virtualization | |||
| Encapsulation"; | ||||
| } | } | |||
| identity ldp { | identity ldp { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on LDP."; | "Transport is based on LDP."; | |||
| reference | reference | |||
| "RFC 5036: LDP Specification"; | "RFC 5036: LDP Specification"; | |||
| } | } | |||
| identity mpls-in-udp { | identity mpls-in-udp { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is MPLS in UDP."; | "Transport is based on MPLS in UDP."; | |||
| reference | reference | |||
| "RFC 7510: Encapsulating MPLS in UDP"; | "RFC 7510: Encapsulating MPLS in UDP"; | |||
| } | } | |||
| identity sr { | identity sr { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Segment Routing (SR)."; | "Transport is based on Segment Routing (SR)."; | |||
| reference | reference | |||
| "RFC 8660: Segment Routing with the MPLS Data Plane | "RFC 8660: Segment Routing with the MPLS Data Plane | |||
| RFC 8663: MPLS Segment Routing over IP | RFC 8663: MPLS Segment Routing over IP | |||
| RFC 8754: IPv6 Segment Routing Header (SRH)"; | RFC 8754: IPv6 Segment Routing Header (SRH)"; | |||
| } | } | |||
| identity sr-mpls { | identity sr-mpls { | |||
| base sr; | base sr; | |||
| description | description | |||
| "Transport is based on SR with MPLS."; | "Transport is based on SR with the MPLS data plane."; | |||
| reference | reference | |||
| "RFC 8660: Segment Routing with the MPLS Data Plane"; | "RFC 8660: Segment Routing with the MPLS Data Plane"; | |||
| } | } | |||
| identity srv6 { | identity srv6 { | |||
| base sr; | base sr; | |||
| description | description | |||
| "Transport is based on SR over IPv6."; | "Transport is based on SR over IPv6."; | |||
| reference | reference | |||
| "RFC 8754: IPv6 Segment Routing Header (SRH)"; | "RFC 8754: IPv6 Segment Routing Header (SRH)"; | |||
| skipping to change at page 37, line 6 ¶ | skipping to change at line 1707 ¶ | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport setup relies upon RSVP-TE."; | "Transport setup relies upon RSVP-TE."; | |||
| reference | reference | |||
| "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; | "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; | |||
| } | } | |||
| identity bgp-lu { | identity bgp-lu { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport setup relies upon BGP-LU."; | "Transport setup relies upon BGP-based labeled prefixes."; | |||
| reference | reference | |||
| "RFC 8277: Using BGP to Bind MPLS Labels to Address Prefixes"; | "RFC 8277: Using BGP to Bind MPLS Labels to Address Prefixes"; | |||
| } | } | |||
| identity unknown { | identity unknown { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Not known protocol type."; | "Unknown protocol type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to encapsulations | * Identities related to encapsulation types | |||
| */ | */ | |||
| identity encapsulation-type { | identity encapsulation-type { | |||
| description | description | |||
| "Base identity for the encapsulation type."; | "Base identity for encapsulation types."; | |||
| } | } | |||
| identity priority-tagged { | identity priority-tagged { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Priority-tagged interface."; | "Priority-tagged interface."; | |||
| } | } | |||
| identity dot1q { | identity dot1q { | |||
| if-feature "dot1q"; | if-feature "dot1q"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Dot1q encapsulation."; | "dot1Q encapsulation."; | |||
| } | } | |||
| identity qinq { | identity qinq { | |||
| if-feature "qinq"; | if-feature "qinq"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "QinQ encapsulation."; | "QinQ encapsulation."; | |||
| } | } | |||
| identity qinany { | identity qinany { | |||
| skipping to change at page 38, line 4 ¶ | skipping to change at line 1753 ¶ | |||
| description | description | |||
| "QinQ encapsulation."; | "QinQ encapsulation."; | |||
| } | } | |||
| identity qinany { | identity qinany { | |||
| if-feature "qinany"; | if-feature "qinany"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "QinAny encapsulation."; | "QinAny encapsulation."; | |||
| } | } | |||
| identity vxlan { | identity vxlan { | |||
| if-feature "vxlan"; | if-feature "vxlan"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "VxLAN encapsulation."; | "VXLAN encapsulation."; | |||
| } | } | |||
| identity ethernet-type { | identity ethernet-type { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Ethernet encapsulation type."; | "Ethernet encapsulation type."; | |||
| } | } | |||
| identity vlan-type { | identity vlan-type { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| skipping to change at page 38, line 43 ¶ | skipping to change at line 1793 ¶ | |||
| } | } | |||
| identity lag-int { | identity lag-int { | |||
| if-feature "lag-interface"; | if-feature "lag-interface"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "LAG interface type."; | "LAG interface type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VLAN Tag | * Identities related to VLAN tags | |||
| */ | */ | |||
| identity tag-type { | identity tag-type { | |||
| description | description | |||
| "Base identity for the tag types."; | "Base identity for VLAN tag types."; | |||
| } | } | |||
| identity c-vlan { | identity c-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Indicates Customer VLAN (C-VLAN) tag, normally using | "Indicates a Customer VLAN (C-VLAN) tag, normally using | |||
| the 0x8100 Ethertype."; | the 0x8100 Ethertype."; | |||
| } | } | |||
| identity s-vlan { | identity s-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Indicates Service VLAN (S-VLAN) tag."; | "Indicates a Service VLAN (S-VLAN) tag."; | |||
| } | } | |||
| identity s-c-vlan { | identity s-c-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Uses both an S-VLAN tag and a C-VLAN tag."; | "Uses both an S-VLAN tag and a C-VLAN tag."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VXLAN | * Identities related to VXLANs | |||
| */ | */ | |||
| identity vxlan-peer-mode { | identity vxlan-peer-mode { | |||
| if-feature "vxlan"; | if-feature "vxlan"; | |||
| description | description | |||
| "Base identity for the VXLAN peer mode."; | "Base identity for VXLAN peer modes."; | |||
| } | } | |||
| identity static-mode { | identity static-mode { | |||
| base vxlan-peer-mode; | base vxlan-peer-mode; | |||
| description | description | |||
| "VXLAN access in the static mode."; | "VXLAN access in the static mode."; | |||
| } | } | |||
| identity bgp-mode { | identity bgp-mode { | |||
| base vxlan-peer-mode; | base vxlan-peer-mode; | |||
| skipping to change at page 39, line 51 ¶ | skipping to change at line 1849 ¶ | |||
| "VXLAN access by BGP EVPN learning."; | "VXLAN access by BGP EVPN learning."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to multicast | * Identities related to multicast | |||
| */ | */ | |||
| identity multicast-gp-address-mapping { | identity multicast-gp-address-mapping { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast group mapping type."; | "Base identity for multicast group mapping types."; | |||
| } | } | |||
| identity static-mapping { | identity static-mapping { | |||
| base multicast-gp-address-mapping; | base multicast-gp-address-mapping; | |||
| description | description | |||
| "Static mapping, i.e., attach the interface to the | "Static mapping, i.e., an interface is attached to the | |||
| multicast group as a static member."; | multicast group as a static member."; | |||
| } | } | |||
| identity dynamic-mapping { | identity dynamic-mapping { | |||
| base multicast-gp-address-mapping; | base multicast-gp-address-mapping; | |||
| description | description | |||
| "Dynamic mapping, i.e., an interface is added to the | "Dynamic mapping, i.e., an interface is added to the | |||
| multicast group as a result of snooping."; | multicast group as a result of snooping."; | |||
| } | } | |||
| identity multicast-tree-type { | identity multicast-tree-type { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast tree type."; | "Base identity for multicast tree types."; | |||
| } | } | |||
| identity ssm-tree-type { | identity ssm-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| description | description | |||
| "Source-Specific Multicast (SSM) tree type."; | "Source-Specific Multicast (SSM) tree type."; | |||
| } | } | |||
| identity asm-tree-type { | identity asm-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| skipping to change at page 40, line 48 ¶ | skipping to change at line 1893 ¶ | |||
| identity bidir-tree-type { | identity bidir-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| description | description | |||
| "Bidirectional tree type."; | "Bidirectional tree type."; | |||
| } | } | |||
| identity multicast-rp-discovery-type { | identity multicast-rp-discovery-type { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for Rendezvous Point (RP) discovery type."; | "Base identity for Rendezvous Point (RP) discovery types."; | |||
| } | } | |||
| identity auto-rp { | identity auto-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| description | description | |||
| "Auto-RP discovery type."; | "Auto-RP discovery type."; | |||
| } | } | |||
| identity static-rp { | identity static-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| skipping to change at page 41, line 23 ¶ | skipping to change at line 1917 ¶ | |||
| identity bsr-rp { | identity bsr-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| description | description | |||
| "Bootstrap Router (BSR) discovery type."; | "Bootstrap Router (BSR) discovery type."; | |||
| } | } | |||
| identity group-management-protocol { | identity group-management-protocol { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast group management protocol."; | "Base identity for multicast group management protocols."; | |||
| } | } | |||
| identity igmp-proto { | identity igmp-proto { | |||
| base group-management-protocol; | base group-management-protocol; | |||
| description | description | |||
| "IGMP."; | "IGMP."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting | "RFC 1112: Host Extensions for IP Multicasting | |||
| RFC 2236: Internet Group Management Protocol, Version 2 | RFC 2236: Internet Group Management Protocol, Version 2 | |||
| RFC 3376: Internet Group Management Protocol, Version 3"; | RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| skipping to change at page 42, line 5 ¶ | skipping to change at line 1947 ¶ | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| identity pim-proto { | identity pim-proto { | |||
| if-feature "pim"; | if-feature "pim"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "PIM."; | "PIM."; | |||
| reference | reference | |||
| "RFC 7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
| (PIM-SM): Protocol Specification (Revised)"; | (PIM-SM): Protocol Specification (Revised)"; | |||
| } | } | |||
| identity igmp-version { | identity igmp-version { | |||
| if-feature "igmp"; | if-feature "igmp"; | |||
| description | description | |||
| "Base identity for IGMP version."; | "Base identity for indicating the IGMP version."; | |||
| } | } | |||
| identity igmpv1 { | identity igmpv1 { | |||
| base igmp-version; | base igmp-version; | |||
| description | description | |||
| "IGMPv1."; | "IGMPv1."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting"; | "RFC 1112: Host Extensions for IP Multicasting"; | |||
| } | } | |||
| skipping to change at page 42, line 41 ¶ | skipping to change at line 1983 ¶ | |||
| base igmp-version; | base igmp-version; | |||
| description | description | |||
| "IGMPv3."; | "IGMPv3."; | |||
| reference | reference | |||
| "RFC 3376: Internet Group Management Protocol, Version 3"; | "RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| identity mld-version { | identity mld-version { | |||
| if-feature "mld"; | if-feature "mld"; | |||
| description | description | |||
| "Base identity for MLD version."; | "Base identity for indicating the MLD version."; | |||
| } | } | |||
| identity mldv1 { | identity mldv1 { | |||
| base mld-version; | base mld-version; | |||
| description | description | |||
| "MLDv1."; | "MLDv1."; | |||
| reference | reference | |||
| "RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | "RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | |||
| } | } | |||
| identity mldv2 { | identity mldv2 { | |||
| base mld-version; | base mld-version; | |||
| description | description | |||
| "MLDv2."; | "MLDv2."; | |||
| reference | reference | |||
| "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to traffic types | * Identities related to traffic types | |||
| */ | */ | |||
| identity tf-type { | identity tf-type { | |||
| description | description | |||
| "Base identity for the traffic type."; | "Base identity for traffic types."; | |||
| } | } | |||
| identity multicast-traffic { | identity multicast-traffic { | |||
| base tf-type; | base tf-type; | |||
| description | description | |||
| "Multicast traffic."; | "Multicast traffic."; | |||
| } | } | |||
| identity broadcast-traffic { | identity broadcast-traffic { | |||
| base tf-type; | base tf-type; | |||
| skipping to change at page 44, line 16 ¶ | skipping to change at line 2054 ¶ | |||
| identity mail { | identity mail { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Mail application."; | "Mail application."; | |||
| } | } | |||
| identity file-transfer { | identity file-transfer { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "File transfer application (e.g., FTP, SFTP)."; | "File transfer application (e.g., FTP, Secure FTP (SFTP))."; | |||
| } | } | |||
| identity database { | identity database { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Database application."; | "Database application."; | |||
| } | } | |||
| identity social { | identity social { | |||
| base customer-application; | base customer-application; | |||
| skipping to change at page 44, line 46 ¶ | skipping to change at line 2084 ¶ | |||
| identity p2p { | identity p2p { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Peer-to-peer application."; | "Peer-to-peer application."; | |||
| } | } | |||
| identity network-management { | identity network-management { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Management application (e.g., Telnet, syslog, | "Management application (e.g., Telnet, syslog, SNMP)."; | |||
| SNMP)."; | ||||
| } | } | |||
| identity voice { | identity voice { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Voice application."; | "Voice application."; | |||
| } | } | |||
| identity video { | identity video { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Video conference application."; | "Video-conference application."; | |||
| } | } | |||
| identity embb { | identity embb { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Enhanced Mobile Broadband (eMBB) application. | "Enhanced Mobile Broadband (eMBB) application. | |||
| Note that an eMBB application demands network performance with a | Note that eMBB applications demand network performance | |||
| wide variety of characteristics, such as data rate, latency, | with a wide variety of such characteristics as data rate, | |||
| loss rate, reliability, and many other parameters."; | latency, loss rate, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| identity urllc { | identity urllc { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Ultra-Reliable and Low Latency Communications | "Ultra-Reliable and Low Latency Communications (URLLC) | |||
| (URLLC) application. Note that an URLLC application demands | application. Note that URLLC applications demand | |||
| network performance with a wide variety of characteristics, such | network performance with a wide variety of such | |||
| as latency, reliability, and many other parameters."; | characteristics as latency, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| identity mmtc { | identity mmtc { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Massive Machine Type Communications (mMTC) application. | "Massive Machine Type Communications (mMTC) application. | |||
| Note that an mMTC application demands network performance with | Note that mMTC applications demand network performance | |||
| a wide variety of characteristics, such as data rate, latency, | with a wide variety of such characteristics as data rate, | |||
| loss rate, reliability, and many other parameters."; | latency, loss rate, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to service bundling | * Identities related to service bundling | |||
| */ | */ | |||
| identity bundling-type { | identity bundling-type { | |||
| description | description | |||
| "The base identity for the bundling type. It supports a subset or | "The base identity for the bundling type. It supports a | |||
| all CE-VLANs associated with an L2VPN service."; | subset or all Customer Edge VLAN IDs (CE-VLAN IDs) | |||
| associated with an L2VPN service."; | ||||
| } | } | |||
| identity multi-svc-bundling { | identity multi-svc-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "Multi-service bundling, i.e., multiple C-VLAN IDs | "Multi-service bundling, i.e., multiple CE-VLAN IDs | |||
| can be associated with an L2VPN service at a site."; | can be associated with an L2VPN service at a site."; | |||
| } | } | |||
| identity one2one-bundling { | identity one2one-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "One-to-one service bundling, i.e., each L2VPN can | "One-to-one service bundling, i.e., each L2VPN can | |||
| be associated with only one C-VLAN ID at a site."; | be associated with only one CE-VLAN ID at a site."; | |||
| } | } | |||
| identity all2one-bundling { | identity all2one-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "All-to-one bundling, i.e., all C-VLAN IDs are mapped | "All-to-one bundling, i.e., all CE-VLAN IDs are mapped | |||
| to one L2VPN service."; | to one L2VPN service."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to Ethernet Services | * Identities related to Ethernet services | |||
| */ | */ | |||
| identity control-mode { | identity control-mode { | |||
| description | description | |||
| "Base Identity for the type of control mode on Layer 2 | "Base identity for the type of control mode used with the | |||
| Control Protocol (L2CP)."; | Layer 2 Control Protocol (L2CP)."; | |||
| } | } | |||
| identity peer { | identity peer { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'peer' mode, i.e., participate in the protocol towards the CE. | "'peer' mode, i.e., participate in the protocol towards | |||
| Peering is common for Link Aggregation Control Protocol (LACP) | the CE. Peering is common for the Link Aggregation Control | |||
| and the Ethernet Local Management Interface (E-LMI) and, | Protocol (LACP) and the Ethernet Local Management Interface | |||
| occasionally, for Link Layer Discovery Protocol (LLDP). | (E-LMI) and, occasionally, for the Link Layer Discovery | |||
| For VPLSs and VPWSs, the subscriber can also request that the | Protocol (LLDP). For VPLSs and VPWSs, the subscriber can | |||
| peer service provider enables spanning tree."; | also request that the peer service provider enable | |||
| spanning tree."; | ||||
| } | } | |||
| identity tunnel { | identity tunnel { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'tunnel' mode, i.e., pass to the egress or destination site. For | "'tunnel' mode, i.e., pass to the egress or destination | |||
| Ethernet Private Lines (EPLs), the expectation is that L2CP | site. For Ethernet Private Lines (EPLs), the expectation | |||
| frames are tunnelled."; | is that L2CP frames are tunneled."; | |||
| } | } | |||
| identity discard { | identity discard { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'Discard' mode, i.e., discard the frame."; | "'Discard' mode, i.e., discard the frame."; | |||
| } | } | |||
| identity neg-mode { | identity neg-mode { | |||
| description | description | |||
| "Base identity for the negotiation mode."; | "Base identity for the type of negotiation mode."; | |||
| } | } | |||
| identity full-duplex { | identity full-duplex { | |||
| base neg-mode; | base neg-mode; | |||
| description | description | |||
| "Full-duplex negotiation mode."; | "Full-duplex negotiation mode."; | |||
| } | } | |||
| identity auto-neg { | identity auto-neg { | |||
| base neg-mode; | base neg-mode; | |||
| description | description | |||
| "Auto-negotiation mode."; | "Auto-negotiation mode."; | |||
| } | } | |||
| /******** Collection of VPN-related Types ********/ | /******** VPN-related type ********/ | |||
| typedef vpn-id { | typedef vpn-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Defines an identifier that is used with a VPN module. | "Defines an identifier that is used with a VPN module. | |||
| This can be, for example, a service identifier, a node | For example, this can be a service identifier, a node | |||
| identifier, etc."; | identifier, etc."; | |||
| } | } | |||
| /******* VPN-related reusable groupings *******/ | /******* VPN-related reusable groupings *******/ | |||
| grouping vpn-description { | grouping vpn-description { | |||
| description | description | |||
| "Provides common VPN information."; | "Provides common VPN information."; | |||
| leaf vpn-id { | leaf vpn-id { | |||
| type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
| skipping to change at page 48, line 22 ¶ | skipping to change at line 2257 ¶ | |||
| } | } | |||
| leaf customer-name { | leaf customer-name { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the customer that actually uses the VPN."; | "Name of the customer that actually uses the VPN."; | |||
| } | } | |||
| } | } | |||
| grouping vpn-profile-cfg { | grouping vpn-profile-cfg { | |||
| description | description | |||
| "Grouping for VPN Profile configuration."; | "Grouping for VPN profile configuration."; | |||
| container valid-provider-identifiers { | container valid-provider-identifiers { | |||
| description | description | |||
| "Container for valid provider profile identifiers."; | "Container for valid provider profile identifiers."; | |||
| list external-connectivity-identifier { | list external-connectivity-identifier { | |||
| if-feature "external-connectivity"; | if-feature "external-connectivity"; | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for profile identifiers that uniquely identify profiles | "List of profile identifiers that uniquely identify | |||
| governing how external connectivity is provided to a VPN. | profiles governing how external connectivity is | |||
| A profile indicates the type of external connectivity | provided to a VPN. A profile indicates the type of | |||
| (Internet, cloud, etc.), the sites/nodes that are associated | external connectivity (Internet, cloud, etc.), the | |||
| with a connectivity profile, etc. A profile can also indicate | sites/nodes that are associated with a connectivity | |||
| filtering rules and/or address translation rules. Such | profile, etc. A profile can also indicate filtering | |||
| features may involve PE, P, or dedicated nodes as a function | rules and/or address translation rules. Such features | |||
| may involve PE, P, or dedicated nodes as a function | ||||
| of the deployment."; | of the deployment."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of an external connectivity profile. The | "Identification of an external connectivity profile. | |||
| profile only has significance within the service provider's | The profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list encryption-profile-identifier { | list encryption-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for encryption profile identifiers."; | "List of encryption profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the encryption profile to be used. The | "Identification of the encryption profile to be used. | |||
| profile only has significance within the service provider's | The profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list qos-profile-identifier { | list qos-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for QoS Profile Identifiers."; | "List of QoS profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the QoS profile to be used. The | "Identification of the QoS profile to be used. The | |||
| profile only has significance within the service provider's | profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list bfd-profile-identifier { | list bfd-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for BFD profile identifiers."; | "List of BFD profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the BFD profile to be used. The | "Identification of the BFD profile to be used. The | |||
| profile only has significance within the service provider's | profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list forwarding-profile-identifier { | list forwarding-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for forwarding profile identifiers."; | "List of forwarding profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the forwarding profile to be used. | "Identification of the forwarding profile to be used. | |||
| The profile only has significance within the service | The profile only has significance within the service | |||
| provider's administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list routing-profile-identifier { | list routing-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for Routing Profile Identifiers."; | "List of routing profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the routing profile to be used by the | "Identification of the routing profile to be used by | |||
| routing protocols within sites, vpn-network-accesses, or | the routing protocols within sites, VPN network | |||
| vpn-nodes for refering VRF's import/export policies. | accesses, or VPN nodes for referring to VRF's | |||
| import/export policies. | ||||
| The profile only has significance within the service | The profile only has significance within the service | |||
| provider's administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| nacm:default-deny-write; | nacm:default-deny-write; | |||
| } | } | |||
| } | } | |||
| grouping oper-status-timestamp { | grouping oper-status-timestamp { | |||
| description | description | |||
| "This grouping defines some operational parameters for the | "This grouping defines some operational parameters for the | |||
| service."; | service."; | |||
| leaf status { | leaf status { | |||
| type identityref { | type identityref { | |||
| base operational-status; | base operational-status; | |||
| } | } | |||
| config false; | config false; | |||
| description | description | |||
| "Operations status."; | "Operational status."; | |||
| } | } | |||
| leaf last-change { | leaf last-change { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the actual date and time of the service status | "Indicates the actual date and time of the service status | |||
| change."; | change."; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 51, line 9 ¶ | skipping to change at line 2390 ¶ | |||
| leaf status { | leaf status { | |||
| type identityref { | type identityref { | |||
| base administrative-status; | base administrative-status; | |||
| } | } | |||
| description | description | |||
| "Administrative service status."; | "Administrative service status."; | |||
| } | } | |||
| leaf last-change { | leaf last-change { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Indicates the actual date and time of the service status | "Indicates the actual date and time of the service | |||
| change."; | status change."; | |||
| } | } | |||
| } | } | |||
| container oper-status { | container oper-status { | |||
| config false; | ||||
| description | description | |||
| "Operational service status."; | "Operational service status."; | |||
| uses oper-status-timestamp; | uses oper-status-timestamp; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping underlay-transport { | grouping underlay-transport { | |||
| description | description | |||
| "This grouping defines the type of underlay transport for the | "This grouping defines the type of underlay transport for | |||
| VPN service or how that underlay is set. It can include an | the VPN service or how that underlay is set. It can | |||
| identifier to an abstract transport instance to which the VPN | include an identifier for an abstract transport instance to | |||
| is grafted or indicate a technical implementation that is | which the VPN is grafted or indicate a technical | |||
| expressed as an ordered list of protocols."; | implementation that is expressed as an ordered list of | |||
| protocols."; | ||||
| choice type { | choice type { | |||
| description | description | |||
| "A choice based on the type of underlay transport | "A choice based on the type of underlay transport | |||
| constraints."; | constraints."; | |||
| case abstract { | case abstract { | |||
| description | description | |||
| "Indicates that the transport constraint is an abstract | "Indicates that the transport constraint is an abstract | |||
| concept."; | concept."; | |||
| leaf transport-instance-id { | leaf transport-instance-id { | |||
| type string; | type string; | |||
| description | description | |||
| "An optional identifier of the abstract transport instance."; | "An optional identifier of the abstract transport | |||
| instance."; | ||||
| } | } | |||
| leaf instance-type { | leaf instance-type { | |||
| type identityref { | type identityref { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| } | } | |||
| description | description | |||
| "Indicates a transport instance type. For example, it can | "Indicates a transport instance type. For example, | |||
| be a VPN+, an IETF network slice, a virtual network, etc."; | it can be a VPN+, an IETF network slice, a virtual | |||
| network, etc."; | ||||
| } | } | |||
| } | } | |||
| case protocol { | case protocol { | |||
| description | description | |||
| "Indicates a list of protocols."; | "Indicates a list of protocols."; | |||
| leaf-list protocol { | leaf-list protocol { | |||
| type identityref { | type identityref { | |||
| base protocol-type; | base protocol-type; | |||
| } | } | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "A client ordered list of transport protocols."; | "A client-ordered list of transport protocols."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping vpn-route-targets { | grouping vpn-route-targets { | |||
| description | description | |||
| "A grouping that specifies Route Target (RT) import-export rules | "A grouping that specifies Route Target (RT) import/export | |||
| used in a BGP-enabled VPN."; | rules used in a BGP-enabled VPN."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 4664: Framework for Layer 2 Virtual Private Networks | RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
| (L2VPNs)"; | (L2VPNs)"; | |||
| list vpn-target { | list vpn-target { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "Route targets. AND/OR operations may be defined | "RTs. AND/OR operations may be defined based on the | |||
| based on the RTs assigment."; | assigned RTs."; | |||
| leaf id { | leaf id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Identifies each VPN Target."; | "Identifies each VPN target."; | |||
| } | } | |||
| list route-targets { | list route-targets { | |||
| key "route-target"; | key "route-target"; | |||
| description | description | |||
| "List of RTs."; | "List of RTs."; | |||
| leaf route-target { | leaf route-target { | |||
| type rt-types:route-target; | type rt-types:route-target; | |||
| description | description | |||
| "Conveys an RT value."; | "Conveys an RT value."; | |||
| } | } | |||
| } | } | |||
| leaf route-target-type { | leaf route-target-type { | |||
| type rt-types:route-target-type; | type rt-types:route-target-type; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Import/export type of the RT."; | "Import/export type of the RT."; | |||
| } | } | |||
| } | } | |||
| container vpn-policies { | container vpn-policies { | |||
| description | description | |||
| "VPN service policies. It contains references to the | "VPN service policies. 'vpn-policies' contains references | |||
| import and export policies to be associated with the | to the import and export policies to be associated with | |||
| VPN service."; | the VPN service."; | |||
| leaf import-policy { | leaf import-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Identifies the 'import' policy."; | "Identifies the import policy."; | |||
| } | } | |||
| leaf export-policy { | leaf export-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Identifies the 'export' policy."; | "Identifies the export policy."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping route-distinguisher { | grouping route-distinguisher { | |||
| description | description | |||
| "Grouping for route distinguisher (RD)."; | "Grouping for Route Distinguishers (RDs)."; | |||
| choice rd-choice { | choice rd-choice { | |||
| description | description | |||
| "Route distinguisher choice between several options | "RD choice between several options for providing the RD | |||
| on providing the route distinguisher value."; | value."; | |||
| case directly-assigned { | case directly-assigned { | |||
| description | description | |||
| "Explicitly assign an RD value."; | "Explicitly assigns an RD value."; | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Indicates an RD value that is explicitly | "Indicates an RD value that is explicitly assigned."; | |||
| assigned."; | ||||
| } | } | |||
| } | } | |||
| case directly-assigned-suffix { | case directly-assigned-suffix { | |||
| description | description | |||
| "The value of the Assigned Number subfield of the RD. | "The value of the Assigned Number subfield of the RD. | |||
| The Administrator subfield of the RD will be | The Administrator subfield of the RD will be | |||
| based on other configuration information such as | based on other configuration information such as the | |||
| router-id or ASN."; | Router ID or Autonomous System Number (ASN)."; | |||
| leaf rd-suffix { | leaf rd-suffix { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Indicates the value of the Assigned Number | "Indicates the value of the Assigned Number | |||
| subfield that is explicitly assigned."; | subfield that is explicitly assigned."; | |||
| } | } | |||
| } | } | |||
| case auto-assigned { | case auto-assigned { | |||
| description | description | |||
| "The RD is auto-assigned."; | "The RD is auto-assigned."; | |||
| container rd-auto { | container rd-auto { | |||
| description | description | |||
| "The RD is auto-assigned."; | "The RD is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment mode. RD can be | "Indicates the auto-assignment mode. The RD can be | |||
| automatically assigned with or without | automatically assigned with or without | |||
| indicating a pool from which the RD should be | indicating a pool from which the RD should be | |||
| taken. | taken. | |||
| For both cases, the server will auto-assign an RD | For both cases, the server will auto-assign an RD | |||
| value 'auto-assigned-rd' and use that value | value 'auto-assigned-rd' and use that value | |||
| operationally."; | operationally."; | |||
| case from-pool { | case from-pool { | |||
| leaf rd-pool-name { | leaf rd-pool-name { | |||
| type string; | type string; | |||
| description | description | |||
| "The auto-assignment will be made from the pool | "The auto-assignment will be made from the pool | |||
| identified by the rd-pool-name."; | identified by 'rd-pool-name'."; | |||
| } | } | |||
| } | } | |||
| case full-auto { | case full-auto { | |||
| leaf auto { | leaf auto { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Indicates an RD is fully auto-assigned."; | "Indicates that an RD is fully auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf auto-assigned-rd { | leaf auto-assigned-rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| config false; | config false; | |||
| description | description | |||
| "The value of the auto-assigned RD."; | "The value of the auto-assigned RD."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case auto-assigned-suffix { | case auto-assigned-suffix { | |||
| description | description | |||
| "The value of the Assigned Number subfield will | "The value of the Assigned Number subfield will be | |||
| be auto-assigned. The Administrator subfield | auto-assigned. The Administrator subfield will be | |||
| will be based on other configuration information such as | based on other configuration information such as the | |||
| router-id or ASN."; | Router ID or ASN."; | |||
| container rd-auto-suffix { | container rd-auto-suffix { | |||
| description | description | |||
| "The Assigned Number subfield is auto-assigned."; | "The Assigned Number subfield is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment mode of the Assigned Number | "Indicates the auto-assignment mode of the | |||
| subfield. This number can be automatically assigned | Assigned Number subfield. This number can be | |||
| with or without indicating a pool from which the value | automatically assigned with or without indicating a | |||
| should be taken. | pool from which the value should be taken. | |||
| For both cases, the server will auto-assign | For both cases, the server will auto-assign | |||
| 'auto-assigned-rd-suffix' and use that value to build | 'auto-assigned-rd-suffix' and use that value to | |||
| the RD that will be used operationally."; | build the RD that will be used operationally."; | |||
| case from-pool { | case from-pool { | |||
| leaf rd-pool-name { | leaf rd-pool-name { | |||
| type string; | type string; | |||
| description | description | |||
| "The assignment will be made from the pool identified | "The assignment will be made from the pool | |||
| by the rd-pool-name."; | identified by 'rd-pool-name'."; | |||
| } | } | |||
| } | } | |||
| case full-auto { | case full-auto { | |||
| leaf auto { | leaf auto { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Indicates that the Assigned Number is fully auto | "Indicates that the Assigned Number subfield is | |||
| assigned."; | fully auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf auto-assigned-rd-suffix { | leaf auto-assigned-rd-suffix { | |||
| type uint16; | type uint16; | |||
| config false; | config false; | |||
| description | description | |||
| "Includes the value of the Assigned Number subfield that | "Includes the value of the Assigned Number subfield | |||
| is auto-assigned ."; | that is auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case no-rd { | case no-rd { | |||
| description | description | |||
| "Use the empty type to indicate RD has no value and is not to | "Uses the 'empty' type to indicate that the RD has no | |||
| be auto-assigned."; | value and is not to be auto-assigned."; | |||
| leaf no-rd { | leaf no-rd { | |||
| type empty; | type empty; | |||
| description | description | |||
| "No RD is assigned."; | "No RD is assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping vpn-components-group { | grouping vpn-components-group { | |||
| description | description | |||
| "Grouping definition to assign group-ids to associate VPN nodes, | "Grouping definition to assign group IDs to associate | |||
| sites, or network accesses."; | VPN nodes, sites, or network accesses."; | |||
| container groups { | container groups { | |||
| description | description | |||
| "Lists the groups to which a VPN node, a site, or a network | "Lists the groups to which a VPN node, a site, or a | |||
| access belongs to."; | network access belongs."; | |||
| list group { | list group { | |||
| key "group-id"; | key "group-id"; | |||
| description | description | |||
| "List of group-ids."; | "List of group IDs."; | |||
| leaf group-id { | leaf group-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Is the group-id to which a VPN node, a site, or a network | "The group ID to which a VPN node, a site, or a | |||
| access belongs to."; | network access belongs."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping placement-constraints { | grouping placement-constraints { | |||
| description | description | |||
| "Constraints for placing a network access."; | "Constraints related to placement of a network access."; | |||
| list constraint { | list constraint { | |||
| key "constraint-type"; | key "constraint-type"; | |||
| description | description | |||
| "List of constraints."; | "List of constraints."; | |||
| leaf constraint-type { | leaf constraint-type { | |||
| type identityref { | type identityref { | |||
| base placement-diversity; | base placement-diversity; | |||
| } | } | |||
| description | description | |||
| "Diversity constraint type."; | "Diversity constraint type."; | |||
| } | } | |||
| container target { | container target { | |||
| description | description | |||
| "The constraint will apply against this list of groups."; | "The constraint will apply against this list of | |||
| groups."; | ||||
| choice target-flavor { | choice target-flavor { | |||
| description | description | |||
| "Choice for the group definition."; | "Choice for the group definition."; | |||
| case id { | case id { | |||
| list group { | list group { | |||
| key "group-id"; | key "group-id"; | |||
| description | description | |||
| "List of groups."; | "List of groups."; | |||
| leaf group-id { | leaf group-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The constraint will apply against this particular | "The constraint will apply against this | |||
| group-id."; | particular group ID."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case all-accesses { | case all-accesses { | |||
| leaf all-other-accesses { | leaf all-other-accesses { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The constraint will apply against all other network | "The constraint will apply against all other | |||
| accesses of a site."; | network accesses of a site."; | |||
| } | } | |||
| } | } | |||
| case all-groups { | case all-groups { | |||
| leaf all-other-groups { | leaf all-other-groups { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The constraint will apply against all other groups that | "The constraint will apply against all other | |||
| the customer is managing."; | groups managed by the customer."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ports { | grouping ports { | |||
| description | description | |||
| "Choice of specifying a source or destination port numbers."; | "Choice of specifying source or destination port numbers."; | |||
| choice source-port { | choice source-port { | |||
| description | description | |||
| "Choice of specifying the source port or referring to a group | "Choice of specifying the source port or referring to a | |||
| of source port numbers."; | group of source port numbers."; | |||
| container source-port-range-or-operator { | container source-port-range-or-operator { | |||
| description | description | |||
| "Source port definition."; | "Source port definition."; | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| } | } | |||
| } | } | |||
| choice destination-port { | choice destination-port { | |||
| description | description | |||
| "Choice of specifying a destination port or referring to a group | "Choice of specifying a destination port or referring to a | |||
| of destination port numbers."; | group of destination port numbers."; | |||
| container destination-port-range-or-operator { | container destination-port-range-or-operator { | |||
| description | description | |||
| "Destination port definition."; | "Destination port definition."; | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping qos-classification-policy { | grouping qos-classification-policy { | |||
| description | description | |||
| skipping to change at page 58, line 34 ¶ | skipping to change at line 2755 ¶ | |||
| choice match-type { | choice match-type { | |||
| default "match-flow"; | default "match-flow"; | |||
| description | description | |||
| "Choice for classification."; | "Choice for classification."; | |||
| case match-flow { | case match-flow { | |||
| choice l3 { | choice l3 { | |||
| description | description | |||
| "Either IPv4 or IPv6."; | "Either IPv4 or IPv6."; | |||
| container ipv4 { | container ipv4 { | |||
| description | description | |||
| "Rule set that matches IPv4 header."; | "Rule set that matches the IPv4 header."; | |||
| uses packet-fields:acl-ip-header-fields; | uses packet-fields:acl-ip-header-fields; | |||
| uses packet-fields:acl-ipv4-header-fields; | uses packet-fields:acl-ipv4-header-fields; | |||
| } | } | |||
| container ipv6 { | container ipv6 { | |||
| description | description | |||
| "Rule set that matches IPv6 header."; | "Rule set that matches the IPv6 header."; | |||
| uses packet-fields:acl-ip-header-fields; | uses packet-fields:acl-ip-header-fields; | |||
| uses packet-fields:acl-ipv6-header-fields; | uses packet-fields:acl-ipv6-header-fields; | |||
| } | } | |||
| } | } | |||
| choice l4 { | choice l4 { | |||
| description | description | |||
| "Includes Layer 4 specific information. | "Includes Layer-4-specific information. | |||
| This version focuses on TCP and UDP."; | This version focuses on TCP and UDP."; | |||
| container tcp { | container tcp { | |||
| description | description | |||
| "Rule set that matches TCP header."; | "Rule set that matches the TCP header."; | |||
| uses packet-fields:acl-tcp-header-fields; | uses packet-fields:acl-tcp-header-fields; | |||
| uses ports; | uses ports; | |||
| } | } | |||
| container udp { | container udp { | |||
| description | description | |||
| "Rule set that matches UDP header."; | "Rule set that matches the UDP header."; | |||
| uses packet-fields:acl-udp-header-fields; | uses packet-fields:acl-udp-header-fields; | |||
| uses ports; | uses ports; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case match-application { | case match-application { | |||
| leaf match-application { | leaf match-application { | |||
| type identityref { | type identityref { | |||
| base customer-application; | base customer-application; | |||
| } | } | |||
| description | description | |||
| "Defines the application to match."; | "Defines the application to match."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf target-class-id { | leaf target-class-id { | |||
| if-feature "qos"; | ||||
| type string; | type string; | |||
| description | description | |||
| "Identification of the class of service. This identifier is | "Identification of the class of service. This | |||
| internal to the administration."; | identifier is internal to the administration."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. Security Considerations | 5. Security Considerations | |||
| The YANG modules specified in this document define schemas for data | The YANG module specified in this document defines a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC8446]. | [RFC8446]. | |||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| The "ietf-vpn-common" module defines a set of identities, types, and | The "ietf-vpn-common" module defines a set of identities, types, and | |||
| groupings. These nodes are intended to be reused by other YANG | groupings. These nodes are intended to be reused by other YANG | |||
| modules. The module does not expose by itself any data nodes which | modules. The module by itself does not expose any data nodes that | |||
| are writable, contain read-only state, or RPCs. As such, there are | are writable, data nodes that contain read-only state, or RPCs. As | |||
| no additional security issues to be considered relating to the "ietf- | such, there are no additional security issues related to the "ietf- | |||
| vpn-common" module. | vpn-common" module that need to be considered. | |||
| Modules that use the groupings that are defined in this document | Modules that use the groupings that are defined in this document | |||
| should identify the corresponding security considerations. For | should identify the corresponding security considerations. For | |||
| example, reusing some of these groupings will expose privacy-related | example, reusing some of these groupings will expose privacy-related | |||
| information (e.g., customer-name). Disclosing such information may | information (e.g., 'customer-name'). Disclosing such information may | |||
| be considered as a violation of the customer-provider trust | be considered a violation of the customer-provider trust | |||
| relationship. | relationship. | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| This document requests IANA to register the following URI in the "ns" | IANA has registered the following URI in the "ns" subregistry within | |||
| subregistry within the "IETF XML Registry" [RFC3688]: | the "IETF XML Registry" [RFC3688]: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-vpn-common | ||||
| Registrant Contact: The IESG. | ||||
| XML: N/A; the requested URI is an XML namespace. | ||||
| This document requests IANA to register the following YANG module in | ||||
| the "YANG Module Names" subregistry [RFC6020] within the "YANG | ||||
| Parameters" registry. | ||||
| name: ietf-vpn-common | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-vpn-common | ||||
| maintained by IANA: N | ||||
| prefix: vpn-common | ||||
| reference: RFC XXXX | ||||
| 7. Acknowledgements | ||||
| During the discussions of this work, helpful comments and reviews | ||||
| were received from (listed alphabetically): Alejandro Aguado, Raul | ||||
| Arco, Miguel Cros Cecilia, Joe Clarke, Dhruv Dhody, Adrian Farrel, | ||||
| Roque Gagliano, Christian Jacquenet, Kireeti Kompella, Julian Lucek, | ||||
| Tom Petch, Erez Segev, and Paul Sherratt. Many thanks to them. | ||||
| This work is partially supported by the European Commission under | ||||
| Horizon 2020 grant agreement number 101015857 Secured autonomic | ||||
| traffic management for a Tera of SDN flows (Teraflow). | ||||
| Many thanks to Radek Krejci for the yangdoctors review, Wesley Eddy | ||||
| for the tsvart review, Ron Bonica and Victoria Pritchard for the | ||||
| Rtgdir review, Joel Halpern for the genart review, Tim Wicinski for | ||||
| the opsdir review, and Suresh Krishnan for the intdir review. | ||||
| Special thanks to Robert Wilton for the AD review. | ||||
| Thanks to Roman Danyliw, Lars Eagert, Warren Kumari, Erik Kline, | ||||
| Zaheduzzaman Sarker, Benjamin Kaduk, and Eric Vyncke for the IESG | ||||
| review. | ||||
| 8. Contributors | ||||
| Italo Busi | URI: urn:ietf:params:xml:ns:yang:ietf-vpn-common | |||
| Huawei Technologies | Registrant Contact: The IESG. | |||
| Email: Italo.Busi@huawei.com | XML: N/A; the requested URI is an XML namespace. | |||
| Luis Angel Munoz | IANA has registered the following YANG module in the "YANG Module | |||
| Vodafone | Names" subregistry [RFC6020] within the "YANG Parameters" registry. | |||
| Email: luis-angel.munoz@vodafone.com | ||||
| Victor Lopez Alvarez | Name: ietf-vpn-common | |||
| Telefonica | Namespace: urn:ietf:params:xml:ns:yang:ietf-vpn-common | |||
| Email: victor.lopezalvarez@telefonica.com | Maintained by IANA? N | |||
| Prefix: vpn-common | ||||
| Reference: RFC 9181 | ||||
| 9. References | 7. References | |||
| 9.1. Normative References | 7.1. Normative References | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | |||
| Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | |||
| 2006, <https://www.rfc-editor.org/info/rfc4364>. | 2006, <https://www.rfc-editor.org/info/rfc4364>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| skipping to change at page 62, line 40 ¶ | skipping to change at line 2909 ¶ | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair, | [RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair, | |||
| "YANG Data Model for Network Access Control Lists (ACLs)", | "YANG Data Model for Network Access Control Lists (ACLs)", | |||
| RFC 8519, DOI 10.17487/RFC8519, March 2019, | RFC 8519, DOI 10.17487/RFC8519, March 2019, | |||
| <https://www.rfc-editor.org/info/rfc8519>. | <https://www.rfc-editor.org/info/rfc8519>. | |||
| 9.2. Informative References | 7.2. Informative References | |||
| [I-D.ietf-opsawg-l2nm] | ||||
| Barguil, S., Dios, O. G. D., Boucadair, M., and L. A. | ||||
| Munoz, "A Layer 2 VPN Network YANG Model", Work in | ||||
| Progress, Internet-Draft, draft-ietf-opsawg-l2nm-06, 12 | ||||
| September 2021, <https://www.ietf.org/archive/id/draft- | ||||
| ietf-opsawg-l2nm-06.txt>. | ||||
| [I-D.ietf-opsawg-l3sm-l3nm] | ||||
| Barguil, S., Dios, O. G. D., Boucadair, M., Munoz, L. A., | ||||
| and A. Aguado, "A Layer 3 VPN Network YANG Model", Work in | ||||
| Progress, Internet-Draft, draft-ietf-opsawg-l3sm-l3nm-15, | ||||
| 28 September 2021, <https://www.ietf.org/archive/id/draft- | ||||
| ietf-opsawg-l3sm-l3nm-15.txt>. | ||||
| [I-D.ietf-teas-actn-vn-yang] | [ACTN-VN-YANG] | |||
| Lee, Y., Dhody, D., Ceccarelli, D., Bryskin, I., and B. Y. | Lee, Y., Ed., Dhody, D., Ed., Ceccarelli, D., Bryskin, I., | |||
| Yoon, "A YANG Data Model for VN Operation", Work in | and B. Yoon, "A YANG Data Model for VN Operation", Work in | |||
| Progress, Internet-Draft, draft-ietf-teas-actn-vn-yang-12, | Progress, Internet-Draft, draft-ietf-teas-actn-vn-yang-13, | |||
| 25 August 2021, <https://www.ietf.org/archive/id/draft- | 23 October 2021, <https://datatracker.ietf.org/doc/html/ | |||
| ietf-teas-actn-vn-yang-12.txt>. | draft-ietf-teas-actn-vn-yang-13>. | |||
| [I-D.ietf-teas-enhanced-vpn] | [Enhanced-VPN-Framework] | |||
| Dong, J., Bryant, S., Li, Z., Miyasaka, T., and Y. Lee, "A | Dong, J., Bryant, S., Li, Z., Miyasaka, T., and Y. Lee, "A | |||
| Framework for Enhanced Virtual Private Network (VPN+) | Framework for Enhanced Virtual Private Network (VPN+) | |||
| Services", Work in Progress, Internet-Draft, draft-ietf- | Services", Work in Progress, Internet-Draft, draft-ietf- | |||
| teas-enhanced-vpn-08, 12 July 2021, | teas-enhanced-vpn-09, 25 October 2021, | |||
| <https://www.ietf.org/archive/id/draft-ietf-teas-enhanced- | <https://datatracker.ietf.org/doc/html/draft-ietf-teas- | |||
| vpn-08.txt>. | enhanced-vpn-09>. | |||
| [I-D.ietf-teas-ietf-network-slices] | ||||
| Farrel, A., Gray, E., Drake, J., Rokui, R., Homma, S., | ||||
| Makhijani, K., Contreras, L. M., and J. Tantsura, | ||||
| "Framework for IETF Network Slices", Work in Progress, | ||||
| Internet-Draft, draft-ietf-teas-ietf-network-slices-04, 23 | ||||
| August 2021, <https://www.ietf.org/archive/id/draft-ietf- | ||||
| teas-ietf-network-slices-04.txt>. | ||||
| [IEEE802.1ad] | [IEEE802.1ad] | |||
| "Virtual Bridged Local Area Networks Amendment 4: Provider | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| Bridges", IEEE Std 802.1ad-2005, 2006. | Networks---Virtual Bridged Local Area Networks---Amendment | |||
| 4: Provider Bridges", | ||||
| <https://standards.ieee.org/standard/802_1ad-2005.html>. | ||||
| [IEEE802.1AX] | [IEEE802.1AX] | |||
| "Link Aggregation", IEEE Std 802.1AX-2020, 2020. | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| Networks--Link Aggregation", | ||||
| <https://standards.ieee.org/standard/802_1AX-2020.html>. | ||||
| [IEEE802.1Q] | [IEEE802.1Q] | |||
| "Bridges and Bridged Networks", IEEE Std 802.1Q-2018, 6 | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| July 2018. | Networks--Bridges and Bridged Networks", | |||
| <https://standards.ieee.org/standard/802_1Q-2018.html>. | ||||
| [ISO10589] ISO, "Intermediate System to Intermediate System intra- | [ISO10589] ISO, "Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for use in | information exchange between systems - Intermediate System | |||
| conjunction with the protocol for providing the | to Intermediate System intra-domain routeing information | |||
| connectionless-mode network service (ISO 8473)", 2002, | exchange protocol for use in conjunction with the protocol | |||
| <International Standard 10589:2002, Second Edition>. | for providing the connectionless-mode network service (ISO | |||
| 8473)", International Standard 10589:2002, Second Edition, | ||||
| November 2002, <https://www.iso.org/standard/30932.html>. | ||||
| [L2NM-YANG] | ||||
| Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | ||||
| Ed., and L. Munoz, "A Layer 2 VPN Network YANG Model", | ||||
| Work in Progress, Internet-Draft, draft-ietf-opsawg-l2nm- | ||||
| 12, 22 November 2021, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
| l2nm-12>. | ||||
| [Network-Slices-Framework] | ||||
| Farrel, A., Ed., Gray, E., Drake, J., Rokui, R., Homma, | ||||
| S., Makhijani, K., Contreras, LM., and J. Tantsura, | ||||
| "Framework for IETF Network Slices", Work in Progress, | ||||
| Internet-Draft, draft-ietf-teas-ietf-network-slices-05, 25 | ||||
| October 2021, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-teas-ietf-network-slices-05>. | ||||
| [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
| [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | |||
| RFC 1112, DOI 10.17487/RFC1112, August 1989, | RFC 1112, DOI 10.17487/RFC1112, August 1989, | |||
| <https://www.rfc-editor.org/info/rfc1112>. | <https://www.rfc-editor.org/info/rfc1112>. | |||
| [RFC1701] Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic | [RFC1701] Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic | |||
| skipping to change at page 69, line 5 ¶ | skipping to change at line 3200 ¶ | |||
| [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | |||
| Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
| (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
| <https://www.rfc-editor.org/info/rfc8754>. | <https://www.rfc-editor.org/info/rfc8754>. | |||
| [RFC8926] Gross, J., Ed., Ganga, I., Ed., and T. Sridhar, Ed., | [RFC8926] Gross, J., Ed., Ganga, I., Ed., and T. Sridhar, Ed., | |||
| "Geneve: Generic Network Virtualization Encapsulation", | "Geneve: Generic Network Virtualization Encapsulation", | |||
| RFC 8926, DOI 10.17487/RFC8926, November 2020, | RFC 8926, DOI 10.17487/RFC8926, November 2020, | |||
| <https://www.rfc-editor.org/info/rfc8926>. | <https://www.rfc-editor.org/info/rfc8926>. | |||
| [RFC9182] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | ||||
| Ed., Munoz, L., and A. Aguado, "A YANG Network Data Model | ||||
| for Layer 3 VPNs", RFC 9182, DOI 10.17487/RFC9182, | ||||
| February 2022, <https://www.rfc-editor.org/info/rfc9182>. | ||||
| Appendix A. Example of Common Data Nodes in Early L2NM/L3NM Designs | Appendix A. Example of Common Data Nodes in Early L2NM/L3NM Designs | |||
| In order to avoid data nodes duplication and to ease passing data | In order to avoid duplication of data nodes and to ease passing data | |||
| among layers (i.e., from the service layer to the network layer and | among layers (i.e., from the service layer to the network layer and | |||
| vice versa), early versions of the L3NM reused many of the data nodes | vice versa), early versions of the L3NM reused many of the data nodes | |||
| that are defined in the L3SM. Nevertheless, that approach was | that are defined in the L3SM. Nevertheless, that approach was | |||
| abandoned because that design was interpreted as if the deployment of | abandoned because that design was interpreted as if the deployment of | |||
| L3NM depends on L3SM, while this is not required. For example, a | the L3NM depends on the L3SM, while this is not required. For | |||
| service provider may decide to use the L3NM to build its L3VPN | example, a service provider may decide to use the L3NM to build its | |||
| services without exposing the L3SM to customers. | L3VPN services without exposing the L3SM to customers. | |||
| Likewise, early versions of the L2NM reused many of the data nodes | Likewise, early versions of the L2NM reused many of the data nodes | |||
| that are defined in both L2SM and L3NM. An example of L3NM groupings | that are defined in both the L2SM and the L3NM. An example of L3NM | |||
| reused in L2NM is shown in Figure 5. Such data nodes reuse was | groupings reused in the L2NM is shown in Figure 5. Such reuse of | |||
| interpreted as if the deployment of the L2NM requires the support of | data nodes was interpreted as if the deployment of the L2NM requires | |||
| the L3NM; which is not required. | support for the L3NM, which is not required. | |||
| module ietf-l2vpn-ntw { | module ietf-l2vpn-ntw { | |||
| ... | ... | |||
| import ietf-l3vpn-ntw { | import ietf-l3vpn-ntw { | |||
| prefix l3vpn-ntw; | prefix l3vpn-ntw; | |||
| reference | reference | |||
| "RFC NNNN: A Layer 3 VPN Network YANG Model"; | "RFC 9182: A YANG Network Data Model for Layer 3 VPNs"; | |||
| } | } | |||
| ... | ... | |||
| container l2vpn-ntw { | container l2vpn-ntw { | |||
| ... | ... | |||
| container vpn-services { | container vpn-services { | |||
| list vpn-service { | list vpn-service { | |||
| ... | ... | |||
| uses l3vpn-ntw:service-status; | uses l3vpn-ntw:service-status; | |||
| uses l3vpn-ntw:svc-transport-encapsulation; | uses l3vpn-ntw:svc-transport-encapsulation; | |||
| ... | ... | |||
| } | } | |||
| } | } | |||
| ... | ... | |||
| } | } | |||
| } | } | |||
| Figure 5: Excerpt from the L2NM YANG Module | Figure 5: Excerpt from the L2NM YANG Module | |||
| Acknowledgements | ||||
| During the discussions of this work, helpful comments and reviews | ||||
| were received from (listed alphabetically) Alejandro Aguado, Raul | ||||
| Arco, Miguel Cros Cecilia, Joe Clarke, Dhruv Dhody, Adrian Farrel, | ||||
| Roque Gagliano, Christian Jacquenet, Kireeti Kompella, Julian Lucek, | ||||
| Tom Petch, Erez Segev, and Paul Sherratt. Many thanks to them. | ||||
| This work is partially supported by the European Commission under | ||||
| Horizon 2020 Secured autonomic traffic management for a Tera of SDN | ||||
| flows (Teraflow) project (grant agreement number 101015857). | ||||
| Many thanks to Radek Krejci for the YANG Doctors review, Wesley Eddy | ||||
| for the tsvart review, Ron Bonica and Victoria Pritchard for the | ||||
| RtgDir review, Joel Halpern for the genart review, Tim Wicinski for | ||||
| the opsdir review, and Suresh Krishnan for the intdir review. | ||||
| Special thanks to Robert Wilton for the AD review. | ||||
| Thanks to Roman Danyliw, Lars Eggert, Warren Kumari, Erik Kline, | ||||
| Zaheduzzaman Sarker, Benjamin Kaduk, and Éric Vyncke for the IESG | ||||
| review. | ||||
| Contributors | ||||
| Italo Busi | ||||
| Huawei Technologies | ||||
| Email: Italo.Busi@huawei.com | ||||
| Luis Angel Munoz | ||||
| Vodafone | ||||
| Email: luis-angel.munoz@vodafone.com | ||||
| Victor Lopez | ||||
| Nokia | ||||
| Madrid | ||||
| Spain | ||||
| Email: victor.lopez@nokia.com | ||||
| Authors' Addresses | Authors' Addresses | |||
| Samier Barguil | Samier Barguil | |||
| Telefonica | Telefonica | |||
| Madrid | Madrid | |||
| Spain | Spain | |||
| Email: samier.barguilgiraldo.ext@telefonica.com | Email: samier.barguilgiraldo.ext@telefonica.com | |||
| Oscar Gonzalez de Dios (editor) | Oscar Gonzalez de Dios (editor) | |||
| Telefonica | Telefonica | |||
| Madrid | Madrid | |||
| skipping to change at page 70, line 26 ¶ | skipping to change at line 3312 ¶ | |||
| Email: oscar.gonzalezdedios@telefonica.com | Email: oscar.gonzalezdedios@telefonica.com | |||
| Mohamed Boucadair (editor) | Mohamed Boucadair (editor) | |||
| Orange | Orange | |||
| France | France | |||
| Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
| Qin Wu | Qin Wu | |||
| Huawei | Huawei | |||
| 101 Software Avenue, Yuhua District | 101 Software Avenue | |||
| Yuhua District | ||||
| Nanjing | Nanjing | |||
| Jiangsu, 210012 | Jiangsu, 210012 | |||
| China | China | |||
| Email: bill.wu@huawei.com | Email: bill.wu@huawei.com | |||
| End of changes. 310 change blocks. | ||||
| 860 lines changed or deleted | 893 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/ | ||||