rfc9834.original | rfc9834.txt | |||
---|---|---|---|---|
OPSAWG M. Boucadair, Ed. | Internet Engineering Task Force (IETF) M. Boucadair, Ed. | |||
Internet-Draft Orange | Request for Comments: 9834 Orange | |||
Intended status: Standards Track R. Roberts, Ed. | Category: Standards Track R. Roberts, Ed. | |||
Expires: 27 July 2025 Juniper | ISSN: 2070-1721 Juniper | |||
O. G. D. Dios | O. Gonzalez de Dios | |||
Telefonica | Telefonica | |||
S. B. Giraldo | S. Barguil Giraldo | |||
Nokia | Nokia | |||
B. Wu | B. Wu | |||
Huawei Technologies | Huawei Technologies | |||
23 January 2025 | August 2025 | |||
YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service | YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service | |||
(ACaaS) | (ACaaS) | |||
draft-ietf-opsawg-teas-attachment-circuit-20 | ||||
Abstract | Abstract | |||
Delivery of network services assumes that appropriate setup is | Delivery of network services assumes that appropriate setup is | |||
provisioned over the links that connect customer termination points | provisioned over the links that connect customer termination points | |||
and a provider network. The required setup to allow successful data | and a provider network. The required setup to allow successful data | |||
exchange over these links is referred to as an attachment circuit | exchange over these links is referred to as an attachment circuit | |||
(AC), while the underlying link is referred to as "bearer". | (AC), while the underlying link is referred to as a "bearer". | |||
This document specifies a YANG service data model for ACs. This | This document specifies a YANG service data model for ACs. This | |||
model can be used for the provisioning of ACs before or during | model can be used for the provisioning of ACs before or during | |||
service provisioning (e.g., Network Slice Service). | service provisioning (e.g., Network Slice Service). | |||
The document also specifies a YANG service model for managing bearers | The document also specifies a YANG service data model for managing | |||
over which ACs are established. | bearers over which ACs are established. | |||
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/rfc9834. | ||||
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. Scope and Intended Use . . . . . . . . . . . . . . . . . 3 | 1.1. Scope and Intended Use | |||
1.2. Positioning ACaaS vs. Other Data Models . . . . . . . . . 7 | 1.2. Positioning ACaaS vs. Other Data Models | |||
1.2.1. Why Not Use the L2SM as Reference Data Model for | 1.2.1. Why Not Use the L2SM as a Reference Data Model for | |||
ACaaS? . . . . . . . . . . . . . . . . . . . . . . . 7 | ACaaS? | |||
1.2.2. Why Not Use the L3SM as Reference Data Model for | 1.2.2. Why Not Use the L3SM as a Reference Data Model for | |||
ACaaS? . . . . . . . . . . . . . . . . . . . . . . . 7 | ACaaS? | |||
1.3. Editorial Note (To be removed by RFC Editor) . . . . . . 8 | 2. Conventions and Definitions | |||
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 8 | 3. Relationship to Other AC Data Models | |||
3. Relationship to Other AC Data Models . . . . . . . . . . . . 10 | 4. Sample Uses of the Data Models | |||
4. Sample Uses of the Data Models . . . . . . . . . . . . . . . 11 | 4.1. ACs Terminated by One or Multiple Customer Edges (CEs) | |||
4.1. ACs Terminated by One or Multiple Customer Edges (CEs) . 11 | 4.2. Separate AC Provisioning vs. Actual Service Provisioning | |||
4.2. Separate AC Provisioning vs. Actual Service | 4.3. Sample Deployment Models | |||
Provisioning . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Description of the Data Models | |||
4.3. Sample Deployment Models . . . . . . . . . . . . . . . . 13 | 5.1. The Bearer Service ("ietf-bearer-svc") YANG Module | |||
5. Description of the Data Models . . . . . . . . . . . . . . . 16 | 5.2. The Attachment Circuit Service ("ietf-ac-svc") YANG Module | |||
5.1. The Bearer Service ("ietf-bearer-svc") YANG Module . . . 16 | 5.2.1. Overall Structure | |||
5.2. The Attachment Circuit Service ("ietf-ac-svc") YANG | 5.2.2. Service Profiles | |||
Module . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.2.3. Attachment Circuits Profiles | |||
5.2.1. Overall Structure . . . . . . . . . . . . . . . . . . 21 | 5.2.4. AC Placement Constraints | |||
5.2.2. Service Profiles . . . . . . . . . . . . . . . . . . 23 | 5.2.5. Attachment Circuits | |||
5.2.3. Attachment Circuits Profiles . . . . . . . . . . . . 25 | 6. YANG Modules | |||
5.2.4. AC Placement Contraints . . . . . . . . . . . . . . . 25 | 6.1. The Bearer Service ("ietf-bearer-svc") YANG Module | |||
5.2.5. Attachment Circuits . . . . . . . . . . . . . . . . . 26 | 6.2. The AC Service ("ietf-ac-svc") YANG Module | |||
6. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 52 | 7. Security Considerations | |||
6.1. The Bearer Service ("ietf-bearer-svc") YANG Module . . . 52 | 8. IANA Considerations | |||
6.2. The AC Service ("ietf-ac-svc") YANG Module . . . . . . . 62 | 9. References | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 88 | 9.1. Normative References | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 90 | 9.2. Informative References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 91 | Appendix A. Examples | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 91 | A.1. Create a New Bearer | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 93 | A.2. Create an AC over an Existing Bearer | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 97 | A.3. Create an AC for a Known Peer SAP | |||
A.1. Create a New Bearer . . . . . . . . . . . . . . . . . . . 98 | A.4. One CE, Two ACs | |||
A.2. Create an AC over an Existing Bearer . . . . . . . . . . 99 | A.5. Control Precedence over Multiple ACs | |||
A.3. Create an AC for a Known Peer SAP . . . . . . . . . . . . 100 | A.6. Create Multiple ACs Bound to Multiple CEs | |||
A.4. One CE, Two ACs . . . . . . . . . . . . . . . . . . . . . 102 | A.7. Binding Attachment Circuits to an IETF Network Slice | |||
A.5. Control Precedence over Multiple ACs . . . . . . . . . . 108 | ||||
A.6. Create Multiple ACs Bound to Multiple CEs . . . . . . . . 110 | ||||
A.7. Binding Attachment Circuits to an IETF Network Slice . . 111 | ||||
A.8. Connecting a Virtualized Environment Running in a Cloud | A.8. Connecting a Virtualized Environment Running in a Cloud | |||
Provider . . . . . . . . . . . . . . . . . . . . . . . . 118 | Provider | |||
A.9. Connect Customer Network Through BGP . . . . . . . . . . 124 | A.9. Connect Customer Network Through BGP | |||
A.10. Interconnection via Internet eXchange Points (IXPs) . . . 127 | A.10. Interconnection via Internet Exchange Points (IXPs) | |||
A.10.1. Retrieve Interconnection Locations . . . . . . . . . 128 | A.10.1. Retrieve Interconnection Locations | |||
A.10.2. Create Bearers and Retrieve Bearer References . . . 129 | A.10.2. Create Bearers and Retrieve Bearer References | |||
A.10.3. Manage ACs and BGP Sessions . . . . . . . . . . . . 130 | A.10.3. Manage ACs and BGP Sessions | |||
A.11. Connectivity of Cloud Network Functions . . . . . . . . . 138 | A.11. Connectivity of Cloud Network Functions | |||
A.11.1. Scope . . . . . . . . . . . . . . . . . . . . . . . 138 | A.11.1. Scope | |||
A.11.2. Physical Infrastructure . . . . . . . . . . . . . . 139 | A.11.2. Physical Infrastructure | |||
A.11.3. NFs Deployment . . . . . . . . . . . . . . . . . . . 140 | A.11.3. NFs Deployment | |||
A.11.4. NF Failure and Scale-Out . . . . . . . . . . . . . . 148 | A.11.4. NF Failure and Scale-Out | |||
A.12. BFD and Static Addressing . . . . . . . . . . . . . . . . 149 | A.12. BFD and Static Addressing | |||
Appendix B. Full Tree . . . . . . . . . . . . . . . . . . . . . 152 | Appendix B. Full Tree | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 169 | Acknowledgments | |||
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 170 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 170 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
1.1. Scope and Intended Use | 1.1. Scope and Intended Use | |||
Connectivity services are provided by networks to customers via | Connectivity services are provided by networks to customers via | |||
dedicated termination points, such as Service Functions (SFs) | dedicated termination points, such as Service Functions (SFs) | |||
[RFC7665], Customer Edges (CEs), peer Autonomous System Border | [RFC7665], Customer Edges (CEs), peer Autonomous System Border | |||
Routers (ASBRs), data centers gateways, or Internet Exchange Points. | Routers (ASBRs), data centers gateways, or Internet Exchange Points | |||
A connectivity service is basically about ensuring data transfer | (IXPs). A connectivity service is basically about ensuring data | |||
received from or destined to a given termination point to or from | transfer received from or destined to a given termination point to or | |||
other termination points. The objectives for the connectivity | from other termination points. The objectives for the connectivity | |||
service can be negotiated and agreed upon between the customer and | service can be negotiated and agreed upon between the customer and | |||
the network provider. To facilitate data transfer within the | the network provider. To facilitate data transfer within the | |||
provider network, it is assumed that the appropriate setup is | provider network, it is assumed that the appropriate setup is | |||
provisioned over the links that connect customer termination points | provisioned over the links that connect customer termination points | |||
and a provider network (usually via a Provider Edge (PE)), allowing | and a provider network (usually via a Provider Edge (PE)), allowing | |||
successfully data exchanged over these links. The required setup is | data to be successfully exchanged over these links. The required | |||
referred to in this document as an attachment circuit (AC), while the | setup is referred to in this document as an attachment circuit (AC), | |||
underlying link is referred to as "bearer". | while the underlying link is referred to as a "bearer". | |||
When a customer requests a new service, the service can be bound to | When a customer requests a new service, the service can be bound to | |||
existing attachment circuits or trigger the instantiation of new | existing attachment circuits or trigger the instantiation of new | |||
attachment circuits. The provisioning of a service should, thus, | attachment circuits. The provisioning of a service should, thus, | |||
accommodate both deployments. | accommodate both deployments. | |||
Also, because the instantiation of an attachment circuit requires | Also, because the instantiation of an attachment circuit requires | |||
coordinating the provisioning of endpoints that might not belong to | coordinating the provisioning of endpoints that might not belong to | |||
the same administrative entity (customer vs. provider or distinct | the same administrative entity (customer vs. provider or distinct | |||
operational teams within the same provider, etc.), providing | operational teams within the same provider, etc.), providing | |||
skipping to change at page 5, line 14 ¶ | skipping to change at line 173 ¶ | |||
The "ietf-ac-svc" module (Section 6.2) includes a set of reusable | The "ietf-ac-svc" module (Section 6.2) includes a set of reusable | |||
groupings. Whether a service model that wants to describe the | groupings. Whether a service model that wants to describe the | |||
attachment circuits associated with the service reuses structures | attachment circuits associated with the service reuses structures | |||
defined in the "ietf-ac-svc" or simply includes an AC reference (that | defined in the "ietf-ac-svc" or simply includes an AC reference (that | |||
was communicated during AC service instantiation) is a design choice | was communicated during AC service instantiation) is a design choice | |||
of these service models. Relying upon the AC service model to manage | of these service models. Relying upon the AC service model to manage | |||
ACs over which services are delivered has the merit of decorrelating | ACs over which services are delivered has the merit of decorrelating | |||
the management of the (core) service from the ACs. This allows | the management of the (core) service from the ACs. This allows | |||
upgrades (to reflect recent AC technologies or new features such as | upgrades (to reflect recent AC technologies or new features such as | |||
new encryption schemes, or additional routing protocols) to be done | new encryption schemes or additional routing protocols) to be done in | |||
in just one place rather than in each (core) service model. This | just one place rather than in each (core) service model. This | |||
document favors the approach of completely relying upon the AC | document favors the approach of completely relying upon the AC | |||
service model instead of duplicating data nodes into specific modules | service model instead of duplicating data nodes into specific modules | |||
of advanced services that are delivered over an attachment circuit. | of advanced services that are delivered over an attachment circuit. | |||
Since the provisioning of an AC requires a bearer to be in place, | Since the provisioning of an AC requires a bearer to be in place, | |||
this document introduces a new module called "ietf-bearer-svc" that | this document introduces a new module called "ietf-bearer-svc", which | |||
enables customers to manage their bearers (Section 6.1). The | enables customers to manage their bearers (Section 6.1). The | |||
customers can then retrieve a provider-assigned bearer reference that | customers can then retrieve a provider-assigned bearer reference that | |||
they will include in their AC service requests. Likewise, a customer | they will include in their AC service requests. Likewise, a customer | |||
may retrieve whether their bearers support a synchronization | may retrieve whether their bearers support a synchronization | |||
mechanism such as Sync Ethernet (SyncE) [ITU-T-G.781]. An example of | mechanism such as Sync Ethernet (SyncE) [ITU-T-G.781]. An example of | |||
retrieving a bearer reference is provided in Appendix A.1. | retrieving a bearer reference is provided in Appendix A.1. | |||
An AC service request can provide a reference to a bearer or a set of | An AC service request can provide a reference to a bearer or a set of | |||
peer Service Attachment Points (SAPs) specified in "A YANG Network | peer Service Attachment Points (SAPs) specified in "A YANG Network | |||
Data Model for Service Attachment Points (SAPs)" [RFC9408]. Both | Data Model for Service Attachment Points (SAPs)" [RFC9408]. Both | |||
skipping to change at page 5, line 46 ¶ | skipping to change at line 205 ¶ | |||
Each AC is identified with a unique identifier within a provider | Each AC is identified with a unique identifier within a provider | |||
domain. From a network provider standpoint, an AC can be bound to a | domain. From a network provider standpoint, an AC can be bound to a | |||
single or multiple SAPs [RFC9408]. Likewise, the same SAP can be | single or multiple SAPs [RFC9408]. Likewise, the same SAP can be | |||
bound to one or multiple ACs. However, the mapping between an AC and | bound to one or multiple ACs. However, the mapping between an AC and | |||
a PE in the provider network that terminates that AC is hidden to the | a PE in the provider network that terminates that AC is hidden to the | |||
application that makes use of the AC service model. Such mapping | application that makes use of the AC service model. Such mapping | |||
information is internal to the network controllers. As such, the | information is internal to the network controllers. As such, the | |||
details about the (node-specific) attachment interfaces are not | details about the (node-specific) attachment interfaces are not | |||
exposed in the AC service model. However, these details are exposed | exposed in the AC service model. However, these details are exposed | |||
at the network model per "A Network YANG Data Model for Attachment | at the network model per "A Network YANG Data Model for Attachment | |||
Circuits" specification [I-D.ietf-opsawg-ntw-attachment-circuit]. "A | Circuits" [RFC9835]. "A YANG Data Model for Augmenting VPN Service | |||
YANG Data Model for Augmenting VPN Service and Network Models with | and Network Models with Attachment Circuits" [RFC9836] specifies | |||
Attachment Circuits" [I-D.ietf-opsawg-ac-lxsm-lxnm-glue] specifies | ||||
augmentations to the L2VPN Service Model (L2SM) [RFC8466] and the | augmentations to the L2VPN Service Model (L2SM) [RFC8466] and the | |||
L3VPN Service Model (L3SM) [RFC8299] to bind LxVPN services to ACs. | L3VPN Service Model (L3SM) [RFC8299] to bind LxVPN services to ACs. | |||
The AC service model does not make any assumptions about the internal | The AC service model does not make any assumptions about the internal | |||
structure or even the nature of the services that will be delivered | structure or even the nature of the services that will be delivered | |||
over an attachment circuit or a set of attachment circuits. | over an attachment circuit or a set of attachment circuits. | |||
Customers do not have access to that network view other than the ACs | Customers do not have access to that network view other than the ACs | |||
that they ordered. For example, the AC service model can be used to | that they ordered. For example, the AC service model can be used to | |||
provision a set of ACs to connect multiple sites (Site1, Site2, ..., | provision a set of ACs to connect multiple sites (Site1, Site2, ..., | |||
SiteX) for customer who also requested VPN services. If the | SiteX) for a customer who also requested VPN services. If the | |||
provisioning of these services requires specific configuration on | provisioning of these services requires specific configuration on | |||
ASBR nodes, such configuration is handled at the network level and is | ASBR nodes, such configuration is handled at the network level and is | |||
not exposed to the customer at the service level. However, the | not exposed to the customer at the service level. However, the | |||
network controller will have access to such a view as the service | network controller will have access to such a view, as the service | |||
points in these ASBRs will be exposed as SAPs with 'role' set to | points in these ASBRs will be exposed as SAPs with 'role' set to | |||
'ietf-sap-ntw:nni' [RFC9408]. | 'ietf-sap-ntw:nni' [RFC9408]. | |||
The AC service model can be used in a variety of contexts, such as | The AC service model can be used in a variety of contexts, such as | |||
(but not limited to) those provided in Appendix A: | (but not limited to) those provided in Appendix A: | |||
* Create an AC over an existing bearer Appendix A.2. | * Create an AC over an existing bearer (Appendix A.2). | |||
* Request an attachment circuit for a known peer SAP (Appendix A.3). | * Request an attachment circuit for a known peer SAP (Appendix A.3). | |||
* Instantiate multiple attachment circuits over the same bearer | * Instantiate multiple attachment circuits over the same bearer | |||
(Appendix A.4). | (Appendix A.4). | |||
* Control the precedence over multiple attachment circuits | * Control the precedence over multiple attachment circuits | |||
(Appendix A.5). | (Appendix A.5). | |||
* Create Multiple ACs bound to Multiple CEs (Appendix A.6). | * Create multiple ACs bound to multiple CEs (Appendix A.6). | |||
* Bind a slice service to a set of pre-provisioned attachment | * Bind a Slice Service to a set of pre-provisioned attachment | |||
circuits (Appendix A.7). | circuits (Appendix A.7). | |||
* Connect an enterprise network to a provider network using BGP | * Connect an enterprise network to a provider network using BGP | |||
(Appendix A.9). | (Appendix A.9). | |||
* Connect a Cloud Infrastructure to a service provider network | * Connect a Cloud Infrastructure to a service provider network | |||
(Appendix A.8). | (Appendix A.8). | |||
* Interconnect provider networks (e.g., [RFC8921] or | * Interconnect provider networks (e.g., [RFC8921] or [PEERING-API]). | |||
[I-D.ietf-grow-peering-api]). Such ACs are identified with a | Such ACs are identified with a 'role' set to 'ac-common:nni' or | |||
'role' set to 'ac-common:nni' or 'ac-common:public-nni'. See | 'ac-common:public-nni'. See Appendix A.10 to illustrate the use | |||
Appendix A.10 to illustrate the use of the AC model for | of the AC model for interconnection/peering. | |||
interconnection/peering. | ||||
* Manage connectivity for complex containerized or virtualized | * Manage connectivity for complex containerized or virtualized | |||
functions in the cloud (Appendix A.11). | functions in the cloud (Appendix A.11). | |||
* Manage AC redundancy with static addressing (Appendix A.12). | * Manage AC redundancy with static addressing (Appendix A.12). | |||
The document adheres to the principles discussed in "Service Models | The document adheres to the principles discussed in "Service Models | |||
Explained" (Section 3 of [RFC8309]) for the encoding and | Explained" (Section 3 of [RFC8309]) for the encoding and | |||
communication protocols used for the interaction between a customer | communication protocols used for the interaction between a customer | |||
and a provider. Also, consistent with "A Framework for Automating | and a provider. Also, consistent with "A Framework for Automating | |||
Service and Network Management with YANG" [RFC8969], the service | Service and Network Management with YANG" [RFC8969], the service | |||
models defined in the document can be used independently of NETCONF/ | models defined in the document can be used independently of the | |||
RESTCONF. | Network Configuration Protocol (NETCONF) / RESTCONF. | |||
The YANG data models in this document conform to the Network | The YANG data models in this document conform to the Network | |||
Management Datastore Architecture (NMDA) defined in [RFC8342]. | Management Datastore Architecture (NMDA) defined in [RFC8342]. | |||
1.2. Positioning ACaaS vs. Other Data Models | 1.2. Positioning ACaaS vs. Other Data Models | |||
The AC model specified in this document is not a network model | The AC model specified in this document is not a network model | |||
[RFC8969]. As such, the model does not expose details related to | [RFC8969]. As such, the model does not expose details related to | |||
specific nodes in the provider's network that terminate an AC (e.g., | specific nodes in the provider's network that terminate an AC (e.g., | |||
network node identifiers). The mapping between an AC as seen by a | network node identifiers). The mapping between an AC as seen by a | |||
customer and the network implementation of an AC is maintained by the | customer and the network implementation of an AC is maintained by the | |||
network controllers and is not exposed to the customer. This mapping | network controllers and is not exposed to the customer. This mapping | |||
can be maintained using a variety of network models, such as | can be maintained using a variety of network models, such as an | |||
augmented SAP AC network model | augmented SAP AC network model [RFC9835]. | |||
[I-D.ietf-opsawg-ntw-attachment-circuit]. | ||||
The AC service model is not a device model. A network provider may | The AC service model is not a device model. A network provider may | |||
use a variety of device models (e.g., "A YANG Data Model for Routing | use a variety of device models (e.g., "A YANG Data Model for Routing | |||
Management (NMDA Version)" [RFC8349] or "YANG Model for Border | Management (NMDA Version)" [RFC8349] or "YANG Model for Border | |||
Gateway Protocol (BGP-4)" [I-D.ietf-idr-bgp-model]) to provision an | Gateway Protocol (BGP-4)" [BGP4-YANG]) to provision an AC service in | |||
AC service in relevant network nodes. | relevant network nodes. | |||
The AC service model reuses common types and structures defined in "A | The AC service model reuses common types and structures defined in "A | |||
Common YANG Data Model for Layer 2 and Layer 3 VPNs" [RFC9181]. | Common YANG Data Model for Layer 2 and Layer 3 VPNs" [RFC9181]. | |||
1.2.1. Why Not Use the L2SM as Reference Data Model for ACaaS? | 1.2.1. Why Not Use the L2SM as a Reference Data Model for ACaaS? | |||
The L2VPN Service Model (L2SM) [RFC8466] covers some AC-related | The L2VPN Service Model (L2SM) [RFC8466] covers some AC-related | |||
considerations. Nevertheless, the L2SM structure is primarily | considerations. Nevertheless, the L2SM structure is primarily | |||
focused on Layer 2 aspects. For example, the L2SM does not cover | focused on Layer 2 aspects. For example, the L2SM does not cover | |||
Layer 3 provisioning, which is required for the typical AC | Layer 3 provisioning, which is required for the typical AC | |||
instantiation. | instantiation. | |||
1.2.2. Why Not Use the L3SM as Reference Data Model for ACaaS? | 1.2.2. Why Not Use the L3SM as a Reference Data Model for ACaaS? | |||
Like the L2SM, the L3VPN Service Model (L3SM) [RFC8299] addresses | Like the L2SM, the L3VPN Service Model (L3SM) [RFC8299] addresses | |||
certain AC-related aspects. However, the L3SM structure does not | certain AC-related aspects. However, the L3SM structure does not | |||
sufficiently address Layer 2 provisioning requirements. | sufficiently address Layer 2 provisioning requirements. | |||
Additionally, the L3SM is primarily designed for conventional L3VPN | Additionally, the L3SM is primarily designed for conventional L3VPN | |||
deployments and, as such, has some limitations for instantiating ACs | deployments and, as such, has some limitations for instantiating ACs | |||
in other deployment contexts (e.g., cloud environments). For | in other deployment contexts (e.g., cloud environments). For | |||
example, the L3SM does not provide the capability to provision | example, the L3SM does not provide the capability to provision | |||
multiple BGP peer groups over the same AC. | multiple BGP peer groups over the same AC. | |||
1.3. 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] | ||||
* 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 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 | |||
"YANG Tree Diagrams" [RFC8340]. | "YANG Tree Diagrams" [RFC8340]. | |||
LxSM refers to both the L2SM and the L3SM. | LxSM refers to both the L2SM and the L3SM. | |||
LxNM refers to both the L2NM and the L3NM. | LxNM refers to both the L2VPN Network Model (L2NM) and the L3VPN | |||
Network Model (L3NM). | ||||
LxVPN refers to both L2VPN and L3VPN. | LxVPN refers to both Layer 2 VPN (L2VPN) and Layer 3 VPN (L3VPN). | |||
This document uses the following terms: | 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. A bearer can be a wireless or wired | site) to a provider network. | |||
link. One or multiple technologies can be used to build a bearer | ||||
(e.g., Link Aggregation Group (LAG) [IEEE802.1AX]). The bearer | A bearer can be a wireless or wired link. One or multiple | |||
type can be specified by a customer. | technologies can be used to build a bearer (e.g., Link Aggregation | |||
Group (LAG) [IEEE802.1AX]). The bearer type can 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 used in subsequent | a reference can be retrieved by a customer and used in subsequent | |||
service placement requests to unambiguously identify where a | service placement requests to unambiguously identify where a | |||
service is to be bound. | 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 | |||
circuit. One or multiple attachment circuits may be hosted over | attachment circuit. | |||
the same bearer (e.g., multiple VLANs on the same bearer that is | ||||
provided by a physical link). | One or multiple attachment circuits may be hosted over the same | |||
bearer (e.g., multiple VLANs on the same bearer that is provided | ||||
by a physical link). | ||||
Customer Edge (CE): Equipment that is dedicated to a customer and is | Customer Edge (CE): Equipment that is dedicated to a customer and is | |||
connected to one or more PEs via ACs. | connected to one or more PEs via ACs. | |||
A CE can be a router, a bridge, a switch, etc. | A CE can be a router, a bridge, a switch, etc. | |||
Provider Edge (PE): Equipment owned and managed by the service | Provider Edge (PE): Equipment owned and managed by the service | |||
provider that can support multiple services for different | provider that can support multiple services for different | |||
customers. | customers. | |||
skipping to change at page 9, line 37 ¶ | skipping to change at line 372 ¶ | |||
needed to interface with the customer. | needed to interface with the customer. | |||
A PE is connected to one or more CEs via ACs. | A PE is connected to one or more CEs via ACs. | |||
Network controller: Denotes a functional entity responsible for the | Network controller: Denotes a functional entity responsible for the | |||
management of the service provider network. | management of the service provider network. | |||
Network Function (NF): Used to refer to the same concept as Service | Network Function (NF): Used to refer to the same concept as Service | |||
Function (SF) (Section 1.4 of [RFC7665]). | Function (SF) (Section 1.4 of [RFC7665]). | |||
NF is also used in this document as this term is widely used | NF is also used in this document, as this term is widely used | |||
outside the IETF. | outside the IETF. | |||
NF and SF are used interchangeably. | NF and SF are used interchangeably. | |||
Parent Bearer: Refers to a bearer (e.g., LAG) that is used to build | Parent Bearer: Refers to a bearer (e.g., LAG) that is used to build | |||
other bearers. These bearers (called, child bearers) inherit the | other bearers. These bearers (called child bearers) inherit the | |||
parent bearer properties. | parent bearer properties. | |||
Parent AC: Refers to an AC that is used to build other ACs. These | Parent AC: Refers to an AC that is used to build other ACs. These | |||
ACs (called, child ACs) inherit th parent AC properties. | ACs (called child ACs) inherit the parent AC properties. | |||
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. The service orchestrator | with the customer of a network service. | |||
is typically responsible for the attachment circuits, the PE | ||||
selection, and requesting the activation of the requested service | A service orchestrator is typically responsible for the attachment | |||
to a network controller. | circuits, the PE selection, and requesting the activation of the | |||
requested service to a network controller. | ||||
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., Layer 2 VPN, Layer 3 VPN, or Network Slice | services (e.g., Layer 2 VPN (L2VPN), Layer 3 VPN (L3VPN), or | |||
Services). | Network Slice Services). | |||
Service provider: An entity that offers network services (e.g., | Service provider: An entity that offers network services (e.g., | |||
Layer 2 VPN, Layer 3 VPN, or Network Slice Services). | Layer 2 VPN, Layer 3 VPN, or 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 | | |||
+============+==================+========================+ | +============+==================+========================+ | |||
skipping to change at page 10, line 37 ¶ | skipping to change at line 419 ¶ | |||
+------------+------------------+------------------------+ | +------------+------------------+------------------------+ | |||
| 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 1 depicts the relationship between the various AC data models: | Figure 1 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 6.1) | * "ietf-bearer-svc" (Section 6.1) | |||
* "ietf-ac-svc" (Section 6.2) | * "ietf-ac-svc" (Section 6.2) | |||
* "ietf-ac-ntw" ([I-D.ietf-opsawg-ntw-attachment-circuit]) | * "ietf-ac-ntw" [RFC9835] | |||
* "ietf-ac-glue" [RFC9836] | ||||
* "ietf-ac-glue" ([I-D.ietf-opsawg-ac-lxsm-lxnm-glue]) | ||||
ietf-ac-common | ietf-ac-common | |||
^ ^ ^ | ^ ^ ^ | |||
| | | | | | | | |||
.----------' | '----------. | .----------' | '----------. | |||
| | | | | | | | |||
| | | | | | | | |||
ietf-ac-svc <--- ietf-bearer-svc | | ietf-ac-svc <--- ietf-bearer-svc | | |||
^ ^ | | ^ ^ | | |||
| | | | | | | | |||
| '------------------------ ietf-ac-ntw | | '------------------------ ietf-ac-ntw | |||
skipping to change at page 11, line 45 ¶ | skipping to change at line 470 ¶ | |||
4. Sample Uses of the Data Models | 4. Sample Uses of the Data Models | |||
4.1. ACs Terminated by One or Multiple Customer Edges (CEs) | 4.1. ACs Terminated by One or Multiple Customer Edges (CEs) | |||
Figure 2 depicts two target topology flavors that involve ACs. These | Figure 2 depicts two target topology flavors that involve ACs. These | |||
topologies have the following characteristics: | topologies have the following characteristics: | |||
* 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 | |||
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. | peer SAP. | |||
* An AC service request may include one or multiple ACs, which may | * An AC service request may include one or multiple ACs, which may | |||
be associated to a single CE or multiple CEs. | be associated to a single CE or multiple CEs. | |||
* 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 SFs | host multiple connectivity services (e.g., CEs with roles of SFs | |||
[RFC7665]). | [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., CE#1 and CE#2 are tagged as peer SAPs for the same | SAPs (e.g., CE1 and CE2 are tagged as peer SAPs for the same AC). | |||
AC). For example, and as discussed in [RFC4364], multiple CEs can | For example, and as discussed in [RFC4364], multiple CEs can be | |||
be attached to a PE over the same attachment circuit. This | attached to a PE over the same attachment circuit. This scenario | |||
scenario is typically implemented when the Layer 2 infrastructure | is typically implemented when the Layer 2 infrastructure between | |||
between the CE and the network is a multipoint service. | the CE and the 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. | with the same bearer or distinct bearers. | |||
* 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., CE#3), distinct PEs (e.g., CE#4), etc. The network | (e.g., CE3), distinct PEs (e.g., CE4), etc. The network provider | |||
provider uses this request to decide where to terminate the AC in | uses this request to decide where to terminate the AC in the | |||
the provider network (i.e., select which PE(s) to use) and also | provider network (i.e., select which PE(s) to use) and also | |||
whether to enable specific capabilities (e.g., Virtual Router | whether to enable specific capabilities (e.g., Virtual Router | |||
Redundancy Protocol (VRRP) [RFC9568]). Note that placement | Redundancy Protocol (VRRP) [RFC9568]). Note that placement | |||
constraints may also be requested during the instantiation of the | constraints may also be requested during the instantiation of the | |||
underlying bearers (Section 5.1). | underlying bearers (Section 5.1). | |||
.--------------------. | .--------------------. | |||
| | | | | | |||
.------. | .--. (b1) .-----. | .------. | .--. (b1) .-----. | |||
| +----. | | +---AC---+ | | | +----. | | +---AC---+ | | |||
| CE1 | | | |PE+---AC---+ CE3 | | | CE1 | | | |PE+---AC---+ CE3 | | |||
skipping to change at page 13, line 15 ¶ | skipping to change at line 531 ¶ | |||
4.2. Separate AC Provisioning vs. Actual Service Provisioning | 4.2. Separate AC Provisioning vs. Actual Service Provisioning | |||
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. This | may depend on the practices adopted by a service provider. This | |||
includes the workflow put in place for the provisioning of network | includes the workflow put in place for the provisioning of network | |||
services and how they are bound to an attachment circuit. For | services and how they are bound to an attachment circuit. For | |||
example, a single attachment circuit may be used to host multiple | example, a single attachment circuit may be used to host multiple | |||
connectivity services. In order to avoid service interference and | connectivity services. In order to avoid service interference and | |||
redundant information in various locations, a service provider may | redundant information in various locations, a service provider may | |||
expose an interface to manage ACs network-wide. Customers can then | expose an interface to manage ACs network-wide. Customers can then | |||
request a bearer or an attachment circuit to be put in place, and | request a bearer or an attachment circuit to be put in place and then | |||
then refer to that bearer or AC when requesting services that are | refer to that bearer or AC when requesting services that are bound to | |||
bound to the bearer or AC. [I-D.ietf-opsawg-ac-lxsm-lxnm-glue] | the bearer or AC. [RFC9836] specifies augmentations to the L2SM and | |||
specifies augmentations to the L2SM and the L3SM to bind LxVPN | the L3SM to bind LxVPN services to ACs. | |||
services to ACs. | ||||
4.3. Sample Deployment Models | 4.3. Sample Deployment Models | |||
Figure 3 shows an example to illustrate how the bearer/AC service | Figure 3 illustrates an example of how the bearer/AC service models | |||
models can be used between a customer and a provider. Internals to | can be used between a customer and a provider. Internals to the | |||
the provider orchestration domain (or customer orchestration domain) | provider orchestration domain (or customer orchestration domain) are | |||
are hidden to the customer (or provider). | hidden to the customer (or provider). | |||
Resources that are needed to activate an AC (e.g., Layer 2 or Layer 3 | Resources that are needed to activate an AC (e.g., Layer 2 or Layer 3 | |||
identifiers) are typically imposed by the provider. However, the | identifiers) are typically imposed by the provider. However, the | |||
deployment model assumes that the customer may supply a specific | deployment model assumes that the customer may supply a specific | |||
identifier (e.g., selected from a pool that was pre-provisioned by | identifier (e.g., selected from a pool that was pre-provisioned by | |||
the provider) in a service request. The provider may accept or | the provider) in a service request. The provider may accept or | |||
reject such request. | reject such request. | |||
.--------------------. Bearer/AC .------------------. | .--------------------. Bearer/AC .------------------. | |||
| Customer | Service Models | Provider | | | Customer | Service Models | Provider | | |||
skipping to change at page 14, line 5 ¶ | skipping to change at line 567 ¶ | |||
| | | | | | |||
.----------v-----------. .---------v----------. | .----------v-----------. .---------v----------. | |||
| |========Bearer=======| | | | |========Bearer=======| | | |||
| Customer Site +----------AC---------| Provider Network | | | Customer Site +----------AC---------| Provider Network | | |||
| |=====================| | | | |=====================| | | |||
'----------------------' '--------------------' | '----------------------' '--------------------' | |||
Figure 3: Example of Interaction Between Customer and Provider | Figure 3: Example of Interaction Between Customer and Provider | |||
Orchestrations | Orchestrations | |||
Figure 4 shows an example to illustrate how the bearer/AC service | Figure 4 illustrates an example of how the bearer/AC service models | |||
models that involve a third party. This deployment model follows a | involve a third party. This deployment model follows a recursive | |||
recursive approach but other Client/Server alternative modes with a | approach, but other client/server alternative modes with a third | |||
third party can be considered. In a recursive deployment, the | party can be considered. In a recursive deployment, the Service | |||
Service Broker exposes a server to a customer for the ordering of AC | Broker exposes a server to a customer for the ordering of AC | |||
services, but it also acts as a client when communicating with a | services, but it also acts as a client when communicating with a | |||
provider. How the Service Broker decides to terminate a recursion | provider. How the Service Broker decides to terminate a recursion | |||
for a given service request or create child service requests is | for a given service request or create child service requests is | |||
deployment specific. | specific to each deployment. | |||
.--------. Bearer/AC .--------. Bearer/AC .-------------. | .--------. Bearer/AC .--------. Bearer/AC .-------------. | |||
| Customer | Service Models | Service | Service Model | Provider | | | Customer | Service Models | Service | Service Model | Provider | | |||
| Service |<-------------->| Broker |<------------->| Service Order | | | Service |<-------------->| Broker |<------------->| Service Order | | |||
| Ordering | | B2B C/S | | Handling | | | Ordering | | B2B C/S | | Handling | | |||
'--------' '--------' '-------------' | '--------' '--------' '-------------' | |||
B2B C/S: Back-to-back Client/Server | B2B C/S: Back-to-Back Client/Server | |||
Figure 4: Example of Recursive Deployment | Figure 4: Example of Recursive Deployment | |||
Figure 5 shows the positioning of the AC service model in the overall | Figure 5 shows the positioning of the AC service model in the overall | |||
service delivery process, with a focus on the provider. | service delivery process, with a focus on the provider. | |||
.-------------. | .-------------. | |||
| Customer | | | Customer | | |||
'------+------' | '------+------' | |||
Customer Service Models | | Customer Service Models | | |||
skipping to change at page 15, line 50 ¶ | skipping to change at line 635 ¶ | |||
.---. Bearer | | Bearer .---. | .---. Bearer | | Bearer .---. | |||
|CE#1+--------+ Network +--------+CE#2| | |CE#1+--------+ Network +--------+CE#2| | |||
'---' | | '---' | '---' | | '---' | |||
'--------------------------------' | '--------------------------------' | |||
Site A Site B | Site A Site B | |||
Figure 5: An Example of AC Model Usage (Focus on the Provider's | Figure 5: An Example of AC Model Usage (Focus on the Provider's | |||
Internals) | Internals) | |||
In order to ease the mapping between the service model and underlying | In order to ease the mapping between the service model and underlying | |||
network models (e.g., the L3VPN Network Model (L3NM), SAP), the name | network models (e.g., the L3VPN Network Model (L3NM) and SAP), the | |||
conventions used in existing network data models are reused as much | name conventions used in existing network data models are reused as | |||
as possible. For example, 'local-address' is used rather than | much as possible. For example, 'local-address' is used rather than | |||
'provider-address' (or similar) to refer to an IP address used in the | 'provider-address' (or similar) to refer to an IP address used in the | |||
provider network. This approach is consistent with the automation | provider network. This approach is consistent with the automation | |||
framework defined in [RFC8969]. | framework defined in [RFC8969]. | |||
5. Description of the Data Models | 5. Description of the Data Models | |||
5.1. The Bearer Service ("ietf-bearer-svc") YANG Module | 5.1. The Bearer Service ("ietf-bearer-svc") YANG Module | |||
Figure 6 shows the tree for managing the bearers (that is, the | Figure 6 shows the tree for managing the bearers (that is, the | |||
properties of an attachment that are below Layer 3). A bearer can be | properties of an attachment that are below Layer 3). A bearer can be | |||
a physical or logical link (e.g., LAG [IEEE802.1AX]). Also, a bearer | a physical or logical link (e.g., LAG [IEEE802.1AX]). Also, a bearer | |||
can be a wireless or wired link. A reference to a bearer is | can be a wireless or wired link. A reference to a bearer is | |||
generated by the operator. Such a reference can be used, e.g., in a | generated by the operator. Such a reference can be used, e.g., in a | |||
subsequent service request to create an AC. The anchoring of the AC | subsequent service request to create an AC. The anchoring of the AC | |||
can also be achieved by indicating (with or without a bearer | can also be achieved by indicating (with or without a bearer | |||
reference), a peer SAP identifier (e.g., an identifier of an SF). | reference) a peer SAP identifier (e.g., an identifier of an SF). | |||
module: ietf-bearer-svc | module: ietf-bearer-svc | |||
+--rw locations | +--rw locations | |||
| +--rw customer* [name peer-as] | | +--rw customer* [name peer-as] | |||
| +--rw name string | | +--rw name string | |||
| +--rw peer-as inet:as-number | | +--rw peer-as inet:as-number | |||
| +--ro location* [name] | | +--ro location* [name] | |||
| +--ro name string | | +--ro name string | |||
| +--ro address? string | | +--ro address? string | |||
| +--ro city? string | | +--ro city? string | |||
| +--ro postal-code? string | | +--ro postal-code? string | |||
| +--ro state? string | | +--ro state? string | |||
| +--ro country-code? string | | +--ro country-code? string | |||
+--rw bearers | +--rw bearers | |||
+--rw requested-start? yang:date-and-time | +--rw requested-start? yang:date-and-time | |||
+--rw requested-stop? yang:date-and-time | +--rw requested-stop? yang:date-and-time | |||
+--ro actual-start? yang:date-and-time | +--ro actual-start? yang:date-and-time | |||
+--ro actual-stop? yang:date-and-time | +--ro actual-stop? yang:date-and-time | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| +--rw constraint* [constraint-type] | | +--rw constraint* [constraint-type] | |||
| {vpn-common:placement-diversity}? | | {vpn-common:placement-diversity}? | |||
| +--rw constraint-type identityref | | +--rw constraint-type identityref | |||
| +--rw target | | +--rw target | |||
| +--rw (target-flavor)? | | +--rw (target-flavor)? | |||
| +--:(id) | | +--:(id) | |||
| | +--rw group* [group-id] | | | +--rw group* [group-id] | |||
| | +--rw group-id string | | | +--rw group-id string | |||
| +--:(all-bearers) | | +--:(all-bearers) | |||
| | +--rw all-other-bearers? empty | | | +--rw all-other-bearers? empty | |||
| +--:(all-groups) | | +--:(all-groups) | |||
| +--rw all-other-groups? empty | | +--rw all-other-groups? empty | |||
+--rw bearer* [name] | +--rw bearer* [name] | |||
+--rw name string | +--rw name string | |||
+--rw description? string | +--rw description? string | |||
+--rw customer-name? string | +--rw customer-name? string | |||
+--rw groups | +--rw groups | |||
| +--rw group* [group-id] | | +--rw group* [group-id] | |||
| +--rw group-id string | | +--rw group-id string | |||
+--rw op-comment? string | +--rw op-comment? string | |||
+--rw bearer-parent-ref? bearer-svc:bearer-ref | +--rw bearer-parent-ref? bearer-svc:bearer-ref | |||
+--ro bearer-lag-member* bearer-svc:bearer-ref | +--ro bearer-lag-member* bearer-svc:bearer-ref | |||
+--ro sync-phy-capable? boolean | +--ro sync-phy-capable? boolean | |||
+--rw sync-phy-enabled? boolean | +--rw sync-phy-enabled? boolean | |||
+--rw sync-phy-type? identityref | +--rw sync-phy-type? identityref | |||
+--rw provider-location-reference? string | +--rw provider-location-reference? string | |||
+--rw customer-point | +--rw customer-point | |||
| +--rw identified-by? identityref | | +--rw identified-by? identityref | |||
| +--rw device | | +--rw device | |||
| | +--rw device-id? string | | | +--rw device-id? string | |||
| | +--rw location | | | +--rw location | |||
| | +--rw name? string | | | +--rw name? string | |||
| | +--rw address? string | | | +--rw address? string | |||
| | +--rw city? string | | | +--rw city? string | |||
| | +--rw postal-code? string | | | +--rw postal-code? string | |||
| | +--rw state? string | | | +--rw state? string | |||
| | +--rw country-code? string | | | +--rw country-code? string | |||
| +--rw site | | +--rw site | |||
| | +--rw site-id? string | | | +--rw site-id? string | |||
| | +--rw location | | | +--rw location | |||
| | +--rw name? string | | | +--rw name? string | |||
| | +--rw address? string | | | +--rw address? string | |||
| | +--rw city? string | | | +--rw city? string | |||
| | +--rw postal-code? string | | | +--rw postal-code? string | |||
| | +--rw state? string | | | +--rw state? string | |||
| | +--rw country-code? string | | | +--rw country-code? string | |||
| +--rw custom-id? string | | +--rw custom-id? string | |||
+--rw type? identityref | +--rw type? identityref | |||
+--rw test-only? empty | +--rw test-only? empty | |||
+--ro bearer-reference? string | +--ro bearer-reference? string | |||
| {ac-common:server-assigned-reference}? | | {ac-common:server-assigned-reference}? | |||
+--ro ac-svc-ref* | +--ro ac-svc-ref* | |||
| ac-svc:attachment-circuit-reference | | ac-svc:attachment-circuit-reference | |||
+--rw requested-start? yang:date-and-time | +--rw requested-start? yang:date-and-time | |||
+--rw requested-stop? yang:date-and-time | +--rw requested-stop? yang:date-and-time | |||
+--ro actual-start? yang:date-and-time | +--ro actual-start? yang:date-and-time | |||
+--ro actual-stop? yang:date-and-time | +--ro actual-stop? yang:date-and-time | |||
+--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 | |||
Figure 6: Bearer Service Tree Structure | Figure 6: Bearer Service Tree Structure | |||
In some deployments, a customer may first retrieve a list of | In some deployments, a customer may first retrieve a list of | |||
available presence locations before placing an order for a bearer | available presence locations before placing an order for a bearer | |||
creation. The request is filtered based upon a customer name and an | creation. The request is filtered based upon a customer name and an | |||
Autonomous System Number (ASN). The reserved value "AS 0" [RFC7607] | Autonomous System Number (ASN). The reserved value "AS 0" [RFC7607] | |||
is used for customers with no ASN. The retrieved location names may | is used for customers with no ASN. The retrieved location names may | |||
be then referenced in a bearer creation request ('provider-location- | then be referenced in a bearer creation request ('provider-location- | |||
reference'). See the example provided in Appendix A.10.1. | reference'). See the example provided in Appendix A.10.1. | |||
The same customer site (CE, SF, etc.) can terminate one or multiple | The same customer site (CE, SF, etc.) can terminate one or multiple | |||
bearers; each of them uniquely identified by a reference that is | bearers; each of them is uniquely identified by a reference that is | |||
assigned by the network provider. These bearers can terminate on the | assigned by the network provider. These bearers can terminate on the | |||
same or distinct network nodes. CEs that terminate multiple bearers | same or distinct network nodes. CEs that terminate multiple bearers | |||
are called multi-homed CEs. | are called multi-homed CEs. | |||
A bearer can be created, modified, or discovered from the network. | A bearer can be created, modified, or discovered from the network. | |||
For example, the following deployment options can be considered: | For example, the following deployment options can be considered: | |||
Greenfield creation: In this scenario, bearers are created from | Greenfield creation: In this scenario, bearers are created from | |||
scratch using specific requests made to a network controller. | scratch using specific requests made to a network controller. | |||
This method allows providers to tailor bearer creation to meet | This method allows providers to tailor bearer creation to meet | |||
skipping to change at page 19, line 44 ¶ | skipping to change at line 812 ¶ | |||
can be used, e.g., if a bearer is a member of a LAG. | can be used, e.g., if a bearer is a member of a LAG. | |||
'bearer-lag-member': Lists the bearers that are members of a LAG. | 'bearer-lag-member': Lists the bearers that are members of a LAG. | |||
Members can be declared as part of a LAG using 'bearer-parent- | Members can be declared as part of a LAG using 'bearer-parent- | |||
ref'. | ref'. | |||
'sync-phy-capable': Reports whether a synchronization physical (Sync | 'sync-phy-capable': Reports whether a synchronization physical (Sync | |||
PHY) mechanism is supported for this bearer. | PHY) mechanism is supported for this bearer. | |||
'sync-phy-enabled': Indicates whether a Sync PHY mechanism is | 'sync-phy-enabled': Indicates whether a Sync PHY mechanism is | |||
enabled for a bearer. Only applies when 'sync-phy-capable' is set | enabled for a bearer. It only applies when 'sync-phy-capable' is | |||
to 'true'. | set to 'true'. | |||
'sync-phy-type': Specifies the Sync PHY mechanism (e.g., SynchE | 'sync-phy-type': Specifies the Sync PHY mechanism (e.g., SyncE | |||
[ITU-T-G.781]) enabled for the bearer. | [ITU-T-G.781]) enabled for the bearer. | |||
'provider-location-reference': Indicates a location identified by a | 'provider-location-reference': Indicates a location identified by a | |||
provider-assigned reference. | provider-assigned reference. | |||
'customer-point': Specifies the customer termination point for the | 'customer-point': Specifies the customer termination point for the | |||
bearer. A bearer request can indicate a device, a site, a | bearer. A bearer request can indicate a device, a site, a | |||
combination thereof, or a custom information when requesting a | combination thereof, or custom information when requesting a | |||
bearer. All these schemes are supported in the model. | bearer. All these schemes are supported in the model. | |||
'type': Specifies the bearer type (Ethernet, wireless, LAG, etc.). | 'type': Specifies the bearer type (Ethernet, wireless, LAG, etc.). | |||
'test-only': Indicates that a request is only for test validation | 'test-only': Indicates that a request is only for test validation | |||
and not for enforcement, even if there are no errors. This is | and not for enforcement, even if there are no errors. This is | |||
used for feasibility checks. This data node is applicable only | used for feasibility checks. This data node is applicable only | |||
when the data model is used with protocols which do not natively | when the data model is used with protocols that do not natively | |||
support such option. For example, this data node is redundant | support such option. For example, this data node is redundant | |||
with the "test-only" value of the <test-option> parameter in the | with the "test-only" value of the <test-option> parameter in the | |||
NETCONF <edit-config> operation (Section 7.2 of [RFC6241]). | NETCONF <edit-config> operation (Section 7.2 of [RFC6241]). | |||
'bearer-reference': Returns an internal reference for the service | 'bearer-reference': Returns an internal reference for the service | |||
provider to uniquely identify the bearer. This reference can be | provider to uniquely identify the bearer. This reference can be | |||
used when requesting services. Appendix A.1 provides an example | used when requesting services. Appendix A.1 provides an example | |||
about how this reference can be retrieved by a customer. | about how this reference can be retrieved by a customer. | |||
Whether the 'bearer-reference' mirrors the content of the 'name' | Whether the 'bearer-reference' mirrors the content of the 'name' | |||
skipping to change at page 20, line 45 ¶ | skipping to change at line 861 ¶ | |||
'requested-stop': Specifies the requested date and time when the | 'requested-stop': Specifies the requested date and time when the | |||
bearer is expected to be disabled. | bearer is expected to be disabled. | |||
'actual-start': Reports the actual date and time when the bearer | 'actual-start': Reports the actual date and time when the bearer | |||
actually was enabled. | actually was enabled. | |||
'actual-stop': Reports the actual date and time when the bearer | 'actual-stop': Reports the actual date and time when the bearer | |||
actually was disabled. | actually was disabled. | |||
'status': Used to track the overall status of a given bearer. Both | 'status': Used to track the overall status of a given bearer. Both | |||
operational and administrative status are maintained together with | the operational and administrative status are maintained together | |||
a timestamp. | with a timestamp. | |||
The 'admin-status' attribute is typically configured by a network | The 'admin-status' attribute is typically configured by a network | |||
operator to indicate whether the service is enabled, disabled, or | operator to indicate whether the service is enabled, disabled, or | |||
subjected to additional testing or pre-deployment checks. These | subjected to additional testing or pre-deployment checks. These | |||
additional options, such as 'admin-testing' and 'admin-pre- | additional options, such as 'admin-testing' and 'admin-pre- | |||
deployment', provide the operators the flexibility to conduct | deployment', provide the operators the flexibility to conduct | |||
additional validations on the bearer before deploying services | additional validations on the bearer before deploying services | |||
over that connection. | over that connection. | |||
'oper-status': The 'oper-status' of a bearer reflects its | 'oper-status': Reflects the operational state of a bearer as | |||
operational state as observed. As a bearer can contain multiple | observed. As a bearer can contain multiple services, the | |||
services, the operational status should only reflect the status of | operational status should only reflect the status of the bearer | |||
the bearer connection. To obtain network-level service status, | connection. To obtain network-level service status, specific | |||
specific network models such as those in Section 7.3 of [RFC9182] | network models, such as those in Section 7.3 of [RFC9182] or | |||
or Section 7.3 of [RFC9291] should be consulted. | Section 7.3 of [RFC9291], should be consulted. | |||
It is important to note that the 'admin-status' attribute should | It is important to note that the 'admin-status' attribute should | |||
remain independent of the 'oper-status'. In other words, the | remain independent of the 'oper-status'. In other words, the | |||
setting of the intended administrative state (e.g., whether | setting of the intended administrative state (e.g., 'admin-up' or | |||
'admin-up' or 'admin-testing') MUST NOT be influenced by the | 'admin-testing') MUST NOT be influenced by the current operational | |||
current operational state. If the bearer is administratively set | state. If the bearer is administratively set to 'admin-down', it | |||
to 'admin-down', it is expected that the bearer will also be | is expected that the bearer will also be operationally 'op-down' | |||
operationally 'op-down' as a result of this administrative | as a result of this administrative decision. | |||
decision. | ||||
To assess the service delivery status for a given bearer | To assess the service delivery status for a given bearer | |||
comprehensively, it is recommended to consider both administrative | comprehensively, it is recommended to consider both administrative | |||
and operational service status values in conjunction. This | and operational service status values in conjunction. This | |||
holistic approach allows a network controller or operator to | holistic approach allows a network controller or operator to | |||
identify anomalies effectively. | identify anomalies effectively. | |||
For instance, when a bearer is administratively enabled but the | For instance, when a bearer is administratively enabled but the | |||
'operational-status' of that bearer is reported as 'op-down', it | 'operational-status' of that bearer is reported as 'op-down', it | |||
should be expected that the 'oper-status' of services transported | should be expected that the 'oper-status' of services transported | |||
skipping to change at page 22, line 5 ¶ | skipping to change at line 913 ¶ | |||
The full tree diagram of the "ietf-ac-svc" module is provided in | The full tree diagram of the "ietf-ac-svc" 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.2.1. Overall Structure | 5.2.1. Overall Structure | |||
The overall tree structure of the AC service module is shown in | The overall tree structure of the AC service module is shown in | |||
Figure 7. | Figure 7. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw service-provisioning-profiles | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw attachment-circuits | |||
+--rw ac-group-profile* [name] | +--rw ac-group-profile* [name] | |||
| ... | | ... | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw ac* [name] | +--rw ac* [name] | |||
... | ... | |||
+--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 | |||
... | ... | |||
Figure 7: Overall AC Service Tree Structure | Figure 7: Overall AC Service Tree Structure | |||
The rationale for deciding whether a reusable grouping is included in | The rationale for deciding whether a reusable grouping is included in | |||
this document or be moved into the AC common module | this document or moved into the AC common module [RFC9833] is as | |||
[I-D.ietf-opsawg-teas-common-ac] is as follows: | follows: | |||
* Groupings that are reusable among the AC service module, AC | * Groupings that are reusable among the AC service module, AC | |||
network module, other service models, and network models are | network module, and other service models and network models are | |||
included in the AC common module. | included in the AC common module. | |||
* Groupings that are reusable only by other service models are | * Groupings that are reusable only by other service models are | |||
maintained in the "ietf-ac-svc" module. | maintained in the "ietf-ac-svc" module. | |||
Each AC is identified with a unique name ('../ac/name') within a | Each AC is identified with a unique name ('../ac/name') within a | |||
domain. The mapping between this AC and a local PE that terminates | domain. The mapping between this AC and a local PE that terminates | |||
the AC is hidden to the application that makes use of the AC service | the AC is hidden to the application that makes use of the AC service | |||
model. This information is internal to the Network controller. As | model. This information is internal to the network controller. As | |||
such, the details about the (node-specific) attachment interfaces are | such, the details about the (node-specific) attachment interfaces are | |||
not exposed in this service model. | not exposed in this service model. | |||
The AC service model uses groupings and types defined in the AC | The AC service model uses groupings and types defined in the AC | |||
common model [I-D.ietf-opsawg-teas-common-ac] ('op-instructions', | common model [RFC9833] ('op-instructions', 'dot1q', 'qinq', | |||
'dot1q', 'qinq', 'priority-tagged', 'l2-tunnel-service', etc.). | 'priority-tagged', 'l2-tunnel-service', etc.). Therefore, the | |||
Therefore, the descriptions of these nodes are not reiterated in the | descriptions of these nodes are not reiterated in the following | |||
following subsections. | subsections. | |||
Features are used to tag conditional portions of the model in order | Features are used to tag conditional portions of the model in order | |||
to accommodate various deployments (support of layer 2 ACs, Layer 3 | to accommodate various deployments (support of layer 2 ACs, Layer 3 | |||
ACs, IPv4, IPv6, routing protocols, Bidirectional Forwarding | ACs, IPv4, IPv6, routing protocols, Bidirectional Forwarding | |||
Detection (BFD), etc.). | Detection (BFD), etc.). | |||
5.2.2. Service Profiles | 5.2.2. Service Profiles | |||
5.2.2.1. Description | 5.2.2.1. Description | |||
The 'specific-provisioning-profiles' container (Figure 8) can be used | The 'specific-provisioning-profiles' container (Figure 8) can be used | |||
by a service provider to maintain a set of reusable profiles. The | by a service provider to maintain a set of reusable profiles. The | |||
profiles definitions are similar to those defined in [RFC9181], | profiles definitions are similar to those defined in [RFC9181], | |||
including: Quality of Service (QoS), BFD, forwarding, and routing | including: Quality of Service (QoS), BFD, forwarding, and routing | |||
profiles. The exact definition of the profiles is local to each | profiles. The exact definition of the profiles is local to each | |||
service provider. The model only includes an identifier for these | service provider. The model only includes an identifier for these | |||
profiles in order to facilitate identifying and binding local | profiles in order to facilitate identifying and binding local | |||
policies when building an AC. | policies when building an AC. | |||
module: ietf-ac-svc | module: ietf-ac-svc | |||
+--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] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw forwarding-profile-identifier* [id] | | +--rw forwarding-profile-identifier* [id] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw routing-profile-identifier* [id] | | +--rw routing-profile-identifier* [id] | |||
| +--rw id string | | +--rw id string | |||
+--rw service-provisioning-profiles | +--rw service-provisioning-profiles | |||
| +--rw service-profile-identifier* [id] | | +--rw service-profile-identifier* [id] | |||
| +--rw id string | | +--rw id string | |||
+--rw attachment-circuits | +--rw attachment-circuits | |||
+--rw ac-group-profile* [name] | +--rw ac-group-profile* [name] | |||
| ... | | ... | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw ac* [name] | +--rw ac* [name] | |||
... | ... | |||
+--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 | |||
... | ... | |||
Figure 8: Service Profiles | Figure 8: Service Profiles | |||
As shown in Figure 8, two profile types can be defined: 'specific- | As shown in Figure 8, two profile types can be defined: 'specific- | |||
provisioning-profiles' and 'service-provisioning-profiles'. Whether | provisioning-profiles' and 'service-provisioning-profiles'. Whether | |||
only specific profiles, service profiles, or a combination thereof | only specific profiles, service profiles, or a combination thereof | |||
are used is local to each service provider. | are used is local to each service provider. | |||
The following specific provisioning profiles can be defined: | The following specific provisioning profiles can be defined as | |||
follows: | ||||
'encryption-profile-identifier': Refers to a set of policies related | 'encryption-profile-identifier': Refers to a set of policies related | |||
to the encryption setup that can be applied when provisioning an | to the encryption setup that can be applied when provisioning an | |||
AC. | AC. | |||
'qos-profile-identifier': Refers to a set of policies, such as | 'qos-profile-identifier': Refers to a set of policies, such as | |||
classification, marking, and actions (e.g., [RFC3644]). | classification, marking, and actions (e.g., [RFC3644]). | |||
'failure-detection-profile-identifier': Refers to a set of failure | 'failure-detection-profile-identifier': Refers to a set of failure | |||
detection policies (e.g., BFD policies [RFC5880]) that can be | detection policies (e.g., BFD policies [RFC5880]) that can be | |||
skipping to change at page 25, line 37 ¶ | skipping to change at line 1063 ¶ | |||
reference to one of these profiles or attachment circuits. | reference to one of these profiles or attachment circuits. | |||
5.2.3. Attachment Circuits Profiles | 5.2.3. Attachment Circuits Profiles | |||
The 'ac-group-profile' defines reusable parameters for a set of ACs. | The 'ac-group-profile' defines reusable parameters for a set of ACs. | |||
Each profile is identified by 'name'. Some of the data nodes can be | Each profile is identified by 'name'. Some of the data nodes can be | |||
adjusted at the 'ac' level. These adjusted values take precedence | adjusted at the 'ac' level. These adjusted values take precedence | |||
over the global values. The structure of 'ac-group-profile' is | over the global values. The structure of 'ac-group-profile' is | |||
similar to the one used to model each 'ac' (Figure 10). | similar to the one used to model each 'ac' (Figure 10). | |||
5.2.4. AC Placement Contraints | 5.2.4. AC Placement Constraints | |||
The 'placement-constraints' specifies the placement constraints of an | The 'placement-constraints' specifies the placement constraints of an | |||
AC. For example, this container can be used to request avoidance of | AC. For example, this container can be used to request avoidance of | |||
connecting two ACs to the same PE. The full set of supported | connecting two ACs to the same PE. The full set of supported | |||
constraints is defined in [RFC9181] (see 'placement-diversity', in | constraints is defined in [RFC9181] (see 'placement-diversity', in | |||
particular). | particular). | |||
The structure of 'placement-constraints' is shown in Figure 9. | The structure of 'placement-constraints' is shown in Figure 9. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw service-provisioning-profiles | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw attachment-circuits | |||
+--rw ac-group-profile* [name] | +--rw ac-group-profile* [name] | |||
| ... | | ... | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| +--rw constraint* [constraint-type] | | +--rw constraint* [constraint-type] | |||
| +--rw constraint-type identityref | | +--rw constraint-type identityref | |||
| +--rw target | | +--rw target | |||
| +--rw (target-flavor)? | | +--rw (target-flavor)? | |||
| +--:(id) | | +--:(id) | |||
| | +--rw group* [group-id] | | | +--rw group* [group-id] | |||
| | +--rw group-id string | | | +--rw group-id string | |||
| +--:(all-accesses) | | +--:(all-accesses) | |||
| | +--rw all-other-accesses? empty | | | +--rw all-other-accesses? empty | |||
| +--:(all-groups) | | +--:(all-groups) | |||
| +--rw all-other-groups? empty | | +--rw all-other-groups? empty | |||
+--rw ac* [name] | +--rw ac* [name] | |||
... | ... | |||
Figure 9: Placement Constraints Subtree Structure | Figure 9: Placement Constraints Subtree Structure | |||
5.2.5. Attachment Circuits | 5.2.5. Attachment Circuits | |||
The structure of 'attachment-circuits' is shown in Figure 10. | The structure of 'attachment-circuits' is shown in Figure 10. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw service-provisioning-profiles | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw attachment-circuits | |||
+--rw ac-group-profile* [name] | +--rw ac-group-profile* [name] | |||
| ... | | ... | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw customer-name? string | +--rw customer-name? string | |||
+--rw requested-start? yang:date-and-time | +--rw requested-start? yang:date-and-time | |||
+--rw requested-stop? yang:date-and-time | +--rw requested-stop? yang:date-and-time | |||
+--ro actual-start? yang:date-and-time | +--ro actual-start? yang:date-and-time | |||
+--ro actual-stop? yang:date-and-time | +--ro actual-stop? yang:date-and-time | |||
+--rw ac* [name] | +--rw ac* [name] | |||
+--rw customer-name? string | +--rw customer-name? string | |||
+--rw description? string | +--rw description? string | |||
+--rw test-only? empty | +--rw test-only? empty | |||
+--rw requested-start? yang:date-and-time | +--rw requested-start? yang:date-and-time | |||
+--rw requested-stop? yang:date-and-time | +--rw requested-stop? yang:date-and-time | |||
+--ro actual-start? yang:date-and-time | +--ro actual-start? yang:date-and-time | |||
+--ro actual-stop? yang:date-and-time | +--ro actual-stop? yang:date-and-time | |||
+--rw role? identityref | +--rw role? identityref | |||
+--rw peer-sap-id* string | +--rw peer-sap-id* string | |||
+--rw group-profile-ref* ac-group-reference | +--rw group-profile-ref* ac-group-reference | |||
+--rw parent-ref* ac-svc:attachment-circuit-reference | +--rw parent-ref* ac-svc:attachment-circuit-reference | |||
+--ro child-ref* ac-svc:attachment-circuit-reference | +--ro child-ref* ac-svc:attachment-circuit-reference | |||
+--rw group* [group-id] | +--rw group* [group-id] | |||
| +--rw group-id string | | +--rw group-id string | |||
| +--rw precedence? identityref | | +--rw precedence? identityref | |||
+--ro service-ref* [service-type service-id] | +--ro service-ref* [service-type service-id] | |||
| +--ro service-type identityref | | +--ro service-type identityref | |||
| +--ro service-id string | | +--ro service-id string | |||
+--ro server-reference? string | +--ro server-reference? string | |||
| {ac-common:server-assigned-reference}? | | {ac-common:server-assigned-reference}? | |||
+--rw name string | +--rw name string | |||
+--rw service-profile* service-profile-reference | +--rw service-profile* service-profile-reference | |||
+--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 | |||
... | ... | |||
Figure 10: Attachment Circuits Tree Structure | Figure 10: Attachment Circuits Tree Structure | |||
A request may also include some timing constraints ('requested- | A request may also include some timing constraints ('requested- | |||
start', 'requested-stop') that are applicable for a set of ACs. The | start', 'requested-stop') that are applicable for a set of ACs. The | |||
timing constraints can be adjusted at the 'ac' level. These adjusted | timing constraints can be adjusted at the 'ac' level. These adjusted | |||
values take precedence over the global values. | values take precedence over the global values. | |||
The description of the 'ac' data nodes is as follows: | The 'ac' data nodes are described as follows: | |||
'customer-name': Indicates the name of the customer who ordered the | 'customer-name': Indicates the name of the customer who ordered the | |||
AC or a set of ACs. | AC or a set of ACs. | |||
'description': Includes a textual description of the AC. | 'description': Includes a textual description of the AC. | |||
'test-only': Indicates that a request is only for validation test | 'test-only': Indicates that a request is only for a validation test | |||
and not for enforcement, even if there are no errors. This is | and not for enforcement, even if there are no errors. This is | |||
used for feasibility checks. This data node is applicable only | used for feasibility checks. This data node is applicable only | |||
when the data model is used with protocols which do not have | when the data model is used with protocols that do not have built- | |||
built-in support of such option. | in support of such option. | |||
'requested-start': Specifies the requested date and time when the | 'requested-start': Specifies the requested date and time when the | |||
attachment circuit is expected to be active. | attachment circuit is expected to be active. | |||
'requested-stop': Specifies the requested date and time when the | 'requested-stop': Specifies the requested date and time when the | |||
attachment circuit is expected to be disabled. | attachment circuit is expected to be disabled. | |||
'actual-start': Reports the actual date and time when the attachment | 'actual-start': Reports the actual date and time when the attachment | |||
circuit actually was enabled. | circuit actually was enabled. | |||
skipping to change at page 29, line 39 ¶ | skipping to change at line 1248 ¶ | |||
'oam': See Section 5.2.5.4. | 'oam': See Section 5.2.5.4. | |||
'security': See Section 5.2.5.5. | 'security': See Section 5.2.5.5. | |||
'service': See Section 5.2.5.6. | 'service': See Section 5.2.5.6. | |||
5.2.5.1. Layer 2 Connection Structure | 5.2.5.1. Layer 2 Connection Structure | |||
The 'l2-connection' container (Figure 11) is used to configure the | The 'l2-connection' container (Figure 11) is used to configure the | |||
relevant Layer 2 properties of an AC including: encapsulation details | relevant Layer 2 properties of an AC, including encapsulation details | |||
and tunnel terminations. For the encapsulation details, the model | and tunnel terminations. For the encapsulation details, the model | |||
supports the definition of the type as well as the Identifiers (e.g., | supports the definition of the type as well as the identifiers (e.g., | |||
VLAN-IDs) of each of the encapsulation-type defined. For the second | VLAN-IDs) of each of the encapsulation-type defined. For the second | |||
case, attributes for pseudowire, Virtual Private LAN Service (VPLS), | case, attributes for pseudowire, Virtual Private LAN Service (VPLS), | |||
and Virtual eXtensible Local Area Network (VXLAN) tunnel terminations | and Virtual eXtensible Local Area Network (VXLAN) tunnel terminations | |||
are included. | are included. | |||
'bearer-reference' is used to link an AC with a bearer over which the | 'bearer-reference' is used to link an AC with a bearer over which the | |||
AC is instantiated. | AC is instantiated. | |||
This structure relies upon the common groupings defined in | This structure relies upon the common groupings defined in [RFC9833]. | |||
[I-D.ietf-opsawg-teas-common-ac]. | ||||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | ||||
+--rw service-provisioning-profiles | ||||
| ... | ||||
+--rw attachment-circuits | ||||
+--rw ac-group-profile* [name] | ||||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw ac* [name] | |||
+--rw ac-group-profile* [name] | ... | |||
+--rw name string | ||||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| +--rw encapsulation | ||||
| | +--rw type? identityref | ||||
| | +--rw dot1q | ||||
| | | +--rw tag-type? identityref | ||||
| | | +--rw cvlan-id? uint16 | ||||
| | +--rw priority-tagged | ||||
| | | +--rw tag-type? identityref | ||||
| | +--rw qinq | ||||
| | +--rw tag-type? identityref | ||||
| | +--rw svlan-id? uint16 | ||||
| | +--rw cvlan-id? uint16 | ||||
| +--rw (l2-service)? | ||||
| | +--:(l2-tunnel-service) | ||||
| | | +--rw l2-tunnel-service | ||||
| | | +--rw type? identityref | ||||
| | | +--rw pseudowire | ||||
| | | | +--rw vcid? uint32 | ||||
| | | | +--rw far-end? union | ||||
| | | +--rw vpls | ||||
| | | | +--rw vcid? uint32 | ||||
| | | | +--rw far-end* union | ||||
| | | +--rw vxlan | ||||
| | | +--rw vni-id? uint32 | ||||
| | | +--rw peer-mode? identityref | ||||
| | | +--rw peer-ip-address* inet:ip-address | ||||
| | +--:(l2vpn) | ||||
| | +--rw l2vpn-id? vpn-common:vpn-id | ||||
| +--rw bearer-reference? string | ||||
| {vpn-common:bearer-reference}? | ||||
+--rw ip-connection {ac-common:layer3-ac}? | ||||
| ... | | ... | |||
+--rw placement-constraints | +--rw routing-protocols | |||
| ... | | ... | |||
+--rw ac* [name] | +--rw oam | |||
| ... | ||||
+--rw security | ||||
| ... | ||||
+--rw service | ||||
... | ... | |||
+--rw name string | ||||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| +--rw encapsulation | ||||
| | +--rw type? identityref | ||||
| | +--rw dot1q | ||||
| | | +--rw tag-type? identityref | ||||
| | | +--rw cvlan-id? uint16 | ||||
| | +--rw priority-tagged | ||||
| | | +--rw tag-type? identityref | ||||
| | +--rw qinq | ||||
| | +--rw tag-type? identityref | ||||
| | +--rw svlan-id? uint16 | ||||
| | +--rw cvlan-id? uint16 | ||||
| +--rw (l2-service)? | ||||
| | +--:(l2-tunnel-service) | ||||
| | | +--rw l2-tunnel-service | ||||
| | | +--rw type? identityref | ||||
| | | +--rw pseudowire | ||||
| | | | +--rw vcid? uint32 | ||||
| | | | +--rw far-end? union | ||||
| | | +--rw vpls | ||||
| | | | +--rw vcid? uint32 | ||||
| | | | +--rw far-end* union | ||||
| | | +--rw vxlan | ||||
| | | +--rw vni-id? uint32 | ||||
| | | +--rw peer-mode? identityref | ||||
| | | +--rw peer-ip-address* inet:ip-address | ||||
| | +--:(l2vpn) | ||||
| | +--rw l2vpn-id? vpn-common:vpn-id | ||||
| +--rw bearer-reference? string | ||||
| {vpn-common:bearer-reference}? | ||||
+--rw ip-connection {ac-common:layer3-ac}? | ||||
| ... | ||||
+--rw routing-protocols | ||||
| ... | ||||
+--rw oam | ||||
| ... | ||||
+--rw security | ||||
| ... | ||||
+--rw service | ||||
... | ||||
Figure 11: Layer 2 Connection Tree Structure | Figure 11: Layer 2 Connection Tree Structure | |||
5.2.5.2. IP Connection Structure | 5.2.5.2. IP Connection Structure | |||
The 'ip-connection' container is used to configure the relevant IP | The 'ip-connection' container is used to configure the relevant IP | |||
properties of an AC. The model supports the usage of dynamic and | properties of an AC. The model supports the usage of dynamic and | |||
static addressing. This structure relies upon the common groupings | static addressing. This structure relies upon the common groupings | |||
defined in Section 4.3 of [I-D.ietf-opsawg-teas-common-ac]. Both | defined in Section 4.3 of [RFC9833]. Both IPv4 and IPv6 parameters | |||
IPv4 and IPv6 parameters are supported. | are supported. | |||
For ACs that require Layer 3 tunnel establishment, the ACaaS includes | For ACs that require Layer 3 tunnel establishment, the ACaaS includes | |||
a provision for future augmentations to define tunnel-specific data | a provision for future augmentations to define tunnel-specific data | |||
nodes ('l3-tunnel-service'). Such augmentations MUST be conditional | nodes ('l3-tunnel-service'). Such augmentations MUST be conditional | |||
based on the tunnel type ('type'). | based on the tunnel type ('type'). | |||
Figure 12 shows the structure of the IPv4 connection. | Figure 12 shows the structure of the IPv4 connection. | |||
| ... | | ... | |||
+--rw ip-connection {ac-common:layer3-ac}? | +--rw ip-connection {ac-common:layer3-ac}? | |||
| +--rw ipv4 {vpn-common:ipv4}? | | +--rw ipv4 {vpn-common:ipv4}? | |||
| | +--rw local-address? | | | +--rw local-address? | |||
| | | inet:ipv4-address | | | | inet:ipv4-address | |||
| | +--rw virtual-address? | | | +--rw virtual-address? | |||
| | | inet:ipv4-address | | | | inet:ipv4-address | |||
| | +--rw prefix-length? uint8 | | | +--rw prefix-length? uint8 | |||
| | +--rw address-allocation-type? | | | +--rw address-allocation-type? | |||
| | | identityref | | | | identityref | |||
| | +--rw (allocation-type)? | | | +--rw (allocation-type)? | |||
| | +--:(dynamic) | | | +--:(dynamic) | |||
| | | +--rw (address-assign)? | | | | +--rw (address-assign)? | |||
| | | | +--:(number) | | | | | +--:(number) | |||
| | | | | +--rw number-of-dynamic-address? uint16 | | | | | | +--rw number-of-dynamic-address? uint16 | |||
| | | | +--:(explicit) | | | | | +--:(explicit) | |||
| | | | +--rw customer-addresses | | | | | +--rw customer-addresses | |||
| | | | +--rw address-pool* [pool-id] | | | | | +--rw address-pool* [pool-id] | |||
| | | | +--rw pool-id string | | | | | +--rw pool-id string | |||
| | | | +--rw start-address | | | | | +--rw start-address | |||
| | | | | inet:ipv4-address | | | | | | inet:ipv4-address | |||
| | | | +--rw end-address? | | | | | +--rw end-address? | |||
| | | | inet:ipv4-address | | | | | inet:ipv4-address | |||
| | | +--rw (provider-dhcp)? | | | | +--rw (provider-dhcp)? | |||
| | | | +--:(dhcp-service-type) | | | | | +--:(dhcp-service-type) | |||
| | | | +--rw dhcp-service-type? | | | | | +--rw dhcp-service-type? | |||
| | | | enumeration | | | | | enumeration | |||
| | | +--rw (dhcp-relay)? | | | | +--rw (dhcp-relay)? | |||
| | | +--:(customer-dhcp-servers) | | | | +--:(customer-dhcp-servers) | |||
| | | +--rw customer-dhcp-servers | | | | +--rw customer-dhcp-servers | |||
| | | +--rw server-ip-address* | | | | +--rw server-ip-address* | |||
| | | inet:ipv4-address | | | | inet:ipv4-address | |||
| | +--:(static-addresses) | | | +--:(static-addresses) | |||
| | +--rw address* [address-id] | | | +--rw address* [address-id] | |||
| | +--rw address-id string | | | +--rw address-id string | |||
| | +--rw customer-address? inet:ipv4-address | | | +--rw customer-address? inet:ipv4-address | |||
| | +--rw failure-detection-profile? | | | +--rw failure-detection-profile? | |||
| | failure-detection-profile-reference | | | failure-detection-profile-reference | |||
| | {vpn-common:bfd}? | | | {vpn-common:bfd}? | |||
| +--rw ipv6 {vpn-common:ipv6}? | | +--rw ipv6 {vpn-common:ipv6}? | |||
| | ... | | | ... | |||
| +--rw (l3-service)? | | +--rw (l3-service)? | |||
| +--:(l3-tunnel-service) | | +--:(l3-tunnel-service) | |||
| +--rw l3-tunnel-service | | +--rw l3-tunnel-service | |||
| +--rw type? identityref | | +--rw type? identityref | |||
Figure 12: Layer 3 Connection Tree Structure (IPv4) | Figure 12: Layer 3 Connection Tree Structure (IPv4) | |||
Figure 13 shows the structure of the IPv6 connection. | Figure 13 shows the structure of the IPv6 connection. | |||
| ... | | ... | |||
+--rw ip-connection {ac-common:layer3-ac}? | +--rw ip-connection {ac-common:layer3-ac}? | |||
| +--rw ipv4 {vpn-common:ipv4}? | | +--rw ipv4 {vpn-common:ipv4}? | |||
| | ... | | | ... | |||
| +--rw ipv6 {vpn-common:ipv6}? | | +--rw ipv6 {vpn-common:ipv6}? | |||
| | +--rw local-address? | | | +--rw local-address? | |||
| | | inet:ipv6-address | | | | inet:ipv6-address | |||
| | +--rw virtual-address? | | | +--rw virtual-address? | |||
| | | inet:ipv6-address | | | | inet:ipv6-address | |||
| | +--rw prefix-length? uint8 | | | +--rw prefix-length? uint8 | |||
| | +--rw address-allocation-type? | | | +--rw address-allocation-type? | |||
| | | identityref | | | | identityref | |||
| | +--rw (allocation-type)? | | | +--rw (allocation-type)? | |||
| | +--:(dynamic) | | | +--:(dynamic) | |||
| | | +--rw (address-assign)? | | | | +--rw (address-assign)? | |||
| | | | +--:(number) | | | | | +--:(number) | |||
| | | | | +--rw number-of-dynamic-address? uint16 | | | | | | +--rw number-of-dynamic-address? uint16 | |||
| | | | +--:(explicit) | | | | | +--:(explicit) | |||
| | | | +--rw customer-addresses | | | | | +--rw customer-addresses | |||
| | | | +--rw address-pool* [pool-id] | | | | | +--rw address-pool* [pool-id] | |||
| | | | +--rw pool-id string | | | | | +--rw pool-id string | |||
| | | | +--rw start-address | | | | | +--rw start-address | |||
| | | | | inet:ipv6-address | | | | | | inet:ipv6-address | |||
| | | | +--rw end-address? | | | | | +--rw end-address? | |||
| | | | inet:ipv6-address | | | | | inet:ipv6-address | |||
| | | +--rw (provider-dhcp)? | | | | +--rw (provider-dhcp)? | |||
| | | | +--:(dhcp-service-type) | | | | | +--:(dhcp-service-type) | |||
| | | | +--rw dhcp-service-type? | | | | | +--rw dhcp-service-type? | |||
| | | | enumeration | | | | | enumeration | |||
| | | +--rw (dhcp-relay)? | | | | +--rw (dhcp-relay)? | |||
| | | +--:(customer-dhcp-servers) | | | | +--:(customer-dhcp-servers) | |||
| | | +--rw customer-dhcp-servers | | | | +--rw customer-dhcp-servers | |||
| | | +--rw server-ip-address* | | | | +--rw server-ip-address* | |||
| | | inet:ipv6-address | | | | inet:ipv6-address | |||
| | +--:(static-addresses) | | | +--:(static-addresses) | |||
| | +--rw address* [address-id] | | | +--rw address* [address-id] | |||
| | +--rw address-id string | | | +--rw address-id string | |||
| | +--rw customer-address? inet:ipv6-address | | | +--rw customer-address? inet:ipv6-address | |||
| | +--rw failure-detection-profile? | | | +--rw failure-detection-profile? | |||
| | failure-detection-profile-reference | | | failure-detection-profile-reference | |||
| | {vpn-common:bfd}? | | | {vpn-common:bfd}? | |||
| +--rw (l3-service)? | | +--rw (l3-service)? | |||
| +--:(l3-tunnel-service) | | +--:(l3-tunnel-service) | |||
| +--rw l3-tunnel-service | | +--rw l3-tunnel-service | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| ... | | ... | |||
Figure 13: Layer 3 Connection Tree Structure (IPv6) | Figure 13: Layer 3 Connection Tree Structure (IPv6) | |||
5.2.5.3. Routing | 5.2.5.3. Routing | |||
As shown in the tree depicted in Figure 14, the 'routing-protocols' | As shown in the tree depicted in Figure 14, the 'routing-protocols' | |||
container defines the required parameters to enable the desired | container defines the required parameters to enable the desired | |||
routing features for an AC. One or more routing protocols can be | routing features for an AC. One or more routing protocols can be | |||
associated with an AC. Such routing protocols will be then enabled | associated with an AC. Such routing protocols will then be enabled | |||
between a PE and the customer termination points. Each routing | between a PE and the customer termination points. Each routing | |||
instance is uniquely identified by the combination of the 'id' and | instance is uniquely identified by the combination of the 'id' and | |||
'type' to accommodate scenarios where multiple instances of the same | 'type' to accommodate scenarios where multiple instances of the same | |||
routing protocol have to be configured on the same link. | routing protocol have to be configured on the same link. | |||
In addition to static routing (Section 5.2.5.3.1), the module | In addition to static routing (Section 5.2.5.3.1), the module | |||
supports BGP (Section 5.2.5.3.2), OSPF (Section 5.2.5.3.3), IS-IS | supports BGP (Section 5.2.5.3.2), OSPF (Section 5.2.5.3.3), IS-IS | |||
(Section 5.2.5.3.4), and RIP (Section 5.2.5.3.5). It also includes a | (Section 5.2.5.3.4), and RIP (Section 5.2.5.3.5). It also includes a | |||
reference to the 'routing-profile-identifier' defined in | reference to the 'routing-profile-identifier' defined in | |||
Section 5.2.2, so that additional constraints can be applied to a | Section 5.2.2, so that additional constraints can be applied to a | |||
specific instance of each routing protocol. Moreover, the module | specific instance of each routing protocol. Moreover, the module | |||
supports VRRP (Section 5.2.5.3.6). | supports VRRP (Section 5.2.5.3.6). | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | ||||
+--rw service-provisioning-profiles | ||||
| ... | ||||
+--rw attachment-circuits | ||||
+--rw ac-group-profile* [name] | ||||
| ... | ||||
+--rw placement-constraints | ||||
| ... | ||||
+--rw ac* [name] | ||||
... | ||||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| ... | ||||
+--rw ip-connection {ac-common:layer3-ac}? | ||||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | ||||
| +--rw id string | ||||
| +--rw type? identityref | ||||
| +--rw routing-profiles* [id] | ||||
| | +--rw id routing-profile-reference | ||||
| | +--rw type? identityref | ||||
| +--rw static | ||||
| | ... | ||||
| +--rw bgp {vpn-common:rtg-bgp}? | ||||
| | ... | ||||
| +--rw ospf {vpn-common:rtg-ospf}? | ||||
| | ... | ||||
| +--rw isis {vpn-common:rtg-isis}? | ||||
| | ... | ||||
| +--rw rip {vpn-common:rtg-rip}? | ||||
| | ... | ||||
| +--rw vrrp {vpn-common:rtg-vrrp}? | ||||
| ... | ||||
+--rw oam | ||||
| ... | | ... | |||
+--rw attachment-circuits | +--rw security | |||
+--rw ac-group-profile* [name] | | ... | |||
| ... | +--rw service | |||
+--rw placement-constraints | ... | |||
| ... | ||||
+--rw ac* [name] | ||||
... | ||||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| ... | ||||
+--rw ip-connection {ac-common:layer3-ac}? | ||||
| ... | ||||
+--rw routing-protocols | ||||
| +--rw routing-protocol* [id] | ||||
| +--rw id string | ||||
| +--rw type? identityref | ||||
| +--rw routing-profiles* [id] | ||||
| | +--rw id routing-profile-reference | ||||
| | +--rw type? identityref | ||||
| +--rw static | ||||
| | ... | ||||
| +--rw bgp {vpn-common:rtg-bgp}? | ||||
| | ... | ||||
| +--rw ospf {vpn-common:rtg-ospf}? | ||||
| | ... | ||||
| +--rw isis {vpn-common:rtg-isis}? | ||||
| | ... | ||||
| +--rw rip {vpn-common:rtg-rip}? | ||||
| | ... | ||||
| +--rw vrrp {vpn-common:rtg-vrrp}? | ||||
| ... | ||||
+--rw oam | ||||
| ... | ||||
+--rw security | ||||
| ... | ||||
+--rw service | ||||
... | ||||
Figure 14: Routing Tree Structure | Figure 14: Routing Tree Structure | |||
5.2.5.3.1. Static Routing | 5.2.5.3.1. Static Routing | |||
The static tree structure is shown in Figure 15. | The static tree structure is shown in Figure 15. | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
skipping to change at page 37, line 41 ¶ | skipping to change at line 1580 ¶ | |||
'status': Used to convey the status of a static route entry. This | 'status': Used to convey the status of a static route entry. This | |||
data node can also be used to control the (de)activation of | data node can also be used to control the (de)activation of | |||
individual static route entries. | individual static route entries. | |||
5.2.5.3.2. BGP | 5.2.5.3.2. BGP | |||
An AC service activation with BGP routing SHOULD include at least the | An AC service activation with BGP routing SHOULD include at least the | |||
customer's AS Number (ASN) and the provider's ASN. Additional | customer's AS Number (ASN) and the provider's ASN. Additional | |||
information can be supplied by a customer in a request or exposed by | information can be supplied by a customer in a request or exposed by | |||
a provider in a response to a query request in order ease the process | a provider in a response to a query request in order to ease the | |||
of automating the provisioning of BGP sessions (the customer does not | process of automating the provisioning of BGP sessions (the customer | |||
use the primary IP address to establish the underlying BGP session, | does not use the primary IP address to establish the underlying BGP | |||
communicate the provider's IP address used to establish the BGP | session, communicate the provider's IP address used to establish the | |||
session, share authentication parameters, bind the session to a | BGP session, share authentication parameters, bind the session to a | |||
forwarding protection profile, etc.). | forwarding protection profile, etc.). | |||
The BGP tree structure is shown in Figure 16. | The BGP tree structure is shown in Figure 16. | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
| +--rw id string | | +--rw id string | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| +--rw routing-profiles* [id] | | +--rw routing-profiles* [id] | |||
skipping to change at page 39, line 48 ¶ | skipping to change at line 1681 ¶ | |||
| +--rw isis {vpn-common:rtg-isis}? | | +--rw isis {vpn-common:rtg-isis}? | |||
| | ... | | | ... | |||
| +--rw rip {vpn-common:rtg-rip}? | | +--rw rip {vpn-common:rtg-rip}? | |||
| | ... | | | ... | |||
| +--rw vrrp {vpn-common:rtg-vrrp}? | | +--rw vrrp {vpn-common:rtg-vrrp}? | |||
| ... | | ... | |||
Figure 16: BGP Tree Structure | Figure 16: BGP Tree Structure | |||
For deployment cases where an AC service request includes a list of | For deployment cases where an AC service request includes a list of | |||
neighbors with redundant information, the ACaaS allows to factorize | neighbors with redundant information, the ACaaS allows factorizing | |||
shared data by means of 'peer-group'. The presence of 'peer-groups' | shared data by means of 'peer-group'. Thus, the presence of 'peer- | |||
in a service request is thus optional. | groups' in a service request is optional. | |||
The following data nodes are supported for each BGP 'peer-group': | The following data nodes are supported for each BGP 'peer-group': | |||
'name': Defines a name for the peer group. | 'name': Defines a name for the peer group. | |||
'local-as': Reports the provider's ASN. This information is used at | 'local-as': Reports the provider's ASN. This information is used at | |||
the customer side to configure the BGP session with the provider | the customer side to configure the BGP session with the provider | |||
network. | network. | |||
'peer-as': Indicates the customer's ASN. This information is used | 'peer-as': Indicates the customer's ASN. This information is used | |||
skipping to change at page 41, line 13 ¶ | skipping to change at line 1740 ¶ | |||
RecvID (Section 3.1 of [RFC5925]). | 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: | |||
'server-reference': Reports the internal reference that is assigned | 'server-reference': Reports the internal reference that is assigned | |||
by the provider for this BGP session. This is an optional | by the provider for this BGP session. This is an optional | |||
parameter. | parameter. | |||
'remote-address': Specifies the customer's IP address used to | 'remote-address': Specifies the customer's IP address used to | |||
establishing this BGP session. If not present, this means that | establish this BGP session. If not present, this means that the | |||
the primary customer IP address is used as remote IP address. | primary customer IP address is used as the remote IP address. | |||
'requested-start': Specifies the requested date and time when the | 'requested-start': Specifies the requested date and time when the | |||
BGP session is expected to be active. | BGP session is expected to be active. | |||
'requested-stop': Specifies the requested date and time when the BGP | 'requested-stop': Specifies the requested date and time when the BGP | |||
session is expected to be disabled. | session is expected to be disabled. | |||
'actual-start': Reports the actual date and time when the BGP | 'actual-start': Reports the actual date and time when the BGP | |||
session actually was enabled. | session actually was enabled. | |||
'actual-stop': Reports the actual date and time when the BGP session | 'actual-stop': Reports the actual date and time when the BGP session | |||
actually was disabled. | actually was disabled. | |||
'status': Indicates the status of the BGP routing instance. | 'status': Indicates the status of the BGP routing instance. | |||
'peer-group': Specifies a name of a peer group. | 'peer-group': Specifies 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. | |||
This is an optional parameter. | This is an optional parameter. | |||
'failure-detection-profile': Indicates a failure detection profile | 'failure-detection-profile': Indicates a failure detection profile | |||
(BFD) that applies for a BGP neighbor. This is an optional | (BFD) that applies for a BGP neighbor. This is an optional | |||
parameter. | parameter. | |||
5.2.5.3.3. OSPF | 5.2.5.3.3. OSPF | |||
The OSPF tree structure is shown in Figure 17. | The OSPF tree structure is shown in Figure 17. | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
| +--rw id string | | +--rw id string | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| +--rw routing-profiles* [id] | | +--rw routing-profiles* [id] | |||
| | +--rw id routing-profile-reference | | | +--rw id routing-profile-reference | |||
| | +--rw type? identityref | | | +--rw type? identityref | |||
| +--rw static | | +--rw static | |||
| | ... | | | ... | |||
| +--rw bgp {vpn-common:rtg-bgp}? | | +--rw bgp {vpn-common:rtg-bgp}? | |||
| | ... | | | ... | |||
| +--rw ospf {vpn-common:rtg-ospf}? | | +--rw ospf {vpn-common:rtg-ospf}? | |||
| | +--rw address-family? identityref | | | +--rw address-family? identityref | |||
| | +--rw area-id yang:dotted-quad | | | +--rw area-id yang:dotted-quad | |||
| | +--rw metric? uint16 | | | +--rw metric? uint16 | |||
| | +--rw authentication | | | +--rw authentication | |||
| | | +--rw enabled? boolean | | | | +--rw enabled? boolean | |||
| | | +--rw keying-material | | | | +--rw keying-material | |||
| | | +--rw (option)? | | | | +--rw (option)? | |||
| | | +--:(auth-key-chain) | | | | +--:(auth-key-chain) | |||
| | | | +--rw key-chain? | | | | | +--rw key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw key-id? uint32 | | | | +--rw key-id? uint32 | |||
| | | +--rw key? string | | | | +--rw key? string | |||
| | | +--rw crypto-algorithm? identityref | | | | +--rw crypto-algorithm? 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 isis {vpn-common:rtg-isis}? | | +--rw isis {vpn-common:rtg-isis}? | |||
| | ... | | | ... | |||
| +--rw rip {vpn-common:rtg-rip}? | | +--rw rip {vpn-common:rtg-rip}? | |||
| | ... | | | ... | |||
| +--rw vrrp {vpn-common:rtg-vrrp}? | | +--rw vrrp {vpn-common:rtg-vrrp}? | |||
| ... | | ... | |||
Figure 17: OSPF Tree Structure | Figure 17: OSPF Tree Structure | |||
The following OSPF data nodes are supported: | The following OSPF 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. | families are to be activated. | |||
'area-id': Indicates the OSPF Area ID. | 'area-id': Indicates the OSPF Area ID. | |||
skipping to change at page 44, line 5 ¶ | skipping to change at line 1839 ¶ | |||
for the OSPF instance. The model supports authentication options | for the OSPF instance. The model supports authentication options | |||
that are common to both OSPF versions: the Authentication Trailer | that are common to both OSPF versions: the Authentication Trailer | |||
for OSPFv2 [RFC5709][RFC7474] and OSPFv3 [RFC7166]. | for OSPFv2 [RFC5709][RFC7474] and OSPFv3 [RFC7166]. | |||
'status': Indicates the status of the OSPF routing instance. | 'status': Indicates the status of the OSPF routing instance. | |||
5.2.5.3.4. IS-IS | 5.2.5.3.4. IS-IS | |||
The IS-IS tree structure is shown in Figure 18. | The IS-IS tree structure is shown in Figure 18. | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
| +--rw id string | | +--rw id string | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| +--rw routing-profiles* [id] | | +--rw routing-profiles* [id] | |||
| | +--rw id routing-profile-reference | | | +--rw id routing-profile-reference | |||
| | +--rw type? identityref | | | +--rw type? identityref | |||
| +--rw static | | +--rw static | |||
| | ... | | | ... | |||
| +--rw bgp {vpn-common:rtg-bgp}? | | +--rw bgp {vpn-common:rtg-bgp}? | |||
| | ... | | | ... | |||
| +--rw ospf {vpn-common:rtg-ospf}? | | +--rw ospf {vpn-common:rtg-ospf}? | |||
| | ... | | | ... | |||
| +--rw isis {vpn-common:rtg-isis}? | | +--rw isis {vpn-common:rtg-isis}? | |||
| | +--rw address-family? identityref | | | +--rw address-family? identityref | |||
| | +--rw area-address area-address | | | +--rw area-address area-address | |||
| | +--rw authentication | | | +--rw authentication | |||
| | | +--rw enabled? boolean | | | | +--rw enabled? boolean | |||
| | | +--rw keying-material | | | | +--rw keying-material | |||
| | | +--rw (option)? | | | | +--rw (option)? | |||
| | | +--:(auth-key-chain) | | | | +--:(auth-key-chain) | |||
| | | | +--rw key-chain? | | | | | +--rw key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw key-id? uint32 | | | | +--rw key-id? uint32 | |||
| | | +--rw key? string | | | | +--rw key? string | |||
| | | +--rw crypto-algorithm? identityref | | | | +--rw crypto-algorithm? 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 rip {vpn-common:rtg-rip}? | | +--rw rip {vpn-common:rtg-rip}? | |||
| | ... | | | ... | |||
| +--rw vrrp {vpn-common:rtg-vrrp}? | | +--rw vrrp {vpn-common:rtg-vrrp}? | |||
| ... | | ... | |||
Figure 18: IS-IS Tree Structure | Figure 18: IS-IS Tree Structure | |||
The following IS-IS data nodes are supported: | The following IS-IS 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. | families are to be activated. | |||
'area-address': Indicates the IS-IS area address. | 'area-address': Indicates the IS-IS area address. | |||
skipping to change at page 45, line 16 ¶ | skipping to change at line 1899 ¶ | |||
for the IS-IS instance. Both the specification of a key chain | for the IS-IS instance. Both the specification of a key chain | |||
[RFC8177] and the direct specification of key and authentication | [RFC8177] and the direct specification of key and authentication | |||
algorithms are supported. | algorithms are supported. | |||
'status': Indicates the status of the IS-IS routing instance. | 'status': Indicates the status of the IS-IS routing instance. | |||
5.2.5.3.5. RIP | 5.2.5.3.5. RIP | |||
The RIP tree structure is shown in Figure 19. | The RIP tree structure is shown in Figure 19. | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
| +--rw id string | | +--rw id string | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| +--rw routing-profiles* [id] | | +--rw routing-profiles* [id] | |||
| | +--rw id routing-profile-reference | | | +--rw id routing-profile-reference | |||
| | +--rw type? identityref | | | +--rw type? identityref | |||
| +--rw static | | +--rw static | |||
| | ... | | | ... | |||
| +--rw bgp {vpn-common:rtg-bgp}? | | +--rw bgp {vpn-common:rtg-bgp}? | |||
| | ... | | | ... | |||
| +--rw ospf {vpn-common:rtg-ospf}? | | +--rw ospf {vpn-common:rtg-ospf}? | |||
| | ... | | | ... | |||
| +--rw isis {vpn-common:rtg-isis}? | | +--rw isis {vpn-common:rtg-isis}? | |||
| | ... | | | ... | |||
| +--rw rip {vpn-common:rtg-rip}? | | +--rw rip {vpn-common:rtg-rip}? | |||
| | +--rw address-family? identityref | | | +--rw address-family? identityref | |||
| | +--rw authentication | | | +--rw authentication | |||
| | | +--rw enabled? boolean | | | | +--rw enabled? boolean | |||
| | | +--rw keying-material | | | | +--rw keying-material | |||
| | | +--rw (option)? | | | | +--rw (option)? | |||
| | | +--:(auth-key-chain) | | | | +--:(auth-key-chain) | |||
| | | | +--rw key-chain? | | | | | +--rw key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw key? string | | | | +--rw key? string | |||
| | | +--rw crypto-algorithm? identityref | | | | +--rw crypto-algorithm? 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 vrrp {vpn-common:rtg-vrrp}? | | +--rw vrrp {vpn-common:rtg-vrrp}? | |||
| ... | | ... | |||
Figure 19: RIP Tree Structure | Figure 19: RIP Tree Structure | |||
'address-family' indicates whether IPv4, IPv6, or both address | 'address-family' indicates whether IPv4, IPv6, or both address | |||
families are to be activated. For example, this parameter is used to | families are to be activated. For example, this parameter is used to | |||
determine whether RIPv2 [RFC2453], RIP Next Generation (RIPng) | determine whether RIPv2 [RFC2453], RIP Next Generation (RIPng) | |||
[RFC2080], or both are to be enabled. | [RFC2080], or both are to be enabled. | |||
5.2.5.3.6. VRRP | 5.2.5.3.6. VRRP | |||
The model supports the Virtual Router Redundancy Protocol (VRRP) | The model supports the Virtual Router Redundancy Protocol (VRRP) | |||
[RFC9568] on an AC (Figure 20). | [RFC9568] on an AC (Figure 20). | |||
| ... | | ... | |||
+--rw routing-protocols | +--rw routing-protocols | |||
| +--rw routing-protocol* [id] | | +--rw routing-protocol* [id] | |||
| +--rw id string | | +--rw id string | |||
| +--rw type? identityref | | +--rw type? identityref | |||
| +--rw routing-profiles* [id] | | +--rw routing-profiles* [id] | |||
| | +--rw id routing-profile-reference | | | +--rw id routing-profile-reference | |||
| | +--rw type? identityref | | | +--rw type? identityref | |||
| +--rw static | | +--rw static | |||
| | ... | | | ... | |||
| +--rw bgp {vpn-common:rtg-bgp}? | | +--rw bgp {vpn-common:rtg-bgp}? | |||
| | ... | | | ... | |||
| +--rw ospf {vpn-common:rtg-ospf}? | | +--rw ospf {vpn-common:rtg-ospf}? | |||
| | ... | | | ... | |||
| +--rw isis {vpn-common:rtg-isis}? | | +--rw isis {vpn-common:rtg-isis}? | |||
| | ... | | | ... | |||
| +--rw rip {vpn-common:rtg-rip}? | | +--rw rip {vpn-common:rtg-rip}? | |||
| | ... | | | ... | |||
| +--rw vrrp {vpn-common:rtg-vrrp}? | | +--rw vrrp {vpn-common:rtg-vrrp}? | |||
| +--rw address-family? identityref | | +--rw address-family? 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 | |||
Figure 20: VRRP Tree Structure | Figure 20: VRRP Tree Structure | |||
The following data nodes are supported: | The following 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. Note that VRRP version 3 [RFC9568] | families are to be activated. Note that VRRP version 3 [RFC9568] | |||
supports both IPv4 and IPv6. | supports both IPv4 and IPv6. | |||
'status': Indicates the status of the VRRP instance. | 'status': Indicates the status of the VRRP instance. | |||
Note that no authentication data node is included for VRRP, as there | Note that no authentication data node is included for VRRP, as there | |||
isn't any type of VRRP authentication at this time (see Section 9 of | isn't any type of VRRP authentication at this time (see Section 9 of | |||
[RFC9568]). | [RFC9568]). | |||
5.2.5.4. Operations, Administration, and Maintenance (OAM) | 5.2.5.4. Operations, Administration, and Maintenance (OAM) | |||
As shown in the tree depicted in Figure 21, the 'oam' container | As shown in the tree depicted in Figure 21, the 'oam' container | |||
defines OAM-related parameters of an AC. | defines OAM-related parameters of an AC. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | ||||
+--rw service-provisioning-profiles | ||||
| ... | ||||
+--rw attachment-circuits | ||||
+--rw ac-group-profile* [name] | ||||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw ac* [name] | |||
+--rw ac-group-profile* [name] | ... | |||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| ... | | ... | |||
+--rw placement-constraints | +--rw ip-connection {ac-common:layer3-ac}? | |||
| ... | | ... | |||
+--rw ac* [name] | +--rw routing-protocols | |||
| ... | ||||
+--rw oam | ||||
| +--rw bfd {vpn-common:bfd}? | ||||
| +--rw session* [id] | ||||
| +--rw id string | ||||
| +--rw local-address? inet:ip-address | ||||
| +--rw remote-address? inet:ip-address | ||||
| +--rw profile? | ||||
| | failure-detection-profile-reference | ||||
| +--rw holdtime? uint32 | ||||
| +--rw status | ||||
| +--rw admin-status | ||||
| | +--rw status? identityref | ||||
| | +--ro last-change? yang:date-and-time | ||||
| +--ro oper-status | ||||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
+--rw security | ||||
| ... | ||||
+--rw service | ||||
... | ... | |||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| ... | ||||
+--rw ip-connection {ac-common:layer3-ac}? | ||||
| ... | ||||
+--rw routing-protocols | ||||
| ... | ||||
+--rw oam | ||||
| +--rw bfd {vpn-common:bfd}? | ||||
| +--rw session* [id] | ||||
| +--rw id string | ||||
| +--rw local-address? inet:ip-address | ||||
| +--rw remote-address? inet:ip-address | ||||
| +--rw profile? | ||||
| | failure-detection-profile-reference | ||||
| +--rw holdtime? uint32 | ||||
| +--rw status | ||||
| +--rw admin-status | ||||
| | +--rw status? identityref | ||||
| | +--ro last-change? yang:date-and-time | ||||
| +--ro oper-status | ||||
| +--ro status? identityref | ||||
| +--ro last-change? yang:date-and-time | ||||
+--rw security | ||||
| ... | ||||
+--rw service | ||||
... | ||||
Figure 21: OAM Tree Structure | Figure 21: OAM Tree Structure | |||
This version of the module supports BFD. The following BFD data | This version of the module supports BFD. The following BFD data | |||
nodes can be specified: | nodes can be specified: | |||
'id': An identifier that uniquely identifies a BFD session. | 'id': An identifier that uniquely identifies a BFD session. | |||
'local-address': Indicates the provider's IP address used for a BFD | 'local-address': Indicates the provider's IP address used for a BFD | |||
session. | session. | |||
skipping to change at page 49, line 5 ¶ | skipping to change at line 2059 ¶ | |||
'holdtime': Used to indicate the expected BFD holddown time, in | 'holdtime': Used to indicate the expected BFD holddown time, in | |||
milliseconds. | milliseconds. | |||
'status': Indicates the status of the BFD session. | 'status': Indicates the status of the BFD session. | |||
5.2.5.5. Security | 5.2.5.5. Security | |||
As shown in the tree depicted in Figure 22, the 'security' container | As shown in the tree depicted in Figure 22, the 'security' container | |||
defines a set of AC security parameters. | defines a set of AC security parameters. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | ||||
+--rw service-provisioning-profiles | ||||
| ... | ||||
+--rw attachment-circuits | ||||
+--rw ac-group-profile* [name] | ||||
| ... | ||||
+--rw placement-constraints | ||||
| ... | ||||
+--rw ac* [name] | ||||
... | ||||
+--rw l2-connection {ac-common:layer2-ac}? | ||||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw ip-connection {ac-common:layer3-ac}? | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw routing-protocols | |||
+--rw ac-group-profile* [name] | | ... | |||
| ... | +--rw oam | |||
+--rw placement-constraints | | ... | |||
| ... | +--rw security | |||
+--rw ac* [name] | | +--rw encryption {vpn-common:encryption}? | |||
... | | | +--rw enabled? boolean | |||
+--rw l2-connection {ac-common:layer2-ac}? | | | +--rw layer? enumeration | |||
| ... | | +--rw encryption-profile | |||
+--rw ip-connection {ac-common:layer3-ac}? | | +--rw (profile)? | |||
| ... | | +--:(provider-profile) | |||
+--rw routing-protocols | | | +--rw provider-profile? | |||
| ... | | | encryption-profile-reference | |||
+--rw oam | | +--:(customer-profile) | |||
| ... | | +--rw customer-key-chain? | |||
+--rw security | | key-chain:key-chain-ref | |||
| +--rw encryption {vpn-common:encryption}? | +--rw service | |||
| | +--rw enabled? boolean | ... | |||
| | +--rw layer? enumeration | ||||
| +--rw encryption-profile | ||||
| +--rw (profile)? | ||||
| +--:(provider-profile) | ||||
| | +--rw provider-profile? | ||||
| | encryption-profile-reference | ||||
| +--:(customer-profile) | ||||
| +--rw customer-key-chain? | ||||
| key-chain:key-chain-ref | ||||
+--rw service | ||||
... | ||||
Figure 22: Security Tree Structure | Figure 22: Security Tree Structure | |||
The 'security' container specifies a minimum set of encryption- | The 'security' container specifies a minimum set of encryption- | |||
related parameters that can be requested to be applied to traffic for | related parameters that can be requested to be applied to traffic for | |||
a given AC. Typically, the model can be used to directly control the | a given AC. Typically, the model can be used to directly control the | |||
encryption to be applied (e.g., Layer 2 or Layer 3 encryption) or | encryption to be applied (e.g., Layer 2 or Layer 3 encryption) or | |||
invoke a local encryption profile (see Section 5.2.2.1). For | invoke a local encryption profile (see Section 5.2.2.1). For | |||
example, a service provider may use IPsec when a customer requests | example, a service provider may use IPsec when a customer requests | |||
Layer 3 encryption for an AC. | Layer 3 encryption for an AC. | |||
5.2.5.6. Service | 5.2.5.6. Service | |||
The structure of the 'service' container is depicted in Figure 23. | The structure of the 'service' container is depicted in Figure 23. | |||
+--rw specific-provisioning-profiles | +--rw specific-provisioning-profiles | |||
| ... | | ... | |||
+--rw service-provisioning-profiles | +--rw service-provisioning-profiles | |||
| ... | | ... | |||
+--rw attachment-circuits | +--rw attachment-circuits | |||
+--rw ac-group-profile* [name] | +--rw ac-group-profile* [name] | |||
| ... | | ... | |||
+--rw placement-constraints | +--rw placement-constraints | |||
| ... | | ... | |||
+--rw ac* [name] | +--rw ac* [name] | |||
... | ... | |||
+--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 | |||
+--rw mtu? uint32 | +--rw mtu? uint32 | |||
+--rw svc-pe-to-ce-bandwidth {vpn-common:inbound-bw}? | +--rw svc-pe-to-ce-bandwidth {vpn-common:inbound-bw}? | |||
| +--rw bandwidth* [bw-type] | | +--rw bandwidth* [bw-type] | |||
| +--rw bw-type identityref | | +--rw bw-type identityref | |||
| +--rw (type)? | | +--rw (type)? | |||
| +--:(per-cos) | | +--:(per-cos) | |||
| | +--rw cos* [cos-id] | | | +--rw cos* [cos-id] | |||
| | +--rw cos-id uint8 | | | +--rw cos-id uint8 | |||
| | +--rw cir? uint64 | | | +--rw cir? uint64 | |||
| | +--rw cbs? uint64 | | | +--rw cbs? uint64 | |||
| | +--rw eir? uint64 | | | +--rw eir? uint64 | |||
| | +--rw ebs? uint64 | | | +--rw ebs? uint64 | |||
| | +--rw pir? uint64 | | | +--rw pir? uint64 | |||
| | +--rw pbs? uint64 | | | +--rw pbs? uint64 | |||
| +--:(other) | | +--:(other) | |||
| +--rw cir? uint64 | | +--rw cir? uint64 | |||
| +--rw cbs? uint64 | | +--rw cbs? uint64 | |||
| +--rw eir? uint64 | | +--rw eir? uint64 | |||
| +--rw ebs? uint64 | | +--rw ebs? uint64 | |||
| +--rw pir? uint64 | | +--rw pir? uint64 | |||
| +--rw pbs? uint64 | | +--rw pbs? uint64 | |||
+--rw svc-ce-to-pe-bandwidth {vpn-common:outbound-bw}? | +--rw svc-ce-to-pe-bandwidth {vpn-common:outbound-bw}? | |||
| +--rw bandwidth* [bw-type] | | +--rw bandwidth* [bw-type] | |||
| +--rw bw-type identityref | | +--rw bw-type identityref | |||
| +--rw (type)? | | +--rw (type)? | |||
| +--:(per-cos) | | +--:(per-cos) | |||
| | +--rw cos* [cos-id] | | | +--rw cos* [cos-id] | |||
| | +--rw cos-id uint8 | | | +--rw cos-id uint8 | |||
| | +--rw cir? uint64 | | | +--rw cir? uint64 | |||
| | +--rw cbs? uint64 | | | +--rw cbs? uint64 | |||
| | +--rw eir? uint64 | | | +--rw eir? uint64 | |||
| | +--rw ebs? uint64 | | | +--rw ebs? uint64 | |||
| | +--rw pir? uint64 | | | +--rw pir? uint64 | |||
| | +--rw pbs? uint64 | | | +--rw pbs? uint64 | |||
| +--:(other) | | +--:(other) | |||
| +--rw cir? uint64 | | +--rw cir? uint64 | |||
| +--rw cbs? uint64 | | +--rw cbs? uint64 | |||
| +--rw eir? uint64 | | +--rw eir? uint64 | |||
| +--rw ebs? uint64 | | +--rw ebs? uint64 | |||
| +--rw pir? uint64 | | +--rw pir? uint64 | |||
| +--rw pbs? uint64 | | +--rw pbs? uint64 | |||
+--rw qos {vpn-common:qos}? | +--rw qos {vpn-common:qos}? | |||
| +--rw qos-profiles | | +--rw qos-profiles | |||
| +--rw qos-profile* [profile] | | +--rw qos-profile* [profile] | |||
| +--rw profile qos-profile-reference | | +--rw profile qos-profile-reference | |||
| +--rw direction? identityref | | +--rw direction? identityref | |||
+--rw access-control-list | +--rw access-control-list | |||
+--rw acl-profiles | +--rw acl-profiles | |||
+--rw acl-profile* [profile] | +--rw acl-profile* [profile] | |||
+--rw profile forwarding-profile-reference | +--rw profile forwarding-profile-reference | |||
Figure 23: Bandwidth Tree Structure | Figure 23: Bandwidth Tree Structure | |||
The 'service' container defines the following data nodes: | The 'service' container defines the following data nodes: | |||
'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': | 'svc-pe-to-ce-bandwidth' and'svc-ce-to-pe-bandwidth': | |||
'svc-pe-to-ce-bandwidth': Indicates the inbound bandwidth of the | ||||
AC (i.e., download bandwidth from the service provider to the | ||||
customer site). | ||||
'svc-pe-to-ce-bandwidth': Indicates the inbound bandwidth of the AC | 'svc-ce-to-pe-bandwidth': Indicates the outbound bandwidth of the | |||
(i.e., download bandwidth from the service provider to the | AC (i.e., upload bandwidth from the customer site to the | |||
customer site). | service provider). | |||
'svc-ce-to-pe-bandwidth': Indicates the outbound bandwidth of the AC | ||||
(i.e., upload bandwidth from the customer site to the service | ||||
provider). | ||||
Both 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth' can be | Both 'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth' can be | |||
represented using the Committed Information Rate (CIR), the Excess | represented using the Committed Information Rate (CIR), the Excess | |||
Information Rate (EIR), or the Peak Information Rate (PIR). Both | Information Rate (EIR), or the Peak Information Rate (PIR). Both | |||
reuse the 'bandwidth-per-type' grouping defined in | reuse the 'bandwidth-per-type' grouping defined in [RFC9833]. | |||
[I-D.ietf-opsawg-teas-common-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 Modules | 6. YANG Modules | |||
6.1. The Bearer Service ("ietf-bearer-svc") YANG Module | 6.1. The Bearer Service ("ietf-bearer-svc") YANG Module | |||
This module uses types defined in [RFC6991], [RFC9181], and | This module uses types defined in [RFC6991], [RFC9181], and | |||
[I-D.ietf-opsawg-teas-common-ac]. | [RFC9833]. | |||
<CODE BEGINS> file "ietf-bearer-svc@2025-01-07.yang" | <CODE BEGINS> file "ietf-bearer-svc@2025-08-11.yang" | |||
module ietf-bearer-svc { | module ietf-bearer-svc { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bearer-svc"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bearer-svc"; | |||
prefix bearer-svc; | prefix bearer-svc; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types, Section 4"; | "RFC 6991: Common YANG Data Types, Section 4"; | |||
} | } | |||
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"; | |||
} | } | |||
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 XXXX: 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> | |||
Author: Richard Roberts | Author: Richard Roberts | |||
<mailto:rroberts@juniper.net> | <mailto:rroberts@juniper.net> | |||
Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
<mailto:oscar.gonzalezdedios@telefonica.com> | <mailto:oscar.gonzalezdedios@telefonica.com> | |||
Author: Samier Barguil | Author: Samier Barguil | |||
<mailto:ssamier.barguil_giraldo@nokia.com> | <mailto:ssamier.barguil_giraldo@nokia.com> | |||
Author: Bo Wu | Author: Bo Wu | |||
<mailto:lana.wubo@huawei.com>"; | <mailto:lana.wubo@huawei.com>"; | |||
description | description | |||
"This YANG module defines a generic YANG model for exposing | "This YANG module defines a generic YANG module for exposing | |||
network bearers as a service. | network bearers as a service. | |||
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 xxx; see the | This version of this YANG module is part of RFC xxx; 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: 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)"; | |||
} | } | |||
// Identities | // Identities | |||
identity identification-type { | identity identification-type { | |||
description | description | |||
"Base identity for identification of bearers."; | "Base identity for identification of bearers."; | |||
} | } | |||
skipping to change at page 55, line 34 ¶ | skipping to change at line 2375 ¶ | |||
} | } | |||
// Reusable groupings | // Reusable groupings | |||
grouping location-information { | grouping location-information { | |||
description | description | |||
"Basic location information."; | "Basic location information."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"Provides a location name. This data node can be mapped, | "Provides a location name. This data node can be mapped, | |||
e.g., to the 3GPP NRM IOC ManagedElement."; | e.g., to the 3GPP NRM IOC ManagedElement."; | |||
} | } | |||
leaf address { | leaf address { | |||
type string; | type string; | |||
description | description | |||
"Address (number and street) of the device/site."; | "Address (number and street) of the device/site."; | |||
} | } | |||
leaf city { | leaf city { | |||
type string; | type string; | |||
description | description | |||
"City of the device/site."; | "City of the device/site."; | |||
} | } | |||
leaf postal-code { | leaf postal-code { | |||
type string; | type string; | |||
description | description | |||
"Postal code of the device/site."; | "Postal code of the device/site."; | |||
} | } | |||
leaf state { | leaf state { | |||
type string; | type string; | |||
description | description | |||
"State of the device/site. This leaf can also be used to | "State of the device/site. This leaf can also be used to | |||
describe a region for a country that does not have | describe a region for a country that does not have | |||
states."; | states."; | |||
} | } | |||
leaf country-code { | leaf country-code { | |||
type string { | type string { | |||
pattern '[A-Z]{2}'; | pattern '[A-Z]{2}'; | |||
} | } | |||
description | description | |||
"Country of the device/site. | "Country of the device/site. | |||
Expressed as ISO ALPHA-2 code."; | Expressed as ISO ALPHA-2 code."; | |||
skipping to change at page 58, line 20 ¶ | skipping to change at line 2506 ¶ | |||
key "name"; | key "name"; | |||
config false; | config false; | |||
description | description | |||
"Reports the list of available locations."; | "Reports the list of available locations."; | |||
uses location-information; | uses location-information; | |||
} | } | |||
} | } | |||
} | } | |||
container bearers { | container bearers { | |||
description | description | |||
"Main container for the bearers. The timing constraints | "Main container for the bearers. The timing constraints | |||
indicated at the bearer level take precedence over the | indicated at the bearer level take precedence over the | |||
global values indicated at the bearers level."; | global values indicated at the bearers level."; | |||
uses ac-common:op-instructions; | uses ac-common:op-instructions; | |||
container placement-constraints { | container placement-constraints { | |||
description | description | |||
"Diversity constraint type."; | "Diversity constraint type."; | |||
uses placement-constraints; | uses placement-constraints; | |||
} | } | |||
list bearer { | list bearer { | |||
key "name"; | key "name"; | |||
skipping to change at page 59, line 7 ¶ | skipping to change at line 2541 ¶ | |||
type string; | type string; | |||
description | description | |||
"Indicates the name of the customer that requested this | "Indicates the name of the customer that requested this | |||
bearer."; | bearer."; | |||
} | } | |||
uses vpn-common:vpn-components-group; | uses vpn-common:vpn-components-group; | |||
leaf op-comment { | leaf op-comment { | |||
type string; | type string; | |||
description | description | |||
"Includes comments that can be shared with operational | "Includes comments that can be shared with operational | |||
teams and which may be useful for the activation of a | teams and that may be useful for the activation of a | |||
bearer. This may include, for example, information | bearer. This may include, for example, information | |||
about the building, level, etc."; | about the building, level, etc."; | |||
} | } | |||
leaf bearer-parent-ref { | leaf bearer-parent-ref { | |||
type bearer-svc:bearer-ref; | type bearer-svc:bearer-ref; | |||
description | description | |||
"Specifies the parent bearer. This can be used, e.g., | "Specifies the parent bearer. This can be used, e.g., | |||
for a Link Aggregation Group (LAG)."; | for a Link Aggregation Group (LAG)."; | |||
} | } | |||
leaf-list bearer-lag-member { | leaf-list bearer-lag-member { | |||
type bearer-svc:bearer-ref; | type bearer-svc:bearer-ref; | |||
config false; | config false; | |||
description | description | |||
"Reports LAG members."; | "Reports LAG members."; | |||
} | } | |||
leaf sync-phy-capable { | leaf sync-phy-capable { | |||
type boolean; | type boolean; | |||
config false; | config false; | |||
description | description | |||
"Indicates, when set to true, that a mechanism for physical | "Indicates, when set to true, that a mechanism for physical | |||
layer synchronization is supported for this bearer. | layer synchronization is supported for this bearer. | |||
No such mechanism is supported if set to false."; | No such mechanism is supported if set to false."; | |||
} | } | |||
leaf sync-phy-enabled { | leaf sync-phy-enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates, when set to true, that a mechanism for physical | "Indicates, when set to true, that a mechanism for physical | |||
layer synchronization is enabled for this bearer. No such | layer synchronization is enabled for this bearer. No such | |||
mechanism is enabled if set to false."; | mechanism is enabled if set to false."; | |||
} | } | |||
leaf sync-phy-type { | leaf sync-phy-type { | |||
when "../sync-phy-enabled='true'"; | when "../sync-phy-enabled='true'"; | |||
type identityref { | type identityref { | |||
base sync-phy-type; | base sync-phy-type; | |||
} | } | |||
description | description | |||
"Type of the physical layer synchronization that is enabled | "Type of the physical layer synchronization that is enabled | |||
for this bearer."; | for this bearer."; | |||
} | } | |||
leaf provider-location-reference { | leaf provider-location-reference { | |||
type string; | type string; | |||
description | description | |||
"Specifies the provider's location reference."; | "Specifies the provider's location reference."; | |||
} | } | |||
container customer-point { | container customer-point { | |||
description | description | |||
"Base container to link the Bearer existence."; | "Base container to link the bearer existence."; | |||
leaf identified-by { | leaf identified-by { | |||
type identityref { | type identityref { | |||
base identification-type; | base identification-type; | |||
} | } | |||
description | description | |||
"Specifies how the customer point is identified."; | "Specifies how the customer point is identified."; | |||
} | } | |||
container device { | container device { | |||
when "derived-from-or-self(../identified-by, " | when "derived-from-or-self(../identified-by, " | |||
+ "'bearer-svc:device-id') or " | + "'bearer-svc:device-id') or " | |||
skipping to change at page 61, line 13 ¶ | skipping to change at line 2643 ¶ | |||
container location { | container location { | |||
description | description | |||
"Location of the node."; | "Location of the node."; | |||
uses location-information; | uses location-information; | |||
} | } | |||
} | } | |||
leaf custom-id { | leaf custom-id { | |||
when "derived-from-or-self(../identified-by, " | when "derived-from-or-self(../identified-by, " | |||
+ "'bearer-svc:custom')" { | + "'bearer-svc:custom')" { | |||
description | description | |||
"Only enabled id identified-by is custom."; | "Only enabled if identified-by is custom."; | |||
} | } | |||
type string; | type string; | |||
description | description | |||
"The semantic of this identifier is shared between the | "The semantics of this identifier is shared between the | |||
customer/provider using out-of-band means."; | customer/provider using out-of-band means."; | |||
} | } | |||
} | } | |||
leaf type { | leaf type { | |||
type identityref { | type identityref { | |||
base bearer-type; | base bearer-type; | |||
} | } | |||
description | description | |||
"Type of the bearer (e.g., Ethernet or wireless)."; | "Type of the bearer (e.g., Ethernet or wireless)."; | |||
} | } | |||
leaf test-only { | leaf test-only { | |||
type empty; | type empty; | |||
description | description | |||
"When present, this indicates that this is a feasibility | "When present, this indicates that this is a feasibility | |||
check request. No resources are committed for such bearer | check request. No resources are committed for such bearer | |||
requests."; | requests."; | |||
} | } | |||
leaf bearer-reference { | leaf bearer-reference { | |||
if-feature "ac-common:server-assigned-reference"; | if-feature "ac-common:server-assigned-reference"; | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"This is an internal reference for the service provider | "This is an internal reference for the service provider | |||
to identify the bearers."; | to identify the bearers."; | |||
} | } | |||
leaf-list ac-svc-ref { | leaf-list ac-svc-ref { | |||
type ac-svc:attachment-circuit-reference; | type ac-svc:attachment-circuit-reference; | |||
config false; | config false; | |||
description | description | |||
"Specifies the set of ACes that are bound to the bearer."; | "Specifies the set of ACs that are bound to the bearer."; | |||
} | } | |||
uses ac-common:op-instructions; | uses ac-common:op-instructions; | |||
uses ac-common:service-status; | uses ac-common:service-status; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
6.2. The AC Service ("ietf-ac-svc") YANG Module | 6.2. The AC Service ("ietf-ac-svc") YANG Module | |||
This module uses types defined in [RFC6991], [RFC9181], [RFC8177], | This module uses types defined in [RFC6991], [RFC9181], [RFC8177], | |||
and [I-D.ietf-opsawg-teas-common-ac]. Also, the module uses the | and [RFC9833]. Also, the module uses the extensions defined in | |||
extensions defined in [RFC8341]. | [RFC8341]. | |||
<CODE BEGINS> file "ietf-ac-svc@2025-01-07.yang" | <CODE BEGINS> file "ietf-ac-svc@2025-08-11.yang" | |||
module ietf-ac-svc { | module ietf-ac-svc { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ac-svc"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ac-svc"; | |||
prefix ac-svc; | prefix ac-svc; | |||
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-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"; | |||
} | } | |||
import ietf-netconf-acm { | import ietf-netconf-acm { | |||
prefix nacm; | prefix nacm; | |||
reference | reference | |||
skipping to change at page 63, line 4 ¶ | skipping to change at line 2730 ¶ | |||
prefix key-chain; | prefix key-chain; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
organization | organization | |||
"IETF OPSAWG (Operations and Management Area Working Group)"; | "IETF OPSAWG (Operations and Management Area Working Group)"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
<mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
Author: Richard Roberts | Author: Richard Roberts | |||
<mailto:rroberts@juniper.net> | <mailto:rroberts@juniper.net> | |||
Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
<mailto:oscar.gonzalezdedios@telefonica.com> | <mailto:oscar.gonzalezdedios@telefonica.com> | |||
Author: Samier Barguil | Author: Samier Barguil | |||
<mailto:ssamier.barguil_giraldo@nokia.com> | <mailto:ssamier.barguil_giraldo@nokia.com> | |||
Author: Bo Wu | Author: Bo Wu | |||
<mailto:lana.wubo@huawei.com>"; | <mailto:lana.wubo@huawei.com>"; | |||
description | description | |||
"This YANG module defines a YANG model for exposing | "This YANG module defines a YANG module for exposing | |||
attachment circuits as a service (ACaaS). | 'Attachment Circuits'-as-a-Service (ACaaS). | |||
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 9834; 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: 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)"; | |||
} | } | |||
/* A set of typedefs to ease referencing cross-modules */ | /* A set of typedefs to ease referencing cross-modules */ | |||
typedef attachment-circuit-reference { | typedef attachment-circuit-reference { | |||
type leafref { | type leafref { | |||
path "/ac-svc:attachment-circuits/ac-svc:ac/ac-svc:name"; | path "/ac-svc:attachment-circuits/ac-svc:ac/ac-svc:name"; | |||
} | } | |||
description | description | |||
skipping to change at page 64, line 13 ¶ | skipping to change at line 2788 ¶ | |||
type leafref { | type leafref { | |||
path "/ac-svc:attachment-circuits/ac-svc:ac-group-profile" | path "/ac-svc:attachment-circuits/ac-svc:ac-group-profile" | |||
+ "/ac-svc:name"; | + "/ac-svc:name"; | |||
} | } | |||
description | description | |||
"Defines a reference to an attachment circuit profile."; | "Defines a reference to an attachment circuit profile."; | |||
} | } | |||
typedef encryption-profile-reference { | typedef encryption-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:specific-provisioning-profiles" | |||
"/ac-svc:specific-provisioning-profiles" | + "/ac-svc:valid-provider-identifiers" | |||
+ "/ac-svc:valid-provider-identifiers" | + "/ac-svc:encryption-profile-identifier/ac-svc:id"; | |||
+ "/ac-svc:encryption-profile-identifier/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to an encryption profile."; | "Defines a reference to an encryption profile."; | |||
} | } | |||
typedef qos-profile-reference { | typedef qos-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:specific-provisioning-profiles" | |||
"/ac-svc:specific-provisioning-profiles" | + "/ac-svc:valid-provider-identifiers" | |||
+ "/ac-svc:valid-provider-identifiers" | + "/ac-svc:qos-profile-identifier/ac-svc:id"; | |||
+ "/ac-svc:qos-profile-identifier/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to a QoS profile."; | "Defines a reference to a QoS profile."; | |||
} | } | |||
typedef failure-detection-profile-reference { | typedef failure-detection-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:specific-provisioning-profiles" | |||
"/ac-svc:specific-provisioning-profiles" | + "/ac-svc:valid-provider-identifiers" | |||
+ "/ac-svc:valid-provider-identifiers" | + "/ac-svc:failure-detection-profile-identifier" | |||
+ "/ac-svc:failure-detection-profile-identifier" | + "/ac-svc:id"; | |||
+ "/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to a BFD profile."; | "Defines a reference to a BFD profile."; | |||
} | } | |||
typedef forwarding-profile-reference { | typedef forwarding-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:specific-provisioning-profiles" | |||
"/ac-svc:specific-provisioning-profiles" | + "/ac-svc:valid-provider-identifiers" | |||
+ "/ac-svc:valid-provider-identifiers" | + "/ac-svc:forwarding-profile-identifier/ac-svc:id"; | |||
+ "/ac-svc:forwarding-profile-identifier/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to a forwarding profile."; | "Defines a reference to a forwarding profile."; | |||
} | } | |||
typedef routing-profile-reference { | typedef routing-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:specific-provisioning-profiles" | |||
"/ac-svc:specific-provisioning-profiles" | + "/ac-svc:valid-provider-identifiers" | |||
+ "/ac-svc:valid-provider-identifiers" | + "/ac-svc:routing-profile-identifier/ac-svc:id"; | |||
+ "/ac-svc:routing-profile-identifier/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to a routing profile."; | "Defines a reference to a routing profile."; | |||
} | } | |||
typedef service-profile-reference { | typedef service-profile-reference { | |||
type leafref { | type leafref { | |||
path | path "/ac-svc:service-provisioning-profiles" | |||
"/ac-svc:service-provisioning-profiles" | + "/ac-svc:service-profile-identifier" | |||
+ "/ac-svc:service-profile-identifier" | + "/ac-svc:id"; | |||
+ "/ac-svc:id"; | ||||
} | } | |||
description | description | |||
"Defines a reference to a service profile."; | "Defines a reference to a service profile."; | |||
} | } | |||
/******************** Reusable groupings ********************/ | /******************** Reusable groupings ********************/ | |||
// Basic Layer 2 connection | // Basic Layer 2 connection | |||
grouping l2-connection-basic { | grouping l2-connection-basic { | |||
description | description | |||
skipping to change at page 68, line 33 ¶ | skipping to change at line 2994 ¶ | |||
// Full IP connection | // Full IP connection | |||
grouping ip-connection { | grouping ip-connection { | |||
description | description | |||
"Defines IP connection parameters."; | "Defines IP connection parameters."; | |||
container ipv4 { | container ipv4 { | |||
if-feature "vpn-common:ipv4"; | if-feature "vpn-common:ipv4"; | |||
description | description | |||
"IPv4-specific parameters."; | "IPv4-specific parameters."; | |||
uses ac-common:ipv4-connection { | uses ac-common:ipv4-connection { | |||
augment ac-svc:allocation-type/static-addresses/address { | augment "ac-svc:allocation-type/static-addresses/address" { | |||
leaf failure-detection-profile { | leaf failure-detection-profile { | |||
if-feature "vpn-common:bfd"; | if-feature "vpn-common:bfd"; | |||
type failure-detection-profile-reference; | type failure-detection-profile-reference; | |||
description | description | |||
"Points to a failure detection profile."; | "Points to a failure detection profile."; | |||
} | } | |||
description | description | |||
"Adds a failure detection profile."; | "Adds a failure detection profile."; | |||
} | } | |||
} | } | |||
} | } | |||
container ipv6 { | container ipv6 { | |||
if-feature "vpn-common:ipv6"; | if-feature "vpn-common:ipv6"; | |||
description | description | |||
"IPv6-specific parameters."; | "IPv6-specific parameters."; | |||
uses ac-common:ipv6-connection { | uses ac-common:ipv6-connection { | |||
augment ac-svc:allocation-type/static-addresses/address { | augment "ac-svc:allocation-type/static-addresses/address" { | |||
leaf failure-detection-profile { | leaf failure-detection-profile { | |||
if-feature "vpn-common:bfd"; | if-feature "vpn-common:bfd"; | |||
type failure-detection-profile-reference; | type failure-detection-profile-reference; | |||
description | description | |||
"Points to a failure detection profile."; | "Points to a failure detection profile."; | |||
} | } | |||
description | description | |||
"Adds a failure detection profile."; | "Adds a failure detection profile."; | |||
} | } | |||
} | } | |||
skipping to change at page 71, line 19 ¶ | skipping to change at line 3124 ¶ | |||
// BGP Service | // BGP Service | |||
grouping bgp-neighbor-without-name { | grouping bgp-neighbor-without-name { | |||
description | description | |||
"A grouping with generic parameters for configuring a BGP | "A grouping with generic parameters for configuring a BGP | |||
neighbor."; | neighbor."; | |||
leaf remote-address { | leaf remote-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The remote IP address of this entry's BGP peer. This is | "The remote IP address of this entry's BGP peer. This is | |||
a customer IP address. | a customer IP address. | |||
If this leaf is not present, this means that the primary | If this leaf is not present, this means that the primary | |||
customer IP address is used as remote IP address."; | customer IP address is used as the remote IP address."; | |||
} | } | |||
leaf local-address { | leaf local-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The provider's IP address that will be used to establish | "The provider's IP address that will be used to establish | |||
the BGP session."; | the BGP session."; | |||
} | } | |||
uses ac-common:bgp-peer-group-without-name; | uses ac-common:bgp-peer-group-without-name; | |||
container bgp-max-prefix { | container bgp-max-prefix { | |||
description | description | |||
skipping to change at page 73, line 4 ¶ | skipping to change at line 3205 ¶ | |||
} | } | |||
uses ac-svc:bgp-neighbor-with-server-reference; | uses ac-svc:bgp-neighbor-with-server-reference; | |||
} | } | |||
grouping bgp-svc { | grouping bgp-svc { | |||
description | description | |||
"Configuration specific to BGP."; | "Configuration specific to BGP."; | |||
container peer-groups { | container peer-groups { | |||
description | description | |||
"Configuration for BGP peer-groups"; | "Configuration for BGP peer-groups"; | |||
list peer-group { | list peer-group { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of BGP peer-groups configured on the local | "List of BGP peer-groups configured on the local | |||
system - uniquely identified by peer-group name."; | system -- uniquely identified by peer-group name."; | |||
uses ac-common:bgp-peer-group-with-name; | uses ac-common:bgp-peer-group-with-name; | |||
leaf local-address { | leaf local-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The provider's local IP address that will be used to | "The provider's local IP address that will be used to | |||
establish the BGP session."; | establish the BGP session."; | |||
} | } | |||
container bgp-max-prefix { | container bgp-max-prefix { | |||
description | description | |||
"A container for the maximum number of BGP prefixes | "A container for the maximum number of BGP prefixes | |||
skipping to change at page 75, line 48 ¶ | skipping to change at line 3345 ¶ | |||
if-feature "vpn-common:rtg-bgp"; | if-feature "vpn-common:rtg-bgp"; | |||
description | description | |||
"Configuration specific to BGP."; | "Configuration specific to BGP."; | |||
container peer-groups { | container peer-groups { | |||
description | description | |||
"Configuration for BGP peer-groups"; | "Configuration for BGP peer-groups"; | |||
list peer-group { | list peer-group { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of BGP peer-groups configured on the local | "List of BGP peer-groups configured on the local | |||
system - uniquely identified by peer-group | system -- uniquely identified by peer-group | |||
name."; | name."; | |||
uses ac-common:bgp-peer-group-with-name; | uses ac-common:bgp-peer-group-with-name; | |||
} | } | |||
} | } | |||
} | } | |||
container ospf { | container ospf { | |||
when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
+ "'vpn-common:ospf-routing')" { | + "'vpn-common:ospf-routing')" { | |||
description | description | |||
"Only applies when the protocol is OSPF."; | "Only applies when the protocol is OSPF."; | |||
} | } | |||
if-feature "vpn-common:rtg-ospf"; | if-feature "vpn-common:rtg-ospf"; | |||
description | description | |||
"Configuration specific to OSPF."; | "Configuration specific to OSPF."; | |||
uses ac-common:ospf-basic; | uses ac-common:ospf-basic; | |||
} | } | |||
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 | |||
"Configuration specific to IS-IS."; | "Configuration specific to IS-IS."; | |||
uses ac-common:isis-basic; | uses ac-common:isis-basic; | |||
} | } | |||
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 is used."; | For IPv4, the model assumes that RIP version 2 is | |||
used."; | ||||
} | } | |||
if-feature "vpn-common:rtg-rip"; | if-feature "vpn-common:rtg-rip"; | |||
description | description | |||
"Configuration specific to RIP routing."; | "Configuration specific to RIP routing."; | |||
leaf address-family { | leaf address-family { | |||
type identityref { | type identityref { | |||
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 | |||
skipping to change at page 77, line 40 ¶ | skipping to change at line 3434 ¶ | |||
leaf id { | leaf id { | |||
type string; | type string; | |||
description | description | |||
"Unique identifier for the routing protocol."; | "Unique identifier for the routing protocol."; | |||
} | } | |||
uses routing-protocol-list; | uses routing-protocol-list; | |||
container static { | container static { | |||
when "derived-from-or-self(../type, " | when "derived-from-or-self(../type, " | |||
+ "'vpn-common:static-routing')" { | + "'vpn-common:static-routing')" { | |||
description | description | |||
"Only applies when the protocol is static routing | "Only applies when the protocol is the static | |||
protocol."; | routing protocol."; | |||
} | } | |||
description | description | |||
"Configuration specific to static routing."; | "Configuration specific to static routing."; | |||
container cascaded-lan-prefixes { | container cascaded-lan-prefixes { | |||
description | description | |||
"LAN prefixes from the customer."; | "LAN prefixes from the customer."; | |||
uses ipv4-static-rtg-with-bfd; | uses ipv4-static-rtg-with-bfd; | |||
uses ipv6-static-rtg-with-bfd; | uses ipv6-static-rtg-with-bfd; | |||
} | } | |||
} | } | |||
skipping to change at page 78, line 42 ¶ | skipping to change at line 3484 ¶ | |||
if-feature "vpn-common:rtg-isis"; | if-feature "vpn-common:rtg-isis"; | |||
description | description | |||
"Configuration specific to IS-IS."; | "Configuration specific to IS-IS."; | |||
uses isis-svc; | uses isis-svc; | |||
} | } | |||
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 is used."; | For IPv4, the model assumes that RIP version 2 is | |||
used."; | ||||
} | } | |||
if-feature "vpn-common:rtg-rip"; | if-feature "vpn-common:rtg-rip"; | |||
description | description | |||
"Configuration specific to RIP routing."; | "Configuration specific to RIP routing."; | |||
uses rip-svc; | uses rip-svc; | |||
} | } | |||
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 Virtual Router | "Only applies when the protocol is the Virtual Router | |||
Redundancy Protocol (VRRP)."; | Redundancy Protocol (VRRP)."; | |||
} | } | |||
if-feature "vpn-common:rtg-vrrp"; | if-feature "vpn-common:rtg-vrrp"; | |||
description | description | |||
"Configuration specific to VRRP."; | "Configuration specific to VRRP."; | |||
uses vrrp-svc; | uses vrrp-svc; | |||
} | } | |||
} | } | |||
skipping to change at page 80, line 6 ¶ | skipping to change at line 3545 ¶ | |||
description | description | |||
"AC-specific security parameters."; | "AC-specific security parameters."; | |||
container encryption { | container encryption { | |||
if-feature "vpn-common:encryption"; | if-feature "vpn-common:encryption"; | |||
description | description | |||
"Container for AC security encryption."; | "Container for AC security encryption."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"If set to 'true', traffic encryption on the connection | "If set to 'true', traffic encryption on the connection | |||
is required. Otherwise, it is disabled."; | is 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 82, line 33 ¶ | skipping to change at line 3667 ¶ | |||
} | } | |||
// Full AC parameters | // Full AC parameters | |||
grouping ac { | grouping ac { | |||
description | description | |||
"Grouping for an attachment circuit."; | "Grouping for an attachment circuit."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"A name of the AC. Data models that need to reference | "A name of the AC. Data models that need to reference | |||
an AC should use 'attachment-circuit-reference'."; | an AC should use 'attachment-circuit-reference'."; | |||
} | } | |||
leaf-list service-profile { | leaf-list service-profile { | |||
type service-profile-reference; | type service-profile-reference; | |||
description | description | |||
"A reference to a service profile."; | "A reference to a service profile."; | |||
} | } | |||
container l2-connection { | container l2-connection { | |||
if-feature "ac-common:layer2-ac"; | if-feature "ac-common:layer2-ac"; | |||
description | description | |||
skipping to change at page 83, line 4 ¶ | skipping to change at line 3686 ¶ | |||
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."; | |||
uses l2-connection; | uses l2-connection; | |||
} | } | |||
container ip-connection { | container ip-connection { | |||
if-feature "ac-common:layer3-ac"; | if-feature "ac-common:layer3-ac"; | |||
description | description | |||
"Defines IP connection parameters."; | "Defines IP connection parameters."; | |||
uses ip-connection; | uses ip-connection; | |||
} | } | |||
container routing-protocols { | container routing-protocols { | |||
description | description | |||
"Defines routing protocols."; | "Defines routing protocols."; | |||
uses routing; | uses routing; | |||
} | } | |||
container oam { | container oam { | |||
description | description | |||
"Defines the OAM mechanisms used."; | "Defines the 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 "id"; | key "id"; | |||
description | description | |||
"List of BFD sessions."; | "List of BFD sessions."; | |||
leaf id { | leaf id { | |||
type string; | type string; | |||
description | description | |||
"A unique identifier for the BFD session."; | "A unique identifier for the BFD session."; | |||
} | } | |||
leaf local-address { | leaf local-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Provider's IP address of the BFD session."; | "Provider's IP address of the BFD session."; | |||
} | } | |||
leaf remote-address { | leaf remote-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Customer's IP address of the BFD session."; | "Customer's IP address of the BFD session."; | |||
skipping to change at page 86, line 14 ¶ | skipping to change at line 3840 ¶ | |||
"Identification of the service profile to be used. | "Identification of the service profile to be used. | |||
The profile only has significance within the service | The profile only has significance within the service | |||
provider's administrative domain."; | provider's administrative domain."; | |||
} | } | |||
} | } | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
} | } | |||
container attachment-circuits { | container attachment-circuits { | |||
description | description | |||
"Main container for the attachment circuits. | "Main container for the attachment circuits. | |||
The timing constraints indicated at the 'ac' level take | The timing constraints indicated at the 'ac' level take | |||
precedence over the values indicated at the | precedence over the values indicated at the | |||
'attachment-circuits' level."; | 'attachment-circuits' level."; | |||
list ac-group-profile { | list ac-group-profile { | |||
key "name"; | key "name"; | |||
description | description | |||
"Maintains a list of profiles that are shared among | "Maintains a list of profiles that are shared among | |||
a set of ACs."; | a set of ACs."; | |||
uses ac; | uses ac; | |||
} | } | |||
container placement-constraints { | container placement-constraints { | |||
skipping to change at page 87, line 6 ¶ | skipping to change at line 3880 ¶ | |||
AC."; | AC."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"Associates a description with an AC."; | "Associates a description with an AC."; | |||
} | } | |||
leaf test-only { | leaf test-only { | |||
type empty; | type empty; | |||
description | description | |||
"When present, this indicates that this is a feasibility | "When present, this indicates that this is a feasibility | |||
check request. No resources are committed for such AC | check request. No resources are committed for such AC | |||
requests."; | requests."; | |||
} | } | |||
uses ac-common:op-instructions; | uses ac-common:op-instructions; | |||
leaf role { | leaf role { | |||
type identityref { | type identityref { | |||
base ac-common:role; | base ac-common:role; | |||
} | } | |||
description | description | |||
"Indicates whether this AC is used as UNI, NNI, etc."; | "Indicates whether this AC is used as UNI, NNI, etc."; | |||
} | } | |||
leaf-list peer-sap-id { | leaf-list peer-sap-id { | |||
skipping to change at page 88, line 4 ¶ | skipping to change at line 3926 ¶ | |||
reference | reference | |||
"RFC 9408: A YANG Network Data Model for Service | "RFC 9408: A YANG Network Data Model for Service | |||
Attachment Points (SAPs), Section 5"; | Attachment Points (SAPs), Section 5"; | |||
} | } | |||
leaf service-id { | leaf service-id { | |||
type string; | type string; | |||
description | description | |||
"Indicates an identifier of a service instance | "Indicates an identifier of a service instance | |||
of a given type that uses the AC."; | of a given type that uses the AC."; | |||
} | } | |||
} | } | |||
leaf server-reference { | leaf server-reference { | |||
if-feature "ac-common:server-assigned-reference"; | if-feature "ac-common:server-assigned-reference"; | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"Reports an internal reference for the service provider | "Reports an internal reference for the service provider | |||
to identify the AC."; | to identify the AC."; | |||
} | } | |||
uses ac; | uses ac; | |||
} | } | |||
} | } | |||
} | } | |||
<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 | |||
Section 3.7 of [I-D.ietf-netmod-rfc8407bis]. | of [YANG-GUIDELINES]. | |||
The "ietf-bearer-svc" and "ietf-ac-svc" YANG modules define data | The "ietf-bearer-svc" and "ietf-ac-svc" YANG modules define data | |||
models that are designed to be accessed via YANG-based management | models that are designed to be accessed via YANG-based management | |||
protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These | protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These | |||
protocols have to use a secure transport layer (e.g., SSH [RFC4252], | protocols have to use a secure transport layer (e.g., SSH [RFC4252], | |||
TLS [RFC8446], and QUIC [RFC9000]) and have to use mutual | TLS [RFC8446], and QUIC [RFC9000]) and have to use mutual | |||
authentication. | authentication. | |||
Servers MUST verify that requesting clients are entitled to access | Servers MUST verify that requesting clients are entitled to access | |||
and manipulate a given bearer or AC. For example, a given customer | and manipulate a given bearer or AC. For example, a given customer | |||
must not have access to bearers/ACs of other customers. The Network | must not have access to bearers/ACs of other customers. The Network | |||
Configuration Access Control Model (NACM) [RFC8341] provides the | Configuration Access Control Model (NACM) [RFC8341] provides the | |||
means to restrict access for particular NETCONF or RESTCONF users to | means to restrict access for particular NETCONF or RESTCONF users to | |||
a preconfigured subset of all available NETCONF or RESTCONF protocol | a preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
There are a number of data nodes defined in these YANG modules that | There are a number of data nodes defined in these YANG modules that | |||
are writable/creatable/deletable (i.e., config true, which is the | are 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 in the "ietf-bearer-svc" module: | have particular sensitivities/vulnerabilities in the "ietf-bearer- | |||
svc" module: | ||||
'placement-constraints': An attacker who is able to access this data | 'placement-constraints': An attacker who is able to access this data | |||
node can modify the attributes to influence how a service is | node can modify the attributes to influence how a service is | |||
delivered to a customer, and this leads to Service Level Agreement | delivered to a customer, and this leads to Service Level Agreement | |||
(SLA) violations. | (SLA) violations. | |||
'bearer': An attacker who is able to access this data node can | 'bearer': An attacker who is able to access this data node can | |||
modify the attributes of bearer and, thus, hinder how ACs are | modify the attributes of bearer and thus hinder how ACs are built. | |||
built. | ||||
In addition, an attacker could attempt to add a new bearer or | In addition, an attacker could attempt to add a new bearer or | |||
delete existing ones. An attacker may also change the requested | delete existing ones. An attacker may also change the requested | |||
type, whether it is for test-only, or the activation scheduling. | type, whether it is for test-only, or the activation scheduling. | |||
The following subtrees and data nodes have particular sensitivities/ | The following subtrees and data nodes have particular sensitivities/ | |||
vulnerabilities in the "ietf-ac-svc" module: | vulnerabilities in the "ietf-ac-svc" module: | |||
'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 will be delivered. For | sensitive data that influences how an AC will be 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. | properties. | |||
These profiles are defined with "nacm:default-deny-write" tagging | These profiles are defined with "nacm:default-deny-write" tagging | |||
[I-D.ietf-opsawg-teas-common-ac]. | [RFC9833]. | |||
'service-provisioning-profiles': An attacker who has access to these | 'service-provisioning-profiles': An attacker who has access to these | |||
data nodes may be able to manipulate service-specific policies to | data nodes may be able to manipulate service-specific policies to | |||
be applied for an AC. | be applied for an AC. | |||
This container is defined with "nacm:default-deny-write" tagging. | This container is defined with "nacm:default-deny-write" tagging. | |||
'ac': An attacker who is able to access this data node can modify | 'ac': An attacker who is able to access this data node can modify | |||
the attributes of an AC (e.g., QoS, bandwidth, routing protocols, | the attributes of an AC (e.g., QoS, bandwidth, routing protocols, | |||
keying material), leading to malfunctioning of services that will | keying material), leading to malfunctioning of services that will | |||
skipping to change at page 90, line 28 ¶ | skipping to change at line 4047 ¶ | |||
hexadecimal string format would afford greater key entropy with the | hexadecimal string format would afford greater key entropy with the | |||
same number of key-string octets. However, such a format is not | same number of key-string octets. However, such a format is not | |||
included in this version of the AC service model because it is not | included in this version of the AC service model because it is not | |||
supported by the underlying device modules (e.g., [RFC8695]). | supported by the underlying device modules (e.g., [RFC8695]). | |||
Section 5.2.5.5 specifies a set of encryption-related parameters that | Section 5.2.5.5 specifies a set of encryption-related parameters that | |||
can be applied to traffic for a given AC. | can be applied to traffic for a given AC. | |||
8. IANA Considerations | 8. IANA Considerations | |||
IANA is requested to register the following URIs in the "ns" | IANA has registered the following URIs 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-bearer-svc | URI: urn:ietf:params:xml:ns:yang:ietf-bearer-svc | |||
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. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ac-svc | URI: urn:ietf:params:xml:ns:yang:ietf-ac-svc | |||
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 modules in the "YANG | IANA has registered the following YANG modules in the "YANG Module | |||
Module Names" subregistry [RFC6020] within the "YANG Parameters" | Names" registry [RFC6020] within the "YANG Parameters" registry | |||
registry. | group. | |||
Name: ietf-bearer-svc | Name: ietf-bearer-svc | |||
Maintained by IANA? N | Maintained by IANA? N | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bearer-svc | Namespace: urn:ietf:params:xml:ns:yang:ietf-bearer-svc | |||
Prefix: bearer-svc | Prefix: bearer-svc | |||
Reference: RFC XXXX | Reference: RFC 9834 | |||
Name: ietf-ac-svc | Name: ietf-ac-svc | |||
Maintained by IANA? N | Maintained by IANA? N | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-ac-svc | Namespace: urn:ietf:params:xml:ns:yang:ietf-ac-svc | |||
Prefix: ac-svc | Prefix: ac-svc | |||
Reference: RFC XXXX | Reference: RFC 9834 | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[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>. | ||||
[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>. | |||
[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>. | |||
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | ||||
January 2006, <https://www.rfc-editor.org/info/rfc4252>. | ||||
[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>. | |||
[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>. | |||
[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>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[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>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
[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>. | |||
[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>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | |||
"Handling Long Lines in Content of Internet-Drafts and | "Handling Long Lines in Content of Internet-Drafts and | |||
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | |||
<https://www.rfc-editor.org/rfc/rfc8792>. | <https://www.rfc-editor.org/info/rfc8792>. | |||
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | ||||
Multiplexed and Secure Transport", RFC 9000, | ||||
DOI 10.17487/RFC9000, May 2021, | ||||
<https://www.rfc-editor.org/info/rfc9000>. | ||||
[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 Giraldo, S., and B. Wu, "A Common YANG Data | ||||
Model for Attachment Circuits", RFC 9833, | ||||
DOI 10.17487/RFC9833, August 2025, | ||||
<https://www.rfc-editor.org/info/rfc9833>. | ||||
[I-D.ietf-grow-peering-api] | 9.2. Informative References | |||
Aguado, C., Griswold, M., Ramseyer, J., Servin, A., and T. | ||||
Strickx, "Peering API", Work in Progress, Internet-Draft, | ||||
draft-ietf-grow-peering-api-00, 7 December 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-grow- | ||||
peering-api-00>. | ||||
[I-D.ietf-idr-bgp-model] | [BGP4-YANG] | |||
Jethanandani, M., Patel, K., Hares, S., and J. Haas, "YANG | Jethanandani, M., Patel, K., Hares, S., and J. Haas, "YANG | |||
Model for Border Gateway Protocol (BGP-4)", Work in | Model for Border Gateway Protocol (BGP-4)", Work in | |||
Progress, Internet-Draft, draft-ietf-idr-bgp-model-18, 21 | Progress, Internet-Draft, draft-ietf-idr-bgp-model-18, 21 | |||
October 2024, <https://datatracker.ietf.org/doc/html/ | October 2024, <https://datatracker.ietf.org/doc/html/ | |||
draft-ietf-idr-bgp-model-18>. | draft-ietf-idr-bgp-model-18>. | |||
[I-D.ietf-netmod-rfc8407bis] | ||||
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-22, 14 January 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
rfc8407bis-22>. | ||||
[I-D.ietf-opsawg-ac-lxsm-lxnm-glue] | ||||
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>. | ||||
[I-D.ietf-opsawg-ntw-attachment-circuit] | ||||
Boucadair, M., Roberts, R., de Dios, O. G., Barguil, S., | ||||
and B. Wu, "A Network YANG Data Model for Attachment | ||||
Circuits", Work in Progress, Internet-Draft, draft-ietf- | ||||
opsawg-ntw-attachment-circuit-15, 9 January 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
ntw-attachment-circuit-15>. | ||||
[I-D.ietf-teas-ietf-network-slice-nbi-yang] | ||||
Wu, B., Dhody, D., Rokui, R., Saad, T., and J. Mullooly, | ||||
"A YANG Data Model for the RFC 9543 Network Slice | ||||
Service", Work in Progress, Internet-Draft, draft-ietf- | ||||
teas-ietf-network-slice-nbi-yang-18, 21 January 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teas- | ||||
ietf-network-slice-nbi-yang-18>. | ||||
[IEEE802.1AB] | [IEEE802.1AB] | |||
IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and metropolitan area | |||
networks - Station and Media Access Control Connectivity | networks - Station and Media Access Control Connectivity | |||
Discovery", January 2016, | Discovery", IEEE Std 802.1AB-2016, | |||
<https://standards.ieee.org/ieee/802.1AB/6047/>. | DOI 10.1109/IEEESTD.2016.7433915, January 2016, | |||
<https://doi.org/10.1109/IEEESTD.2016.7433915>. | ||||
[IEEE802.1AX] | [IEEE802.1AX] | |||
IEEE, "IEEE Standard for Local and Metropolitan Area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
Networks--Link Aggregation", May 2020, | Networks--Link Aggregation", IEEE Std 802.1AX-2020, | |||
DOI 10.1109/IEEESTD.2020.9105034, May 2020, | ||||
<https://doi.org/10.1109/IEEESTD.2020.9105034>. | <https://doi.org/10.1109/IEEESTD.2020.9105034>. | |||
[Instance-Data] | [Instance-Data] | |||
"Example of AC SVC Instance Data", 2024, | "Example of AC SVC Instance Data", Commit 8081bb7, August | |||
<https://github.com/boucadair/attachment-circuit- | 2024, <https://github.com/boucadair/attachment-circuit- | |||
model/blob/main/xml-examples/svc-full-instance.xml>. | model/blob/main/xml-examples/svc-full-instance.xml>. | |||
[ITU-T-G.781] | [ITU-T-G.781] | |||
ITU-T, "Synchronization layer functions for frequency | ITU-T, "Synchronization layer functions for frequency | |||
synchronization based on the physical layer", January | synchronization based on the physical layer", ITU-T | |||
2024, <https://www.itu.int/rec/T-REC-G.781>. | Recommendation G.781, January 2024, | |||
<https://www.itu.int/rec/T-REC-G.781>. | ||||
[NSSM] Wu, B., Dhody, D., Rokui, R., Saad, T., and J. Mullooly, | ||||
"A YANG Data Model for the RFC 9543 Network Slice | ||||
Service", Work in Progress, Internet-Draft, draft-ietf- | ||||
teas-ietf-network-slice-nbi-yang-25, 9 May 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teas- | ||||
ietf-network-slice-nbi-yang-25>. | ||||
[PEERING-API] | ||||
Aguado, C., Griswold, M., Ramseyer, J., Servin, A., | ||||
Strickx, T., and Q. Misell, "Peering API", Work in | ||||
Progress, Internet-Draft, draft-ietf-grow-peering-api-01, | ||||
4 July 2025, <https://datatracker.ietf.org/doc/html/draft- | ||||
ietf-grow-peering-api-01>. | ||||
[RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | [RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | |||
Converting Network Protocol Addresses to 48.bit Ethernet | Converting Network Protocol Addresses to 48.bit Ethernet | |||
Address for Transmission on Ethernet Hardware", STD 37, | Address for Transmission on Ethernet Hardware", STD 37, | |||
RFC 826, DOI 10.17487/RFC0826, November 1982, | RFC 826, DOI 10.17487/RFC0826, November 1982, | |||
<https://www.rfc-editor.org/rfc/rfc826>. | <https://www.rfc-editor.org/info/rfc826>. | |||
[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>. | |||
[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>. | |||
[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>. | |||
[RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual | [RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual | |||
Private Network (VPN) Terminology", RFC 4026, | Private Network (VPN) Terminology", RFC 4026, | |||
DOI 10.17487/RFC4026, March 2005, | DOI 10.17487/RFC4026, March 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4026>. | <https://www.rfc-editor.org/info/rfc4026>. | |||
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | ||||
January 2006, <https://www.rfc-editor.org/rfc/rfc4252>. | ||||
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | |||
DOI 10.17487/RFC4861, September 2007, | DOI 10.17487/RFC4861, September 2007, | |||
<https://www.rfc-editor.org/rfc/rfc4861>. | <https://www.rfc-editor.org/info/rfc4861>. | |||
[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>. | |||
[RFC6151] Turner, S. and L. Chen, "Updated Security Considerations | [RFC6151] Turner, S. and L. Chen, "Updated Security Considerations | |||
for the MD5 Message-Digest and the HMAC-MD5 Algorithms", | for the MD5 Message-Digest and the HMAC-MD5 Algorithms", | |||
RFC 6151, DOI 10.17487/RFC6151, March 2011, | RFC 6151, DOI 10.17487/RFC6151, March 2011, | |||
<https://www.rfc-editor.org/rfc/rfc6151>. | <https://www.rfc-editor.org/info/rfc6151>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/rfc/rfc6241>. | ||||
[RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of | [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of | |||
BGP, LDP, PCEP, and MSDP Issues According to the Keying | BGP, LDP, PCEP, and MSDP Issues According to the Keying | |||
and Authentication for Routing Protocols (KARP) Design | and Authentication for Routing Protocols (KARP) Design | |||
Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, | Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, | |||
<https://www.rfc-editor.org/rfc/rfc6952>. | <https://www.rfc-editor.org/info/rfc6952>. | |||
[RFC7607] Kumari, W., Bush, R., Schiller, H., and K. Patel, | [RFC7607] Kumari, W., Bush, R., Schiller, H., and K. Patel, | |||
"Codification of AS 0 Processing", RFC 7607, | "Codification of AS 0 Processing", RFC 7607, | |||
DOI 10.17487/RFC7607, August 2015, | DOI 10.17487/RFC7607, August 2015, | |||
<https://www.rfc-editor.org/rfc/rfc7607>. | <https://www.rfc-editor.org/info/rfc7607>. | |||
[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>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
<https://www.rfc-editor.org/rfc/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>. | |||
[RFC8309] Wu, Q., Liu, W., and A. Farrel, "Service Models | [RFC8309] Wu, Q., Liu, W., and A. Farrel, "Service Models | |||
Explained", RFC 8309, DOI 10.17487/RFC8309, January 2018, | Explained", RFC 8309, DOI 10.17487/RFC8309, January 2018, | |||
<https://www.rfc-editor.org/rfc/rfc8309>. | <https://www.rfc-editor.org/info/rfc8309>. | |||
[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>. | |||
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
<https://www.rfc-editor.org/rfc/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/rfc/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>. | |||
[RFC8921] Boucadair, M., Ed., Jacquenet, C., Zhang, D., and P. | [RFC8921] Boucadair, M., Ed., Jacquenet, C., Zhang, D., and P. | |||
Georgatsos, "Dynamic Service Negotiation: The Connectivity | Georgatsos, "Dynamic Service Negotiation: The Connectivity | |||
Provisioning Negotiation Protocol (CPNP)", RFC 8921, | Provisioning Negotiation Protocol (CPNP)", RFC 8921, | |||
DOI 10.17487/RFC8921, October 2020, | DOI 10.17487/RFC8921, October 2020, | |||
<https://www.rfc-editor.org/rfc/rfc8921>. | <https://www.rfc-editor.org/info/rfc8921>. | |||
[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 | ||||
Multiplexed and Secure Transport", RFC 9000, | ||||
DOI 10.17487/RFC9000, May 2021, | ||||
<https://www.rfc-editor.org/rfc/rfc9000>. | ||||
[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>. | |||
[RFC9835] Boucadair, M., Ed., Roberts, R., Gonzalez de Dios, O., | ||||
Barguil Giraldo, S., and B. Wu, "A Network YANG Data Model | ||||
for Attachment Circuits", RFC 9835, DOI 10.17487/RFC9835, | ||||
August 2025, <https://www.rfc-editor.org/info/rfc9835>. | ||||
[RFC9836] Boucadair, M., Ed., Roberts, R., Barguil Giraldo, 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, August 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
ac-lxsm-lxnm-glue-14>. | ||||
[YANG-GUIDELINES] | ||||
Bierman, A., Boucadair, M., Ed., 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 | |||
This section includes a non-exhaustive list of examples to illustrate | This section includes a non-exhaustive list of examples to illustrate | |||
the use of the service models defined in this document. An example | the use of the service models defined in this document. An example | |||
instance data can also be found at [Instance-Data]. | of instance data can also be found at [Instance-Data]. | |||
Some of the examples below use line wrapping per [RFC8792]. | Some of the examples below use line wrapping per [RFC8792]. | |||
A.1. Create a New Bearer | A.1. Create a New Bearer | |||
An example of a request message body to create a bearer is shown in | An example of a request message body to create a bearer is shown in | |||
Figure 24. | Figure 24. | |||
{ | { | |||
"ietf-bearer-svc:bearers": { | "ietf-bearer-svc:bearers": { | |||
skipping to change at page 99, line 4 ¶ | skipping to change at line 4434 ¶ | |||
"device": { | "device": { | |||
"device-id": "CE_X_SITE_Y" | "device-id": "CE_X_SITE_Y" | |||
} | } | |||
}, | }, | |||
"type": "ietf-bearer-svc:ethernet", | "type": "ietf-bearer-svc:ethernet", | |||
"bearer-reference": "line-156" | "bearer-reference": "line-156" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 25: Example of a Response Message Body with the Bearer | Figure 25: Example of a Response Message Body with the Bearer | |||
Reference | Reference | |||
Note that the response also indicates that Sync Phy mechanism is | Note that the response also indicates that Sync Phy mechanism is | |||
supported for this bearer. | supported for this bearer. | |||
A.2. Create an AC over an Existing Bearer | A.2. Create an AC over an Existing Bearer | |||
An example of a request message body to create a simple AC over an | An example of a request message body to create a simple AC over an | |||
existing bearer is shown in Figure 26. The bearer reference is | existing bearer is shown in Figure 26. The bearer reference is | |||
assumed to be known to both the customer and the network provider. | assumed to be known to both the customer and the network provider. | |||
Such a reference can be retrieved, e.g., following the example | Such a reference can be retrieved, e.g., following the example | |||
described in Appendix A.1 or using other means (including, exchanged | described in Appendix A.1 or using other means (including exchanged | |||
out-of-band or via proprietary APIs). | out-of-band or via proprietary APIs). | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "ac4585", | "name": "ac4585", | |||
"description": "An AC on an existing bearer", | "description": "An AC on an existing bearer", | |||
"requested-start": "2023-12-12T05:00:00.00Z", | "requested-start": "2023-12-12T05:00:00.00Z", | |||
"l2-connection": { | "l2-connection": { | |||
skipping to change at page 99, line 41 ¶ | skipping to change at line 4472 ¶ | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 26: Example of a Message Body to Request an AC over an | Figure 26: Example of a Message Body to Request an AC over an | |||
Existing Bearer | Existing Bearer | |||
Figure 27 shows the message body of a GET response received from the | Figure 27 shows the message body of a GET response received from the | |||
controller and which indicates the 'cvlan-id' that was assigned for | controller and that indicates the 'cvlan-id' that was assigned for | |||
the requested AC. | the requested AC. | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "ac4585", | "name": "ac4585", | |||
"description": "An AC on an existing bearer", | "description": "An AC on an existing bearer", | |||
"actual-start": "2023-12-12T05:00:00.00Z", | "actual-start": "2023-12-12T05:00:00.00Z", | |||
"l2-connection": { | "l2-connection": { | |||
skipping to change at page 100, line 28 ¶ | skipping to change at line 4498 ¶ | |||
} | } | |||
}, | }, | |||
"bearer-reference": "line-156" | "bearer-reference": "line-156" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 27: Example of a Message Body of a Response to Assign a | Figure 27: Example of a Message Body of a Response to Assign a | |||
CVLAN ID | Customer VLAN (CVLAN) ID | |||
A.3. Create an AC for a Known Peer SAP | A.3. Create an AC for a Known Peer SAP | |||
An example of a request to create a simple AC, when the peer SAP is | An example of a request to create a simple AC, when the peer SAP is | |||
known, is shown in Figure 28. In this example, the peer SAP | known, is shown in Figure 28. In this example, the peer SAP | |||
identifier points to an identifier of an SF. The (topological) | identifier points to an identifier of an SF. The (topological) | |||
location of that SF is assumed to be known to the network controller. | location of that SF is assumed to be known to the network controller. | |||
For example, this can be determined as part of an on-demand procedure | For example, this can be determined as part of an on-demand procedure | |||
to instantiate an SF in a cloud. That instantiated SF can be granted | to instantiate an SF in a cloud. That instantiated SF can be granted | |||
a connectivity service via the provider network. | a connectivity service via the provider network. | |||
skipping to change at page 101, line 23 ¶ | skipping to change at line 4528 ¶ | |||
"nf-termination-ip" | "nf-termination-ip" | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 28: Example of a Message Body to Request an AC with a Peer SAP | Figure 28: Example of a Message Body to Request an AC with a Peer SAP | |||
Figure 29 shows the received GET response with the required | Figure 29 shows the received GET response with the required | |||
informaiton to connect the SF. | information to connect the SF. | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "ac4585", | "name": "ac4585", | |||
"description": "An AC for a known peer SAP", | "description": "An AC for a known peer SAP", | |||
"actual-start": "2025-12-12T05:00:00.00Z", | "actual-start": "2025-12-12T05:00:00.00Z", | |||
"peer-sap-id": [ | "peer-sap-id": [ | |||
"nf-termination-ip" | "nf-termination-ip" | |||
skipping to change at page 102, line 10 ¶ | skipping to change at line 4562 ¶ | |||
} | } | |||
Figure 29: Example of a Message Body of a Response to Create an | Figure 29: Example of a Message Body of a Response to Create an | |||
AC with a Peer SAP | AC with a Peer SAP | |||
A.4. One CE, Two ACs | A.4. One CE, Two ACs | |||
Let us consider the example of an eNodeB (CE) that is directly | Let us consider the example of an eNodeB (CE) that is directly | |||
connected to the access routers of the mobile backhaul (see | connected to the access routers of the mobile backhaul (see | |||
Figure 30). In this example, two ACs are needed to service the | Figure 30). In this example, two ACs are needed to service the | |||
eNodeB (e.g., distinct VLANs for Control and User Planes). | eNodeB (e.g., distinct VLANs for control and user planes). | |||
.-------------. .------------------. | .-------------. .------------------. | |||
| | | PE | | | | | PE | | |||
| +--------ac1-------+ 192.0.2.1 | | | +--------ac1-------+ 192.0.2.1 | | |||
| eNodeB | VLAN 1 | 2001:db8::1 | | | eNodeB | VLAN 1 | 2001:db8::1 | | |||
| | VLAN 2 | | | | | VLAN 2 | | | |||
| +--------ac2-------+ | | | +--------ac2-------+ | | |||
| | | | | | | | | | |||
| | Direct | | | | | Direct | | | |||
'-------------' Routing | | | '-------------' Routing | | | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
'------------------' | '------------------' | |||
Figure 30: Example of a CE-PE ACs | Figure 30: Example of CE-PE ACs | |||
An example of a request to create the ACs to service the eNodeB is | An example of a request to create the ACs to service the eNodeB is | |||
shown in Figure 31. This example assumes that static addressing is | shown in Figure 31. This example assumes that static addressing is | |||
used for both ACs. | used for both ACs. | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
skipping to change at page 108, line 33 ¶ | skipping to change at line 4862 ¶ | |||
"cvlan-id": 3 | "cvlan-id": 3 | |||
} | } | |||
}, | }, | |||
"bearer-reference": "line-156" | "bearer-reference": "line-156" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 34: Example of a Message Body to Add a new AC over an | Figure 34: Example of a Message Body to Add a New AC over an | |||
existing link (Node Profile) | Existing Link (Node Profile) | |||
A.5. Control Precedence over Multiple ACs | A.5. Control Precedence over Multiple ACs | |||
When multiple ACs are requested by the same customer for the same | When multiple ACs are requested by the same customer for the same | |||
site, the request can tag one of these ACs as 'primary' and the other | site, the request can tag one of these ACs as 'primary' and the other | |||
ones as 'secondary'. An example of such a request is shown in | ones as 'secondary'. An example of such a request is shown in | |||
Figure 36. In this example, both ACs are bound to the same 'group- | Figure 36. In this example, both ACs are bound to the same 'group- | |||
id', and the 'precedence' data node is set as a function of the | id', and the 'precedence' data node is set as a function of the | |||
intended role of each AC (primary or secondary). | intended role of each AC (primary or secondary). | |||
skipping to change at page 110, line 4 ¶ | skipping to change at line 4920 ¶ | |||
"precedence": "ietf-ac-common:secondary" | "precedence": "ietf-ac-common:secondary" | |||
} | } | |||
], | ], | |||
"l2-connection": { | "l2-connection": { | |||
"bearer-reference": "bearerY@site1" | "bearer-reference": "bearerY@site1" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 36: Example of a Message Body to Associate a Precedence | Figure 36: Example of a Message Body to Associate a Precedence | |||
Level with ACs | Level with ACs | |||
A.6. Create Multiple ACs Bound to Multiple CEs | A.6. Create Multiple ACs Bound to Multiple CEs | |||
Figure 37 shows an example of CEs that are interconnected by a | Figure 37 shows an example of CEs that are interconnected by a | |||
service provider network. | service provider network. | |||
.----------------------------------. | .----------------------------------. | |||
.---. ac1 | | ac3 .---. | .---. ac1 | | ac3 .---. | |||
| CE1+-------+ +-------+ CE3| | | CE1+-------+ +-------+ CE3| | |||
'---' | | '---' | '---' | | '---' | |||
| Network | | | Network | | |||
.---. ac2 | | ac4 .---. | .---. ac2 | | ac4 .---. | |||
|CE2 +-------+ +-------+ CE4| | |CE2 +-------+ +-------+ CE4| | |||
'---' | | '---' | '---' | | '---' | |||
'----------------------------------' | '----------------------------------' | |||
Figure 37: Network Topology Example | Figure 37: Network Topology Example | |||
Let's assume that a request to instantiate various ACs that are shown | Let's assume that a request to instantiate the various ACs that are | |||
in Figure 37 is sent by the customer. Figure 38 depicts the example | shown in Figure 37 is sent by the customer. Figure 38 depicts the | |||
of the message body of a GET response that is received from the | example of the message body of a GET response that is received from | |||
controller. | the controller. | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac-group-profile": [ | "ac-group-profile": [ | |||
{ | { | |||
"name": "simple-profile", | "name": "simple-profile", | |||
"l2-connection": { | "l2-connection": { | |||
"encapsulation": { | "encapsulation": { | |||
"type": "ietf-vpn-common:dot1q", | "type": "ietf-vpn-common:dot1q", | |||
"dot1q": { | "dot1q": { | |||
skipping to change at page 111, line 42 ¶ | skipping to change at line 5007 ¶ | |||
], | ], | |||
"l2-connection": { | "l2-connection": { | |||
"bearer-reference": "ce4-network" | "bearer-reference": "ce4-network" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 38: Example of a Message Body of a Request to Create | Figure 38: Example of a Message Body of a Request to Create | |||
Multiple ACs bound to Multiple CEs | Multiple ACs Bound to Multiple CEs | |||
A.7. Binding Attachment Circuits to an IETF Network Slice | A.7. Binding Attachment Circuits to an IETF Network Slice | |||
This example shows how the AC service model complements the model | This example shows how the AC service model complements the model | |||
defined in "A YANG Data Model for the RFC 9543 Network Slice Service" | defined in "A YANG Data Model for the RFC 9543 Network Slice Service" | |||
[I-D.ietf-teas-ietf-network-slice-nbi-yang] to connect a site to a | [NSSM] to connect a site to a Slice Service. | |||
Slice Service. | ||||
First, Figure 39 describes the end-to-end network topology as well | First, Figure 39 describes the end-to-end network topology as well as | |||
the orchestration scopes: | the orchestration scopes: | |||
* The topology is made up of two sites ("site1" and "site2"), | * The topology is made up of two sites ("site1" and "site2"), | |||
interconnected via a Transport Network (e.g., IP/MPLS network). | interconnected via a Transport Network (e.g., IP/MPLS network). | |||
An SF is deployed within each site in a dedicated IP subnet. | An SF is deployed within each site in a dedicated IP subnet. | |||
* A 5G Service Management and Orchestration (SMO) is responsible for | * A 5G Service Management and Orchestration (SMO) is responsible for | |||
the deployment of SFs and the indirect management of a local | the deployment of SFs and the indirect management of a local | |||
Gateway (i.e., CE). | gateway (i.e., CE). | |||
* An IETF Network Slice Controller (NSC) [RFC9543] is responsible | * An IETF Network Slice Controller (NSC) [RFC9543] is responsible | |||
for the deployment of IETF Network Slices across the Transport | for the deployment of IETF Network Slices across the Transport | |||
Network. | Network. | |||
SFs are deployed within each site. | SFs are deployed within each site. | |||
5G SMO IETF NSC 5G SMO | 5G SMO IETF NSC 5G SMO | |||
| (TN Orchestrator) | | | (TN Orchestrator) | | |||
| | | | | | | | |||
skipping to change at page 119, line 8 ¶ | skipping to change at line 5337 ¶ | |||
A.8. Connecting a Virtualized Environment Running in a Cloud Provider | A.8. Connecting a Virtualized Environment Running in a Cloud Provider | |||
This example (Figure 44) shows how the AC service model can be used | This example (Figure 44) shows how the AC service model can be used | |||
to connect a Cloud Infrastructure to a service provider network. | to connect a Cloud Infrastructure to a service provider network. | |||
This example makes the following assumptions: | This example makes the following assumptions: | |||
1. A customer (e.g., Mobile Network Team or partner) has a | 1. A customer (e.g., Mobile Network Team or partner) has a | |||
virtualized infrastructure running in a Cloud Provider. A | virtualized infrastructure running in a Cloud Provider. A | |||
simplistic deployment is represented here with a set of Virtual | simplistic deployment is represented here with a set of Virtual | |||
Machines running in a Virtual Private Environment. The | Machines (VMs) running in a Virtual Private Environment. The | |||
deployment and management of this infrastructure is achieved via | deployment and management of this infrastructure is achieved via | |||
private APIs that are supported by the Cloud Provider: this | private APIs that are supported by the Cloud Provider; this | |||
realization is out of the scope of this document. | realization is out of the scope of this document. | |||
2. The connectivity to the Data Center is achieved thanks to a | 2. The connectivity to the data center is achieved thanks to a | |||
service based on direct attachment (physical connection), which | service based on direct attachment (physical connection), which | |||
is delivered upon ordering via an API exposed by the Cloud | is delivered upon ordering via an API exposed by the Cloud | |||
Provider. When ordering that connection, a unique "Connection | Provider. When ordering that connection, a unique "Connection | |||
Identifier" is generated and returned via the API. | Identifier" is generated and returned via the API. | |||
3. The customer provisions the networking logic within the Cloud | 3. The customer provisions the networking logic within the Cloud | |||
Provider based on that unique connection identifier (i.e., | Provider based on that unique Connection Identifier (i.e., | |||
logical interfaces, IP addressing, and routing). | logical interfaces, IP addressing, and routing). | |||
.--------------------------------------------------------. | .--------------------------------------------------------. | |||
| Cloud Provider DC | | | Cloud Provider DC | | |||
| | | | | | |||
| .---. .---. .---. | | | .---. .---. .---. | | |||
| |VM1| |VM2| |VM3| Virtual Private Cloud | | | |VM1| |VM2| |VM3| Virtual Private Cloud | | |||
| '-+-' '-+-' '-+-' | | | '-+-' '-+-' '-+-' | | |||
| |.2 |.5 |.12 198.51.100.0/24 | | | |.2 |.5 |.12 198.51.100.0/24 | | |||
| -+-----+-----+---+----------------------- | | | -+-----+-----+---+----------------------- | | |||
skipping to change at page 121, line 22 ¶ | skipping to change at line 5409 ¶ | |||
x | x | |||
x | x | |||
x | x | |||
Physical Connection 1234-56789 is delivered and | Physical Connection 1234-56789 is delivered and | |||
connected to PE1 | connected to PE1 | |||
Network Inventory Updated with: | Network Inventory Updated with: | |||
bearer-reference: 1234-56789 for PE1/Interface "If-A" | bearer-reference: 1234-56789 for PE1/Interface "If-A" | |||
Figure 45: Illustration of Pre-provisioning | Figure 45: Illustration of Pre-Provisioning | |||
Next, API workflows can be initiated by: | Next, API workflows can be initiated by: | |||
* The Cloud Provider for the configuration per Step (3) above. | * The Cloud Provider for the configuration per Step (3) above. | |||
* The Service provider network via the ACaaS model. This request | * The service provider network via the ACaaS model. This request | |||
can be used in conjunction with additional requests based on the | can be used in conjunction with additional requests based on the | |||
L3SM (VPN provisioning) or Network Slice Service model (5G hybrid | L3SM (VPN provisioning) or Network Slice Service model (5G hybrid | |||
Cloud deployment). | cloud deployment). | |||
Figure 46 shows the message body of the request to create the | Figure 46 shows the message body of the request to create the | |||
required ACs to connect the Cloud Provider Virtualized (VM) using the | required ACs to connect the virtualized Cloud Provider (VM) using the | |||
ACaaS module. | ACaaS module. | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "ac--BXT-DC-customer-VPC-foo", | "name": "ac--BXT-DC-customer-VPC-foo", | |||
"description": "Connection to Cloud Provider BXT on \ | "description": "Connection to Cloud Provider BXT on \ | |||
skipping to change at page 124, line 35 ¶ | skipping to change at line 5549 ¶ | |||
Figure 47: Message Body of a Response to the Request to Create | Figure 47: Message Body of a Response to the Request to Create | |||
ACs for Connecting to the Cloud Provider | ACs for Connecting to the Cloud Provider | |||
A.9. Connect Customer Network Through BGP | A.9. Connect Customer Network Through BGP | |||
CE-PE routing using BGP is a common scenario in the context of MPLS | CE-PE routing using BGP is a common scenario in the context of MPLS | |||
VPNs and is widely used in enterprise networks. In the example | VPNs and is widely used in enterprise networks. In the example | |||
depicted in Figure 48, the CE routers are customer-owned devices | depicted in Figure 48, the CE routers are customer-owned devices | |||
belonging to an AS (ASN 65536). CEs are located at the edge of the | belonging to an AS (ASN 65536). CEs are located at the edge of the | |||
provider's network (PE, or Provider Edge) and use point-to-point | provider's network (PE) and use point-to-point interfaces to | |||
interfaces to establish BGP sessions. The point-to-point interfaces | establish BGP sessions. The point-to-point interfaces rely upon a | |||
rely upon a physical bearer ("line-113") to reach the provider | physical bearer ("line-113") to reach the provider network. | |||
network. | ||||
.------------------------. .------------------. | .------------------------. .------------------. | |||
| Provider Network | | Customer Network | | | Provider Network | | Customer Network | | |||
| | CE-PE-AC | | | | | CE-PE-AC | | | |||
| .------------. |.2 .1 | .-----. ASN | | | .------------. |.2 .1 | .-----. ASN | | |||
| | PE1(VRF11) +---------------------sap#113 CE1 | 65536 | | | | PE1(VRF11) +---------------------sap#113 CE1 | 65536 | | |||
| | | | Bearer=line-113 | '-----' | | | | | | Bearer=line-113 | '-----' | | |||
| | PE1(VRF12) | | 192.0.2.1/30 | | | | | PE1(VRF12) | | 192.0.2.1/30 | | | |||
| | | | '------------------' | | | | | '------------------' | |||
| | PE1(VRF1n) | | | | | PE1(VRF1n) | | | |||
skipping to change at page 125, line 34 ¶ | skipping to change at line 5582 ¶ | |||
| '------------' | | | '------------' | | |||
'------------------------' | '------------------------' | |||
Figure 48: Illustration of Provider Network Scenario | Figure 48: Illustration of Provider Network Scenario | |||
The attachment circuit in this case uses a SAP identifier to refer to | The attachment circuit in this case uses a SAP identifier to refer to | |||
the physical interface used for the connection between the PE and the | the physical interface used for the connection between the PE and the | |||
CE. The attachment circuit includes all the additional logical | CE. The attachment circuit includes all the additional logical | |||
attributes to describe the connection between the two ends, including | attributes to describe the connection between the two ends, including | |||
VLAN information and IP addressing. Also, the configuration details | VLAN information and IP addressing. Also, the configuration details | |||
of the BGP session makes use of peer group details instead of | of the BGP session make use of peer group details instead of defining | |||
defining the entire configuration inside the 'neighbor' data node. | the entire configuration inside the 'neighbor' data node. | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "CE-PE-AC", | "name": "CE-PE-AC", | |||
"customer-name": "Customer-4875", | "customer-name": "Customer-4875", | |||
"description": "An AC between a CP and a PE", | "description": "An AC between a CP and a PE", | |||
"peer-sap-id": [ | "peer-sap-id": [ | |||
"sap#113" | "sap#113" | |||
skipping to change at page 127, line 4 ¶ | skipping to change at line 5647 ¶ | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 49: Message Body of a Request to Create ACs for Connecting | Figure 49: Message Body of a Request to Create ACs for Connecting | |||
CEs to a Provider Network | CEs to a Provider Network | |||
This scenario allows the provider to maintain a list of ACs belonging | This scenario allows the provider to maintain a list of ACs belonging | |||
to the same customer without requiring the full service | to the same customer without requiring the full service | |||
configuration. | configuration. | |||
A.10. Interconnection via Internet eXchange Points (IXPs) | A.10. Interconnection via Internet Exchange Points (IXPs) | |||
This section illustrates how to use the AC service model for | This section illustrates how to use the AC service model for | |||
interconnection purposes. To that aim, the document assumes a | interconnection purposes. To that aim, the document assumes a | |||
simplified Internet eXchange Point (IXP) configuration without | simplified IXP configuration without zooming into IXP deployment | |||
zooming into IXP deployment specifics. Let us assume that networks | specifics. Let us assume that networks are interconnected via a | |||
are interconnected via a Layer 2 facility. Let us also assume a | Layer 2 facility. Let us also assume a deployment context where | |||
deployment context where selective peering is in place between these | selective peering is in place between these networks. Networks that | |||
networks. Networks that are interested in establishing selective BGP | are interested in establishing selective BGP peerings expose a | |||
peerings expose a dedicated ACaaS server to the IXP to behave as an | dedicated ACaaS server to the IXP to behave as an ACaaS provider. | |||
ACaaS provider. BGP is used to exchange routing information and | BGP is used to exchange routing information and reachability | |||
reachability announcements between those networks. Any network | announcements between those networks. Any network operator connected | |||
operator connected to an IXP can behave as a client (i.e., initiate a | to an IXP can behave as a client (i.e., initiate a BGP peering | |||
BGP peering request). | request). | |||
This example follows the recursive deployment model depicted in | This example follows the recursive deployment model depicted in | |||
Figure 4. Specifically, base AC service requests are handled locally | Figure 4. Specifically, base AC service requests are handled locally | |||
by the IXP. However, binding BGP sessions to existing ACs involves a | by the IXP. However, binding BGP sessions to existing ACs involves a | |||
recursion step. | recursion step. | |||
.----------. AC .--------. AC .----------. | .----------. AC .--------. AC .----------. | |||
| Network | Service Model | IXP | Service Model | Network | | | Network | Service Model | IXP | Service Model | Network | | |||
| Operator A |<-------------->| Operator |<-------------->| Operator B | | | Operator A |<-------------->| Operator |<-------------->| Operator B | | |||
| | | B2B C/S | | | | | | | B2B C/S | | | | |||
skipping to change at page 127, line 48 ¶ | skipping to change at line 5692 ¶ | |||
Provisioning Provisioning Provisioning | Provisioning Provisioning Provisioning | |||
| | | | | | | | |||
.------v----. .-----v----. .------v-----. | .------v----. .-----v----. .------v-----. | |||
| ASBR |======Bearer=====| Layer 2 |=====Bearer=====| ASBR | | | ASBR |======Bearer=====| Layer 2 |=====Bearer=====| ASBR | | |||
| +-----Base AC-----+ Facility +-----Base AC----| | | | +-----Base AC-----+ Facility +-----Base AC----| | | |||
| | | | | | | | | | | | | | |||
| +..................BGP Session................+ | | | +..................BGP Session................+ | | |||
| |=================| |================| | | | |=================| |================| | | |||
'-----------' '----------' '------------' | '-----------' '----------' '------------' | |||
B2B C/S: Back-to-back Client/Server | B2B C/S: Back-to-Back Client/Server | |||
Figure 50: Recursive Deployment Example | Figure 50: Recursive Deployment Example | |||
The following subsections exemplify a deployment flow, but BGP | The following subsections exemplify a deployment flow, but BGP | |||
sessions can be managed without having to execute systematically all | sessions can be managed without having to systematically execute all | |||
the steps detailed hereafter. | the steps detailed hereafter. | |||
The bearer/AC service models can be used to establish interconnection | The bearer/AC service models can be used to establish interconnection | |||
between two networks without involving an IXP. | between two networks without involving an IXP. | |||
A.10.1. Retrieve Interconnection Locations | A.10.1. Retrieve Interconnection Locations | |||
Figure 51 shows an example a message body of a request to retrieve a | Figure 51 shows an example message body of a request to retrieve a | |||
list of interconnection locations. The request includes a customer | list of interconnection locations. The request includes a customer | |||
name and an ASN to filter out the locations. | name and an ASN to filter out the locations. | |||
{ | { | |||
"ietf-bearer-svc:locations": { | "ietf-bearer-svc:locations": { | |||
"filtered-by": "ietf-bearer-svc:customer-name", | "filtered-by": "ietf-bearer-svc:customer-name", | |||
"customer": [ | "customer": [ | |||
{ | { | |||
"name": "a future peer", | "name": "a future peer", | |||
"peer-as": 65536 | "peer-as": 65536 | |||
skipping to change at page 129, line 33 ¶ | skipping to change at line 5755 ¶ | |||
} | } | |||
} | } | |||
Figure 52: Message Body of a Response to Retrieve Interconnection | Figure 52: Message Body of a Response to Retrieve Interconnection | |||
Locations | Locations | |||
A.10.2. Create Bearers and Retrieve Bearer References | A.10.2. Create Bearers and Retrieve Bearer References | |||
A peer can then use the location information and select the ones | A peer can then use the location information and select the ones | |||
where it can request new bearers. As shown in Figure 53, the request | where it can request new bearers. As shown in Figure 53, the request | |||
includes a location reference which is known to the server (returned | includes a location reference that is known to the server (returned | |||
in Figure 52). | in Figure 52). | |||
{ | { | |||
"ietf-bearer-svc:bearers": { | "ietf-bearer-svc:bearers": { | |||
"bearer": [ | "bearer": [ | |||
{ | { | |||
"name": "a-name-choosen-by-client", | "name": "a-name-choosen-by-client", | |||
"provider-location-reference": "Location-X", | "provider-location-reference": "Location-X", | |||
"customer-point": { | "customer-point": { | |||
"identified-by": "ietf-bearer-svc:device-id", | "identified-by": "ietf-bearer-svc:device-id", | |||
"device": { | "device": { | |||
"device-id": "ASBR_1_Location_X" | "device-id": "ASBR_1_Location_X" | |||
} | } | |||
}, | }, | |||
"type": "ietf-bearer-svc:ethernet" | "type": "ietf-bearer-svc:ethernet" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 53: Message Body of a Request to Create a Bearer using a | ||||
Provider- Assigned Reference | Figure 53: Message Body of a Request to Create a Bearer Using a | |||
Provider-Assigned Reference | ||||
The bearer is then activated by the server as shown in Figure 54. A | The bearer is then activated by the server as shown in Figure 54. A | |||
'bearer-reference' is also returned. That reference can be used for | 'bearer-reference' is also returned. That reference can be used for | |||
subsequent AC activation requests. | subsequent AC activation requests. | |||
{ | { | |||
"ietf-bearer-svc:bearers": { | "ietf-bearer-svc:bearers": { | |||
"bearer": [ | "bearer": [ | |||
{ | { | |||
"name": "a-name-choosen-by-client", | "name": "a-name-choosen-by-client", | |||
skipping to change at page 134, line 9 ¶ | skipping to change at line 5921 ¶ | |||
} | } | |||
} | } | |||
Figure 57: Message Body of a Response to an AC Request to Connect | Figure 57: Message Body of a Response to an AC Request to Connect | |||
to an IXP | to an IXP | |||
Once the ACs are established, BGP peering sessions can be configured | Once the ACs are established, BGP peering sessions can be configured | |||
between routers of the participating networks. BGP sessions can be | between routers of the participating networks. BGP sessions can be | |||
established via a route server or between two networks. For the sake | established via a route server or between two networks. For the sake | |||
of illustration, let us assume that BGP sessions are established | of illustration, let us assume that BGP sessions are established | |||
directly between two network. Figure 58 shows an example of a | directly between two networks. Figure 58 shows an example of a | |||
request to add a BGP session to an existing AC. The properties of | request to add a BGP session to an existing AC. The properties of | |||
that AC are not repeated in this request because that information is | that AC are not repeated in this request because that information is | |||
already communicated during the creation of the AC. | already communicated during the creation of the AC. | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "Attachment Circuit 1", | "name": "Attachment Circuit 1", | |||
"routing-protocols": { | "routing-protocols": { | |||
skipping to change at page 135, line 49 ¶ | skipping to change at line 5970 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 58: Message Body of a Request to Create a BGP Session over | Figure 58: Message Body of a Request to Create a BGP Session over | |||
an AC | an AC | |||
Figure 59 provides the example of a response which indicates that the | Figure 59 provides the example of a response that indicates that the | |||
request is awaiting validation. The response includes also a server- | request is awaiting validation. The response also includes a server- | |||
assigned reference for this BGP session. | assigned reference for this BGP session. | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
{ | { | |||
"ietf-ac-svc:attachment-circuits": { | "ietf-ac-svc:attachment-circuits": { | |||
"ac": [ | "ac": [ | |||
{ | { | |||
"name": "Attachment Circuit 1", | "name": "Attachment Circuit 1", | |||
"role": "ietf-ac-common:public-nni", | "role": "ietf-ac-common:public-nni", | |||
skipping to change at page 138, line 27 ¶ | skipping to change at line 6092 ¶ | |||
"_comment": "other active BGP sessions over the AC" | "_comment": "other active BGP sessions over the AC" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 60: Message Body of a Response to Report All Active BGP | Figure 60: Message Body of a Response to Report All Active BGP | |||
sessions over an AC | Sessions over an AC | |||
A.11. Connectivity of Cloud Network Functions | A.11. Connectivity of Cloud Network Functions | |||
A.11.1. Scope | A.11.1. Scope | |||
This section demonstrates how the AC service model permits managing | This section demonstrates how the AC service model permits managing | |||
connectivity requirements for complex Network Functions (NFs) - | connectivity requirements for complex Network Functions (NFs) -- | |||
containerized or virtualized - that are typically deployed in Telco | containerized or virtualized -- that are typically deployed in Telco | |||
networks. This integration leverages the concept of "parent AC" to | networks. This integration leverages the concept of "parent AC" to | |||
decouple physical and logical connectivity so that several ACs can | decouple physical and logical connectivity so that several ACs can | |||
shares Layer 2 and Layer 3 resources. This approach provides | share Layer 2 and Layer 3 resources. This approach provides | |||
flexibility, scalability, and API stability. | flexibility, scalability, and API stability. | |||
The NFs have the following characteristics: | The NFs have the following characteristics: | |||
* The NF is distributed on a set of compute nodes with scaled-out | * The NF is distributed on a set of compute nodes with scaled-out | |||
and redundant instances. | and redundant instances. | |||
* The NF has two distinct type of instances: user plane ("nf-up") | * The NF has two distinct type of instances: user plane ("nf-up") | |||
and routing control plane ("nf-cp"). | and routing control plane ("nf-cp"). | |||
skipping to change at page 139, line 13 ¶ | skipping to change at line 6126 ¶ | |||
performance. | performance. | |||
* The control plane is deployed in a redundant fashion on two | * The control plane is deployed in a redundant fashion on two | |||
instances running on distinct compute nodes ("compute-09" and | instances running on distinct compute nodes ("compute-09" and | |||
"compute-10"). | "compute-10"). | |||
* The NF is attached to distinct networks, each making use of a | * The NF is attached to distinct networks, each making use of a | |||
dedicated VLAN. These VLANs are therefore instantiated as | dedicated VLAN. These VLANs are therefore instantiated as | |||
separate ACs. From a realization standpoint, the NF interface | separate ACs. From a realization standpoint, the NF interface | |||
connectivity is generally provided thanks to MacVLAN or Single | connectivity is generally provided thanks to MacVLAN or Single | |||
Root I/O Virtualization (SR-IOV). For the sake of simplicity only | Root I/O Virtualization (SR-IOV). For the sake of simplicity, | |||
two VLANs are presented in this example, additional VLANs are | only two VLANs are presented in this example; additional VLANs are | |||
configured following a similar logic. | configured following a similar logic. | |||
A.11.2. Physical Infrastructure | A.11.2. Physical Infrastructure | |||
Figure 61 describes the physical infrastructure. The compute nodes | Figure 61 describes the physical infrastructure. The compute nodes | |||
(customer) are attached to the provider infrastructure thanks to a | (customer) are attached to the provider infrastructure thanks to a | |||
set of physical links on which attachment circuits are provisioned | set of physical links on which attachment circuits are provisioned | |||
(i.e., "compute-XX-nicY"). The provider infrastructure can be | (i.e., "compute-XX-nicY"). The provider infrastructure can be | |||
realized in multiple ways, such as IP Fabric, Layer 2/Layer 3 Edge | realized in multiple ways, such as IP Fabric and Layer 2/3 Edge | |||
Routers. This document does not intend to detail these aspects. | Routers. This document does not intend to detail these aspects. | |||
.---------------------------. | .---------------------------. | |||
.------------. bearer = | .--------. | | .------------. bearer = | .--------. | | |||
| | compute-01-nic1 | | | | | | | compute-01-nic1 | | | | | |||
| compute-01 |------------------------| '--------' | | | compute-01 |------------------------| '--------' | | |||
| | | | | | | | | | |||
'------------' | .--------. .--------. | | '------------' | .--------. .--------. | | |||
| | | | | | | | | | | | | | |||
| '--------' '--------' | | | '--------' '--------' | | |||
skipping to change at page 140, line 17 ¶ | skipping to change at line 6176 ¶ | |||
The NFs are deployed on this infrastructure in the following way: | The NFs are deployed on this infrastructure in the following way: | |||
* Configuration of a parent AC as a centralized attachment for "vlan | * Configuration of a parent AC as a centralized attachment for "vlan | |||
100". The parent AC captures Layer 2 and Layer 3 properties for | 100". The parent AC captures Layer 2 and Layer 3 properties for | |||
this VLAN: vlan-id, IP default gateway and subnet, IP address pool | this VLAN: vlan-id, IP default gateway and subnet, IP address pool | |||
for NFs endpoints, static routes with BFD to user plane, and BGP | for NFs endpoints, static routes with BFD to user plane, and BGP | |||
configuration to control plane NFs. In addition, the IP addresses | configuration to control plane NFs. In addition, the IP addresses | |||
of the user plane ("nf-up") instances are protected using BFD. | of the user plane ("nf-up") instances are protected using BFD. | |||
* Configuration of a parent AC as a centralized attachment for "vlan | * Configuration of a parent AC as a centralized attachment for "vlan | |||
200". This vlan is for Layer 2 connectivity between NFs (no IP | 200". This VLAN is for Layer 2 connectivity between NFs (no IP | |||
configuration in the provider network). | configuration in the provider network). | |||
* "Child ACs" binding bearers to parent ACs for "vlan 100" and "vlan | * "Child ACs" binding bearers to parent ACs for "vlan 100" and "vlan | |||
200". | 200". | |||
* The deployment of the network service to all compute nodes | * The deployment of the network service to all compute nodes | |||
("compute-01" to "compute-10"), even though the NF is not | ("compute-01" to "compute-10"), even though the NF is not | |||
instantiated on "compute-07"/"compute-08". This approach permits | instantiated on "compute-07"/"compute-08". This approach permits | |||
handling compute failures and scale-out scenarios in a reactive | handling compute failures and scale-out scenarios in a reactive | |||
and flexible fashion thanks to a pre-provisioned networking logic. | and flexible fashion thanks to a pre-provisioned networking logic. | |||
skipping to change at page 141, line 35 ¶ | skipping to change at line 6243 ¶ | |||
| '----' | | | | | '----' | | | | |||
compute-09 | | | compute-09 | | | |||
.----------. <-----------BGP------------->| | | .----------. <-----------BGP------------->| | | |||
| .----. |.10 .253 | | | | .----. |.10 .253 | | | |||
| |nf-cp2| |---------vlan-100-------------| | | | |nf-cp2| |---------vlan-100-------------| | | |||
| | | |---------vlan-200-------------| | | | | | |---------vlan-200-------------| | | |||
| '----' | '-----------------------' | | '----' | '-----------------------' | |||
compute-10 | compute-10 | |||
.---------------------------------. | .---------------------------------. | |||
|nf-cp routing for VLAN 100 | | |nf-cp routing for VLAN 100 | | |||
|advertizes pools with 1:N backup | | |advertises pools with 1:N backup | | |||
|route. | | |route. | | |||
|BGP UPDATE: | | |BGP UPDATE: | | |||
|203.0.113.0/24, NH = 198.51.100.100| ----> | |203.0.113.0/24, NH = 198.51.100.100| ----> | |||
|203.0.113.0/28, NH = 192.0.2.1 | | |203.0.113.0/28, NH = 192.0.2.1 | | |||
|203.0.113.16/28, NH = 192.0.2.2 | | |203.0.113.16/28, NH = 192.0.2.2 | | |||
|... | | |... | | |||
|203.0.113.80/28, NH = 192.0.2.6 | | |203.0.113.80/28, NH = 192.0.2.6 | | |||
|203.0.113.96/28, NH = 192.0.2.7 | | |203.0.113.96/28, NH = 192.0.2.7 | | |||
'---------------------------------' | '---------------------------------' | |||
Figure 62: Logical Topology of the NFs Deployment | Figure 62: Logical Topology of the NFs Deployment | |||
For readability the payload is displayed as single JSON file | For readability, the payload is displayed as a single JSON file | |||
(Figure 63). In practice, several API calls may take place to | (Figure 63). In practice, several API calls may take place to | |||
initialize these resources (e.g., GET requests from the customer to | initialize these resources (e.g., GET requests from the customer to | |||
retrieve the IP address pools for NFs on "vlan 100" thanks to parent | retrieve the IP address pools for NFs on "vlan 100" thanks to parent | |||
configuration and BGP configuration, and POST extra routes for user | configuration and BGP configuration and POST extra routes for user | |||
planes and BFD). | planes and BFD). | |||
Note that no individual IP addresses are assigned for the NF user | Note that no individual IP addresses are assigned for the NF user | |||
plane instances (i.e., no 'customer-address' in the Child AC). The | plane instances (i.e., no 'customer-address' in the Child AC). The | |||
assignment of IP addresses to the NF endpoints is managed by the | assignment of IP addresses to the NF endpoints is managed by the | |||
Cloud Infrastructure IPAM based on the 'customer-address' IP address | Cloud Infrastructure IP Address Management (IPAM) based on the | |||
pool "192.0.2.1-200". Like in any conventional LAN-facing scenario, | 'customer-address' IP address pool "192.0.2.1-200". Like in any | |||
it is assumed that the actual binding of IP endpoints to logical | conventional LAN-facing scenario, it is assumed that the actual | |||
attachments (here Child ACs) relies on a dedicated protocol logic | binding of IP endpoints to logical attachments (here Child ACs) | |||
(typically, Address Resolution Protocol (ARP) [RFC0826] or Neighbor | relies on a dedicated protocol logic (typically, Address Resolution | |||
Discovery [RFC4861]) and is not captured in the data model. Hence, | Protocol (ARP) [RFC0826] or Neighbor Discovery [RFC4861]) and is not | |||
the IP addresses displayed for NF user plane instances are simply | captured in the data model. Hence, the IP addresses displayed for NF | |||
examples to illustrate a realization approach. Note also that the | user plane instances are simply examples to illustrate a realization | |||
Control Plane is defined with static IP address assignments on a | approach. Note also that the control plane is defined with static IP | |||
given AC/bearer to illustrate another deployment alternative. | address assignments on a given AC/bearer to illustrate another | |||
deployment alternative. | ||||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
{ | { | |||
"ietf-ac-svc:specific-provisioning-profiles": { | "ietf-ac-svc:specific-provisioning-profiles": { | |||
"valid-provider-identifiers": { | "valid-provider-identifiers": { | |||
"failure-detection-profile-identifier": [ | "failure-detection-profile-identifier": [ | |||
{ | { | |||
"id": "single-hop-bfd-user-plane" | "id": "single-hop-bfd-user-plane" | |||
} | } | |||
skipping to change at page 148, line 16 ¶ | skipping to change at line 6557 ¶ | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Figure 63: Message Body for the Configuration of the NF ACs | Figure 63: Message Body for the Configuration of the NF ACs | |||
A.11.4. NF Failure and Scale-Out | A.11.4. NF Failure and Scale-Out | |||
Assuming a failure of "compute-01", the instance "nf-up-1" can be | Assuming a failure of "compute-01", the instance "nf-up-1" can be | |||
redeployed to "compute-07" by the NF/Cloud Orchestration. The NFs | redeployed to "compute-07" by the NF / cloud orchestration. The NFs | |||
can be scaled-out thanks to the creation of an extra instance "nf- | can be scaled-out thanks to the creation of an extra instance "nf- | |||
up7" on "compute-08". Since connectivity is pre-provisioned, these | up7" on "compute-08". Since connectivity is pre-provisioned, these | |||
operations happen without any API calls. In other words, this | operations happen without any API calls. In other words, this | |||
redeployment is transparent from the perspective of the configuration | redeployment is transparent from the perspective of the configuration | |||
of the provider network. | of the provider network. | |||
.-----------------------. | .-----------------------. | |||
| | | | | | |||
.----------. | .------------------. | | .----------. | .------------------. | | |||
| | | | | | | | | | | | | | |||
skipping to change at page 148, line 49 ¶ | skipping to change at line 6590 ¶ | |||
| | | |---------vlan-200-------------| compute-07 | | | | | |---------vlan-200-------------| compute-07 | | |||
| '----' | | | | | '----' | | | | |||
compute-07 | | | compute-07 | | | |||
.----------. | nf-up7 on | | .----------. | nf-up7 on | | |||
| .----. |.7 < - BFD - > | compute-08 | | | .----. |.7 < - BFD - > | compute-08 | | |||
| |nf-up7| |---------vlan-100-------------| created for | | | |nf-up7| |---------vlan-100-------------| created for | | |||
| | | |---------vlan-200-------------| scale-out | | | | | |---------vlan-200-------------| scale-out | | |||
| '----' | | | | | '----' | | | | |||
compute-08 '-----------------------' | compute-08 '-----------------------' | |||
Figure 64: Example of Compute Failure and Scale-out | Figure 64: Example of Compute Failure and Scale-Out | |||
Finally, the addition or deletion of compute nodes in the deployment | Finally, the addition or deletion of compute nodes in the deployment | |||
("compute-11", "compute-12", etc.) involves merely changes on Child | ("compute-11", "compute-12", etc.) involves merely changes on Child | |||
ACs and possible routing on the parent AC. In any case, the parent | ACs and possible routing on the parent AC. In any case, the parent | |||
AC is a stable identifier, which can be consumed as a reference by | AC is a stable identifier, which can be consumed as a reference by | |||
end-to-end service models for VPN configuration such as | end-to-end service models for VPN configuration such as AC Glue | |||
[I-D.ietf-opsawg-ac-lxsm-lxnm-glue], Slice Service | [RFC9836], Slice Service [NSSM], etc. This decoupling to a stable | |||
[I-D.ietf-teas-ietf-network-slice-nbi-yang], etc. This decoupling to | identifier provides great benefits in terms of scalability and | |||
a stable identifier provides great benefits in terms of scalability | flexibility since once the reference with the parent AC is | |||
and flexibility since once the reference with the parent AC is | ||||
implemented, no API call involving the VPN model is needed for any | implemented, no API call involving the VPN model is needed for any | |||
modification in the cloud. | modification in the cloud. | |||
A.12. BFD and Static Addressing | A.12. BFD and Static Addressing | |||
Figure 65 shows a topology example of a set of CEs connected to a | Figure 65 shows a topology example of a set of CEs connected to a | |||
provider network via dedicated bearers. Each of these CE maintains | provider network via dedicated bearers. Each of these CEs maintains | |||
two BFD sessions with the provider network. | two BFD sessions with the provider network. | |||
+----------------------------+ | +----------------------------+ | |||
.-------. .1 | | | .-------. .1 | | | |||
| CE1 |------------|------+ | | | CE1 |------------|------+ | | |||
'-------' | | .252 | | '-------' | | .252 | | |||
| +---+----+ +----------+ | | | +---+----+ +----------+ | | |||
.-------. .2 | | LAN |---| GW1 | | | .-------. .2 | | LAN |---| GW1 | | | |||
| CE2 |------------|--| | | [BFD] | | | | CE2 |------------|--| | | [BFD] | | | |||
'-------' | 192.0.2/24 +----------+ | | '-------' | 192.0.2/24 +----------+ | | |||
skipping to change at page 149, line 50 ¶ | skipping to change at line 6636 ¶ | |||
Each CE has a BFD session to each gateway for redundancy: | Each CE has a BFD session to each gateway for redundancy: | |||
.-------. | .-------. | |||
| CEx | .x <---BFD---> .252 | | CEx | .x <---BFD---> .252 | |||
'-------' <---BFD---> .253 | '-------' <---BFD---> .253 | |||
Figure 65: Example of Static Addressing with BFD | Figure 65: Example of Static Addressing with BFD | |||
Figure 66 shows the message body of the ACaaS configuration to enable | Figure 66 shows the message body of the ACaaS configuration to enable | |||
the target architecture shown in Figure 65. This example uses an AC | the target architecture shown in Figure 65. This example uses an AC | |||
group profile to factorize common data between all involved ACs. It | group profile to factorize common data between all involved ACs. It | |||
also uses child ACs that inherit the properties of two parent ACs; | also uses child ACs that inherit the properties of two parent ACs, | |||
each terminating in a separate gateway in the provider network. | each terminating in a separate gateway in the provider network. | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
{ | { | |||
"ietf-ac-svc:specific-provisioning-profiles": { | "ietf-ac-svc:specific-provisioning-profiles": { | |||
"valid-provider-identifiers": { | "valid-provider-identifiers": { | |||
"failure-detection-profile-identifier": [ | "failure-detection-profile-identifier": [ | |||
{ | { | |||
"id": "single-hop-bfd" | "id": "single-hop-bfd" | |||
skipping to change at page 169, line 46 ¶ | skipping to change at line 7593 ¶ | |||
+--rw profile forwarding-profile-reference | +--rw profile forwarding-profile-reference | |||
Acknowledgments | Acknowledgments | |||
This document leverages [RFC9182] and [RFC9291]. Thanks to Gyan | This document leverages [RFC9182] and [RFC9291]. Thanks to Gyan | |||
Mishra for the review. | Mishra for the review. | |||
Thanks to Ebben Aries for the YANG Doctors review and for providing | Thanks to Ebben Aries for the YANG Doctors review and for providing | |||
[Instance-Data]. | [Instance-Data]. | |||
Thanks to Donald Eastlake for the careful rtg-dir reviews, Tero | Thanks to Donald Eastlake for the careful RTGDIR review, Tero Kivinen | |||
Kivinen for the sec-dir review, Gyan Mishra for the genart review, | for the SECDIR review, Gyan Mishra for the GENART review, and Adrian | |||
and Adrian Farrel for the opsdir review. | Farrel for the OPSDIR review. | |||
Thanks to Luis Miguel Contreras Murillo for the careful Shepherd | Thanks to Luis Miguel Contreras Murillo for the careful shepherd | |||
review. | review. | |||
Thanks to Mahesh Jethanandani for the AD review. | Thanks to Mahesh Jethanandani for the AD review. | |||
Thanks to Éric Vyncke, Gunter Van de Velde, Erik Kline, and Paul | Thanks to Éric Vyncke, Gunter Van de Velde, Erik Kline, and Paul | |||
Wouters for the IESG review. | Wouters for the IESG review. | |||
Contributors | Contributors | |||
Victor Lopez | Victor Lopez | |||
End of changes. 280 change blocks. | ||||
1248 lines changed or deleted | 1199 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |