| rfc9835.original | rfc9835.txt | |||
|---|---|---|---|---|
| Operations and Management Area Working Group M. Boucadair, Ed. | Internet Engineering Task Force (IETF) M. Boucadair, Ed. | |||
| Internet-Draft Orange | Request for Comments: 9835 Orange | |||
| Intended status: Standards Track R. Roberts | Category: Standards Track R. Roberts | |||
| Expires: 27 July 2025 Juniper | ISSN: 2070-1721 Juniper | |||
| O. G. D. Dios | O. Gonzalez de Dios | |||
| Telefonica | Telefonica | |||
| S. B. Giraldo | S. Barguil | |||
| Nokia | Nokia | |||
| B. Wu | B. Wu | |||
| Huawei Technologies | Huawei Technologies | |||
| 23 January 2025 | September 2025 | |||
| A Network YANG Data Model for Attachment Circuits | A Network YANG Data Model for Attachment Circuits | |||
| draft-ietf-opsawg-ntw-attachment-circuit-16 | ||||
| Abstract | Abstract | |||
| This document specifies a network model for attachment circuits. The | This document specifies a network model for attachment circuits | |||
| model can be used for the provisioning of attachment circuits prior | (ACs). The model can be used for the provisioning of ACs prior to or | |||
| or during service provisioning (e.g., VPN, Network Slice Service). A | during service provisioning (e.g., VPN, RFC 9543 Network Slice | |||
| companion service model is specified in the YANG Data Models for | Service). A companion service model is specified in "YANG Data | |||
| Bearers and 'Attachment Circuits'-as-a-Service (ACaaS) (I-D.ietf- | Models for Bearers and Attachment Circuits as a Service (ACaaS)" | |||
| opsawg-teas-attachment-circuit). | (RFC9834). | |||
| The module augments the base network ('ietf-network') and the Service | The module augments the base network ('ietf-network') and the Service | |||
| Attachment Point (SAP) models with the detailed information for the | Attachment Point (SAP) models with the detailed information for the | |||
| provisioning of attachment circuits in Provider Edges (PEs). | provisioning of ACs in Provider Edges (PEs). | |||
| Discussion Venues | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Discussion of this document takes place on the Operations and | ||||
| Management Area Working Group Working Group mailing list | ||||
| (opsawg@ietf.org), which is archived at | ||||
| https://mailarchive.ietf.org/arch/browse/opsawg/. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/boucadair/attachment-circuit-model. | ||||
| 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 27 July 2025. | 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/rfc9835. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 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 Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| 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 Revised 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 1.1. Editorial Note (To be removed by RFC Editor) . . . . . . 5 | 2. Conventions and Definitions | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 5 | 3. Relationship to Other AC Data Models | |||
| 3. Relationship to Other AC Data Models . . . . . . . . . . . . 7 | 4. Sample Uses of the Attachment Circuit Data Models | |||
| 4. Sample Uses of the Attachment Circuit Data Models . . . . . . 8 | 4.1. ACs Terminated by One or Multiple CEs | |||
| 4.1. ACs Terminated by One or Multiple Customer Edges (CEs) . 8 | ||||
| 4.2. Positioning the AC Network Model in the Overall Service | 4.2. Positioning the AC Network Model in the Overall Service | |||
| Delivery Process . . . . . . . . . . . . . . . . . . . . 10 | Delivery Process | |||
| 5. Description of the Attachment Circuit YANG Module . . . . . . 12 | 5. Description of the Attachment Circuit YANG Module | |||
| 5.1. Overall Structure of the Module . . . . . . . . . . . . . 12 | 5.1. Overall Structure of the Module | |||
| 5.2. References . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.2. References | |||
| 5.3. Provisioning Profiles . . . . . . . . . . . . . . . . . . 16 | 5.3. Provisioning Profiles | |||
| 5.4. L2 Connection . . . . . . . . . . . . . . . . . . . . . . 18 | 5.4. L2 Connection | |||
| 5.5. IP Connection . . . . . . . . . . . . . . . . . . . . . . 21 | 5.5. IP Connection | |||
| 5.6. Routing . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 5.6. Routing | |||
| 5.6.1. Static Routing . . . . . . . . . . . . . . . . . . . 25 | 5.6.1. Static Routing | |||
| 5.6.2. BGP . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 5.6.2. BGP | |||
| 5.6.3. OSPF . . . . . . . . . . . . . . . . . . . . . . . . 34 | 5.6.3. OSPF | |||
| 5.6.4. IS-IS . . . . . . . . . . . . . . . . . . . . . . . . 37 | 5.6.4. IS-IS | |||
| 5.6.5. RIP . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 5.6.5. RIP | |||
| 5.6.6. VRRP . . . . . . . . . . . . . . . . . . . . . . . . 42 | 5.6.6. VRRP | |||
| 5.7. OAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 5.7. OAM | |||
| 5.8. Security . . . . . . . . . . . . . . . . . . . . . . . . 46 | 5.8. Security | |||
| 5.9. Service . . . . . . . . . . . . . . . . . . . . . . . . . 47 | 5.9. Service | |||
| 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 50 | 6. YANG Module | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 92 | 7. Security Considerations | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 93 | 8. IANA Considerations | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 94 | 9. References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 94 | 9.1. Normative References | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 97 | 9.2. Informative References | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 99 | Appendix A. Examples | |||
| A.1. VPLS . . . . . . . . . . . . . . . . . . . . . . . . . . 100 | A.1. VPLS | |||
| A.2. Parent AC . . . . . . . . . . . . . . . . . . . . . . . . 105 | A.2. Parent AC | |||
| Appendix B. Full Tree . . . . . . . . . . . . . . . . . . . . . 106 | Appendix B. Full Tree | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 119 | Acknowledgments | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 120 | Contributors | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 120 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| Connectivity services are provided by networks to customers via | Connectivity services are provided by networks to customers via | |||
| dedicated terminating points, such as Service Functions [RFC7665], | dedicated terminating points, such as Service Functions [RFC7665], | |||
| customer edges (CEs), peer Autonomous System Border Routers (ASBRs), | Customer Edges (CEs), peer Autonomous System Border Routers (ASBRs), | |||
| data centers gateways, or Internet Exchange Points. | data center gateways, or Internet Exchange Points. | |||
| The procedure to provision a service in a service provider network | The procedure to provision a service in a service provider network | |||
| may depend on the practices adopted by a service provider, including | may depend on the practices adopted by a service provider, including | |||
| the flow put in place for the provisioning of advanced network | the flow put in place for the provisioning of advanced network | |||
| services and how they are bound to an attachment circuit (AC). For | services and how they are bound to an attachment circuit (AC). For | |||
| example, the same attachment circuit may host multiple services | example, the same AC may host multiple services (e.g., Layer 2 VPN | |||
| (e.g., Layer 2 Virtual Private Network (VPN), or Layer 3 VPN, or | (L2VPN), Layer 3 VPN (L3VPN), or RFC 9543 Network Slice Service | |||
| Network Slice Service [RFC9543]). In order to avoid service | [RFC9543]). In order to avoid service interference and redundant | |||
| interference and redundant information in various locations, a | information in various locations, a service provider may expose an | |||
| service provider may expose an interface to manage ACs network-wide. | interface to manage ACs network-wide. Customers can then request a | |||
| Customers can then request a standalone attachment circuit to be put | standalone AC to be put in place and refer to that AC when requesting | |||
| in place, and then refer to that attachment circuit when requesting | services to be bound to that AC. [RFC9834] specifies a data model | |||
| services to be bound to that AC. | for managing Attachment Circuits as a Service (ACaaS). | |||
| [I-D.ietf-opsawg-teas-attachment-circuit] specifies a data model for | ||||
| managing attachment circuits as a service. | ||||
| Section 6 specifies a network model for attachment circuits ("ietf- | Section 6 specifies a network model for ACs ("ietf-ac-ntw"). The | |||
| ac-ntw"). The model can be used for the provisioning of ACs in a | model can be used for the provisioning of ACs in a provider network | |||
| provider network prior or during service provisioning. For example, | prior to or during service provisioning. For example, [RFC9836] | |||
| [I-D.ietf-opsawg-ac-lxsm-lxnm-glue] specifies augmentations to the | specifies augmentations to the L2VPN Network Model (L2NM) [RFC9291] | |||
| L2VPN Network Model (L2NM) [RFC9291] and the L3VPN Network Model | and the L3VPN Network Model (L3NM) [RFC9182] to bind LxVPNs to ACs | |||
| (L3NM) [RFC9182] to bind LxVPNs to ACs that are provisioned using the | that are provisioned using the procedure defined in this document. | |||
| procedure defined in this document. | ||||
| The document leverages [RFC9182] and [RFC9291] by adopting an AC | This document leverages [RFC9182] and [RFC9291] by adopting an AC | |||
| provisioning structure that uses data nodes that are defined in those | provisioning structure that uses data nodes that are defined in those | |||
| RFCs. Some refinements were introduced to cover not only | RFCs. Some refinements were introduced to cover not only | |||
| conventional service provider networks, but also specifics of other | conventional service provider networks but also specifics of other | |||
| target deployments (e.g., cloud network). | target deployments (e.g., cloud network). | |||
| The AC network model is designed as augmentations of both the 'ietf- | The AC network model is designed as augmentations of both the 'ietf- | |||
| network' model [RFC8345] and the Service Attachment Point (SAP) model | network' model [RFC8345] and the Service Attachment Point (SAP) model | |||
| [RFC9408]. An attachment circuit can be bound to a single or | [RFC9408]. An AC can be bound to a single or multiple SAPs. | |||
| multiple SAPs. Likewise, the model is designed to accommodate | Likewise, the model is designed to accommodate deployments where a | |||
| deployments where a SAP can be bound to one or multiple ACs (e.g., a | SAP can be bound to one or multiple ACs (e.g., a Parent AC and its | |||
| parent AC and its child ACs). | Child ACs). | |||
| .--. | .--. | |||
| |CE6| | |CE6| | |||
| '-+' | '-+' | |||
| ac | .--. .--. | ac | .--. .--. | |||
| | |CE5+------+------+CE2| | | |CE5+------+------+CE2| | |||
| .-----+-----. '--' | '--' | .-----+-----. '--' | '--' | |||
| | | |ac | | | |ac | |||
| | | | | | | | | |||
| .+. .+. .+. | .+. .+. .+. | |||
| .-+sap+-------+sap+-. .-+sap+-------------. | .-+sap+-------+sap+-. .-+sap+-------------. | |||
| | '-' '-' | | '-' | | | '-' '-' | | '-' | | |||
| | PE1 | | PE2 | | | PE1 | | PE2 | | |||
| .--. .+. | | | | .--. .+. | | | | |||
| |CE1+--+sap| | | | | |CE1+--+sap| | | | | |||
| '--' ac '+' | | | | '--' ac '+' | | | | |||
| '-------------------' '-------------------' | '-------------------' '-------------------' | |||
| .-------------------. .-------------------. | .-------------------. .-------------------. | |||
| | | | .+. ac .--. | | | | .+. ac .--. | |||
| | PE3 | | PE4 |sap+--+CE5| | | PE3 | | PE4 |sap+--+CE7| | |||
| | | | '-' '--' | | | | '-' '--' | |||
| | | | | | | | | | | |||
| | .-. | | .-. .-. .-. | | | .-. | | .-. .-. .-. | | |||
| '-------------+sap+-' '-+sap+-+sap+-+sap+-' | '-------------+sap+-' '-+sap+-+sap+-+sap+-' | |||
| '+' '+' '+' '+' | '+' '+' '+' '+' | |||
| |ac | |ac |ac | |ac | |ac |ac | |||
| .+-. | .+-. | | .+-. | .+-. | | |||
| |CE3+-----ac-----' |CE4+---' | |CE3+-----ac-----' |CE4+---' | |||
| '--' '--' | '--' '--' | |||
| Figure 1: Attachment Circuits Examples | Figure 1: Attachment Circuits Examples | |||
| The AC network model uses the AC common model defined in | The AC network model uses the AC common model defined in [RFC9833]. | |||
| [I-D.ietf-opsawg-teas-common-ac]. | ||||
| The YANG 1.1 [RFC7950] data model in this document conforms to the | The YANG 1.1 [RFC7950] data model in this document conforms to the | |||
| Network Management Datastore Architecture (NMDA) defined in | Network Management Datastore Architecture (NMDA) defined in | |||
| [RFC8342]. | [RFC8342]. | |||
| Sample examples are provided in Appendix A. | Some examples are provided in Appendix A. | |||
| 1.1. Editorial Note (To be removed by RFC Editor) | ||||
| Note to the RFC Editor: This section is to be removed prior to | ||||
| publication. | ||||
| This document contains placeholder values that need to be replaced | ||||
| with finalized values at the time of publication. This note | ||||
| summarizes all of the substitutions that are needed. | ||||
| Please apply the following replacements: | ||||
| * CCCC --> the assigned RFC number for | ||||
| [I-D.ietf-opsawg-teas-common-ac] | ||||
| * SSSS --> the assigned RFC number for | ||||
| [I-D.ietf-opsawg-teas-attachment-circuit] | ||||
| * XXXX --> the assigned RFC number for this I-D | ||||
| * 2025-01-07 --> the actual date of the publication of this document | ||||
| 2. Conventions and Definitions | 2. Conventions and Definitions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| The reader should be familiar with the terms defined in Section 2 of | The reader should be familiar with the terms defined in Section 2 of | |||
| [RFC9408]. | [RFC9408]. | |||
| This document uses the term "network model" as defined in Section 2.1 | This document uses the term "network model" as defined in Section 2.1 | |||
| of [RFC8969]. | of [RFC8969]. | |||
| The meanings of the symbols in the YANG tree diagrams are defined in | The meanings of the symbols in the YANG tree diagrams are defined in | |||
| [RFC8340]. | [RFC8340]. | |||
| LxSM refers to both the Layer 2 Service Model (L2SM) [RFC8466] and | LxSM refers to both the L2VPN Service Model (L2SM) [RFC8466] and the | |||
| the Layer 3 Service Model (L3SM) [RFC8299]. | L3VPN Service Model (L3SM) [RFC8299]. | |||
| LxNM refers to both the L2VPN Network Model (L2NM) [RFC9291] and the | LxNM refers to both the L2VPN Network Model (L2NM) [RFC9291] and the | |||
| L3VPN Network Model (L3NM) [RFC9182]. | L3VPN Network Model (L3NM) [RFC9182]. | |||
| LxVPN refers to both L2VPN and L3VPN. | LxVPN refers to both L2VPN and L3VPN. | |||
| The following are used in the module prefixes: | The following are used in the module prefixes: | |||
| ac: Attachment circuit | ac: Attachment circuit | |||
| ntw: Network | ntw: Network | |||
| sap: Service Attchment Point | sap: Service Attachment Point | |||
| svc: Service | svc: Service | |||
| In addition, this document uses the following terms: | In addition, this document uses the following terms: | |||
| Bearer: A physical or logical link that connects a customer node (or | Bearer: A physical or logical link that connects a customer node (or | |||
| site) to a provider network. | site) to a provider network. | |||
| A bearer can be a wireless or wired link. One or multiple | A bearer can be a wireless or wired link. One or multiple | |||
| technologies can be used to build a bearer. The bearer type can | technologies can be used to build a bearer. The bearer type can | |||
| be specified by a customer. | be specified by a customer. | |||
| The operator allocates a unique bearer reference to identify a | The operator allocates a unique bearer reference to identify a | |||
| bearer within its network (e.g., customer line identifier). Such | bearer within its network (e.g., customer line identifier). Such | |||
| a reference can be retrieved by a customer and then used in | a reference can be retrieved by a customer and then used in | |||
| subsequent service placement requests to unambiguously identify | subsequent service placement requests to unambiguously identify | |||
| where a service is to be bound. | where a service is to be bound. | |||
| The concept of bearer can be generalized to refer to the required | The concept of a bearer can be generalized to refer to the | |||
| underlying connection for the provisioning of an attachment | required underlying connection for the provisioning of an AC. | |||
| circuit. | ||||
| One or multiple attachment circuits may be hosted over the same | One or multiple ACs may be hosted over the same bearer (e.g., | |||
| bearer (e.g., multiple Virtual Local Area Networks (VLANs) on the | multiple Virtual Local Area Networks (VLANs) on the same bearer | |||
| same bearer that is provided by a physical link). | that is provided by a physical link). | |||
| Network controller: Denotes a functional entity responsible for the | Network controller: Denotes a functional entity responsible for the | |||
| management of the service provider network. One or multiple | management of the service provider network. One or multiple | |||
| network controllers can be deployed in a service provider network. | network controllers can be deployed in a service provider network. | |||
| Service orchestrator: Refers to a functional entity that interacts | Service orchestrator: Refers to a functional entity that interacts | |||
| with the customer of a network service. | with the customer of a network service. | |||
| A service orchestrator is typically responsible for the attachment | A service orchestrator is typically responsible for the ACs, the | |||
| circuits, the Provider Edge (PE) selection, and requesting the | Provider Edge (PE) selection, and requesting the activation of the | |||
| activation of the requested services to a network controller. | requested services to a network controller. | |||
| A service orchestrator may interact with one or more network | A service orchestrator may interact with one or more network | |||
| controllers. | controllers. | |||
| Service provider network: A network that is able to provide network | Service provider network: A network that is able to provide network | |||
| services (e.g., LxVPN or Network Slice Services). | services (e.g., LxVPN or RFC 9543 Network Slice Services). | |||
| Service provider: An entity that offers network services (e.g., | Service provider: An entity that offers network services (e.g., | |||
| LxVPN or Network Slice Services). | LxVPN or RFC 9543 Network Slice Services). | |||
| The names of data nodes are prefixed using the prefix associated with | The names of data nodes are prefixed using the prefix associated with | |||
| the corresponding imported YANG module as shown in Table 1: | the corresponding imported YANG module as shown in Table 1: | |||
| +=============+=====================+=========================+ | +=============+=====================+==========================+ | |||
| | Prefix | Module | Reference | | | Prefix | Module | Reference | | |||
| +=============+=====================+=========================+ | +=============+=====================+==========================+ | |||
| | ac-common | ietf-ac-common | RFC CCCC | | | ac-common | ietf-ac-common | [RFC9833] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | ac-svc | ietf-ac-svc | Section 5.2 of RFC SSSS | | | ac-svc | ietf-ac-svc | Section 6.2 of [RFC9834] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | dot1q-types | ieee802-dot1q-types | [IEEE802.1Qcp] | | | dot1q-types | ieee802-dot1q-types | [IEEE802.1Qcp] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | if | ietf-interfaces | [RFC8343] | | | if | ietf-interfaces | [RFC8343] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | inet | ietf-inet-types | Section 4 of [RFC6991] | | | inet | ietf-inet-types | Section 4 of [RFC6991] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | key-chain | ietf-key-chain | [RFC8177] | | | key-chain | ietf-key-chain | [RFC8177] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | nacm | ietf-netconf-acm | [RFC8341] | | | nacm | ietf-netconf-acm | [RFC8341] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | nw | ietf-network | [RFC8345] | | | nw | ietf-network | [RFC8345] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | rt-types | ietf-routing-types | [RFC8294] | | | rt-types | ietf-routing-types | [RFC8294] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | rt-pol | ietf-routing-policy | [RFC9067] | | | rt-pol | ietf-routing-policy | [RFC9067] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | sap | ietf-sap-ntw | [RFC9408] | | | sap | ietf-sap-ntw | [RFC9408] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| | vpn-common | ietf-vpn-common | [RFC9181] | | | vpn-common | ietf-vpn-common | [RFC9181] | | |||
| +-------------+---------------------+-------------------------+ | +-------------+---------------------+--------------------------+ | |||
| Table 1: Modules and Their Associated Prefixes | Table 1: Modules and Their Associated Prefixes | |||
| 3. Relationship to Other AC Data Models | 3. Relationship to Other AC Data Models | |||
| Figure 2 depicts the relationship between the various AC data models: | Figure 2 depicts the relationship between the various AC data models: | |||
| * "ietf-ac-common" ([I-D.ietf-opsawg-teas-common-ac]) | * "ietf-ac-common" [RFC9833] | |||
| * "ietf-bearer-svc" (Section 5.1 of | ||||
| [I-D.ietf-opsawg-teas-attachment-circuit]) | ||||
| * "ietf-ac-svc" (Section 5.2 of | * "ietf-bearer-svc" (Section 6.1 of [RFC9834]) | |||
| [I-D.ietf-opsawg-teas-attachment-circuit]) | ||||
| * "ietf-ac-svc" (Section 6.2 of [RFC9834]) | ||||
| * "ietf-ac-ntw" (Section 6) | * "ietf-ac-ntw" (Section 6) | |||
| * "ietf-ac-glue" ([I-D.ietf-opsawg-ac-lxsm-lxnm-glue]) | * "ietf-ac-glue" [RFC9836] | |||
| ietf-ac-common | ietf-ac-common | |||
| ^ ^ ^ | ^ ^ ^ | |||
| | | | | | | | | |||
| .----------' | '----------. | .----------' | '----------. | |||
| | | | | | | | | |||
| | | | | | | | | |||
| ietf-ac-svc <--- ietf-bearer-svc | | ietf-ac-svc <--- ietf-bearer-svc | | |||
| ^ ^ | | ^ ^ | | |||
| | | | | | | | | |||
| skipping to change at page 8, line 41 ¶ | skipping to change at line 328 ¶ | |||
| Figure 2: AC Data Models | Figure 2: AC Data Models | |||
| The "ietf-ac-common" module is imported by the "ietf-bearer-svc", | The "ietf-ac-common" module is imported by the "ietf-bearer-svc", | |||
| "ietf-ac-svc", and "ietf-ac-ntw" modules. Bearers managed using the | "ietf-ac-svc", and "ietf-ac-ntw" modules. Bearers managed using the | |||
| "ietf-bearer-svc" module may be referenced by service ACs managed | "ietf-bearer-svc" module may be referenced by service ACs managed | |||
| using the "ietf-ac-svc" module. Similarly, a bearer managed using | using the "ietf-ac-svc" module. Similarly, a bearer managed using | |||
| the "ietf-bearer-svc" module may list the set of ACs that use that | the "ietf-bearer-svc" module may list the set of ACs that use that | |||
| bearer. To facilitate correlation between an AC service request and | bearer. To facilitate correlation between an AC service request and | |||
| the actual AC provisioned in the network, "ietf-ac-ntw" leverages the | the actual AC provisioned in the network, "ietf-ac-ntw" leverages the | |||
| AC references exposed by the "ietf-ac-svc" module. Furthermore, to | AC references exposed by the "ietf-ac-svc" module. Furthermore, to | |||
| bind Layer 2 VPN or Layer 3 VPN services with ACs, the "ietf-ac-glue" | bind L2VPN or L3VPN services with ACs, the "ietf-ac-glue" module | |||
| module augments the LxSM and LxNM with AC service references exposed | augments the LxSM and LxNM with AC service references exposed by the | |||
| by the "ietf-ac-svc" module and AC network references exposed by the | "ietf-ac-svc" module and AC network references exposed by the "ietf- | |||
| "ietf-ac-ntw" module. | ac-ntw" module. | |||
| 4. Sample Uses of the Attachment Circuit Data Models | 4. Sample Uses of the Attachment Circuit Data Models | |||
| 4.1. ACs Terminated by One or Multiple Customer Edges (CEs) | 4.1. ACs Terminated by One or Multiple CEs | |||
| Figure 3 depicts a sample target topology that involve ACs: | Figure 3 depicts a sample target topology that involve ACs: | |||
| * ACs are terminated by a SAP at the network side. See Figure 1 for | * ACs are terminated by a SAP at the network side. See Figure 1 for | |||
| an example of SAPs within a PE. | an example of SAPs within a PE. | |||
| * A CE can be either a physical device or a logical entity. Such | * A CE can be either a physical device or a logical entity. Such a | |||
| logical entity is typically a software component (e.g., a virtual | logical entity is typically a software component (e.g., a virtual | |||
| service function that is hosted within the provider's network or a | Service Function that is hosted within the provider's network or a | |||
| third-party infrastructure). A CE is seen by the network as a | third-party infrastructure). A CE is seen by the network as a | |||
| peer SAP [RFC9408]. | peer SAP [RFC9408]. | |||
| * CEs may be either dedicated to one single connectivity service or | * CEs may be either dedicated to one single connectivity service or | |||
| host multiple connectivity services (e.g., CEs with roles of | host multiple connectivity services (e.g., CEs with roles of | |||
| service functions [RFC7665]). | Service Functions [RFC7665]). | |||
| * A network provider may bind a single AC to one or multiple peer | * A network provider may bind a single AC to one or multiple peer | |||
| SAPs (e.g., CE1 and CE2 are tagged as peer SAPs for the same AC). | SAPs (e.g., CE1 and CE2 are tagged as peer SAPs for the same AC). | |||
| For example, and as discussed in [RFC4364], multiple CEs can be | For example, and as discussed in [RFC4364], multiple CEs can be | |||
| attached to a PE over the same attachment circuit. This scenario | attached to a PE over the same AC. This scenario is typically | |||
| is typically implemented when the Layer 2 infrastructure between | implemented when the Layer 2 infrastructure between the CE and the | |||
| the CE and the network is a multipoint service. | network is a multipoint service. | |||
| * A single CE may terminate multiple ACs, which can be associated | * A single CE may terminate multiple ACs, which can be associated | |||
| with the same bearer or distinct bearers (e.g., CE4). | with the same bearer or distinct bearers (e.g., CE4). | |||
| * Customers may request protection schemes in which the ACs | * Customers may request protection schemes in which the ACs | |||
| associated with their endpoints are terminated by the same PE | associated with their endpoints are terminated by the same PE | |||
| (e.g., CE3), distinct PEs (e.g., CE4), etc. The network provider | (e.g., CE3), distinct PEs (e.g., CE4), etc. The network provider | |||
| uses this request to decide where to terminate the AC in the | uses this request to decide where to terminate the AC in the | |||
| service provider network and also whether to enable specific | service provider network and also whether to enable specific | |||
| capabilities (e.g., Virtual Router Redundancy Protocol (VRRP)). | capabilities (e.g., Virtual Router Redundancy Protocol (VRRP)). | |||
| The "ietf-ac-ntw" is a network model that is used to manage the PE | "ietf-ac-ntw" is a network model that is used to manage the PE side | |||
| side of ACs at a provider network. | of ACs at a provider network. | |||
| .--------------------. | .--------------------. | |||
| | | | | | | |||
| .------. | .--. (b1) .-----. | .------. | .--. (b1) .-----. | |||
| | +----. | | +---AC---+ | | | +----. | | +---AC---+ | | |||
| | CE1 | | | |PE+---AC---+ CE3 | | | CE1 | | | |PE+---AC---+ CE3 | | |||
| '------' | .--. '--' (b2) '-----' | '------' | .--. '--' (b2) '-----' | |||
| +---AC--+PE| Network | | +---AC--+PE| Network | | |||
| .------. | '--' .--. (b3) .-----. | .------. | '--' .--. (b3) .-----. | |||
| | | | | | +---AC---+ | | | | | | | +---AC---+ | | |||
| skipping to change at page 10, line 30 ¶ | skipping to change at line 397 ¶ | |||
| '-----------AC----------' | '-----------AC----------' | |||
| (bx) = bearer Id x | (bx) = bearer Id x | |||
| Figure 3: Examples of ACs | Figure 3: Examples of ACs | |||
| 4.2. Positioning the AC Network Model in the Overall Service Delivery | 4.2. Positioning the AC Network Model in the Overall Service Delivery | |||
| Process | Process | |||
| Figure 4 shows the positioning of the AC network model in the overall | Figure 4 shows the positioning of the AC network model in the overall | |||
| service delivery process. The "ietf-ac-ntw" module is a network | service delivery process. The "ietf-ac-ntw" module is a network | |||
| model which augments the SAP with a comprehensive set of parameters | model that augments the SAP with a comprehensive set of parameters to | |||
| to reflect the attachment circuits that are in place in a network. | reflect the ACs that are in place in a network. The model also | |||
| The model also maintains the mapping with the service references that | maintains the mapping with the service references that are used to | |||
| are used to expose those ACs to customer using the 'ietf-ac-svc' | expose those ACs to customers using the "ietf-ac-svc" module defined | |||
| module defined in [I-D.ietf-opsawg-teas-attachment-circuit]. Whether | in [RFC9834]. Whether the same naming conventions to reference an AC | |||
| the same naming conventions to reference an AC are used in the | are used in the service and network layers is deployment-specific. | |||
| service and network layers is deployment-specific. | ||||
| .-------------. | .-------------. | |||
| | Customer | | | Customer | | |||
| '------+------' | '------+------' | |||
| Customer Service Models | | Customer Service Models | | |||
| ietf-l2vpn-svc, ietf-l3vpn-svc, | ietf-network-slice-service, | ietf-l2vpn-svc, ietf-l3vpn-svc, | ietf-network-slice-service, | |||
| ietf-ac-svc, ietf-ac-glue, | and ietf-bearer-svc | ietf-ac-svc, ietf-ac-glue, | and ietf-bearer-svc | |||
| .------+------. | .------+------. | |||
| | Service | | | Service | | |||
| | Orchestration | | | Orchestration | | |||
| skipping to change at page 11, line 41 ¶ | skipping to change at line 440 ¶ | |||
| Models | | | | Models | | | | |||
| .---+---. | | | .---+---. | | | |||
| | Config | | | | | Config | | | | |||
| | Manager | | | | | Manager | | | | |||
| '---+---' | | | '---+---' | | | |||
| | | | | | | | | |||
| NETCONF/CLI....................... | NETCONF/CLI....................... | |||
| | | | | | | | | |||
| .--------------------------------. | .--------------------------------. | |||
| .---. Bearer | | Bearer .---. | .---. Bearer | | Bearer .---. | |||
| |CE#1+--------+ Network +--------+CE#2| | | CE1+--------+ Network +--------+ CE2| | |||
| '---' | | '---' | '---' | | '---' | |||
| '--------------------------------' | '--------------------------------' | |||
| Site A Site B | Site A Site B | |||
| Figure 4: An Example of the Network AC Model Usage | Figure 4: An Example of the Network AC Model Usage | |||
| Similar to [RFC9408], the "ietf-ac-ntw" module can be used for both | Similar to [RFC9408], the "ietf-ac-ntw" module can be used for both | |||
| User-to-Network Interface (UNI) and Network-to-Network Interface | User-to-Network Interface (UNI) and Network-to-Network Interface | |||
| (NNI). For example, all the ACs shown in Figure 5 have a 'role' set | (NNI). For example, all the ACs shown in Figure 5 have a 'role' set | |||
| to 'ietf-sap-ntw:nni'. Typically, ASBRs of each network are directly | to 'ietf-sap-ntw:nni'. Typically, ASBRs of each network are directly | |||
| skipping to change at page 12, line 41 ¶ | skipping to change at line 483 ¶ | |||
| The full tree diagram of the "ietf-ac-ntw" module is provided in | The full tree diagram of the "ietf-ac-ntw" module is provided in | |||
| Appendix B. Subtrees are provided in the following subsections for | Appendix B. Subtrees are provided in the following subsections for | |||
| the reader's convenience. | the reader's convenience. | |||
| 5.1. Overall Structure of the Module | 5.1. Overall Structure of the Module | |||
| The overall tree structure of the "ietf-ac-ntw" module is shown in | The overall tree structure of the "ietf-ac-ntw" module is shown in | |||
| Figure 6. | Figure 6. | |||
| augment /nw:networks/nw:network: | augment /nw:networks/nw:network: | |||
| +--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| | ... | | ... | |||
| +--rw ac-profile* [name] | +--rw ac-profile* [name] | |||
| ... | ... | |||
| augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
| +--rw ac* [name] | +--rw ac* [name] | |||
| +--rw name string | +--rw name string | |||
| +--rw svc-ref? ac-svc:attachment-circuit-reference | +--rw svc-ref? ac-svc:attachment-circuit-reference | |||
| +--rw profile* [ac-profile-ref] | +--rw profile* [ac-profile-ref] | |||
| | +--rw ac-profile-ref leafref | | +--rw ac-profile-ref leafref | |||
| | +--rw network-ref? -> /nw:networks/network/network-id | | +--rw network-ref? -> /nw:networks/network/network-id | |||
| +--rw parent-ref | +--rw parent-ref | |||
| | +--rw ac-ref? leafref | | +--rw ac-ref? leafref | |||
| | +--rw node-ref? leafref | | +--rw node-ref? leafref | |||
| | +--rw network-ref? -> /nw:networks/network/network-id | | +--rw network-ref? -> /nw:networks/network/network-id | |||
| +--ro child-ref | +--ro child-ref | |||
| | +--ro ac-ref* leafref | | +--ro ac-ref* leafref | |||
| | +--ro node-ref? leafref | | +--ro node-ref? leafref | |||
| | +--ro network-ref? -> /nw:networks/network/network-id | | +--ro network-ref? -> /nw:networks/network/network-id | |||
| +--rw peer-sap-id* string | +--rw peer-sap-id* string | |||
| +--rw group* [group-id] | +--rw group* [group-id] | |||
| | +--rw group-id string | | +--rw group-id string | |||
| | +--rw precedence? identityref | | +--rw precedence? identityref | |||
| +--rw status | +--rw status | |||
| | +--rw admin-status | | +--rw admin-status | |||
| | | +--rw status? identityref | | | +--rw status? identityref | |||
| | | +--ro last-change? yang:date-and-time | | | +--ro last-change? yang:date-and-time | |||
| | +--ro oper-status | | +--ro oper-status | |||
| | +--ro status? identityref | | +--ro status? identityref | |||
| | +--ro last-change? yang:date-and-time | | +--ro last-change? yang:date-and-time | |||
| +--rw description? string | +--rw description? string | |||
| +--rw l2-connection {ac-common:layer2-ac}? | +--rw l2-connection {ac-common:layer2-ac}? | |||
| | ... | | ... | |||
| +--rw ip-connection {ac-common:layer3-ac}? | +--rw ip-connection {ac-common:layer3-ac}? | |||
| | ... | | ... | |||
| +--rw routing-protocols | +--rw routing-protocols | |||
| | ... | | ... | |||
| +--rw oam | +--rw oam | |||
| | ... | | ... | |||
| +--rw security | +--rw security | |||
| | ... | | ... | |||
| +--rw service | +--rw service | |||
| ... | ... | |||
| augment /nw:networks/nw:network/nw:node/sap:service/sap:sap: | augment /nw:networks/nw:network/nw:node/sap:service/sap:sap: | |||
| +--rw ac* [ac-ref] | +--rw ac* [ac-ref] | |||
| +--rw ac-ref leafref | +--rw ac-ref leafref | |||
| +--rw node-ref? leafref | +--rw node-ref? leafref | |||
| +--rw network-ref? -> /nw:networks/network/network-id | +--rw network-ref? -> /nw:networks/network/network-id | |||
| Figure 6: Overall Tree Structure | Figure 6: Overall Tree Structure | |||
| A node can host one or more SAPs. Per [RFC9408], a SAP is an | A node can host one or more SAPs. Per [RFC9408], a SAP is an | |||
| abstraction of the network reference point (the PE side of an AC, in | abstraction of the network reference point (the PE side of an AC, in | |||
| the context of this document) where network services can be delivered | the context of this document) where network services can be and/or | |||
| and/or are delivered to customers. Each SAP terminates one or | are delivered to customers. Each SAP terminates one or multiple ACs. | |||
| multiple ACs. Each AC in turn may be terminated by one or more peer | In turn, each AC may be terminated by one or more peer SAPs ('peer- | |||
| SAPs ('peer-sap'). In order to expose such AC/SAP binding | sap'). In order to expose such AC/SAP binding information, the SAP | |||
| information, the SAP model [RFC9408] is augmented with required AC- | model [RFC9408] is augmented with the required AC-related | |||
| related information. | information. | |||
| Unlike the AC service model | Unlike the AC service model [RFC9834], an AC is uniquely identified | |||
| [I-D.ietf-opsawg-teas-attachment-circuit], an AC is uniquely | by a name within the scope of a node, not a network. A textual | |||
| identified by a name within the scope of a node, not a network. A | description of the AC may be provided ('description'). | |||
| textual description of the AC may be provided ('description'). | ||||
| Also, in order to ease the correlation between the AC exposed at the | Also, in order to ease the correlation between the AC exposed at the | |||
| service layer and the AC that is actually provisioned in the network | service layer and the AC that is actually provisioned in the network | |||
| operation, a reference to the AC exposed to the customer ('svc-ref') | operation, a reference to the AC exposed to the customer ('svc-ref') | |||
| is stored in the "ietf-ac-ntw" module. | is stored in the "ietf-ac-ntw" module. | |||
| ACs that are terminated by a SAP are listed in the 'ac' container | ACs that are terminated by a SAP are listed in the 'ac' container | |||
| under '/nw:networks/nw:network/nw:node/sap:service/sap:sap'. A | under '/nw:networks/nw:network/nw:node/sap:service/sap:sap'. A | |||
| controller may indicate a filter based on the service type (e.g., | controller may indicate a filter based on the service type (e.g., | |||
| Network Slice or L3VPN) to retrieve the list of available SAPs, and | Network Slice or L3VPN) to retrieve the list of available SAPs, and | |||
| thus ACs, for that service. | thus ACs, for that service. | |||
| In order to factorize common data that is provisioned for a group of | In order to factorize common data that is provisioned for a group of | |||
| ACs, a set of profiles (Section 5.3) can be defined at the network | ACs, a set of profiles (Section 5.3) can be defined at the network | |||
| level, and then called under the node level. The information | level and then called under the node level. The information | |||
| contained in a profile is thus inherited, unless the corresponding | contained in a profile is thus inherited, unless the corresponding | |||
| data node is refined at the AC level. In such a case, the value | data node is refined at the AC level. In such a case, the value | |||
| provided at the AC level takes precedence over the global one. | provided at the AC level takes precedence over the global one. | |||
| In contexts where the same AC is terminated by multiple peer SAPs | In contexts where the same AC is terminated by multiple peer SAPs | |||
| (e.g., an AC with multiple CEs) but a subset of them have specific | (e.g., an AC with multiple CEs) but a subset of them have specific | |||
| information, the module allows operators to: | information, the module allows operators to: | |||
| * Define a parent AC that may list all these CEs as peer SAPs. | * Define a Parent AC that may list all these CEs as peer SAPs. | |||
| * Create individual ACs that are bound to the parent AC using | * Create individual ACs that are bound to the Parent AC using | |||
| 'parent-ref'. | 'parent-ref'. | |||
| * Indicate for each individual AC one or a subset of the CEs as peer | * Indicate for each individual AC one or a subset of the CEs as peer | |||
| SAPs. All these individual ACs will inherit the properties of the | SAPs. All these individual ACs will inherit the properties of the | |||
| parent AC. | Parent AC. | |||
| Whenever a parent AC is deleted, then all child ACs of that AC MUST | Whenever a Parent AC is deleted, then all Child ACs of that AC MUST | |||
| be deleted. Child ACs are referenced using 'child-ref'. | be deleted. Child ACs are referenced using 'child-ref'. | |||
| An AC may belong to one or multiple groups [RFC9181]. For example, | An AC may belong to one or multiple groups [RFC9181]. For example, | |||
| the 'group-id' is used to associate redundancy or protection | the 'group-id' is used to associate redundancy or protection | |||
| constraints with ACs. | constraints with ACs. | |||
| The status of an AC can be tracked using 'status'. Both operational | The status of an AC can be tracked using 'status'. Both operational | |||
| status and administrative status are maintained. A mismatch between | status and administrative status are maintained. A mismatch between | |||
| the administrative status vs. the operational status can be used as a | the administrative status vs. the operational status can be used as a | |||
| trigger to detect anomalies. | trigger to detect anomalies. | |||
| An AC can be characterized using Layer 2 connectivity (Section 5.4), | An AC can be characterized using Layer 2 connectivity (Section 5.4), | |||
| Layer 3 connectivity (Section 5.5), routing protocols (Section 5.6), | Layer 3 connectivity (Section 5.5), routing protocols (Section 5.6), | |||
| Operations, Administration, and Maintenance (OAM) (Section 5.7), | Operations, Administration, and Maintenance (OAM) (Section 5.7), | |||
| security (Section 5.8), and service (Section 5.9) considerations. | security (Section 5.8), and service (Section 5.9) considerations. | |||
| Features are used to tag conditional protions to accomodate various | Features are used to tag conditional portions to accommodate various | |||
| deployments (support of layer 2 ACs, Layer 3 ACs, IPv4, IPv6, routing | deployments (support of Layer 2 ACs, Layer 3 ACs, IPv4, IPv6, routing | |||
| protocols, BFD, etc.). | protocols, Bidirectional Forwarding Detection (BFD), etc.). | |||
| 5.2. References | 5.2. References | |||
| The AC network module defines a set of groupings depicted in Figure 7 | The AC network module defines a set of groupings depicted in Figure 7 | |||
| for referencing purposes. These references are used within or | for referencing purposes. These references are used within or | |||
| outside the AC network module. The use of such groupings is | outside the AC network module. The use of such groupings is | |||
| consistent with the design in [RFC8345]. | consistent with the design in [RFC8345]. | |||
| grouping attachment-circuit-reference: | grouping attachment-circuit-reference: | |||
| +-- ac-ref? leafref | +-- ac-ref? leafref | |||
| skipping to change at page 16, line 5 ¶ | skipping to change at line 638 ¶ | |||
| +-- network-ref? -> /nw:networks/network/network-id | +-- network-ref? -> /nw:networks/network/network-id | |||
| grouping routing-profile-reference: | grouping routing-profile-reference: | |||
| +-- routing-profile-ref? leafref | +-- routing-profile-ref? leafref | |||
| +-- network-ref? -> /nw:networks/network/network-id | +-- network-ref? -> /nw:networks/network/network-id | |||
| Figure 7: References Groupings | Figure 7: References Groupings | |||
| The groupings shown in Figure 7 contain the information necessary to | The groupings shown in Figure 7 contain the information necessary to | |||
| reference: | reference: | |||
| * an attachment circuit that is terminated by a specific node in a | * an AC that is terminated by a specific node in a given network, | |||
| given network, | ||||
| * an attachment circuit profile of a specific network (Section 5.3), | * an AC profile of a specific network (Section 5.3), and | |||
| and | ||||
| * specific provisioning profiles that are bound to a specific | * specific provisioning profiles that are bound to a specific | |||
| network (Section 5.3). | network (Section 5.3). | |||
| 5.3. Provisioning Profiles | 5.3. Provisioning Profiles | |||
| The AC and specific provisioning profiles tree structure is shown in | The AC and specific provisioning profiles tree structure is shown in | |||
| Figure 8. | Figure 8. | |||
| augment /nw:networks/nw:network: | augment /nw:networks/nw:network: | |||
| skipping to change at page 18, line 31 ¶ | skipping to change at line 759 ¶ | |||
| to a set of policies such as classification, marking, and actions | to a set of policies such as classification, marking, and actions | |||
| (e.g., [RFC3644]). See also Section 5.9. | (e.g., [RFC3644]). See also Section 5.9. | |||
| 'failure-detection-profile-identifier': A failure detection profile | 'failure-detection-profile-identifier': A failure detection profile | |||
| refers to a set of failure detection policies such as | refers to a set of failure detection policies such as | |||
| Bidirectional Forwarding Detection (BFD) policies [RFC5880] that | Bidirectional Forwarding Detection (BFD) policies [RFC5880] that | |||
| can be invoked when building an AC. Such a profile can be, for | can be invoked when building an AC. Such a profile can be, for | |||
| example, referenced in static routes (Section 5.6.1) or under the | example, referenced in static routes (Section 5.6.1) or under the | |||
| OAM level (Section 5.7). The use of this profile is similar to | OAM level (Section 5.7). The use of this profile is similar to | |||
| the detailed examples depicted in Appendices A.11.3 and A.12 of | the detailed examples depicted in Appendices A.11.3 and A.12 of | |||
| [I-D.ietf-opsawg-teas-attachment-circuit]. | [RFC9834]. | |||
| 'forwarding-profile-identifier': A forwarding profile refers to the | 'forwarding-profile-identifier': A forwarding profile refers to the | |||
| policies that apply to the forwarding of packets conveyed over an | policies that apply to the forwarding of packets conveyed over an | |||
| AC. Such policies may consist of, for example, applying Access | AC. Such policies may consist of, for example, applying Access | |||
| Control Lists (ACLs) as in Section 5.9. | Control Lists (ACLs) as in Section 5.9. | |||
| 'routing-profile-identifier': A routing profile refers to a set of | 'routing-profile-identifier': A routing profile refers to a set of | |||
| routing policies that will be invoked (e.g., BGP policies) for an | routing policies that will be invoked (e.g., BGP policies) for an | |||
| AC. Refer to Section 5.6. | AC. Refer to Section 5.6. | |||
| The 'ac-profile' defines parameters that can be factorized among a | The 'ac-profile' defines parameters that can be factorized among a | |||
| set of ACs. Each profile is identified by 'name' that is unique in a | set of ACs. Each profile is identified by a 'name' that is unique in | |||
| network. Some of the data nodes can be adjusted at the node level. | a network. Some of the data nodes can be adjusted at the node level. | |||
| These adjusted values take precedence over the values in the profile. | These adjusted values take precedence over the values in the profile. | |||
| 5.4. L2 Connection | 5.4. L2 Connection | |||
| The 'l2-connection' container is used to manage the Layer 2 | The 'l2-connection' container is used to manage the Layer 2 | |||
| properties of an AC (mainly, the PE side of an AC). The Layer 2 | properties of an AC (mainly, the PE side of an AC). The Layer 2 | |||
| connection tree structure is shown in Figure 9. | connection tree structure is shown in Figure 9. | |||
| augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
| +--rw ac* [name] | +--rw ac* [name] | |||
| skipping to change at page 27, line 29 ¶ | skipping to change at line 1189 ¶ | |||
| | ... | | ... | |||
| +--rw security | +--rw security | |||
| | ... | | ... | |||
| +--rw service | +--rw service | |||
| ... | ... | |||
| Figure 12: Static Routing Tree Structure | Figure 12: Static Routing Tree Structure | |||
| The following data nodes can be defined for a given IP prefix: | The following data nodes can be defined for a given IP prefix: | |||
| 'lan-tag': Indicates a local tag (e.g., "myfavorite-lan") that is | 'lan-tag': Indicates a local tag (e.g., 'myfavorite-lan') that is | |||
| used to enforce local policies. | used to enforce local policies. | |||
| 'next-hop': Indicates the next hop to be used for the static route. | 'next-hop': Indicates the next hop to be used for the static route. | |||
| It can be identified by an IP address, a predefined next-hop type | It can be identified by an IP address, a predefined next-hop type | |||
| (e.g., 'discard' or 'local-link'), etc. | (e.g., 'discard' or 'local-link'), etc. | |||
| 'bfd': Indicates whether BFD is enabled or disabled for this static | 'bfd': Indicates whether BFD is enabled or disabled for this static | |||
| route entry. A BFD profile may also be provided. | route entry. A BFD profile may also be provided. | |||
| skipping to change at page 32, line 38 ¶ | skipping to change at line 1437 ¶ | |||
| 'name': Defines a name for the peer group. | 'name': Defines a name for the peer group. | |||
| 'local-address': Specifies an address or a reference to an interface | 'local-address': Specifies an address or a reference to an interface | |||
| to use when establishing the BGP transport session. | to use when establishing the BGP transport session. | |||
| 'description': Includes a description of the peer group. | 'description': Includes a description of the peer group. | |||
| 'apply-policy': Lists a set of import/export policies [RFC9067] to | 'apply-policy': Lists a set of import/export policies [RFC9067] to | |||
| apply for this group. | apply for this group. | |||
| 'local-as': Indicates a local AS Number (ASN). | 'local-as': Indicates a local Autonomous System Number (ASN). | |||
| 'peer-as': Indicates the peer's ASN. | 'peer-as': Indicates the peer's ASN. | |||
| 'address-family': Indicates the address family of the peer. It can | 'address-family': Indicates the address family of the peer. It can | |||
| be set to 'ipv4', 'ipv6', or 'dual-stack'. | be set to 'ipv4', 'ipv6', or 'dual-stack'. | |||
| This address family might be used together with the service type | This address family might be used together with the service type | |||
| that uses an AC (e.g., 'vpn-type' [RFC9182]) to derive the | that uses an AC (e.g., 'vpn-type' [RFC9182]) to derive the | |||
| appropriate Address Family Identifiers (AFIs) / Subsequent Address | appropriate Address Family Identifiers (AFIs) / Subsequent Address | |||
| Family Identifiers (SAFIs) that will be part of the derived device | Family Identifiers (SAFIs) that will be part of the derived device | |||
| skipping to change at page 33, line 42 ¶ | skipping to change at line 1488 ¶ | |||
| routing loops (Section 7 of [RFC4364]). The Site of Origin | routing loops (Section 7 of [RFC4364]). The Site of Origin | |||
| attribute is encoded as a Route Origin Extended Community. | attribute is encoded as a Route Origin Extended Community. | |||
| 'ipv6-site-of-origin': Carries an IPv6 Address Specific BGP Extended | 'ipv6-site-of-origin': Carries an IPv6 Address Specific BGP Extended | |||
| Community that is used to indicate the Site of Origin [RFC5701]. | Community that is used to indicate the Site of Origin [RFC5701]. | |||
| It is used to prevent routing loops. | It is used to prevent routing loops. | |||
| 'redistribute-connected': Controls whether the AC is advertised to | 'redistribute-connected': Controls whether the AC is advertised to | |||
| other PEs. | other PEs. | |||
| 'bgp-max-prefix': Controls the behavior when a prefix maximum is | 'bgp-max-prefix': Controls the behavior when a prefix maximum is | |||
| reached. | reached. | |||
| 'max-prefix': Indicates the maximum number of BGP prefixes allowed | 'max-prefix': Indicates the maximum number of BGP prefixes allowed | |||
| in a session for this group. If the limit is reached, the action | in a session for this group. If the limit is reached, the action | |||
| indicated in 'violate-action' will be followed. | indicated in 'violate-action' will be followed. | |||
| 'warning-threshold': A warning notification is triggered when this | 'warning-threshold': A warning notification is triggered when this | |||
| limit is reached. | limit is reached. | |||
| 'violate-action': Indicates which action to execute when the maximum | 'violate-action': Indicates which action to execute when the maximum | |||
| number of BGP prefixes is reached. Examples of such actions | number of BGP prefixes is reached. Examples of such actions | |||
| skipping to change at page 34, line 21 ¶ | skipping to change at line 1516 ¶ | |||
| 'bgp-timers': Two timers can be captured in this container: (1) | 'bgp-timers': Two timers can be captured in this container: (1) | |||
| 'hold-time', which is the time interval that will be used for the | 'hold-time', which is the time interval that will be used for the | |||
| Hold Timer (Section 4.2 of [RFC4271]) when establishing a BGP | Hold Timer (Section 4.2 of [RFC4271]) when establishing a BGP | |||
| session and (2) 'keepalive', which is the time interval for the | session and (2) 'keepalive', which is the time interval for the | |||
| KeepaliveTimer between a PE and a BGP peer (Section 4.4 of | KeepaliveTimer between a PE and a BGP peer (Section 4.4 of | |||
| [RFC4271]). | [RFC4271]). | |||
| Both timers are expressed in seconds. | Both timers are expressed in seconds. | |||
| 'bfd': Indicates whether BFD is enabled or disabled for this | 'bfd': Indicates whether BFD is enabled or disabled for this | |||
| nighbor. A BFD profile to apply may also be provided. | neighbor. A BFD profile to apply may also be provided. | |||
| 'authentication': The module adheres to the recommendations in | 'authentication': The module adheres to the recommendations in | |||
| Section 13.2 of [RFC4364], as it allows enabling the TCP | Section 13.2 of [RFC4364], as it allows enabling the TCP | |||
| Authentication Option (TCP-AO) [RFC5925] and accommodates the | Authentication Option (TCP-AO) [RFC5925] and accommodates the | |||
| installed base that makes use of MD5. | installed base that makes use of MD5. | |||
| This version of the model assumes that parameters specific to the | This version of the model assumes that parameters specific to the | |||
| TCP-AO are preconfigured as part of the key chain that is | TCP-AO are preconfigured as part of the key chain that is | |||
| referenced in the model. No assumption is made about how such a | referenced in the model. No assumption is made about how such a | |||
| key chain is preconfigured. However, the structure of the key | key chain is preconfigured. However, the structure of the key | |||
| chain should cover data nodes beyond those in [RFC8177], mainly | chain should cover data nodes beyond those in [RFC8177], mainly | |||
| SendID and RecvID (Section 3.1 of [RFC5925]). | SendID and RecvID (Section 3.1 of [RFC5925]). | |||
| For each neighbor, the following data nodes are supported in addition | For each neighbor, the following data nodes are supported in addition | |||
| to similar parameters that are provided for a peer group: | to similar parameters that are provided for a peer group: | |||
| 'remote-address': Specifies the remote IP address of a BGP neighbor. | 'remote-address': Specifies the remote IP address of a BGP neighbor. | |||
| 'peer-group': A name of a peer group. | 'peer-group': A name of a peer group. | |||
| Parameters that are provided at the 'neighbor' level takes | Parameters that are provided at the 'neighbor' level take | |||
| precedence over the ones provided in the peer group. | precedence over the ones provided in the peer group. | |||
| 'status': Indicates the status of the BGP session. | 'status': Indicates the status of the BGP session. | |||
| 5.6.3. OSPF | 5.6.3. OSPF | |||
| The OSPF routing subtree structure is shown in Figure 14. | The OSPF routing subtree structure is shown in Figure 14. | |||
| module: ietf-ac-ntw | module: ietf-ac-ntw | |||
| augment /nw:networks/nw:network: | augment /nw:networks/nw:network: | |||
| skipping to change at page 41, line 41 ¶ | skipping to change at line 1872 ¶ | |||
| The following RIP data nodes are supported: | The following RIP data nodes are supported: | |||
| 'address-family': Indicates whether IPv4, IPv6, or both address | 'address-family': Indicates whether IPv4, IPv6, or both address | |||
| families are to be activated. This parameter is used to determine | families are to be activated. This parameter is used to determine | |||
| whether RIPv2 [RFC2453], RIP Next Generation (RIPng) [RFC2080], or | whether RIPv2 [RFC2453], RIP Next Generation (RIPng) [RFC2080], or | |||
| both are to be enabled. | both are to be enabled. | |||
| 'timers': Indicates the following timers (expressed in seconds): | 'timers': Indicates the following timers (expressed in seconds): | |||
| * 'update-interval': The interval at which RIP updates are sent. | 'update-interval': The interval at which RIP updates are sent. | |||
| * 'invalid-interval': The interval before a RIP route is | 'invalid-interval': The interval before a RIP route is declared | |||
| declared invalid. | invalid. | |||
| * 'holddown-interval': The interval before better RIP routes are | 'holddown-interval': The interval before better RIP routes are | |||
| released. | released. | |||
| * 'flush-interval': The interval before a route is removed from | 'flush-interval': The interval before a route is removed from the | |||
| the routing table. | routing table. | |||
| 'default-metric': Sets the default RIP metric. | 'default-metric': Sets the default RIP metric. | |||
| 'authentication': Controls the authentication schemes to be enabled | 'authentication': Controls the authentication schemes to be enabled | |||
| for the RIP instance. | for the RIP instance. | |||
| 'status': Indicates the status of the RIP routing instance. | 'status': Indicates the status of the RIP routing instance. | |||
| 5.6.6. VRRP | 5.6.6. VRRP | |||
| skipping to change at page 45, line 26 ¶ | skipping to change at line 2049 ¶ | |||
| +--rw security | +--rw security | |||
| | ... | | ... | |||
| +--rw service | +--rw service | |||
| ... | ... | |||
| Figure 18: OAM Tree Structure | Figure 18: OAM Tree Structure | |||
| The following OAM data nodes can be specified for each BFD session: | The following OAM data nodes can be specified for each BFD session: | |||
| 'dest-addr': Specifies the BFD peer address. This data node is | 'dest-addr': Specifies the BFD peer address. This data node is | |||
| mapped to 'remote-address' of BFD container in | mapped to 'remote-address' of the BFD container in [RFC9834]. | |||
| [I-D.ietf-opsawg-teas-attachment-circuit]. 'dest-address' is used | 'dest-address' is used here to ease the mapping with the | |||
| here to ease the mapping with the underlying device model defind | underlying device model defined in [RFC9127]. | |||
| in [RFC9127]. | ||||
| 'source-address': Specifies the local IP address or interface to use | 'source-address': Specifies the local IP address or interface to use | |||
| for the session. This data node is mapped to 'local-address' of | for the session. This data node is mapped to 'local-address' of | |||
| BFD container in [I-D.ietf-opsawg-teas-attachment-circuit]. | the BFD container in [RFC9834]. 'source-address' is used here to | |||
| 'source-address' is used here to ease the mapping with the | ease the mapping with the underlying device model defined in | |||
| underlying device model defind in [RFC9127]. | [RFC9127]. | |||
| 'failure-detection-profile-ref': Refers to a BFD profile in | 'failure-detection-profile-ref': Refers to a BFD profile in | |||
| Section 5.3. | Section 5.3. | |||
| 'network-ref': Includes a network reference to uniquely identify a | 'network-ref': Includes a network reference to uniquely identify a | |||
| BFD profile. | BFD profile. | |||
| 'session-type': Indicates which BFD flavor is used to set up the | 'session-type': Indicates which BFD flavor is used to set up the | |||
| session (e.g., classic BFD [RFC5880], Seamless BFD [RFC7880]). By | session (e.g., classic BFD [RFC5880], Seamless BFD [RFC7880]). By | |||
| default, it is assumed that the BFD session will follow the | default, it is assumed that the BFD session will follow the | |||
| behavior specified in [RFC5880]. | behavior specified in [RFC5880]. | |||
| 'desired-min-tx-interval': The minimum interval, in microseconds, to | 'desired-min-tx-interval': The minimum interval, in microseconds, to | |||
| use when transmitting BFD Control packets, less any jitter | use when transmitting BFD Control packets, less any jitter | |||
| applied. | applied. | |||
| 'required-min-rx-interval': The minimum interval, in microseconds, | 'required-min-rx-interval': The minimum interval, in microseconds, | |||
| between received BFD Control packets less any jitter applied by | between received BFD Control packets, less any jitter applied by | |||
| the sender. | the sender. | |||
| 'local-multiplier': The negotiated transmit interval, multiplied by | 'local-multiplier': The negotiated transmit interval, multiplied by | |||
| this value, provides the detection time for the peer. | this value, provides the detection time for the peer. | |||
| 'holdtime': Used to indicate the expected BFD holddown time, in | 'holdtime': Used to indicate the expected BFD holddown time, in | |||
| milliseconds. | milliseconds. | |||
| 'authentication': Includes the required information to enable the | 'authentication': Includes the required information to enable the | |||
| BFD authentication modes discussed in Section 6.7 of [RFC5880]. | BFD authentication modes discussed in Section 6.7 of [RFC5880]. | |||
| In particular, 'meticulous' controls the activation of meticulous | In particular, 'meticulous' controls the activation of meticulous | |||
| mode as discussed in Sections 6.7.3 and 6.7.4 of [RFC5880]. | mode as discussed in Sections 6.7.3 and 6.7.4 of [RFC5880]. | |||
| 'status': Indicates the status of BFD. | 'status': Indicates the status of BFD. | |||
| 5.8. Security | 5.8. Security | |||
| The security subtree structure is shown in Figure 19. The 'security' | The security subtree structure is shown in Figure 19. The 'security' | |||
| container specifies the the encryption to be applied to traffic for a | container specifies the encryption to be applied to traffic for a | |||
| given AC. The model can be used to directly control the encryption | given AC. The model can be used to directly control the encryption | |||
| to be applied (e.g., Layer 2 or Layer 3 encryption) or invoke a local | to be applied (e.g., Layer 2 or Layer 3 encryption) or invoke a local | |||
| encryption profile. | encryption profile. | |||
| augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
| +--rw ac* [name] | +--rw ac* [name] | |||
| +--rw name string | +--rw name string | |||
| + ... | + ... | |||
| +--rw l2-connection {ac-common:layer2-ac}? | +--rw l2-connection {ac-common:layer2-ac}? | |||
| | ... | | ... | |||
| +--rw ip-connection {ac-common:layer3-ac}? | +--rw ip-connection {ac-common:layer3-ac}? | |||
| | ... | | ... | |||
| +--rw routing-protocols | +--rw routing-protocols | |||
| | ... | | ... | |||
| +--rw oam | +--rw oam | |||
| | ... | | ... | |||
| +--rw security | +--rw security | |||
| | +--rw encryption {vpn-common:encryption}? | | +--rw encryption {vpn-common:encryption}? | |||
| | | +--rw enabled? boolean | | | +--rw enabled? boolean | |||
| | | +--rw layer? enumeration | | | +--rw layer? enumeration | |||
| | +--rw encryption-profile | | +--rw encryption-profile | |||
| | +--rw (profile)? | | +--rw (profile)? | |||
| | +--:(provider-profile) | | +--:(provider-profile) | |||
| | | +--rw encryption-profile-ref? leafref | | | +--rw encryption-profile-ref? leafref | |||
| | | +--rw network-ref? | | | +--rw network-ref? | |||
| | | -> /nw:networks/network/network-id | | | -> /nw:networks/network/network-id | |||
| | +--:(customer-profile) | | +--:(customer-profile) | |||
| | +--rw customer-key-chain? key-chain:key-chain-ref | | +--rw customer-key-chain? key-chain:key-chain-ref | |||
| +--rw service | +--rw service | |||
| ... | ... | |||
| Figure 19: Security Tree Structure | Figure 19: Security Tree Structure | |||
| 5.9. Service | 5.9. Service | |||
| The service subtree structure is shown in Figure 20. | The service subtree structure is shown in Figure 20. | |||
| augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
| +--rw ac* [name] | +--rw ac* [name] | |||
| +--rw name string | +--rw name string | |||
| + ... | + ... | |||
| +--rw l2-connection {ac-common:layer2-ac}? | +--rw l2-connection {ac-common:layer2-ac}? | |||
| skipping to change at page 49, line 13 ¶ | skipping to change at line 2204 ¶ | |||
| | +--rw direction? identityref | | +--rw direction? identityref | |||
| +--rw access-control-list | +--rw access-control-list | |||
| +--rw acl-profiles | +--rw acl-profiles | |||
| +--rw acl-profile* [forwarding-profile-ref] | +--rw acl-profile* [forwarding-profile-ref] | |||
| +--rw forwarding-profile-ref leafref | +--rw forwarding-profile-ref leafref | |||
| +--rw network-ref? | +--rw network-ref? | |||
| -> /nw:networks/network/network-id | -> /nw:networks/network/network-id | |||
| Figure 20: Service Tree Structure | Figure 20: Service Tree Structure | |||
| The description of the service data nodes is as follows: | The service data nodes are defined as follows: | |||
| 'mtu': Specifies the Layer 2 MTU, in bytes, for the AC. | 'mtu': Specifies the Layer 2 MTU, in bytes, for the AC. | |||
| 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth': Specify the | 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth': Specify the | |||
| service bandwidth for the AC. | service bandwidth for the AC. | |||
| 'svc-pe-to-ce-bandwidth' indicates the inbound bandwidth of the | 'svc-pe-to-ce-bandwidth': Indicates the inbound bandwidth of the | |||
| connection (i.e., download bandwidth from the service provider to | connection (i.e., download bandwidth from the service provider | |||
| the site). | to the site). | |||
| 'svc-ce-to-pe-bandwidth' indicates the outbound bandwidth of the | 'svc-ce-to-pe-bandwidth': Indicates the outbound bandwidth of the | |||
| connection (i.e., upload bandwidth from the site to the service | connection (i.e., upload bandwidth from the site to the service | |||
| provider). | provider). | |||
| 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth' can be | 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth' can be | |||
| represented using the Committed Information Rate (CIR), the | represented using the Committed Information Rate (CIR), the | |||
| Committed Burst Size (CBS), the Excess Information Rate (EIR), the | Committed Burst Size (CBS), the Excess Information Rate (EIR), the | |||
| Excess Burst Size (EBS), the Peak Information Rate (PIR), and the | Excess Burst Size (EBS), the Peak Information Rate (PIR), and the | |||
| Peak Burst Size (PBS). CIR, EIR, and PIR are expressed in bps, | Peak Burst Size (PBS). CIR, EIR, and PIR are expressed in bps, | |||
| while CBS, EBS, and PBS are expressed in bytes. | while CBS, EBS, and PBS are expressed in bytes. | |||
| The following types, defined in [RFC9181], can be used to indicate | The following types, defined in [RFC9181], can be used to indicate | |||
| the bandwidth type: | the bandwidth type: | |||
| 'bw-per-cos': The bandwidth is per CoS. | 'bw-per-cos': The bandwidth is per Class of Service (CoS). | |||
| 'bw-per-port': The bandwidth is per port. | 'bw-per-port': The bandwidth is per port. | |||
| 'bw-per-site': The bandwidth is to all peer SAPs that belong to | 'bw-per-site': The bandwidth is for all peer SAPs that belong to | |||
| the same site. | the same site. | |||
| 'bw-per-service': The bandwidth is per service instance that is | 'bw-per-service': The bandwidth is per service instance that is | |||
| bound to an AC. | bound to an AC. | |||
| 'qos': Specifies a list of QoS profiles to apply for this AC. | 'qos': Specifies a list of QoS profiles to apply for this AC. | |||
| 'access-control-list': Specifies a list of ACL profiles to apply for | 'access-control-list': Specifies a list of ACL profiles to apply for | |||
| this AC. | this AC. | |||
| 6. YANG Module | 6. YANG Module | |||
| This module uses types defined in [RFC6991], [RFC8177], [RFC8294], | This module uses types defined in [RFC6991], [RFC8177], [RFC8294], | |||
| [RFC8343], [RFC9067], [RFC9181], [I-D.ietf-opsawg-teas-common-ac], | [RFC8343], [RFC9067], [RFC9181], [RFC9833], and [IEEE802.1Qcp]. | |||
| and [IEEE802.1Qcp]. | ||||
| <CODE BEGINS> file "ietf-ac-ntw@2025-01-07.yang" | <CODE BEGINS> file "ietf-ac-ntw@2025-08-11.yang" | |||
| module ietf-ac-ntw { | module ietf-ac-ntw { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ac-ntw"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ac-ntw"; | |||
| prefix ac-ntw; | prefix ac-ntw; | |||
| import ietf-vpn-common { | import ietf-vpn-common { | |||
| prefix vpn-common; | prefix vpn-common; | |||
| reference | reference | |||
| "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 | "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 | |||
| VPNs"; | VPNs"; | |||
| skipping to change at page 51, line 4 ¶ | skipping to change at line 2291 ¶ | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix if; | prefix if; | |||
| reference | reference | |||
| "RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
| } | } | |||
| import ieee802-dot1q-types { | import ieee802-dot1q-types { | |||
| prefix dot1q-types; | prefix dot1q-types; | |||
| reference | reference | |||
| "IEEE Std 802.1Qcp: Bridges and Bridged Networks-- | "IEEE Std 802.1Qcp: Bridges and Bridged Networks-- | |||
| Amendment 30: YANG Data Model"; | Amendment 30: YANG Data Model"; | |||
| } | } | |||
| import ietf-network { | import ietf-network { | |||
| prefix nw; | prefix nw; | |||
| reference | reference | |||
| "RFC 8345: A YANG Data Model for Network Topologies, | "RFC 8345: A YANG Data Model for Network Topologies, | |||
| Section 6.1"; | Section 6.1"; | |||
| } | } | |||
| import ietf-sap-ntw { | import ietf-sap-ntw { | |||
| prefix sap; | prefix sap; | |||
| reference | reference | |||
| "RFC 9408: A YANG Network Model for Service Attachment | "RFC 9408: A YANG Network Data Model for Service Attachment | |||
| Points (SAPs)"; | Points (SAPs)"; | |||
| } | } | |||
| import ietf-ac-common { | import ietf-ac-common { | |||
| prefix ac-common; | prefix ac-common; | |||
| reference | reference | |||
| "RFC CCCC: A Common YANG Data Model for Attachment Circuits"; | "RFC 9833: A Common YANG Data Model for Attachment Circuits"; | |||
| } | } | |||
| import ietf-ac-svc { | import ietf-ac-svc { | |||
| prefix ac-svc; | prefix ac-svc; | |||
| reference | reference | |||
| "RFC SSSS: YANG Data Models for Bearers and 'Attachment | "RFC 9834: YANG Data Models for Bearers and Attachment | |||
| Circuits'-as-a-Service (ACaaS)"; | Circuits as a Service (ACaaS)"; | |||
| } | } | |||
| 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> | |||
| skipping to change at page 52, line 12 ¶ | skipping to change at line 2346 ¶ | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2025 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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9835; see the | |||
| RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| revision 2025-01-07 { | revision 2025-08-11 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Attachment Circuits"; | "RFC 9835: A YANG Network Data Model for Attachment Circuits"; | |||
| } | } | |||
| // References | // References | |||
| /* A set of groupings to ease referencing cross-modules */ | /* A set of groupings to ease referencing cross-modules */ | |||
| grouping attachment-circuit-reference { | grouping attachment-circuit-reference { | |||
| description | description | |||
| "This grouping can be used to reference an attachment circuit | "This grouping can be used to reference an AC in a specific | |||
| in a specific node."; | node."; | |||
| leaf ac-ref { | leaf ac-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]/nw:node[nw:node-id=current()/../" | + "network-ref]/nw:node[nw:node-id=current()/../" | |||
| + "node-ref]/ac-ntw:ac/ac-ntw:name"; | + "node-ref]/ac-ntw:ac/ac-ntw:name"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to an attachment circuit."; | "An absolute reference to an AC."; | |||
| } | } | |||
| uses nw:node-ref; | uses nw:node-ref; | |||
| } | } | |||
| grouping attachment-circuit-references { | grouping attachment-circuit-references { | |||
| description | description | |||
| "This grouping can be used to reference a list of attachment | "This grouping can be used to reference a list of ACs in a | |||
| circuits in a specific node."; | specific node."; | |||
| leaf-list ac-ref { | leaf-list ac-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]/nw:node[nw:node-id=current()/../" | + "network-ref]/nw:node[nw:node-id=current()/../" | |||
| + "node-ref]/ac-ntw:ac/ac-ntw:name"; | + "node-ref]/ac-ntw:ac/ac-ntw:name"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to an attachment circuit."; | "An absolute reference to an AC."; | |||
| } | } | |||
| uses nw:node-ref; | uses nw:node-ref; | |||
| } | } | |||
| grouping ac-profile-reference { | grouping ac-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference an attachment circuit | "This grouping can be used to reference an AC profile."; | |||
| profile."; | ||||
| leaf ac-profile-ref { | leaf ac-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]/ac-ntw:ac-profile/ac-ntw:name"; | + "network-ref]/ac-ntw:ac-profile/ac-ntw:name"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to an attachment circuit."; | "An absolute reference to an AC."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| grouping encryption-profile-reference { | grouping encryption-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference encryption | "This grouping can be used to reference an encryption | |||
| profile."; | profile."; | |||
| leaf encryption-profile-ref { | leaf encryption-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]" | + "network-ref]" | |||
| + "/ac-ntw:specific-provisioning-profiles" | + "/ac-ntw:specific-provisioning-profiles" | |||
| + "/ac-ntw:valid-provider-identifiers" | + "/ac-ntw:valid-provider-identifiers" | |||
| + "/ac-ntw:encryption-profile-identifier/ac-ntw:id"; | + "/ac-ntw:encryption-profile-identifier/ac-ntw:id"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to an encryption profile."; | "An absolute reference to an encryption profile."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| grouping qos-profile-reference { | grouping qos-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference a QoS profile."; | "This grouping can be used to reference a QoS profile."; | |||
| leaf qos-profile-ref { | leaf qos-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]" | + "network-ref]" | |||
| + "/ac-ntw:specific-provisioning-profiles" | + "/ac-ntw:specific-provisioning-profiles" | |||
| + "/ac-ntw:valid-provider-identifiers" | + "/ac-ntw:valid-provider-identifiers" | |||
| + "/ac-ntw:qos-profile-identifier/ac-ntw:id"; | + "/ac-ntw:qos-profile-identifier/ac-ntw:id"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to a QoS profile."; | "An absolute reference to a QoS profile."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| grouping failure-detection-profile-reference { | grouping failure-detection-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference a failure detection | "This grouping can be used to reference a failure detection | |||
| profile."; | profile."; | |||
| leaf failure-detection-profile-ref { | leaf failure-detection-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]" | + "network-ref]" | |||
| + "/ac-ntw:specific-provisioning-profiles" | + "/ac-ntw:specific-provisioning-profiles" | |||
| + "/ac-ntw:valid-provider-identifiers" | + "/ac-ntw:valid-provider-identifiers" | |||
| + "/ac-ntw:failure-detection-profile-identifier/ac-ntw:id"; | + "/ac-ntw:failure-detection-profile-identifier/ac-ntw:id"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to a failure detection profile."; | "An absolute reference to a failure detection profile."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| grouping forwarding-profile-reference { | grouping forwarding-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference a forwarding profile."; | "This grouping can be used to reference a forwarding profile."; | |||
| leaf forwarding-profile-ref { | leaf forwarding-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]" | + "network-ref]" | |||
| + "/ac-ntw:specific-provisioning-profiles" | + "/ac-ntw:specific-provisioning-profiles" | |||
| + "/ac-ntw:valid-provider-identifiers" | + "/ac-ntw:valid-provider-identifiers" | |||
| + "/ac-ntw:forwarding-profile-identifier/ac-ntw:id"; | + "/ac-ntw:forwarding-profile-identifier/ac-ntw:id"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to a forwarding profile."; | "An absolute reference to a forwarding profile."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| grouping routing-profile-reference { | grouping routing-profile-reference { | |||
| description | description | |||
| "This grouping can be used to reference a routing profile."; | "This grouping can be used to reference a routing profile."; | |||
| leaf routing-profile-ref { | leaf routing-profile-ref { | |||
| type leafref { | type leafref { | |||
| path "/nw:networks/nw:network[nw:network-id=current()/../" | path "/nw:networks/nw:network[nw:network-id=current()/../" | |||
| + "network-ref]" | + "network-ref]" | |||
| + "/ac-ntw:specific-provisioning-profiles" | + "/ac-ntw:specific-provisioning-profiles" | |||
| + "/ac-ntw:valid-provider-identifiers" | + "/ac-ntw:valid-provider-identifiers" | |||
| + "/ac-ntw:routing-profile-identifier/ac-ntw:id"; | + "/ac-ntw:routing-profile-identifier/ac-ntw:id"; | |||
| require-instance false; | require-instance false; | |||
| } | } | |||
| description | description | |||
| "An absolute reference to a routing profile."; | "An absolute reference to a routing profile."; | |||
| } | } | |||
| uses nw:network-ref; | uses nw:network-ref; | |||
| } | } | |||
| // Layer 2 connection | // Layer 2 connection | |||
| skipping to change at page 55, line 50 ¶ | skipping to change at line 2529 ¶ | |||
| + "'vpn-common:dot1q')" { | + "'vpn-common:dot1q')" { | |||
| description | description | |||
| "Only applies when the type of the tagged interface is | "Only applies when the type of the tagged interface is | |||
| 'dot1q'."; | 'dot1q'."; | |||
| } | } | |||
| description | description | |||
| "Tagged interface."; | "Tagged interface."; | |||
| uses ac-common:dot1q; | uses ac-common:dot1q; | |||
| container tag-operations { | container tag-operations { | |||
| description | description | |||
| "Sets the tag manipulation policy for this AC. It defines | "Sets the tag manipulation policy for this AC. It | |||
| a set of tag manipulations that allow for the insertion, | defines a set of tag manipulations that allow for the | |||
| removal, or rewriting of 802.1Q VLAN tags. These | insertion, removal, or rewriting of 802.1Q VLAN tags. | |||
| operations are indicated for the CE-PE direction. | These operations are indicated for the CE-PE direction. | |||
| By default, tag operations are symmetric. As such, the | By default, tag operations are symmetric. As such, the | |||
| reverse tag operation is assumed on the PE-CE | reverse tag operation is assumed on the PE-CE | |||
| direction."; | direction."; | |||
| choice op-choice { | choice op-choice { | |||
| description | description | |||
| "Selects the tag rewriting policy for an AC."; | "Selects the tag rewriting policy for an AC."; | |||
| leaf pop { | leaf pop { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Pop the outer tag."; | "Pop the outer tag."; | |||
| } | } | |||
| skipping to change at page 56, line 28 ¶ | skipping to change at line 2555 ¶ | |||
| type empty; | type empty; | |||
| description | description | |||
| "Pushes one or two tags defined by the tag-1 and | "Pushes one or two tags defined by the tag-1 and | |||
| tag-2 leaves. It is assumed that, absent any | tag-2 leaves. It is assumed that, absent any | |||
| policy, the default value of 0 will be used for | policy, the default value of 0 will be used for | |||
| the Priority Code Point (PCP) setting."; | the Priority Code Point (PCP) setting."; | |||
| } | } | |||
| leaf translate { | leaf translate { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Translates the outer tag to one or two tags. PCP | "Translates the outer tag to one or two tags. PCP | |||
| bits are preserved."; | bits are preserved."; | |||
| } | } | |||
| } | } | |||
| leaf tag-1 { | leaf tag-1 { | |||
| when 'not(../pop)'; | when 'not(../pop)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "A first tag to be used for push or translate | "A first tag to be used for push or translate | |||
| operations. This tag will be used as the outermost tag | operations. This tag will be used as the outermost | |||
| as a result of the tag operation."; | tag as a result of the tag operation."; | |||
| } | } | |||
| leaf tag-1-type { | leaf tag-1-type { | |||
| type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
| default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
| description | description | |||
| "Specifies a specific 802.1Q tag type of tag-1."; | "Specifies a specific 802.1Q tag type of tag-1."; | |||
| } | } | |||
| leaf tag-2 { | leaf tag-2 { | |||
| when '(../translate)'; | when '(../translate)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| skipping to change at page 57, line 35 ¶ | skipping to change at line 2610 ¶ | |||
| + "'vpn-common:qinq')" { | + "'vpn-common:qinq')" { | |||
| description | description | |||
| "Only applies when the type of the tagged interface is | "Only applies when the type of the tagged interface is | |||
| 'QinQ'."; | 'QinQ'."; | |||
| } | } | |||
| description | description | |||
| "Includes QinQ parameters."; | "Includes QinQ parameters."; | |||
| uses ac-common:qinq; | uses ac-common:qinq; | |||
| container tag-operations { | container tag-operations { | |||
| description | description | |||
| "Sets the tag manipulation policy for this AC. It defines | "Sets the tag manipulation policy for this AC. It | |||
| a set of tag manipulations that allow for the insertion, | defines a set of tag manipulations that allow for the | |||
| removal, or rewriting of 802.1Q VLAN tags. These | insertion, removal, or rewriting of 802.1Q VLAN tags. | |||
| operations are indicated for the CE-PE direction. | These operations are indicated for the CE-PE direction. | |||
| By default, tag operations are symmetric. As such, the | By default, tag operations are symmetric. As such, the | |||
| reverse tag operation is assumed on the PE-CE | reverse tag operation is assumed on the PE-CE | |||
| direction."; | direction."; | |||
| choice op-choice { | choice op-choice { | |||
| description | description | |||
| "Selects the tag rewriting policy for a AC."; | "Selects the tag rewriting policy for an AC."; | |||
| leaf pop { | leaf pop { | |||
| type uint8 { | type uint8 { | |||
| range "1|2"; | range "1|2"; | |||
| } | } | |||
| description | description | |||
| "Pops one or two tags as a function of the indicated | "Pops one or two tags as a function of the indicated | |||
| pop value."; | pop value."; | |||
| } | } | |||
| leaf push { | leaf push { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Pushes one or two tags defined by the tag-1 and | "Pushes one or two tags defined by the tag-1 and | |||
| tag-2 leaves. It is assumed that, absent any | tag-2 leaves. It is assumed that, absent any | |||
| policy, the default value of 0 will be used for | policy, the default value of 0 will be used for | |||
| PCP setting."; | PCP setting."; | |||
| } | } | |||
| leaf translate { | leaf translate { | |||
| type uint8 { | type uint8 { | |||
| range "1|2"; | range "1|2"; | |||
| } | } | |||
| description | description | |||
| "Translates one or two outer tags. PCP bits are | "Translates one or two outer tags. PCP bits are | |||
| preserved. The following operations are supported: | preserved. The following operations are supported: | |||
| - translate 1 with tag-1 leaf is provided: only the | - translate 1 with tag-1 leaf is provided: only the | |||
| outermost tag is translated to the value in tag-1. | outermost tag is translated to the value in tag-1. | |||
| - translate 2 with both tag-1 and tag-2 leaves are | - translate 2 with both tag-1 and tag-2 leaves are | |||
| provided: both outer and inner tags are translated | provided: both outer and inner tags are translated | |||
| to the values in tag-1 and tag-2, respectively. | to the values in tag-1 and tag-2, respectively. | |||
| - translate 2 with tag-1 leaf is provided: the | - translate 2 with tag-1 leaf is provided: the | |||
| outer tag is popped while the inner tag is | outer tag is popped while the inner tag is | |||
| translated to the value in tag-1."; | translated to the value in tag-1."; | |||
| } | } | |||
| } | } | |||
| leaf tag-1 { | leaf tag-1 { | |||
| when 'not(../pop)'; | when 'not(../pop)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "A first tag to be used for push or translate | "A first tag to be used for push or translate | |||
| operations. This tag will be used as the outermost tag | operations. This tag will be used as the outermost | |||
| as a result of the tag operation."; | tag as a result of the tag operation."; | |||
| } | } | |||
| leaf tag-1-type { | leaf tag-1-type { | |||
| type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
| default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
| description | description | |||
| "Specifies a specific 802.1Q tag type of tag-1."; | "Specifies a specific 802.1Q tag type of tag-1."; | |||
| } | } | |||
| leaf tag-2 { | leaf tag-2 { | |||
| when 'not(../pop)'; | when 'not(../pop)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| skipping to change at page 62, line 24 ¶ | skipping to change at line 2839 ¶ | |||
| IP addresses are allocated by DHCP, which is provided | IP addresses are allocated by DHCP, which is provided | |||
| by the operator."; | by the operator."; | |||
| leaf dhcp-service-type { | leaf dhcp-service-type { | |||
| type enumeration { | type enumeration { | |||
| enum server { | enum server { | |||
| description | description | |||
| "Local DHCP server."; | "Local DHCP server."; | |||
| } | } | |||
| enum relay { | enum relay { | |||
| description | description | |||
| "Local DHCP relay. DHCP requests are relayed to a | "Local DHCP relay. DHCP requests are relayed to a | |||
| provider's server."; | provider's server."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Indicates the type of DHCP service to be enabled on | "Indicates the type of DHCP service to be enabled on | |||
| this access."; | this access."; | |||
| } | } | |||
| choice service-type { | choice service-type { | |||
| description | description | |||
| "Choice based on the DHCP service type."; | "Choice based on the DHCP service type."; | |||
| skipping to change at page 63, line 21 ¶ | skipping to change at line 2884 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case static-addresses { | case static-addresses { | |||
| description | description | |||
| "Lists the static IPv4 addresses that are used."; | "Lists the static IPv4 addresses that are used."; | |||
| list address { | list address { | |||
| key "address-id"; | key "address-id"; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "Lists the IPv4 addresses that are used. The first | "Lists the IPv4 addresses that are used. The first | |||
| address of the list is the primary address of the | address of the list is the primary address of the | |||
| connection."; | connection."; | |||
| leaf address-id { | leaf address-id { | |||
| type string; | type string; | |||
| description | description | |||
| "An identifier of the static IPv4 address."; | "An identifier of the static IPv4 address."; | |||
| } | } | |||
| leaf customer-address { | leaf customer-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| skipping to change at page 65, line 4 ¶ | skipping to change at line 2963 ¶ | |||
| leaf start-address { | leaf start-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the first address in the pool."; | "Indicates the first address in the pool."; | |||
| } | } | |||
| leaf end-address { | leaf end-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Indicates the last address in the pool."; | "Indicates the last address in the pool."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| choice provider-dhcp { | choice provider-dhcp { | |||
| description | description | |||
| "Parameters related to DHCP-allocated addresses. | "Parameters related to DHCP-allocated addresses. | |||
| IP addresses are allocated by DHCP, which is provided | IP addresses are allocated by DHCP, which is provided | |||
| by the operator."; | by the operator."; | |||
| leaf dhcp-service-type { | leaf dhcp-service-type { | |||
| type enumeration { | type enumeration { | |||
| enum server { | enum server { | |||
| description | description | |||
| "Local DHCP server."; | "Local DHCP server."; | |||
| } | } | |||
| enum relay { | enum relay { | |||
| description | description | |||
| "Local DHCP relay. DHCP requests are relayed to | "Local DHCP relay. DHCP requests are relayed to | |||
| a provider's server."; | a provider's server."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Indicates the type of DHCP service to be enabled on | "Indicates the type of DHCP service to be enabled on | |||
| this access."; | this access."; | |||
| } | } | |||
| choice service-type { | choice service-type { | |||
| description | description | |||
| "Choice based on the DHCP service type."; | "Choice based on the DHCP service type."; | |||
| skipping to change at page 66, line 4 ¶ | skipping to change at line 3011 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| choice dhcp-relay { | choice dhcp-relay { | |||
| description | description | |||
| "The DHCP relay is provided by the operator."; | "The DHCP relay is provided by the operator."; | |||
| container customer-dhcp-servers { | container customer-dhcp-servers { | |||
| description | description | |||
| "Container for a list of the customer's DHCP servers."; | "Container for a list of the customer's DHCP servers."; | |||
| leaf-list server-ip-address { | leaf-list server-ip-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "IPv6 addresses of the customer's DHCP servers."; | "IPv6 addresses of the customer's DHCP servers."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case static-addresses { | case static-addresses { | |||
| description | description | |||
| "Lists the static IPv6 addresses that are used."; | "Lists the static IPv6 addresses that are used."; | |||
| list address { | list address { | |||
| key "address-id"; | key "address-id"; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "Lists the IPv6 addresses that are used. The first | "Lists the IPv6 addresses that are used. The first | |||
| address of the list is the primary address of | address of the list is the primary address of | |||
| the connection."; | the connection."; | |||
| leaf address-id { | leaf address-id { | |||
| type string; | type string; | |||
| description | description | |||
| "An identifier of the static IPv6 address."; | "An identifier of the static IPv6 address."; | |||
| } | } | |||
| leaf customer-address { | leaf customer-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| skipping to change at page 67, line 4 ¶ | skipping to change at line 3059 ¶ | |||
| type string; | type string; | |||
| description | description | |||
| "Specifies a reference to a local Layer 3 termination point, | "Specifies a reference to a local Layer 3 termination point, | |||
| such as a bridge domain interface."; | such as a bridge domain interface."; | |||
| } | } | |||
| container ipv4 { | container ipv4 { | |||
| if-feature "vpn-common:ipv4"; | if-feature "vpn-common:ipv4"; | |||
| description | description | |||
| "IPv4-specific connection parameters."; | "IPv4-specific connection parameters."; | |||
| uses ipv4-connection; | uses ipv4-connection; | |||
| } | } | |||
| container ipv6 { | container ipv6 { | |||
| if-feature "vpn-common:ipv6"; | if-feature "vpn-common:ipv6"; | |||
| description | description | |||
| "IPv6-specific connection parameters."; | "IPv6-specific connection parameters."; | |||
| uses ipv6-connection; | uses ipv6-connection; | |||
| } | } | |||
| } | } | |||
| /* Routing */ | /* Routing */ | |||
| //BGP base parameters | //BGP base parameters | |||
| grouping bgp-base { | grouping bgp-base { | |||
| description | description | |||
| "Configuration specific to BGP."; | "Configuration specific to BGP."; | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Includes a description of the BGP session. This description | "Includes a description of the BGP session. This description | |||
| is meant to be used for diagnostic purposes. The semantic | is meant to be used for diagnostic purposes. The semantics | |||
| of the description is local to an implementation."; | of the description are local to an implementation."; | |||
| } | } | |||
| uses rt-pol:apply-policy-group; | uses rt-pol:apply-policy-group; | |||
| leaf local-as { | leaf local-as { | |||
| type inet:as-number; | type inet:as-number; | |||
| description | description | |||
| "Indicates a local AS Number (ASN), if an ASN distinct from | "Indicates a local Autonomous System Number (ASN), if an ASN | |||
| the ASN configured at the AC level is needed."; | distinct from the ASN configured at the AC level is | |||
| needed."; | ||||
| } | } | |||
| leaf peer-as { | leaf peer-as { | |||
| type inet:as-number; | type inet:as-number; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the customer's ASN when the customer requests BGP | "Indicates the customer's ASN when the customer requests BGP | |||
| routing."; | routing."; | |||
| } | } | |||
| leaf address-family { | leaf address-family { | |||
| type identityref { | type identityref { | |||
| skipping to change at page 68, line 35 ¶ | skipping to change at line 3138 ¶ | |||
| "If set, specifies the maximum number of occurrences of the | "If set, specifies the maximum number of occurrences of the | |||
| provider's ASN that are permitted within the AS_PATH | provider's ASN that are permitted within the AS_PATH | |||
| before it is rejected."; | before it is rejected."; | |||
| } | } | |||
| leaf prepend-global-as { | leaf prepend-global-as { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "In some situations, the ASN that is provided at the node | "In some situations, the ASN that is provided at the node | |||
| level may be distinct from the ASN configured at the AC. | level may be distinct from the ASN configured at the AC. | |||
| When such ASNs are provided, they are both prepended to the | When such ASNs are provided, they are both prepended to the | |||
| BGP route updates for this AC. To disable that behavior, | BGP route updates for this AC. To disable that behavior, | |||
| 'prepend-global-as' must be set to 'false'. In such a | 'prepend-global-as' must be set to 'false'. In such a | |||
| case, the ASN that is provided at the node level is not | case, the ASN that is provided at the node level is not | |||
| prepended to the BGP route updates for this access."; | prepended to the BGP route updates for this access."; | |||
| } | } | |||
| leaf send-default-route { | leaf send-default-route { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Defines whether default routes can be advertised to a peer. | "Defines whether default routes can be advertised to a peer. | |||
| If set to 'true', the default routes are advertised to | If set to 'true', the default routes are advertised to | |||
| a peer."; | a peer."; | |||
| } | } | |||
| leaf site-of-origin { | leaf site-of-origin { | |||
| when "derived-from-or-self(../address-family, " | when "derived-from-or-self(../address-family, " | |||
| + "'vpn-common:ipv4' or 'vpn-common:dual-stack')" { | + "'vpn-common:ipv4' or 'vpn-common:dual-stack')" { | |||
| description | description | |||
| "Only applies if IPv4 is activated."; | "Only applies if IPv4 is activated."; | |||
| } | } | |||
| type rt-types:route-origin; | type rt-types:route-origin; | |||
| description | description | |||
| "The Site of Origin attribute is encoded as a Route Origin | "The Site of Origin attribute is encoded as a Route Origin | |||
| Extended Community. It is meant to uniquely identify the | Extended Community. It is meant to uniquely identify the | |||
| set of routes learned from a site via a particular AC and | set of routes learned from a site via a particular AC and | |||
| is used to prevent routing loops."; | is used to prevent routing loops."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs), | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs), | |||
| Section 7"; | Section 7"; | |||
| } | } | |||
| leaf ipv6-site-of-origin { | leaf ipv6-site-of-origin { | |||
| when "derived-from-or-self(../address-family, " | when "derived-from-or-self(../address-family, " | |||
| + "'vpn-common:ipv6' or 'vpn-common:dual-stack')" { | + "'vpn-common:ipv6' or 'vpn-common:dual-stack')" { | |||
| description | description | |||
| skipping to change at page 69, line 45 ¶ | skipping to change at line 3197 ¶ | |||
| type identityref { | type identityref { | |||
| base vpn-common:address-family; | base vpn-common:address-family; | |||
| } | } | |||
| description | description | |||
| "Indicates the address family."; | "Indicates the address family."; | |||
| } | } | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables, when set to 'true', the redistribution of | "Enables, when set to 'true', the redistribution of | |||
| Connected routes."; | connected routes."; | |||
| } | } | |||
| } | } | |||
| container bgp-max-prefix { | container bgp-max-prefix { | |||
| description | description | |||
| "Controls the behavior when a prefix maximum is reached."; | "Controls the behavior when a prefix maximum is reached."; | |||
| leaf max-prefix { | leaf max-prefix { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Indicates the maximum number of BGP prefixes allowed in | "Indicates the maximum number of BGP prefixes allowed in | |||
| the BGP session. | the BGP session. | |||
| skipping to change at page 72, line 4 ¶ | skipping to change at line 3300 ¶ | |||
| reference | reference | |||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4), | "RFC 4271: A Border Gateway Protocol 4 (BGP-4), | |||
| Section 4.2"; | Section 4.2"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping bgp-base-peer-group { | grouping bgp-base-peer-group { | |||
| description | description | |||
| "Grouping for a basic BGP peer group."; | "Grouping for a basic BGP peer group."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the BGP peer group."; | "Name of the BGP peer group."; | |||
| } | } | |||
| uses bgp-base; | uses bgp-base; | |||
| } | } | |||
| grouping bgp-base-peer-group-list { | grouping bgp-base-peer-group-list { | |||
| description | description | |||
| "Grouping for a list of basic BGP peer groups."; | "Grouping for a list of basic BGP peer groups."; | |||
| list peer-group { | list peer-group { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "List of BGP peer groups uniquely identified by a name."; | "List of BGP peer groups uniquely identified by a name."; | |||
| uses bgp-base-peer-group; | uses bgp-base-peer-group; | |||
| } | } | |||
| } | } | |||
| grouping bgp-peer-group { | grouping bgp-peer-group { | |||
| description | description | |||
| "Grouping for BGP peer group."; | "Grouping for BGP peer group."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the BGP peer group"; | "Name of the BGP peer group"; | |||
| } | } | |||
| leaf local-address { | leaf local-address { | |||
| type union { | type union { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| type if:interface-ref; | type if:interface-ref; | |||
| } | } | |||
| description | description | |||
| "Sets the local IP address to use for the BGP transport | "Sets the local IP address to use for the BGP transport | |||
| session. This may be expressed as either an IP address | session. This may be expressed as either an IP | |||
| or a reference to an interface."; | address or a reference to an interface."; | |||
| } | } | |||
| uses bgp-base; | uses bgp-base; | |||
| uses ac-common:bgp-authentication; | uses ac-common:bgp-authentication; | |||
| } | } | |||
| grouping bgp-peer-group-list { | grouping bgp-peer-group-list { | |||
| description | description | |||
| "Grouping for a list of BGP peer groups."; | "Grouping for a list of BGP peer groups."; | |||
| list peer-group { | list peer-group { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "List of BGP peer groups uniquely identified by a name."; | "List of BGP peer groups uniquely identified by a name."; | |||
| uses bgp-peer-group; | ||||
| uses bgp-peer-group; | ||||
| } | } | |||
| } | } | |||
| // RIP base parameters | // RIP base parameters | |||
| grouping rip-base { | grouping rip-base { | |||
| description | description | |||
| "Configuration specific to RIP routing."; | "Configuration specific to RIP routing."; | |||
| leaf address-family { | leaf address-family { | |||
| type identityref { | type identityref { | |||
| skipping to change at page 73, line 44 ¶ | skipping to change at line 3387 ¶ | |||
| "Indicates the RIP update time, i.e., the amount of time | "Indicates the RIP update time, i.e., the amount of time | |||
| for which RIP updates are sent."; | for which RIP updates are sent."; | |||
| } | } | |||
| leaf invalid-interval { | leaf invalid-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..32767"; | range "1..32767"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The interval before a route is declared invalid after no | "The interval before a route is declared invalid after no | |||
| updates are received. This value is at least three times | updates are received. This value is at least three times | |||
| the value for the 'update-interval' argument."; | the value for the 'update-interval' argument."; | |||
| } | } | |||
| leaf holddown-interval { | leaf holddown-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..32767"; | range "1..32767"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "Specifies the interval before better routes released."; | "Specifies the interval before better routes are | |||
| released."; | ||||
| } | } | |||
| leaf flush-interval { | leaf flush-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..32767"; | range "1..32767"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "Indicates the RIP flush timer, i.e., the amount of time | "Indicates the RIP flush timer, i.e., the amount of time | |||
| that must elapse before a route is removed from the | that must elapse before a route is removed from the | |||
| routing table."; | routing table."; | |||
| skipping to change at page 75, line 36 ¶ | skipping to change at line 3476 ¶ | |||
| type uint32 { | type uint32 { | |||
| range "1..4294967294"; | range "1..4294967294"; | |||
| } | } | |||
| description | description | |||
| "Maximum number of allowed Link State Advertisements | "Maximum number of allowed Link State Advertisements | |||
| (LSAs) that the OSPF instance will accept."; | (LSAs) that the OSPF instance will accept."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables when set to 'true' a passive interface. It is | "When set to 'true', enables a passive interface. It is | |||
| active when set to 'false'. A passive interface's prefix | active when set to 'false'. A passive interface's | |||
| will be advertised, but no neighbor adjacencies will be | prefix will be advertised, but no neighbor adjacencies | |||
| formed on the interface."; | will be formed on the interface."; | |||
| } | } | |||
| } | } | |||
| container isis { | container isis { | |||
| when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
| + "'vpn-common:isis-routing')" { | + "'vpn-common:isis-routing')" { | |||
| description | description | |||
| "Only applies when the protocol is IS-IS."; | "Only applies when the protocol is IS-IS."; | |||
| } | } | |||
| if-feature "vpn-common:rtg-isis"; | if-feature "vpn-common:rtg-isis"; | |||
| description | description | |||
| skipping to change at page 76, line 18 ¶ | skipping to change at line 3507 ¶ | |||
| "Can be 'level-1', 'level-2', or 'level-1-2'."; | "Can be 'level-1', 'level-2', or 'level-1-2'."; | |||
| reference | reference | |||
| "RFC 9181: A Common YANG Data Model for Layer 2 | "RFC 9181: A Common YANG Data Model for Layer 2 | |||
| and Layer 3 VPNs"; | and Layer 3 VPNs"; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint32 { | type uint32 { | |||
| range "0 .. 16777215"; | range "0 .. 16777215"; | |||
| } | } | |||
| description | description | |||
| "Metric of the AC. It is used in the routing state | "Metric of the AC. It is used in the routing state | |||
| calculation and path selection."; | calculation and path selection."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "When set to 'false', the interface is active. In such | "When set to 'false', the interface is active. In such | |||
| mode, the interface sends or receives IS-IS protocol | mode, the interface sends or receives IS-IS protocol | |||
| control packets. | control packets. | |||
| When set to 'true', the interface is passive. That is, | When set to 'true', the interface is passive. That | |||
| it suppresses the sending of IS-IS updates through the | is, it suppresses the sending of IS-IS updates through | |||
| specified interface."; | the specified interface."; | |||
| } | } | |||
| } | } | |||
| container rip { | container rip { | |||
| when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
| + "'vpn-common:rip-routing')" { | + "'vpn-common:rip-routing')" { | |||
| description | description | |||
| "Only applies when the protocol is RIP."; | "Only applies when the protocol is RIP."; | |||
| } | } | |||
| if-feature "vpn-common:rtg-rip"; | if-feature "vpn-common:rtg-rip"; | |||
| description | description | |||
| skipping to change at page 77, line 21 ¶ | skipping to change at line 3558 ¶ | |||
| base vpn-common:address-family; | base vpn-common:address-family; | |||
| } | } | |||
| description | description | |||
| "Indicates whether IPv4, IPv6, or both address families | "Indicates whether IPv4, IPv6, or both address families | |||
| are to be enabled."; | are to be enabled."; | |||
| } | } | |||
| leaf ping-reply { | leaf ping-reply { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Controls whether the VRRP speaker should reply to ping | "Controls whether the VRRP speaker should reply to ping | |||
| requests. Such behavior is enabled, if set to 'true'."; | requests. Such behavior is enabled, if set to 'true'."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping routing { | grouping routing { | |||
| description | description | |||
| "Defines routing protocols."; | "Defines routing protocols."; | |||
| list routing-protocol { | list routing-protocol { | |||
| key "id"; | key "id"; | |||
| skipping to change at page 79, line 37 ¶ | skipping to change at line 3669 ¶ | |||
| description | description | |||
| "The remote IP address of this entry's BGP peer."; | "The remote IP address of this entry's BGP peer."; | |||
| } | } | |||
| leaf local-address { | leaf local-address { | |||
| type union { | type union { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| type if:interface-ref; | type if:interface-ref; | |||
| } | } | |||
| description | description | |||
| "Sets the local IP address to use for the BGP transport | "Sets the local IP address to use for the BGP transport | |||
| session. This may be expressed as either an IP address | session. This may be expressed as either an IP | |||
| or a reference to an interface."; | address or a reference to an interface."; | |||
| } | } | |||
| leaf peer-group { | leaf peer-group { | |||
| type leafref { | type leafref { | |||
| path "../../peer-groups/peer-group/name"; | path "../../peer-groups/peer-group/name"; | |||
| } | } | |||
| description | description | |||
| "The peer group with which this neighbor is | "The peer group with which this neighbor is | |||
| associated."; | associated."; | |||
| } | } | |||
| uses bgp-base; | uses bgp-base; | |||
| skipping to change at page 80, line 33 ¶ | skipping to change at line 3713 ¶ | |||
| (VPNs), Section 4.2.7 | (VPNs), 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"; | |||
| list sham-link { | list sham-link { | |||
| key "target-site"; | key "target-site"; | |||
| description | description | |||
| "Creates a sham link with another site."; | "Creates a sham link with another site."; | |||
| leaf target-site { | leaf target-site { | |||
| type string; | type string; | |||
| description | description | |||
| "Target site for the sham link connection. The site | "Target site for the sham link connection. The site | |||
| is referred to by its identifier."; | is referred to by its identifier."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Metric of the sham link. It is used in the routing | "Metric of the sham link. It is used in the routing | |||
| state calculation and path selection."; | state calculation and path selection."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge | "RFC 4577: OSPF as the Provider/Customer Edge | |||
| Protocol for BGP/MPLS IP Virtual Private | Protocol for BGP/MPLS IP Virtual Private | |||
| Networks (VPNs), Section 4.2.7.3 | Networks (VPNs), Section 4.2.7.3 | |||
| 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.2"; | (PE-CE) Routing Protocol, Section 5.2"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| skipping to change at page 81, line 4 ¶ | skipping to change at line 3733 ¶ | |||
| Protocol for BGP/MPLS IP Virtual Private | Protocol for BGP/MPLS IP Virtual Private | |||
| Networks (VPNs), Section 4.2.7.3 | Networks (VPNs), Section 4.2.7.3 | |||
| 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.2"; | (PE-CE) Routing Protocol, Section 5.2"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf max-lsa { | leaf max-lsa { | |||
| type uint32 { | type uint32 { | |||
| range "1..4294967294"; | range "1..4294967294"; | |||
| } | } | |||
| description | description | |||
| "Maximum number of allowed Link State Advertisements | "Maximum number of allowed Link State Advertisements | |||
| (LSAs) that the OSPF instance will accept."; | (LSAs) that the OSPF instance will accept."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables when set to 'true' a passive interface. It is | "When set to 'true', enables a passive interface. It is | |||
| active when set to 'false'. A passive interface's prefix | active when set to 'false'. A passive interface's | |||
| will be advertised, but no neighbor adjacencies will be | prefix will be advertised, but no neighbor adjacencies | |||
| formed on the interface."; | will be formed on the interface."; | |||
| } | } | |||
| uses ac-common:ospf-authentication; | uses ac-common:ospf-authentication; | |||
| uses ac-common:service-status; | uses ac-common:service-status; | |||
| } | } | |||
| container isis { | container isis { | |||
| when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
| + "'vpn-common:isis-routing')" { | + "'vpn-common:isis-routing')" { | |||
| description | description | |||
| "Only applies when the protocol is IS-IS."; | "Only applies when the protocol is IS-IS."; | |||
| } | } | |||
| skipping to change at page 81, line 46 ¶ | skipping to change at line 3774 ¶ | |||
| "Can be 'level-1', 'level-2', or 'level-1-2'."; | "Can be 'level-1', 'level-2', or 'level-1-2'."; | |||
| reference | reference | |||
| "RFC 9181: A Common YANG Data Model for Layer 2 and | "RFC 9181: A Common YANG Data Model for Layer 2 and | |||
| Layer 3 VPNs"; | Layer 3 VPNs"; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint32 { | type uint32 { | |||
| range "0 .. 16777215"; | range "0 .. 16777215"; | |||
| } | } | |||
| description | description | |||
| "Metric of the AC. It is used in the routing state | "Metric of the AC. It is used in the routing state | |||
| calculation and path selection."; | calculation and path selection."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "When set to 'false', the interface is active. In such | "When set to 'false', the interface is active. In such | |||
| mode, the interface sends or receives IS-IS protocol | mode, the interface sends or receives IS-IS protocol | |||
| control packets. | control packets. | |||
| When set to 'true', the interface is passive. That is, | When set to 'true', the interface is passive. That | |||
| it suppresses the sending of IS-IS updates through the | is, it suppresses the sending of IS-IS updates through | |||
| specified interface."; | the specified interface."; | |||
| } | } | |||
| uses ac-common:isis-authentication; | uses ac-common:isis-authentication; | |||
| uses ac-common:service-status; | uses ac-common:service-status; | |||
| } | } | |||
| container rip { | container rip { | |||
| when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
| + "'vpn-common:rip-routing')" { | + "'vpn-common:rip-routing')" { | |||
| description | description | |||
| "Only applies when the protocol is RIP. | "Only applies when the protocol is RIP. | |||
| For IPv4, the model assumes that RIP version 2 | For IPv4, the model assumes that RIP version 2 | |||
| skipping to change at page 82, line 33 ¶ | skipping to change at line 3810 ¶ | |||
| description | description | |||
| "Configuration specific to RIP routing."; | "Configuration specific to RIP routing."; | |||
| uses rip-base; | uses rip-base; | |||
| uses ac-common:rip-authentication; | uses ac-common:rip-authentication; | |||
| uses ac-common:service-status; | uses ac-common:service-status; | |||
| } | } | |||
| container vrrp { | container vrrp { | |||
| when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
| + "'vpn-common:vrrp-routing')" { | + "'vpn-common:vrrp-routing')" { | |||
| description | description | |||
| "Only applies when the protocol is the VRRP."; | "Only applies when the protocol is VRRP."; | |||
| } | } | |||
| if-feature "vpn-common:rtg-vrrp"; | if-feature "vpn-common:rtg-vrrp"; | |||
| description | description | |||
| "Configuration specific to VRRP."; | "Configuration specific to VRRP."; | |||
| reference | reference | |||
| "RFC 9568: Virtual Router Redundancy Protocol (VRRP) | "RFC 9568: Virtual Router Redundancy Protocol (VRRP) | |||
| Version 3 for IPv4 and IPv6"; | Version 3 for IPv4 and IPv6"; | |||
| leaf address-family { | leaf address-family { | |||
| type identityref { | type identityref { | |||
| base vpn-common:address-family; | base vpn-common:address-family; | |||
| skipping to change at page 85, line 4 ¶ | skipping to change at line 3925 ¶ | |||
| units "milliseconds"; | units "milliseconds"; | |||
| description | description | |||
| "Expected BFD holdtime. | "Expected BFD holdtime. | |||
| The customer may impose some fixed values for the holdtime | The customer may impose some fixed values for the holdtime | |||
| period if the provider allows the customer to use this | period if the provider allows the customer to use this | |||
| function."; | function."; | |||
| reference | reference | |||
| "RFC 5880: Bidirectional Forwarding Detection (BFD), | "RFC 5880: Bidirectional Forwarding Detection (BFD), | |||
| Section 6.8.18"; | Section 6.8.18"; | |||
| } | } | |||
| } | } | |||
| grouping bfd-routing { | grouping bfd-routing { | |||
| description | description | |||
| "Defines a basic BFD grouping for routing configuration."; | "Defines a basic BFD grouping for routing configuration."; | |||
| container bfd { | container bfd { | |||
| if-feature "vpn-common:bfd"; | if-feature "vpn-common:bfd"; | |||
| description | description | |||
| "BFD control for this neighbor."; | "BFD control for this neighbor."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables BFD if set to 'true'. BFD is disabled of set to | "Enables BFD if set to 'true'. BFD is disabled if set to | |||
| 'false'."; | 'false'."; | |||
| } | } | |||
| uses failure-detection-profile-reference; | uses failure-detection-profile-reference; | |||
| } | } | |||
| } | } | |||
| grouping oam { | grouping oam { | |||
| description | description | |||
| "Defines the Operations, Administration, and Maintenance | "Defines the Operations, Administration, and Maintenance | |||
| (OAM) mechanisms used."; | (OAM) mechanisms used."; | |||
| container bfd { | container bfd { | |||
| if-feature "vpn-common:bfd"; | if-feature "vpn-common:bfd"; | |||
| description | description | |||
| "Container for BFD."; | "Container for BFD."; | |||
| list session { | list session { | |||
| key "dest-addr"; | key "dest-addr"; | |||
| description | description | |||
| "List of IP sessions."; | "List of IP sessions."; | |||
| leaf dest-addr { | leaf dest-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "IP address of the peer."; | "IP address of the peer."; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type union { | type union { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| type if:interface-ref; | type if:interface-ref; | |||
| } | } | |||
| description | description | |||
| "Sets the local IP address to use for the BFD session. | "Sets the local IP address to use for the BFD session. | |||
| This may be expressed as either an IP address or | This may be expressed as either an IP address or | |||
| a reference to an interface."; | a reference to an interface."; | |||
| } | } | |||
| uses failure-detection-profile-reference; | uses failure-detection-profile-reference; | |||
| uses bfd; | uses bfd; | |||
| container authentication { | container authentication { | |||
| presence "Enables BFD authentication"; | presence "Enables BFD authentication"; | |||
| description | description | |||
| "Parameters for BFD authentication."; | "Parameters for BFD authentication."; | |||
| leaf key-chain { | leaf key-chain { | |||
| type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
| description | description | |||
| skipping to change at page 86, line 41 ¶ | skipping to change at line 4010 ¶ | |||
| description | description | |||
| "Security parameters for an AC."; | "Security parameters for an AC."; | |||
| container encryption { | container encryption { | |||
| if-feature "vpn-common:encryption"; | if-feature "vpn-common:encryption"; | |||
| description | description | |||
| "Container for AC encryption."; | "Container for AC encryption."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "If set to 'true', traffic encryption on the connection is | "If set to 'true', traffic encryption on the connection is | |||
| required. Otherwise, it is disabled."; | required. Otherwise, it is disabled."; | |||
| } | } | |||
| leaf layer { | leaf layer { | |||
| when "../enabled = 'true'" { | when "../enabled = 'true'" { | |||
| description | description | |||
| "Included only when encryption is enabled."; | "Included only when encryption is enabled."; | |||
| } | } | |||
| type enumeration { | type enumeration { | |||
| enum layer2 { | enum layer2 { | |||
| description | description | |||
| "Encryption occurs at Layer 2."; | "Encryption occurs at Layer 2."; | |||
| skipping to change at page 87, line 4 ¶ | skipping to change at line 4021 ¶ | |||
| } | } | |||
| leaf layer { | leaf layer { | |||
| when "../enabled = 'true'" { | when "../enabled = 'true'" { | |||
| description | description | |||
| "Included only when encryption is enabled."; | "Included only when encryption is enabled."; | |||
| } | } | |||
| type enumeration { | type enumeration { | |||
| enum layer2 { | enum layer2 { | |||
| description | description | |||
| "Encryption occurs at Layer 2."; | "Encryption occurs at Layer 2."; | |||
| } | } | |||
| enum layer3 { | enum layer3 { | |||
| description | description | |||
| "Encryption occurs at Layer 3. For example, IPsec | "Encryption occurs at Layer 3. For example, IPsec | |||
| may be used when a customer requests Layer 3 | may be used when a customer requests Layer 3 | |||
| encryption."; | encryption."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Indicates the layer on which encryption is applied."; | "Indicates the layer on which encryption is applied."; | |||
| } | } | |||
| } | } | |||
| container encryption-profile { | container encryption-profile { | |||
| when "../encryption/enabled = 'true'" { | when "../encryption/enabled = 'true'" { | |||
| skipping to change at page 87, line 45 ¶ | skipping to change at line 4061 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| // AC profile | // AC profile | |||
| grouping ac-profile { | grouping ac-profile { | |||
| description | description | |||
| "Grouping for attachment circuit profiles."; | "Grouping for AC profiles."; | |||
| container routing-protocols { | container routing-protocols { | |||
| description | description | |||
| "Defines routing protocols."; | "Defines routing protocols."; | |||
| uses routing-profile; | uses routing-profile; | |||
| } | } | |||
| container oam { | container oam { | |||
| description | description | |||
| "Defines the OAM mechanisms used for the AC profile."; | "Defines the OAM mechanisms used for the AC profile."; | |||
| container bfd { | container bfd { | |||
| if-feature "vpn-common:bfd"; | if-feature "vpn-common:bfd"; | |||
| skipping to change at page 88, line 18 ¶ | skipping to change at line 4083 ¶ | |||
| "Container for BFD."; | "Container for BFD."; | |||
| uses bfd; | uses bfd; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| // Parent and Child ACs | // Parent and Child ACs | |||
| grouping ac-hierarchy { | grouping ac-hierarchy { | |||
| description | description | |||
| "Container for parent and child AC references."; | "Container for Parent and Child AC references."; | |||
| container parent-ref { | container parent-ref { | |||
| description | description | |||
| "Specifies the parent AC that is inherited by an AC. | "Specifies the Parent AC that is inherited by an AC. | |||
| Parent ACs are used, e.g., in contexts where multiple | Parent ACs are used, e.g., in contexts where multiple | |||
| CEs are terminating the same AC, but some specific | CEs are terminating the same AC, but some specific | |||
| information is required for each peer SAP."; | information is required for each peer SAP."; | |||
| uses ac-ntw:attachment-circuit-reference; | uses ac-ntw:attachment-circuit-reference; | |||
| } | } | |||
| container child-ref { | container child-ref { | |||
| config false; | config false; | |||
| description | description | |||
| "Specifies a child AC that relies upon a parent AC."; | "Specifies a Child AC that relies upon a Parent AC."; | |||
| uses ac-ntw:attachment-circuit-references; | uses ac-ntw:attachment-circuit-references; | |||
| } | } | |||
| } | } | |||
| // AC network provisioning | // AC network provisioning | |||
| grouping ac { | grouping ac { | |||
| description | description | |||
| "Grouping for attachment circuits."; | "Grouping for ACs."; | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Associates a description with an AC."; | "Associates a description with an AC."; | |||
| } | } | |||
| container l2-connection { | container l2-connection { | |||
| if-feature "ac-common:layer2-ac"; | if-feature "ac-common:layer2-ac"; | |||
| description | description | |||
| "Defines Layer 2 protocols and parameters that are required | "Defines Layer 2 protocols and parameters that are required | |||
| to enable AC connectivity."; | to enable AC connectivity."; | |||
| skipping to change at page 92, line 4 ¶ | skipping to change at line 4261 ¶ | |||
| description | description | |||
| "Augmentation parameters apply only for SAP networks."; | "Augmentation parameters apply only for SAP networks."; | |||
| } | } | |||
| description | description | |||
| "Augments SAPs with AC provisioning details."; | "Augments SAPs with AC provisioning details."; | |||
| list ac { | list ac { | |||
| key "ac-ref"; | key "ac-ref"; | |||
| description | description | |||
| "Specifies the ACs that are terminated by the SAP."; | "Specifies the ACs that are terminated by the SAP."; | |||
| uses ac-ntw:attachment-circuit-reference; | uses ac-ntw:attachment-circuit-reference; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This section is modeled after the template described in in | This section is modeled after the template described in Section 3.7.1 | |||
| Section 3.7 of [I-D.ietf-netmod-rfc8407bis]. | of [YANG-GUIDELINES]. | |||
| The "ietf-ac-ntw" YANG module defines a data model that is designed | The "ietf-ac-ntw" YANG module defines a data model that is designed | |||
| to be accessed via YANG-based management protocols, such as NETCONF | to be accessed via YANG-based management protocols, such as NETCONF | |||
| [RFC6241] and RESTCONF [RFC8040]. These protocols have to use a | [RFC6241] and RESTCONF [RFC8040]. These protocols have to use a | |||
| secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and QUIC | secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and QUIC | |||
| [RFC9000]) and have to use mutual authentication. | [RFC9000]) and have to use mutual authentication. | |||
| 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. | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., "config true", which is the | |||
| default). These data nodes may be considered sensitive or vulnerable | default). All writable data nodes are likely to be reasonably | |||
| in some network environments. Write operations (e.g., edit-config) | sensitive or vulnerable in some network environments. Write | |||
| and delete operations to these data nodes without proper protection | operations (e.g., edit-config) and delete operations to these data | |||
| or authentication can have a negative effect on network operations. | nodes without proper protection or authentication can have a negative | |||
| Specifically, the following subtrees and data nodes have particular | effect on network operations. The following subtrees and data nodes | |||
| sensitivities/vulnerabilities: | have particular sensitivities/vulnerabilities: | |||
| 'specific-provisioning-profiles': This container includes a set of | 'specific-provisioning-profiles': This container includes a set of | |||
| sensitive data that influence how an AC is delivered. For | sensitive data that influences how an AC is delivered. For | |||
| example, an attacker who has access to these data nodes may be | example, an attacker who has access to these data nodes may be | |||
| able to manipulate routing policies, QoS policies, or encryption | able to manipulate routing policies, QoS policies, or encryption | |||
| properties. These data nodes are defined with "nacm:default-deny- | properties. These data nodes are defined with "nacm:default-deny- | |||
| write" tagging [I-D.ietf-opsawg-teas-common-ac]. | write" tagging [RFC9833]. | |||
| 'ac': An attacker who is able to access network nodes can undertake | 'ac': An attacker who is able to access network nodes can undertake | |||
| various attacks, such as modify the attributes of an AC (e.g., | various attacks, such as modify the attributes of an AC (e.g., | |||
| QoS, bandwidth, routing protocols, keying material), leading to | QoS, bandwidth, routing protocols, keying material), leading to | |||
| malfunctioning of services that are delivered over that AC and | malfunctioning of services that are delivered over that AC and | |||
| therefore to Service Level Agreement (SLA) violations. In | therefore to Service Level Agreement (SLA) violations. In | |||
| addition, an attacker could attempt to add a new AC. : In | addition, an attacker could attempt to add a new AC. By also | |||
| addition to using NACM to prevent unauthorized access, such | using NACM to prevent unauthorized access, such activity can be | |||
| activity can be detected by adequately monitoring and tracking | detected by adequately monitoring and tracking network | |||
| network configuration changes. | configuration changes. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. Specifically, the following | notification) to these data nodes. Specifically, the following | |||
| subtrees and data nodes have particular sensitivities/ | subtrees and data nodes have particular sensitivities/ | |||
| vulnerabilities: | vulnerabilities: | |||
| 'ac': Unauthorized access to this subtree can disclose the identity | 'ac': Unauthorized access to this subtree can disclose the identity | |||
| of a customer 'peer-sap-id'. | of a customer 'peer-sap-id'. | |||
| 'l2-connection' and 'ip-connection': An attacker can retrieve | 'l2-connection' and 'ip-connection': An attacker can retrieve | |||
| privacy-related information, which can be used to track a | privacy-related information, which can be used to track a | |||
| customer. Disclosing such information may be considered a | customer. Disclosing such information may be considered a | |||
| violation of the customer-provider trust relationship. | violation of the customer-provider trust relationship. | |||
| 'keying-material' and 'customer-key-chain': An attacker can retrieve | 'keying-material' and 'customer-key-chain': An attacker can retrieve | |||
| the cryptographic keys protecting an AC (routing, in particular). | the cryptographic keys protecting an AC (routing, in particular). | |||
| These keys could be used to inject spoofed routing advertisements. | These keys could be used to inject spoofed routing advertisements. | |||
| There are no particularly sensitive RPC or action operations. | ||||
| Several data nodes ('bgp', 'ospf', 'isis', 'rip', and 'customer-key- | Several data nodes ('bgp', 'ospf', 'isis', 'rip', and 'customer-key- | |||
| chain') rely upon [RFC8177] for authentication purposes. As such, | chain') rely upon the key chains described in [RFC8177] for | |||
| the AC network module inherits the security considerations discussed | authentication purposes. As such, the AC network module inherits the | |||
| in Section 5 of [RFC8177]. Also, these data nodes support supplying | security considerations discussed in Section 5 of [RFC8177]. Also, | |||
| explicit keys as strings in ASCII format. The use of keys in | these data nodes support supplying explicit keys as strings in ASCII | |||
| hexadecimal string format would afford greater key entropy with the | format. The use of keys in hexadecimal string format would afford | |||
| same number of key-string octets. However, such a format is not | greater key entropy with the same number of key-string octets. | |||
| included in this version of the AC network model, because it is not | However, such a format is not included in this version of the AC | |||
| supported by the underlying device modules (e.g., [RFC8695]). | network model, because it is not supported by the underlying device | |||
| modules (e.g., [RFC8695]). | ||||
| Section 5.8 specifies the the encryption to be applied to traffic for | Section 5.8 specifies the encryption to be applied to traffic for a | |||
| a given AC. | given AC. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| IANA is requested 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-ac-ntw | URI: urn:ietf:params:xml:ns:yang:ietf-ac-ntw | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| IANA is requested to register the following YANG module in the "YANG | IANA has registered the following YANG module in the "YANG Module | |||
| Module Names" subregistry [RFC6020] within the "YANG Parameters" | Names" registry [RFC6020] within the "YANG Parameters" registry | |||
| registry: | group: | |||
| Name: ietf-ac-ntw | Name: ietf-ac-ntw | |||
| Namespace: urn:ietf:params:xml:ns:yang:ietf-ac-ntw | Maintained by IANA? N | |||
| Prefix: ac-ntw | Namespace: urn:ietf:params:xml:ns:yang:ietf-ac-ntw | |||
| Maintained by IANA? N | Prefix: ac-ntw | |||
| Reference: RFC XXXX | Reference: RFC 9835 | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-opsawg-teas-attachment-circuit] | ||||
| Boucadair, M., Roberts, R., de Dios, O. G., Barguil, S., | ||||
| and B. Wu, "YANG Data Models for Bearers and 'Attachment | ||||
| Circuits'-as-a-Service (ACaaS)", Work in Progress, | ||||
| Internet-Draft, draft-ietf-opsawg-teas-attachment-circuit- | ||||
| 20, 23 January 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
| teas-attachment-circuit-20>. | ||||
| [I-D.ietf-opsawg-teas-common-ac] | ||||
| Boucadair, M., Roberts, R., de Dios, O. G., Barguil, S., | ||||
| and B. Wu, "A Common YANG Data Model for Attachment | ||||
| Circuits", Work in Progress, Internet-Draft, draft-ietf- | ||||
| opsawg-teas-common-ac-15, 23 January 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
| teas-common-ac-15>. | ||||
| [IEEE802.1Qcp] | [IEEE802.1Qcp] | |||
| IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and metropolitan area | |||
| networks--Bridges and Bridged Networks--Amendment 30: YANG | networks--Bridges and Bridged Networks--Amendment 30: YANG | |||
| Data Model", September 2018, | Data Model", IEEE Std 802.1Qcp-2018, | |||
| DOI 10.1109/IEEESTD.2018.8467507, September 2018, | ||||
| <https://doi.org/10.1109/IEEESTD.2018.8467507>. | <https://doi.org/10.1109/IEEESTD.2018.8467507>. | |||
| [RFC2080] Malkin, G. and R. Minnear, "RIPng for IPv6", RFC 2080, | [RFC2080] Malkin, G. and R. Minnear, "RIPng for IPv6", RFC 2080, | |||
| DOI 10.17487/RFC2080, January 1997, | DOI 10.17487/RFC2080, January 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2080>. | <https://www.rfc-editor.org/info/rfc2080>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2453] Malkin, G., "RIP Version 2", STD 56, RFC 2453, | [RFC2453] Malkin, G., "RIP Version 2", STD 56, RFC 2453, | |||
| DOI 10.17487/RFC2453, November 1998, | DOI 10.17487/RFC2453, November 1998, | |||
| <https://www.rfc-editor.org/rfc/rfc2453>. | <https://www.rfc-editor.org/info/rfc2453>. | |||
| [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/rfc/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
| Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
| DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
| <https://www.rfc-editor.org/rfc/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
| [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/rfc/rfc4364>. | 2006, <https://www.rfc-editor.org/info/rfc4364>. | |||
| [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | |||
| Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | |||
| Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | |||
| June 2006, <https://www.rfc-editor.org/rfc/rfc4577>. | June 2006, <https://www.rfc-editor.org/info/rfc4577>. | |||
| [RFC5701] Rekhter, Y., "IPv6 Address Specific BGP Extended Community | [RFC5701] Rekhter, Y., "IPv6 Address Specific BGP Extended Community | |||
| Attribute", RFC 5701, DOI 10.17487/RFC5701, November 2009, | Attribute", RFC 5701, DOI 10.17487/RFC5701, November 2009, | |||
| <https://www.rfc-editor.org/rfc/rfc5701>. | <https://www.rfc-editor.org/info/rfc5701>. | |||
| [RFC5709] Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M., | [RFC5709] Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M., | |||
| Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic | Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic | |||
| Authentication", RFC 5709, DOI 10.17487/RFC5709, October | Authentication", RFC 5709, DOI 10.17487/RFC5709, October | |||
| 2009, <https://www.rfc-editor.org/rfc/rfc5709>. | 2009, <https://www.rfc-editor.org/info/rfc5709>. | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
| [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | |||
| Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | |||
| June 2010, <https://www.rfc-editor.org/rfc/rfc5925>. | June 2010, <https://www.rfc-editor.org/info/rfc5925>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | |||
| M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | |||
| June 2012, <https://www.rfc-editor.org/rfc/rfc6565>. | June 2012, <https://www.rfc-editor.org/info/rfc6565>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/rfc/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7166] Bhatia, M., Manral, V., and A. Lindem, "Supporting | [RFC7166] Bhatia, M., Manral, V., and A. Lindem, "Supporting | |||
| Authentication Trailer for OSPFv3", RFC 7166, | Authentication Trailer for OSPFv3", RFC 7166, | |||
| DOI 10.17487/RFC7166, March 2014, | DOI 10.17487/RFC7166, March 2014, | |||
| <https://www.rfc-editor.org/rfc/rfc7166>. | <https://www.rfc-editor.org/info/rfc7166>. | |||
| [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., | [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., | |||
| "Security Extension for OSPFv2 When Using Manual Key | "Security Extension for OSPFv2 When Using Manual Key | |||
| Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, | Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, | |||
| <https://www.rfc-editor.org/rfc/rfc7474>. | <https://www.rfc-editor.org/info/rfc7474>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8077] Martini, L., Ed. and G. Heron, Ed., "Pseudowire Setup and | [RFC8077] Martini, L., Ed. and G. Heron, Ed., "Pseudowire Setup and | |||
| Maintenance Using the Label Distribution Protocol (LDP)", | Maintenance Using the Label Distribution Protocol (LDP)", | |||
| STD 84, RFC 8077, DOI 10.17487/RFC8077, February 2017, | STD 84, RFC 8077, DOI 10.17487/RFC8077, February 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8077>. | <https://www.rfc-editor.org/info/rfc8077>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
| DOI 10.17487/RFC8177, June 2017, | DOI 10.17487/RFC8177, June 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8177>. | <https://www.rfc-editor.org/info/rfc8177>. | |||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| "Common YANG Data Types for the Routing Area", RFC 8294, | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
| DOI 10.17487/RFC8294, December 2017, | DOI 10.17487/RFC8294, December 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8294>. | <https://www.rfc-editor.org/info/rfc8294>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Access Control Model", STD 91, RFC 8341, | Access Control Model", STD 91, RFC 8341, | |||
| DOI 10.17487/RFC8341, March 2018, | DOI 10.17487/RFC8341, March 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8341>. | <https://www.rfc-editor.org/info/rfc8341>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8343>. | <https://www.rfc-editor.org/info/rfc8343>. | |||
| [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., | [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., | |||
| Ananthakrishnan, H., and X. Liu, "A YANG Data Model for | Ananthakrishnan, H., and X. Liu, "A YANG Data Model for | |||
| Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March | Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March | |||
| 2018, <https://www.rfc-editor.org/rfc/rfc8345>. | 2018, <https://www.rfc-editor.org/info/rfc8345>. | |||
| [RFC9067] Qu, Y., Tantsura, J., Lindem, A., and X. Liu, "A YANG Data | [RFC9067] Qu, Y., Tantsura, J., Lindem, A., and X. Liu, "A YANG Data | |||
| Model for Routing Policy", RFC 9067, DOI 10.17487/RFC9067, | Model for Routing Policy", RFC 9067, DOI 10.17487/RFC9067, | |||
| October 2021, <https://www.rfc-editor.org/rfc/rfc9067>. | October 2021, <https://www.rfc-editor.org/info/rfc9067>. | |||
| [RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | [RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | |||
| Ed., and Q. Wu, "A Common YANG Data Model for Layer 2 and | Ed., and Q. Wu, "A Common YANG Data Model for Layer 2 and | |||
| Layer 3 VPNs", RFC 9181, DOI 10.17487/RFC9181, February | Layer 3 VPNs", RFC 9181, DOI 10.17487/RFC9181, February | |||
| 2022, <https://www.rfc-editor.org/rfc/rfc9181>. | 2022, <https://www.rfc-editor.org/info/rfc9181>. | |||
| [RFC9182] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | [RFC9182] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | |||
| Ed., Munoz, L., and A. Aguado, "A YANG Network Data Model | Ed., Munoz, L., and A. Aguado, "A YANG Network Data Model | |||
| for Layer 3 VPNs", RFC 9182, DOI 10.17487/RFC9182, | for Layer 3 VPNs", RFC 9182, DOI 10.17487/RFC9182, | |||
| February 2022, <https://www.rfc-editor.org/rfc/rfc9182>. | February 2022, <https://www.rfc-editor.org/info/rfc9182>. | |||
| [RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, | [RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, | |||
| S., and L. Munoz, "A YANG Network Data Model for Layer 2 | S., and L. Munoz, "A YANG Network Data Model for Layer 2 | |||
| VPNs", RFC 9291, DOI 10.17487/RFC9291, September 2022, | VPNs", RFC 9291, DOI 10.17487/RFC9291, September 2022, | |||
| <https://www.rfc-editor.org/rfc/rfc9291>. | <https://www.rfc-editor.org/info/rfc9291>. | |||
| [RFC9408] Boucadair, M., Ed., Gonzalez de Dios, O., Barguil, S., Wu, | [RFC9408] Boucadair, M., Ed., Gonzalez de Dios, O., Barguil, S., Wu, | |||
| Q., and V. Lopez, "A YANG Network Data Model for Service | Q., and V. Lopez, "A YANG Network Data Model for Service | |||
| Attachment Points (SAPs)", RFC 9408, DOI 10.17487/RFC9408, | Attachment Points (SAPs)", RFC 9408, DOI 10.17487/RFC9408, | |||
| June 2023, <https://www.rfc-editor.org/rfc/rfc9408>. | June 2023, <https://www.rfc-editor.org/info/rfc9408>. | |||
| [RFC9568] Lindem, A. and A. Dogra, "Virtual Router Redundancy | [RFC9568] Lindem, A. and A. Dogra, "Virtual Router Redundancy | |||
| Protocol (VRRP) Version 3 for IPv4 and IPv6", RFC 9568, | Protocol (VRRP) Version 3 for IPv4 and IPv6", RFC 9568, | |||
| DOI 10.17487/RFC9568, April 2024, | DOI 10.17487/RFC9568, April 2024, | |||
| <https://www.rfc-editor.org/rfc/rfc9568>. | <https://www.rfc-editor.org/info/rfc9568>. | |||
| 9.2. Informative References | [RFC9833] Boucadair, M., Ed., Roberts, R., Ed., Gonzalez de Dios, | |||
| O., Barguil, S., and B. Wu, "A Common YANG Data Model for | ||||
| Attachment Circuits", RFC 9833, DOI 10.17487/RFC9833, | ||||
| September 2025, <https://www.rfc-editor.org/info/rfc9833>. | ||||
| [I-D.ietf-netmod-rfc8407bis] | [RFC9834] Boucadair, M., Ed., Roberts, R., Ed., Gonzalez de Dios, | |||
| Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | O., Barguil, S., and B. Wu, "YANG Data Models for Bearers | |||
| Authors and Reviewers of Documents Containing YANG Data | and Attachment Circuits as a Service (ACaaS)", RFC 9834, | |||
| Models", Work in Progress, Internet-Draft, draft-ietf- | DOI 10.17487/RFC9834, September 2025, | |||
| netmod-rfc8407bis-22, 14 January 2025, | <https://www.rfc-editor.org/info/rfc9834>. | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
| rfc8407bis-22>. | ||||
| [I-D.ietf-opsawg-ac-lxsm-lxnm-glue] | 9.2. Informative References | |||
| Boucadair, M., Roberts, R., Barguil, S., and O. G. de | ||||
| Dios, "A YANG Data Model for Augmenting VPN Service and | ||||
| Network Models with Attachment Circuits", Work in | ||||
| Progress, Internet-Draft, draft-ietf-opsawg-ac-lxsm-lxnm- | ||||
| glue-13, 9 January 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
| ac-lxsm-lxnm-glue-13>. | ||||
| [RFC3644] Snir, Y., Ramberg, Y., Strassner, J., Cohen, R., and B. | [RFC3644] Snir, Y., Ramberg, Y., Strassner, J., Cohen, R., and B. | |||
| Moore, "Policy Quality of Service (QoS) Information | Moore, "Policy Quality of Service (QoS) Information | |||
| Model", RFC 3644, DOI 10.17487/RFC3644, November 2003, | Model", RFC 3644, DOI 10.17487/RFC3644, November 2003, | |||
| <https://www.rfc-editor.org/rfc/rfc3644>. | <https://www.rfc-editor.org/info/rfc3644>. | |||
| [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
| Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | |||
| January 2006, <https://www.rfc-editor.org/rfc/rfc4252>. | January 2006, <https://www.rfc-editor.org/info/rfc4252>. | |||
| [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality | [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality | |||
| for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, | for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, | |||
| <https://www.rfc-editor.org/rfc/rfc4552>. | <https://www.rfc-editor.org/info/rfc4552>. | |||
| [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | |||
| Address Autoconfiguration", RFC 4862, | Address Autoconfiguration", RFC 4862, | |||
| DOI 10.17487/RFC4862, September 2007, | DOI 10.17487/RFC4862, September 2007, | |||
| <https://www.rfc-editor.org/rfc/rfc4862>. | <https://www.rfc-editor.org/info/rfc4862>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/rfc/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function | [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function | |||
| Chaining (SFC) Architecture", RFC 7665, | Chaining (SFC) Architecture", RFC 7665, | |||
| DOI 10.17487/RFC7665, October 2015, | DOI 10.17487/RFC7665, October 2015, | |||
| <https://www.rfc-editor.org/rfc/rfc7665>. | <https://www.rfc-editor.org/info/rfc7665>. | |||
| [RFC7880] Pignataro, C., Ward, D., Akiya, N., Bhatia, M., and S. | [RFC7880] Pignataro, C., Ward, D., Akiya, N., Bhatia, M., and S. | |||
| Pallagatti, "Seamless Bidirectional Forwarding Detection | Pallagatti, "Seamless Bidirectional Forwarding Detection | |||
| (S-BFD)", RFC 7880, DOI 10.17487/RFC7880, July 2016, | (S-BFD)", RFC 7880, DOI 10.17487/RFC7880, July 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc7880>. | <https://www.rfc-editor.org/info/rfc7880>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8299] Wu, Q., Ed., Litkowski, S., Tomotaki, L., and K. Ogaki, | [RFC8299] Wu, Q., Ed., Litkowski, S., Tomotaki, L., and K. Ogaki, | |||
| "YANG Data Model for L3VPN Service Delivery", RFC 8299, | "YANG Data Model for L3VPN Service Delivery", RFC 8299, | |||
| DOI 10.17487/RFC8299, January 2018, | DOI 10.17487/RFC8299, January 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8299>. | <https://www.rfc-editor.org/info/rfc8299>. | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| [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/rfc/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [RFC8466] Wen, B., Fioccola, G., Ed., Xie, C., and L. Jalil, "A YANG | [RFC8466] Wen, B., Fioccola, G., Ed., Xie, C., and L. Jalil, "A YANG | |||
| Data Model for Layer 2 Virtual Private Network (L2VPN) | Data Model for Layer 2 Virtual Private Network (L2VPN) | |||
| Service Delivery", RFC 8466, DOI 10.17487/RFC8466, October | Service Delivery", RFC 8466, DOI 10.17487/RFC8466, October | |||
| 2018, <https://www.rfc-editor.org/rfc/rfc8466>. | 2018, <https://www.rfc-editor.org/info/rfc8466>. | |||
| [RFC8695] Liu, X., Sarda, P., and V. Choudhary, "A YANG Data Model | [RFC8695] Liu, X., Sarda, P., and V. Choudhary, "A YANG Data Model | |||
| for the Routing Information Protocol (RIP)", RFC 8695, | for the Routing Information Protocol (RIP)", RFC 8695, | |||
| DOI 10.17487/RFC8695, February 2020, | DOI 10.17487/RFC8695, February 2020, | |||
| <https://www.rfc-editor.org/rfc/rfc8695>. | <https://www.rfc-editor.org/info/rfc8695>. | |||
| [RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and | [RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and | |||
| L. Geng, "A Framework for Automating Service and Network | L. Geng, "A Framework for Automating Service and Network | |||
| Management with YANG", RFC 8969, DOI 10.17487/RFC8969, | Management with YANG", RFC 8969, DOI 10.17487/RFC8969, | |||
| January 2021, <https://www.rfc-editor.org/rfc/rfc8969>. | January 2021, <https://www.rfc-editor.org/info/rfc8969>. | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/rfc/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [RFC9127] Rahman, R., Ed., Zheng, L., Ed., Jethanandani, M., Ed., | [RFC9127] Rahman, R., Ed., Zheng, L., Ed., Jethanandani, M., Ed., | |||
| Pallagatti, S., and G. Mirsky, "YANG Data Model for | Pallagatti, S., and G. Mirsky, "YANG Data Model for | |||
| Bidirectional Forwarding Detection (BFD)", RFC 9127, | Bidirectional Forwarding Detection (BFD)", RFC 9127, | |||
| DOI 10.17487/RFC9127, October 2021, | DOI 10.17487/RFC9127, October 2021, | |||
| <https://www.rfc-editor.org/rfc/rfc9127>. | <https://www.rfc-editor.org/info/rfc9127>. | |||
| [RFC9234] Azimov, A., Bogomazov, E., Bush, R., Patel, K., and K. | [RFC9234] Azimov, A., Bogomazov, E., Bush, R., Patel, K., and K. | |||
| Sriram, "Route Leak Prevention and Detection Using Roles | Sriram, "Route Leak Prevention and Detection Using Roles | |||
| in UPDATE and OPEN Messages", RFC 9234, | in UPDATE and OPEN Messages", RFC 9234, | |||
| DOI 10.17487/RFC9234, May 2022, | DOI 10.17487/RFC9234, May 2022, | |||
| <https://www.rfc-editor.org/rfc/rfc9234>. | <https://www.rfc-editor.org/info/rfc9234>. | |||
| [RFC9543] Farrel, A., Ed., Drake, J., Ed., Rokui, R., Homma, S., | [RFC9543] Farrel, A., Ed., Drake, J., Ed., Rokui, R., Homma, S., | |||
| Makhijani, K., Contreras, L., and J. Tantsura, "A | Makhijani, K., Contreras, L., and J. Tantsura, "A | |||
| Framework for Network Slices in Networks Built from IETF | Framework for Network Slices in Networks Built from IETF | |||
| Technologies", RFC 9543, DOI 10.17487/RFC9543, March 2024, | Technologies", RFC 9543, DOI 10.17487/RFC9543, March 2024, | |||
| <https://www.rfc-editor.org/rfc/rfc9543>. | <https://www.rfc-editor.org/info/rfc9543>. | |||
| [RFC9836] Boucadair, M., Ed., Roberts, R., Barguil, S., and O. | ||||
| Gonzalez de Dios, "A YANG Data Model for Augmenting VPN | ||||
| Service and Network Models with Attachment Circuits", | ||||
| RFC 9836, DOI 10.17487/RFC9836, September 2025, | ||||
| <https://www.rfc-editor.org/info/rfc9836>. | ||||
| [YANG-GUIDELINES] | ||||
| Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | ||||
| Authors and Reviewers of Documents Containing YANG Data | ||||
| Models", Work in Progress, Internet-Draft, draft-ietf- | ||||
| netmod-rfc8407bis-28, 5 June 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
| rfc8407bis-28>. | ||||
| Appendix A. Examples | Appendix A. Examples | |||
| A.1. VPLS | A.1. VPLS | |||
| Let us consider the example depicted in Figure 21 with two customer | Let us consider the example depicted in Figure 21 with two customer | |||
| terminating points (CE1 and CE2). Let us also assume that the | terminating points (CE1 and CE2). Let us also assume that the | |||
| bearers to attach these CEs to the provider network are already in | bearers to attach these CEs to the provider network are already in | |||
| place. References to the identify these bearers are shown in the | place. References to identify these bearers are shown in the figure. | |||
| figure. | ||||
| .-----. .--------------. .-----. | .-----. .--------------. .-----. | |||
| .---. | PE1 +===+ +===+ PE2 | .---. | .---. | PE1 +===+ +===+ PE2 | .---. | |||
| | CE1+------+"450"| | MPLS | |"451"+------+ CE2| | | CE1+------+"450"| | MPLS | |"451"+------+ CE2| | |||
| '---' ^ '-----' | | '-----' ^ '---' | '---' ^ '-----' | | '-----' ^ '---' | |||
| | | Core | | | | | Core | | | |||
| Bearer:1234 '--------------' Bearer:5678 | Bearer:1234 '--------------' Bearer:5678 | |||
| Figure 21: Topology Example | Figure 21: Topology Example | |||
| The AC service model [I-D.ietf-opsawg-teas-attachment-circuit] can be | The AC service model [RFC9834] can be used by the provider to manage | |||
| used by the provider to manage and expose the ACs over existing | and expose the ACs over existing bearers as shown in Figure 22. | |||
| bearers as shown in Figure 22. | ||||
| { | { | |||
| "ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
| "ac-group-profile": [ | "ac-group-profile": [ | |||
| { | { | |||
| "name": "an-ac-profile", | "name": "an-ac-profile", | |||
| "l2-connection": { | "l2-connection": { | |||
| "encapsulation": { | "encapsulation": { | |||
| "type": "ietf-vpn-common:dot1q", | "type": "ietf-vpn-common:dot1q", | |||
| "dot1q": { | "dot1q": { | |||
| skipping to change at page 105, line 7 ¶ | skipping to change at line 4840 ¶ | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 24: Example of AC Network Response to Retrieve the SAP | Figure 24: Example of AC Network Response to Retrieve the SAP | |||
| (Message Body) | (Message Body) | |||
| A.2. Parent AC | A.2. Parent AC | |||
| In reference to the topology depicted in Figure 1, PE2 has a SAP | In reference to the topology depicted in Figure 1, PE2 has a SAP that | |||
| which terminates an AC with two peer SAPs (CE2 and CE5). In order to | terminates an AC with two peer SAPs (CE2 and CE5). In order to | |||
| control data that is specific to each of these peer SAPs over the | control data that is specific to each of these peer SAPs over the | |||
| same AC, child ACs can be instantiated as depicted in Figure 25. | same AC, Child ACs can be instantiated as depicted in Figure 25. | |||
| { | { | |||
| "ietf-ac-ntw:ac":[ | "ietf-ac-ntw:ac":[ | |||
| { | { | |||
| "name":"ac-1", | "name":"ac-1", | |||
| "peer-sap-id":[ | "peer-sap-id":[ | |||
| "CE2", | "CE2", | |||
| "CE5" | "CE5" | |||
| ], | ], | |||
| "status":{ | "status":{ | |||
| skipping to change at page 106, line 17 ¶ | skipping to change at line 4899 ¶ | |||
| }, | }, | |||
| "peer-sap-id":[ | "peer-sap-id":[ | |||
| "CE5" | "CE5" | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 25: Example of Child ACs | Figure 25: Example of Child ACs | |||
| Figure 26 shows how to bind the parent AC to a SAP. | Figure 26 shows how to bind the Parent AC to a SAP. | |||
| { | { | |||
| "ietf-sap-ntw:service":[ | "ietf-sap-ntw:service":[ | |||
| { | { | |||
| "service-type":"ietf-vpn-common:l3vpn", | "service-type":"ietf-vpn-common:l3vpn", | |||
| "sap":[ | "sap":[ | |||
| { | { | |||
| "sap-id":"sap#14587", | "sap-id":"sap#14587", | |||
| "description":"A SAP", | "description":"A SAP", | |||
| "parent-termination-point":"GE0/6/4", | "parent-termination-point":"GE0/6/4", | |||
| skipping to change at page 106, line 47 ¶ | skipping to change at line 4929 ¶ | |||
| "node-ref":"example:pe2", | "node-ref":"example:pe2", | |||
| "network-ref":"example:an-id" | "network-ref":"example:an-id" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 26: Example of Binding Parent AC to SAPs | Figure 26: Example of Binding Parent ACs to SAPs | |||
| Appendix B. Full Tree | Appendix B. Full Tree | |||
| module: ietf-ac-ntw | module: ietf-ac-ntw | |||
| augment /nw:networks/nw:network: | augment /nw:networks/nw:network: | |||
| +--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| | +--rw valid-provider-identifiers | | +--rw valid-provider-identifiers | |||
| | +--rw encryption-profile-identifier* [id] | | +--rw encryption-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw qos-profile-identifier* [id] | | +--rw qos-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw failure-detection-profile-identifier* [id] | | +--rw failure-detection-profile-identifier* [id] | |||
| skipping to change at page 120, line 5 ¶ | skipping to change at line 5556 ¶ | |||
| +--rw ac-ref leafref | +--rw ac-ref leafref | |||
| +--rw node-ref? leafref | +--rw node-ref? leafref | |||
| +--rw network-ref? -> /nw:networks/network/network-id | +--rw network-ref? -> /nw:networks/network/network-id | |||
| Acknowledgments | Acknowledgments | |||
| This document builds on [RFC9182] and [RFC9291]. | This document builds on [RFC9182] and [RFC9291]. | |||
| Thanks to Moti Morgenstern for the review and comments. | Thanks to Moti Morgenstern for the review and comments. | |||
| Thanks to Martin Björklund for the yangdoctors review, Gyan Mishra | Thanks to Martin Björklund for the YANG Doctors review, Gyan Mishra | |||
| for an early rtg-dir review, Joel Halpern for the rtg-dir review, | for an early RTGDIR review, Joel Halpern for the RTGDIR review, | |||
| Giuseppe Fioccola for the ops-dir review, and Russ Housley for the | Giuseppe Fioccola for the OPSDIR review, and Russ Housley for the | |||
| sec-dir review. | SECDIR review. | |||
| Thanks to Krzysztof Szarkowicz for the Shepherd review. | Thanks to Krzysztof Szarkowicz for the shepherd review. | |||
| Thanks for Mahesh Jethanandani for the AD review. | Thanks for Mahesh Jethanandani for the AD review. | |||
| Contributors | Contributors | |||
| Victor Lopez | Victor Lopez | |||
| Nokia | Nokia | |||
| Email: victor.lopez@nokia.com | Email: victor.lopez@nokia.com | |||
| Ivan Bykov | Ivan Bykov | |||
| skipping to change at page 121, line 4 ¶ | skipping to change at line 5596 ¶ | |||
| Authors' Addresses | Authors' Addresses | |||
| Mohamed Boucadair (editor) | Mohamed Boucadair (editor) | |||
| Orange | Orange | |||
| Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
| Richard Roberts | Richard Roberts | |||
| Juniper | Juniper | |||
| Email: rroberts@juniper.net | Email: rroberts@juniper.net | |||
| Oscar Gonzalez de Dios | Oscar Gonzalez de Dios | |||
| Telefonica | Telefonica | |||
| Email: oscar.gonzalezdedios@telefonica.com | Email: oscar.gonzalezdedios@telefonica.com | |||
| Samier Barguil Giraldo | Samier Barguil | |||
| Nokia | Nokia | |||
| Email: samier.barguil_giraldo@nokia.com | Email: samier.barguil_giraldo@nokia.com | |||
| Bo Wu | Bo Wu | |||
| Huawei Technologies | Huawei Technologies | |||
| Email: lana.wubo@huawei.com | Email: lana.wubo@huawei.com | |||
| End of changes. 233 change blocks. | ||||
| 610 lines changed or deleted | 547 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||