rfc9731v1.txt | rfc9731.txt | |||
---|---|---|---|---|
skipping to change at line 12 ¶ | skipping to change at line 12 ¶ | |||
Internet Engineering Task Force (IETF) Y. Lee, Ed. | Internet Engineering Task Force (IETF) Y. Lee, Ed. | |||
Request for Comments: 9731 Samsung Electronics | Request for Comments: 9731 Samsung Electronics | |||
Category: Standards Track D. Dhody, Ed. | Category: Standards Track D. Dhody, Ed. | |||
ISSN: 2070-1721 Huawei | ISSN: 2070-1721 Huawei | |||
D. Ceccarelli | D. Ceccarelli | |||
Cisco | Cisco | |||
I. Bryskin | I. Bryskin | |||
Individual | Individual | |||
B. Yoon | B. Yoon | |||
ETRI | ETRI | |||
January 2025 | February 2025 | |||
A YANG Data Model for Virtual Network (VN) Operations | A YANG Data Model for Virtual Network (VN) Operations | |||
Abstract | Abstract | |||
A Virtual Network (VN) is a network provided by a service provider to | A Virtual Network (VN) is a network provided by a service provider to | |||
a customer for the customer to use in any way it wants as though it | a customer for the customer to use in any way it wants as though it | |||
were a physical network. This document provides a YANG data model | were a physical network. This document provides a YANG data model | |||
generally applicable to any mode of VN operations. This includes VN | generally applicable to any mode of VN operations. This includes VN | |||
operations as per the Abstraction and Control of TE Networks (ACTN) | operations as per the Abstraction and Control of TE Networks (ACTN) | |||
framework. | framework (see RFC 8453). | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
skipping to change at line 57 ¶ | skipping to change at line 57 ¶ | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction | 1. Introduction | |||
1.1. Terminology | 1.1. Terminology and Conventions | |||
1.2. Tree Diagram | 1.2. Tree Diagram | |||
1.3. Prefixes in Data Node Names | 1.3. Prefixes in Data Node Names | |||
2. Use Case of VN YANG Model in the ACTN Context | 2. Use Case of VN YANG Data Model in the ACTN Context | |||
2.1. Type 1 VN | 2.1. Type 1 VN | |||
2.2. Type 2 VN | 2.2. Type 2 VN | |||
3. High-Level Control Flows with Examples | 3. High-Level Control Flows with Examples | |||
3.1. Type 1 VN Illustration | 3.1. Type 1 VN Illustration | |||
3.2. Type 2 VN Illustration | 3.2. Type 2 VN Illustration | |||
3.2.1. VN and AP Usage | 3.2.1. VN and AP Usage | |||
4. VN Model Usage | 4. VN YANG Data Model Usage | |||
4.1. Customer View of VN | 4.1. Customer View of VN | |||
4.2. Auto-creation of VN by MDSC | 4.2. Auto-creation of VN by MDSC | |||
4.3. Innovative Services | 4.3. Innovative Services | |||
4.3.1. VN Compute | 4.3.1. VN Compute | |||
4.3.2. Multiple Sources and Multiple Destinations | 4.3.2. Multiple Sources and Multiple Destinations | |||
4.4. Others | 4.4. Others | |||
4.5. Summary | 4.5. Summary | |||
5. VN YANG Model (Tree Structure) | 5. VN YANG Data Model (Tree Structure) | |||
6. VN YANG Model | 6. VN YANG Data Model | |||
7. Security Considerations | 7. Security Considerations | |||
8. IANA Considerations | 8. IANA Considerations | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
9.2. Informative References | 9.2. Informative References | |||
Appendix A. Performance Constraints | Appendix A. Performance Constraints | |||
Appendix B. JSON Example | Appendix B. JSON Example | |||
B.1. VN JSON | B.1. VN JSON | |||
B.2. TE-Topology JSON | B.2. TE Topology JSON | |||
Acknowledgments | Acknowledgments | |||
Contributors' Addresses | Contributors' Addresses | |||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Abstraction and Control of TE Networks (ACTN) describes a set of | Abstraction and Control of TE Networks (ACTN) describes a set of | |||
management and control functions used to operate one or more Traffic | management and control functions used to operate one or more Traffic | |||
Engineered (TE) networks to construct a Virtual Network (VN). A VN | Engineered (TE) networks to construct a Virtual Network (VN). A VN | |||
is represented to customers and is built from the abstractions of the | is represented to customers and is built from the abstractions of the | |||
underlying TE networks [RFC8453]. This document provides a YANG data | underlying TE networks [RFC8453]. This document provides a YANG data | |||
model [RFC7950] generally applicable to any mode of VN operation. | model [RFC7950] generally applicable to any mode of VN operation. | |||
ACTN is the primary example of the usage of the VN YANG model, but VN | ACTN is the primary example of the usage of the VN YANG data model, | |||
is not limited to it. | but VN is not limited to it. | |||
The VN model defined in this document is applicable in a generic | The VN model defined in this document is applicable in a generic | |||
sense as an independent model in and of itself. It can also work | sense as an independent model in and of itself. It can also work | |||
together with other customer service models such as the L3VPN Service | together with other customer service models such as the L3VPN Service | |||
Model (L3SM) [RFC8299], the L2VPN Service Model (L2SM) [RFC8466], and | Model (L3SM) [RFC8299], the L2VPN Service Model (L2SM) [RFC8466], and | |||
the L1 Connectivity Service Model (L1CSM) [L1CSM-YANG] to provide | the L1 Connectivity Service Model (L1CSM) [L1CSM-YANG] to provide | |||
complete life-cycle service management and operations. | complete life-cycle service management and operations. | |||
The YANG model discussed in this document basically provides the | The YANG data model discussed in this document basically provides the | |||
following: | following: | |||
* Characteristics of Access Points (APs) that describe customer's | * Characteristics of Access Points (APs) that describe customer's | |||
endpoint characteristics; | endpoint characteristics; | |||
* Characteristics of Virtual Network Access Points (VNAPs) that | * Characteristics of Virtual Network Access Points (VNAPs) that | |||
describe how an AP is partitioned for multiple VNs sharing the AP | describe how an AP is partitioned for multiple VNs sharing the AP | |||
and its reference to a Link Termination Point (LTP) of the | and its reference to a Link Termination Point (LTP) of the | |||
Provider Edge (PE) node; | Provider Edge (PE) node; | |||
* Characteristics of Virtual Networks (VNs) that describe the | * Characteristics of VNs that describe the customer's VN in terms of | |||
customer's VN in terms of multiple VN Members comprising a VN, | multiple VN members comprising a VN, multi-source and/or multi- | |||
multi-source and/or multi-destination characteristics of the VN | destination characteristics of the VN member, the VN's reference | |||
Member, the VN's reference to TE-topology's Abstract Node; | to TE-topology's abstract node. | |||
An abstract TE topology is a topology that contains abstract | An abstract TE topology is a topology that contains abstract | |||
topological elements (nodes, links) created and customized based on | topological elements (nodes, links) created and customized based on | |||
customer preference [RFC8795]. The actual VN instantiation and | customer preference [RFC8795]. The actual VN instantiation and | |||
computation is performed with Connectivity Matrices of the TE- | computation is performed with connectivity matrices of the TE | |||
Topology Model [RFC8795], which provides a TE network topology | Topology model [RFC8795], which provides a TE network topology | |||
abstraction and management operation. As per [RFC8795], a TE node | abstraction and management operation. As per [RFC8795], a TE node | |||
connectivity matrix is the TE node's switching limitations in the | connectivity matrix is the TE node's switching limitations in the | |||
form of valid switching combinations of the TE node's LTPs and | form of valid switching combinations of the TE node's LTPs and | |||
potential TE paths. The VN representation relies on a single | potential TE paths. The VN representation relies on a single | |||
abstract TE node with a connectivity matrix. The VN can be | abstract TE node with a connectivity matrix. The VN can be | |||
abstracted as a set of edge-to-edge links (a Type 1 VN). Each link | abstracted as a set of edge-to-edge links (a Type 1 VN). Each link | |||
is the VN member that is mapped to the connectivity matrix entry | is the VN member that is mapped to the connectivity matrix entry | |||
(Section 2.1). The VN can also be abstracted as a topology of | (Section 2.1). The VN can also be abstracted as a topology of | |||
virtual nodes and virtual links (a Type 2 VN). Alongside the mapping | virtual nodes and virtual links (a Type 2 VN). Alongside the mapping | |||
of VN members to a connectivity matrix entry, an underlay path can | of VN members to a connectivity matrix entry, an underlay path can | |||
also be specified (Section 2.2). | also be specified (Section 2.2). | |||
Once the TE-topology Model is used in triggering VN instantiation | Once the TE Topology model is used in triggering VN instantiation | |||
over the networks, the TE-tunnel Model [YANG-TE] will inevitably | over the networks, the TE model [YANG-TE] will inevitably interact | |||
interact with the TE-Topology model when setting up actual tunnels | with the TE Topology model when setting up actual tunnels and Label | |||
and Label Switched Paths (LSPs) under the tunnels. | Switched Paths (LSPs) under the tunnels. | |||
Sections 2 and 3 provide a discussion of how the VN YANG model is | Sections 2 and 3 provide a discussion of how the VN YANG data model | |||
applicable to the ACTN context where a Virtual Network Service (VNS) | is applicable to the ACTN context where a Virtual Network Service | |||
operation is implemented for the interface of the Customer Network | (VNS) operation is implemented for the interface of the Customer | |||
Controller (CNC) and the Multi-Domain Service Coordinator (MDSC). | Network Controller (CNC) and the Multi-Domain Service Coordinator | |||
(MDSC). | ||||
The YANG model for the CNC-MDSC Interface (CMI) is also known as the | The YANG data model for the CNC-MDSC Interface (CMI) is also known as | |||
"customer service model" in [RFC8309]. The YANG model discussed in | the "customer service model" in [RFC8309]. The YANG data model | |||
this document is used to operate customer-driven VNs during the VN | discussed in this document is used to operate customer-driven VNs | |||
instantiation and computation as well as its life-cycle service | during the VN instantiation and computation as well as its life-cycle | |||
management and operations. | service management and operations. | |||
The VN operational state is included in the same tree as the | The VN operational state is included in the same tree as the | |||
configuration consistent with Network Management Datastore | configuration consistent with Network Management Datastore | |||
Architecture (NMDA) [RFC8342]. | Architecture (NMDA) [RFC8342]. | |||
1.1. Terminology | 1.1. Terminology and Conventions | |||
This document borrows the following terms from [RFC8453]: | This document borrows the following abbreviations from [RFC8453] and/ | |||
or [RFC8795]: | ||||
VN: Virtual Network | VN: Virtual Network | |||
AP: Access Point | AP: Access Point | |||
VNAP: VN Access Point | VNAP: VN Access Point | |||
ACTN: Abstraction and Control of TE Networks | ACTN: Abstraction and Control of TE Networks | |||
CNC: Customer Network Controller | CNC: Customer Network Controller | |||
MDSC: Multi-Domain Service Coordinator | MDSC: Multi-Domain Service Coordinator | |||
CMI: CNC-MDSC Interface | CMI: CNC-MDSC Interface | |||
This document borrows the following terms from [RFC8795]: | ||||
LTP: Link Termination Point | LTP: Link Termination Point | |||
Connectivity Matrix | This document borrows the terminology in Section 1.1 of [RFC7926], | |||
the term "Service Model" from [RFC8309], and the term "Connectivity | ||||
This document borrows the terminology in Section 1.1 of [RFC7926]. | Matrix" from [RFC8795]. | |||
This document uses the term 'Service Model' as described in | Various examples in this document contain long lines that may be | |||
[RFC8309]. | folded, as described in [RFC8792]. | |||
1.2. Tree Diagram | 1.2. Tree Diagram | |||
A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
Section 5 of this document. The meaning of the symbols in these | Section 5 of this document. The meaning of the symbols in these | |||
diagrams is defined in [RFC8340]. | diagrams is defined in [RFC8340]. | |||
1.3. Prefixes in Data Node Names | 1.3. Prefixes in Data Node Names | |||
In this document, the names of data nodes and other data model | In this document, the names of data nodes and other data model | |||
skipping to change at line 220 ¶ | skipping to change at line 220 ¶ | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| nt | ietf-network-topology | [RFC8345] | | | nt | ietf-network-topology | [RFC8345] | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| te-types | ietf-te-types | [RFC8776] | | | te-types | ietf-te-types | [RFC8776] | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| tet | ietf-te-topology | [RFC8795] | | | tet | ietf-te-topology | [RFC8795] | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
Table 1: Prefixes and Corresponding YANG Modules | Table 1: Prefixes and Corresponding YANG Modules | |||
2. Use Case of VN YANG Model in the ACTN Context | 2. Use Case of VN YANG Data Model in the ACTN Context | |||
In this section, ACTN is being used to illustrate the general usage | In this section, ACTN is being used to illustrate the general usage | |||
of the VN YANG model. The model presented in this section has the | of the VN YANG data model. The model presented in this section has | |||
following ACTN context. | the following ACTN context. | |||
+-------+ | +-------+ | |||
| CNC | | | CNC | | |||
+-------+ | +-------+ | |||
| | | | |||
| VN YANG + TE-topology YANG | | VN + TE Topology | |||
| | | | |||
+-----------------------+ | +-----------------------+ | |||
| MDSC | | | MDSC | | |||
+-----------------------+ | +-----------------------+ | |||
Figure 1: ACTN CMI | Figure 1: ACTN CMI | |||
Both ACTN VN YANG and TE-topology models are used over the CMI to | Both ACTN VN and TE Topology YANG data models are used over the CMI | |||
establish a VN over TE networks, as shown in Figure 1. | to establish a VN over TE networks, as shown in Figure 1. | |||
2.1. Type 1 VN | 2.1. Type 1 VN | |||
As defined in [RFC8453], a Virtual Network is a customer view of the | As defined in [RFC8453], a VN is a customer view of the TE network. | |||
TE network. To recapitulate VN types from [RFC8453], a Type 1 VN is | To recapitulate VN types from [RFC8453], a Type 1 VN is defined as | |||
defined as follows: | follows: | |||
| The VN can be seen as a set of edge-to-edge abstract links (a Type | The VN can be seen as a set of edge-to-edge abstract links (a Type 1 | |||
| 1 VN). Each abstract link is referred to as a VN member and is | VN). Each abstract link is referred to as a VN member and is formed | |||
| formed as an end-to-end tunnel across the underlying networks. | as an end-to-end tunnel across the underlying networks. Such tunnels | |||
| Such tunnels may be constructed by recursive slicing or | may be constructed by recursive slicing or abstraction of paths in | |||
| abstraction of paths in the underlying networks and can encompass | the underlying networks and can encompass edge points of the | |||
| edge points of the customer's network, access links, intra-domain | customer's network, access links, intra-domain paths, and inter- | |||
| paths, and inter-domain links. | domain links. | |||
If we were to create a VN where we have four VN-members as follows: | If we were to create a VN where we have four VN members as follows: | |||
VN-member 1 L1-L4 | VN member 1 L1-L4 | |||
VN-member 2 L1-L7 | VN member 2 L1-L7 | |||
VN-member 3 L2-L4 | VN member 3 L2-L4 | |||
VN-member 4 L3-L8 | VN member 4 L3-L8 | |||
Figure 2 | Figure 2: VN Members (Type 1 VN) | |||
Where L1, L2, L3, L4, L7, and L8 correspond to a Customer Endpoint | Where L1, L2, L3, L4, L7, and L8 correspond to a Customer Endpoint | |||
(or AP). | (or AP). | |||
This VN can be modeled as one abstract node representation as follows | This VN can be modeled as one abstract node representation as follows | |||
in Figure 3: | in Figure 3: | |||
+----------------------------------------------+ | +----------------------------------------------+ | |||
| | | | | | |||
L1----|..............................................|------L4 | L1----|..............................................|------L4 | |||
skipping to change at line 284 ¶ | skipping to change at line 284 ¶ | |||
| . AN1 . | | | . AN1 . | | |||
| . . | | | . . | | |||
| ..................................*.....|------L7 | | ..................................*.....|------L7 | |||
| . | | | . | | |||
L2-----|....................................... | | L2-----|....................................... | | |||
| | | | | | |||
L3-----|..............................................|------L8 | L3-----|..............................................|------L8 | |||
| | | | | | |||
+----------------------------------------------+ | +----------------------------------------------+ | |||
Figure 3: Abstract Node (One Node Topology) | Figure 3: Abstract Node (Type 1 Topology) | |||
Modeling a VN as one abstract node is the easiest way for customers | Modeling a VN as one abstract node is the easiest way for customers | |||
to express their end-to-end connectivity as shown in Figure 3. | to express their end-to-end connectivity as shown in Figure 3. | |||
2.2. Type 2 VN | 2.2. Type 2 VN | |||
For some VN members, the customers are allowed to configure the | For some VN members, the customers are allowed to configure the | |||
intended path. To achieve this, alongside the single node abstract | intended path. To achieve this, alongside the single node abstract | |||
topology, an underlay topology is also needed. The underlay topology | topology, an underlay topology is also needed. The underlay topology | |||
could be native TE topology or an abstract TE topology. The intended | could be native TE topology or an abstract TE topology. The intended | |||
path is set based on the nodes and links of the underlay topology. A | path is set based on the nodes and links of the underlay topology. A | |||
Type 1 VN can be seen as a higher abstraction of a Type 2 VN (which | Type 1 VN can be viewed as a higher-level abstraction of a Type 2 VN, | |||
along with a single node abstract topology, an underlay topology and | which represents a single node abstract topology over the underlay | |||
the intended path are specified). These topologies could be mutually | topology and includes a mechanism to specify intended paths. These | |||
agreed upon between the CNC and the MDSC prior to VN creation or they | topologies could be mutually agreed upon between the CNC and the MDSC | |||
could be created as part of VN instantiation. | prior to VN creation or they could be created as part of VN | |||
instantiation. | ||||
If a Type 2 VN is desired for some or all of the VN members of a Type | If a Type 2 VN is desired for some or all of the VN members of a Type | |||
1 VN (see the example in Section 2.1), the TE-topology model can | 1 VN (see the example in Section 2.1), the TE Topology model can | |||
provide the following abstract topologies (a single node topology AN1 | provide the following abstract topologies (a single node topology AN1 | |||
and an underlay topology (with nodes S1 to S11 and corresponding | and an underlay topology (with nodes S1 to S11 and corresponding | |||
links)). | links)). | |||
+----------------------------------------------+ | +----------------------------------------------+ | |||
| S1 S2 | | | S1 S2 | | |||
| O...............O | | | O...............O | | |||
| ......... ....... . | | | ......... ....... . | | |||
| . . . | | | . . . | | |||
|S3 . . S4 . S5 | | |S3 . . S4 . S5 | | |||
skipping to change at line 332 ¶ | skipping to change at line 333 ¶ | |||
| . S11 | | | . S11 | | |||
L3-----|.. | | L3-----|.. | | |||
| AN1 | | | AN1 | | |||
+----------------------------------------------+ | +----------------------------------------------+ | |||
Figure 4: Type 2 Topology | Figure 4: Type 2 Topology | |||
As shown in Figure 4, the abstract node is AN1 and an underlay | As shown in Figure 4, the abstract node is AN1 and an underlay | |||
topology is depicted with nodes and links (S1 to S11). | topology is depicted with nodes and links (S1 to S11). | |||
As an example, if VN-member 1 (L1-L4) is chosen to configure its own | As an example, if VN member 1 (L1-L4) is chosen to configure its own | |||
path over Type 2 topology, it can select, say, a path that consists | path over Type 2 topology, it can select, say, a path that consists | |||
of the explicit abstract path {S3,S4,S5} based on the underlay | of the explicit path {S3,S4,S5} based on the underlay topology and | |||
topology and its service requirement. This capability is enacted via | its service requirement. This capability is enacted via TE-topology | |||
TE-topology configuration by the customer. | configuration by the customer. | |||
3. High-Level Control Flows with Examples | 3. High-Level Control Flows with Examples | |||
3.1. Type 1 VN Illustration | 3.1. Type 1 VN Illustration | |||
If this VN is Type 1, the following diagram shows the message flow | If this VN is Type 1, the following diagram shows the message flow | |||
between CNC and MDSC to instantiate this VN using VN and TE-Topology | between CNC and MDSC to instantiate this VN using VN and TE Topology | |||
Models. | YANG data models. | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| CNC | | MDSC | | | CNC | | MDSC | | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| | | | | | |||
| | | | | | |||
CNC POST TE-topo | POST /nw:networks/nw:network/ | | CNC POST TE Topo | POST /nw:networks/nw:network/ | | |||
model (with Conn.| nw:node/te-node-id/ | | model (w/ Conn. | nw:node/te-node-id/ | | |||
Matrix on one | tet:connectivity-matrices/ | | Matrix on one | tet:connectivity-matrices/ | | |||
Abstract node) | tet:connectivity-matrix | | abstract node) | tet:connectivity-matrix | | |||
|-------------------------------->| | |-------------------------------->| | |||
| HTTP 200 | | | HTTP 200 | | |||
|<--------------------------------| | |<--------------------------------| | |||
| | | | | | |||
CNC POST the | POST /virtual-network | | CNC POST the | POST /virtual-network | | |||
VN identifying |-------------------------------->| If there is | VN identifying |-------------------------------->| If there is | |||
AP, VNAP, and VN-| | multi-src/dest, | AP, VNAP, and VN | | multi-src/dest, | |||
Members and maps | | then MDSC | members and maps | | then MDSC | |||
to the TE-topo | HTTP 200 | selects an | to the TE Topo | HTTP 200 | selects an | |||
|<--------------------------------| src or dest | model |<--------------------------------| src or dest | |||
| | and updates | | | and updates | |||
| | VN YANG | | | VN YANG | |||
CNC GET the | GET /virtual-network | | CNC GET the | GET /virtual-network | | |||
VN YANG status |-------------------------------->| | VN YANG status |-------------------------------->| | |||
| | | | | | |||
| HTTP 200 (VN with status: | | | HTTP 200 (VN with status: | | |||
| selected VN-members | | | selected VN members | | |||
| in case of multi-s-d) | | | in case of multi-s/d) | | |||
|<--------------------------------| | |<--------------------------------| | |||
| | | | | | |||
Figure 5: Type 1 VN Illustration | Figure 5: Type 1 VN Illustration | |||
3.2. Type 2 VN Illustration | 3.2. Type 2 VN Illustration | |||
For some VN members, the customer may want to "configure" an explicit | For some VN members, the customer may want to "configure" an explicit | |||
path that connects its two endpoints. Let us consider the following | path that connects its two endpoints. Let us consider the following | |||
example: | example: | |||
VN-member 1 L1-L4 (via S3, S4, and S5) | VN member 1 L1-L4 (via S3, S4, and S5) | |||
VN-member 2 L1-L7 (via S3, S4, S7, and S8) | VN member 2 L1-L7 (via S3, S4, S7, and S8) | |||
VN-member 3 L2-L7 (via S9, S10, and S11) | VN member 3 L2-L7 (via S9, S10, and S11) | |||
VN-member 4 L3-L8 (via S9, S10, and S11) | VN member 4 L3-L8 (via S9, S10, and S11) | |||
Figure 6 | Figure 6: VN Members (Type 2 VN) | |||
There are two options depending on whether CNC or MDSC creates the | There are two options depending on whether CNC or MDSC creates the | |||
single abstract node topology. | single abstract node topology. | |||
Case 1: | Case 1: | |||
If the CNC creates the single-abstract-node topology, the message | If the CNC creates the single abstract node topology, the message | |||
flow between the CNC and MDSC to instantiate this VN using a VN and | flow between the CNC and MDSC to instantiate this VN using a VN and | |||
TE-Topology Model would be as shown in the following diagram: | TE Topology YANG data model would be as shown in the following | |||
diagram: | ||||
+--------+ +--------+ | +--------+ +--------+ | |||
| CNC | | MDSC | | | CNC | | MDSC | | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| | | | | | |||
| | | | | | |||
CNC POST TE-topo | POST /nw:networks/nw:network/ | | CNC POST TE Topo | POST /nw:networks/nw:network/ | | |||
model (with Conn.| nw:node/te-node-id/tet:connectivity- | | model (w/ Conn. | nw:node/te-node-id/tet:connectivity- | | |||
Matrix on one | matrices/tet:connectivity-matrix | | Matrix on one | matrices/tet:connectivity-matrix | | |||
Abstract node and|---------------------------------------->| | abstract node and|---------------------------------------->| | |||
explicit paths in| | | explicit paths in| | | |||
the Conn. Matrix)| HTTP 200 | | the Conn. Matrix)| HTTP 200 | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
CNC POST the | POST /virtual-network | | CNC POST the | POST /virtual-network | | |||
VN identifying |---------------------------------------->| | VN identifying |---------------------------------------->| | |||
AP, VNAP, and VN-| | | AP, VNAP, and VN | | | |||
Members and maps | | | members and maps | | | |||
to the TE-topo | HTTP 200 | | to the TE Topo | HTTP 200 | | |||
|<----------------------------------------| | model |<----------------------------------------| | |||
| | | | | | |||
| | | | | | |||
CNC GET the | GET /virtual-network | | CNC GET the | GET /virtual-network | | |||
VN YANG status |---------------------------------------->| | VN YANG status |---------------------------------------->| | |||
| | | | | | |||
| HTTP 200 (VN with status) | | | HTTP 200 (VN with status) | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
Figure 7: Type 2 VN Illustration: Case 1 | Figure 7: Type 2 VN Illustration: Case 1 | |||
Case 2: | Case 2: | |||
On the other hand, if MDSC create the single-abstract-node topology | On the other hand, if MDSC create the single abstract node topology | |||
based on VN YANG posted by the CNC, the following diagram shows the | based on VN YANG posted by the CNC, the following diagram shows the | |||
message flow between CNC and MDSC to instantiate this VN using VN and | message flow between CNC and MDSC to instantiate this VN using VN and | |||
TE-Topology Models. | TE Topology YANG data models. | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| CNC | | MDSC | | | CNC | | MDSC | | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| | | | | | |||
| | | | | | |||
CNC POST VN | | | CNC POST VN | | | |||
identifying AP, | | | identifying AP, | | | |||
VNAP and VN- | POST /virtual-network | MDSC populates | VNAP and VN | POST /virtual-network | MDSC populates | |||
Members |-------------------------------->| a single Abst. | members |-------------------------------->| a single abst. | |||
| HTTP 200 | node topology | | HTTP 200 | node topology | |||
|<--------------------------------| by itself | |<--------------------------------| by itself | |||
| | | | | | |||
CNC GET VN & | GET /virtual-network & | | CNC GET VN & | GET /virtual-network & | | |||
POST TE-topo | POST /nw:networks/nw:network/ | | POST TE Topo | POST /nw:networks/nw:network/ | | |||
models (with | nw:node/te-node-id/tet: | | models (w/ | nw:node/te-node-id/tet: | | |||
Conn. Matrix | connectivity-matrices/ | | Conn. Matrix | connectivity-matrices/ | | |||
on the | tet:connectivity-matrix | | on the | tet:connectivity-matrix | | |||
Abstract node |-------------------------------->| | abstract node |-------------------------------->| | |||
and explicit | | | and explicit | | | |||
paths in the | | | paths in the | | | |||
Conn. Matrix) | | | Conn. Matrix) | | | |||
| HTTP 200 | | | HTTP 200 | | |||
|<--------------------------------| | |<--------------------------------| | |||
| | | | | | |||
| | | | | | |||
CNC GET the | GET /virtual-network | | CNC GET the | GET /virtual-network | | |||
VN YANG status |-------------------------------->| | VN YANG status |-------------------------------->| | |||
| | | | | | |||
| HTTP 200 (VN with status) | | | HTTP 200 (VN with status) | | |||
|<--------------------------------| | |<--------------------------------| | |||
| | | | | | |||
Figure 8: Type 2 VN Illustration: Case 2 | Figure 8: Type 2 VN Illustration: Case 2 | |||
Note that the underlay topology (which is referred to by the single- | Note that the underlay topology (which is referred to by the single | |||
abstract-node topology) could be a Native/White topology or a Grey | abstract node topology) could be a Native/White topology or a Grey | |||
topology ([RFC8453]) that is further customized based on the | topology ([RFC8453]) that is further customized based on the | |||
requirements of the customer and configured at the MDSC. | requirements of the customer and configured at the MDSC. | |||
Appendix B provides JSON examples for both the VN model and the TE- | Appendix B provides JSON examples for both the VN model and the TE | |||
topology Connectivity Matrix sub-model to illustrate how a VN can be | Topology Connectivity Matrix sub-model to illustrate how a VN can be | |||
created by the CNC making use of the VN module as well as the TE- | created by the CNC making use of the VN model as well as the TE | |||
topology Connectivity Matrix module. | Topology Connectivity Matrix module. | |||
3.2.1. VN and AP Usage | 3.2.1. VN and AP Usage | |||
The customer access information may be known at the time of VN | The customer access information may be known at the time of VN | |||
creation. A shared logical AP identifier is used between the | creation. A shared logical AP identifier is used between the | |||
customer and the operator to identify the access link between | customer and the operator to identify the access link between | |||
Customer Edge (CE) and Provider Edge (PE). This is described in | Customer Edge (CE) and Provider Edge (PE). This is described in | |||
Section 6 of [RFC8453]. | Section 6 of [RFC8453]. | |||
In some VN operations, the customer access may not be known at the | In some VN operations, the customer access may not be known at the | |||
initial VN creation. The VN operation allows the creation of a VN | initial VN creation. The VN operation allows the creation of a VN | |||
with only a PE identifier as well. The customer access information | with only a PE identifier. The customer access information could be | |||
could be added later. | added later. | |||
To achieve this, the 'ap' container has a leaf for the 'pe' node that | To achieve this, the 'ap' container has a leaf for the 'pe' node that | |||
allows the AP to be created with PE information. The vn-member (and | allows the AP to be created with PE information. The VN member (and | |||
vn) could use APs that initially only have PE information. | VN) could use APs that initially only have PE information. | |||
4. VN Model Usage | 4. VN YANG Data Model Usage | |||
4.1. Customer View of VN | 4.1. Customer View of VN | |||
The VN-YANG model allows the definition of a customer view and allows | The VN YANG data model allows the definition of a customer view and | |||
the customer to communicate using the VN constructs as described in | allows the customer to communicate using the VN constructs as | |||
[RFC8454]. It allows the grouping of edge-to-edge links (i.e., VN | described in [RFC8454]. It allows the grouping of edge-to-edge links | |||
members) under a common umbrella of VN. This allows the customer to | (i.e., VN members) under a common umbrella of VN. This allows the | |||
instantiate and view the VN as one entity, making it easier for some | customer to instantiate and view the VN as one entity, making it | |||
customers to work on VN without worrying about the details of the | easier for some customers to work on VN without worrying about the | |||
provider-based YANG models. | details of the provider-based YANG data models. | |||
This is similar to the benefits offered by a separate YANG model for | This is similar to the benefits offered by a separate YANG data model | |||
customer services described in [RFC8309], which states that service | for customer services described in [RFC8309], which states that | |||
models do not make any assumptions about how a service is actually | service models do not make any assumptions about how a service is | |||
engineered and delivered for a customer. | actually engineered and delivered for a customer. | |||
4.2. Auto-creation of VN by MDSC | 4.2. Auto-creation of VN by MDSC | |||
The VN could be configured at the MDSC explicitly by the CNC using | The VN could be configured at the MDSC explicitly by the CNC using | |||
the VN YANG model. In some other cases, the VN is not explicitly | the VN YANG data model. In some other cases, the VN is not | |||
configured but is instead created automatically by the MDSC based on | explicitly configured but is instead created automatically by the | |||
the customer service model and local policy; even in these cases, the | MDSC based on the customer service model and local policy; even in | |||
VN YANG model can be used by the CNC to learn details of the | these cases, the VN YANG data model can be used by the CNC to learn | |||
underlying VN, created to meet the requirements of the customer | details of the underlying VN, created to meet the requirements of the | |||
service model. | customer service model. | |||
4.3. Innovative Services | 4.3. Innovative Services | |||
4.3.1. VN Compute | 4.3.1. VN Compute | |||
The VN Model supports VN compute (pre-instantiation mode) to view the | The VN model supports VN compute (pre-instantiation mode) to view the | |||
full VN as a single entity before instantiation; achieving this via | full VN as a single entity before instantiation; achieving this via | |||
path computation or "compute only" tunnel setup ([YANG-TE]) does not | path computation or "compute-only" tunnel setup ([YANG-TE]) does not | |||
provide the same functionality. | provide the same functionality. | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| CNC | | MDSC | | | CNC | | MDSC | | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| | | | | | |||
| | | | | | |||
CNC POST TE-topo | POST /nw:networks/nw:network/ | | CNC POST TE Topo | POST /nw:networks/nw:network/ | | |||
model(with Conn. | nw:node/te-node-id/tet:connectivity- | | model (w/ Conn. | nw:node/te-node-id/tet:connectivity- | | |||
Matrix on one | matrices/tet:connectivity-matrix | | Matrix on one | matrices/tet:connectivity-matrix | | |||
Abstract node and|---------------------------------------->| | abstract node and|---------------------------------------->| | |||
constraints in | | | constraints in | | | |||
the conn. matrix)| HTTP 200 | | the conn. matrix)| HTTP 200 | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
| | | | | | |||
CNC calls RPC to | RPC /vn-compute | | CNC calls RPC to | RPC /vn compute | | |||
compute the VN |---------------------------------------->| | compute the VN |---------------------------------------->| | |||
as per the | | | as per the | | | |||
refered TE-Topo | | | refered TE-Topo | | | |||
| | | | | | |||
| HTTP 200 (Computed VN) | | | HTTP 200 (Computed VN) | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
Figure 9: VN Compute | Figure 9: VN Compute with Reference to TE Toplogy YANG Data Model | |||
The VN compute RPC allows the optional inclusion of the constraints | The VN compute RPC allows the optional inclusion of the constraints | |||
and the optimization criteria at the VN as well as at the individual | and the optimization criteria at the VN as well as at the individual | |||
VN-member level. Thus, the RPC can be used independently to get the | VN-member level. Thus, the RPC can be used independently to get the | |||
computed VN result without creating an abstract topology first. | computed VN result without creating an abstract topology first. | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| CNC | | MDSC | | | CNC | | MDSC | | |||
+--------+ +--------+ | +--------+ +--------+ | |||
| | | | | | |||
| | | | | | |||
CNC calls RPC to | RPC /vn-compute | | CNC calls RPC to | RPC /vn compute | | |||
compute the VN |---------------------------------------->| | compute the VN |---------------------------------------->| | |||
as per the | | | as per the | | | |||
constraints and | | | constraints and | | | |||
VN-members | | | VN members | | | |||
| HTTP 200 (Computed VN) | | | HTTP 200 (Computed VN) | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
Figure 10: VN Compute | Figure 10: VN Compute | |||
In either case, the output includes a reference to the single node | Regardless of whether the TE Topology model is referenced, the RPC | |||
abstract topology with each VN-member including a reference to the | output includes a reference to the single node abstract topology with | |||
connectivity-matrix-id where the path properties could be found. | each VN member including a reference to the connectivity-matrix-id | |||
where the path properties could be found. | ||||
To achieve this, the VN-compute RPC reuses the following common | To achieve this, the VN compute RPC reuses the following common | |||
groupings: | groupings: | |||
* te-types:generic-path-constraints: This is used optionally in the | * te-types:generic-path-constraints: is used optionally in the RPC | |||
RPC input at the VN and/or VN-member level. The VN-member level | input at the VN-level and/or VN-member level. The VN-member level | |||
overrides the VN-level data. This also overrides any constraints | overrides the VN-level data including any constraints in the | |||
in the referenced abstract node in the TE topology. | referenced abstract node in the TE topology. | |||
* te-types:generic-path-optimization: This is used optionally in the | * te-types:generic-path-optimization: is used optionally in the RPC | |||
RPC input at the VN and/or VN-member level. The VN-member level | input at the VN-level and/or VN-member level. The VN-member level | |||
overrides the VN-level data. This also overrides any optimization | overrides the VN-level data including any optimization in the | |||
in the referenced abstract node in the TE topology. | referenced abstract node in the TE topology. | |||
* vn-member: This identifies the VN member in both RPC input and | * vn member: identifies the VN member in both RPC input and output. | |||
output. | ||||
* vn-policy: This is used optionally in the RPC input to apply any | * vn-policy: is used optionally in the RPC input to apply any VN- | |||
VN-level policies. | level policies. | |||
When MDSC receives this RPC, it computes the VN based on the input | When MDSC receives this RPC, it computes the VN based on the input | |||
provided in the RPC. This computation does not create a VN or | provided in the RPC. This computation does not create a VN or | |||
reserve any resources in the system, it simply computes the resulting | reserve any resources in the system, it simply computes the resulting | |||
VN based on information at the MDSC or in coordination with the CNC. | VN based on information at the MDSC or in coordination with the CNC. | |||
A single-node-abstract topology is used to convey the result of each | A single node abstract topology is used to convey the result of each | |||
VN member as a reference to the connectivity-matrix-id. In case of | VN member as a reference to the connectivity-matrix-id. In case of | |||
an error, the error information is included. | an error, the error information is included. | |||
rpcs: | rpcs: | |||
+---x vn-compute | +---x vn-compute | |||
+---w input | +---w input | |||
| +---w te-topology-identifier | | +---w te-topology-identifier | |||
| | +---w provider-id? te-global-id | | | +---w provider-id? te-global-id | |||
| | +---w client-id? te-global-id | | | +---w client-id? te-global-id | |||
| | +---w topology-id? te-topology-id | | | +---w topology-id? te-topology-id | |||
skipping to change at line 657 ¶ | skipping to change at line 659 ¶ | |||
| | +--:(metric) {path-optimization-metric}? | | | +--:(metric) {path-optimization-metric}? | |||
| | | ... | | | | ... | |||
| | +--:(objective-function) | | | +--:(objective-function) | |||
| | {path-optimization-objective-function}? | | | {path-optimization-objective-function}? | |||
| | ... | | | ... | |||
| +---w vn-member-list* [id] | | +---w vn-member-list* [id] | |||
| | +---w id vnm-id | | | +---w id vnm-id | |||
| | +---w src | | | +---w src | |||
| | | +---w ap? -> /access-point/ap/id | | | | +---w ap? -> /access-point/ap/id | |||
| | | +---w vn-ap-id? | | | | +---w vn-ap-id? | |||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| | | +---w multi-src? boolean {multi-src-dest}? | | | | +---w multi-src? boolean {multi-src-dest}? | |||
| | +---w dest | | | +---w dest | |||
| | | +---w ap? -> /access-point/ap/id | | | | +---w ap? -> /access-point/ap/id | |||
| | | +---w vn-ap-id? | | | | +---w vn-ap-id? | |||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| | | +---w multi-dest? boolean {multi-src-dest}? | | | | +---w multi-dest? boolean {multi-src-dest}? | |||
| | +---w connectivity-matrix-id? leafref | | | +---w connectivity-matrix-id? leafref | |||
| | +---w underlay | | | +---w underlay | |||
| | +---w path-constraints | | | +---w path-constraints | |||
| | | +---w te-bandwidth | | | | +---w te-bandwidth | |||
| | | | ... | | | | | ... | |||
| | | +---w link-protection? identityref | | | | +---w link-protection? identityref | |||
| | | +---w setup-priority? uint8 | | | | +---w setup-priority? uint8 | |||
| | | +---w hold-priority? uint8 | | | | +---w hold-priority? uint8 | |||
| | | +---w signaling-type? identityref | | | | +---w signaling-type? identityref | |||
skipping to change at line 688 ¶ | skipping to change at line 692 ¶ | |||
| | | | ... | | | | | ... | |||
| | | +---w path-srlgs-lists | | | | +---w path-srlgs-lists | |||
| | | | ... | | | | | ... | |||
| | | +---w path-srlgs-names | | | | +---w path-srlgs-names | |||
| | | | ... | | | | | ... | |||
| | | +---w disjointness? te-path-disjointness | | | | +---w disjointness? te-path-disjointness | |||
| | +---w cos? te-types:te-ds-class | | | +---w cos? te-types:te-ds-class | |||
| | +---w optimizations | | | +---w optimizations | |||
| | +---w (algorithm)? | | | +---w (algorithm)? | |||
| | ... | | | ... | |||
| +---w vn-level-diversity? te-types:te-path-disjointness | | +---w vn-level-diversity? te-types:te-path-\ | |||
disjointness | ||||
+--ro output | +--ro output | |||
+--ro te-topology-identifier | +--ro te-topology-identifier | |||
| +--ro provider-id? te-global-id | | +--ro provider-id? te-global-id | |||
| +--ro client-id? te-global-id | | +--ro client-id? te-global-id | |||
| +--ro topology-id? te-topology-id | | +--ro topology-id? te-topology-id | |||
+--ro abstract-node? | +--ro abstract-node? | |||
| -> /nw:networks/network/node/tet:te-node-id | | -> /nw:networks/network/node/tet:te-node-id | |||
+--ro vn-member-list* [id] | +--ro vn-member-list* [id] | |||
+--ro id vnm-id | +--ro id vnm-id | |||
+--ro src | +--ro src | |||
| +--ro ap? -> /access-point/ap/id | | +--ro ap? -> /access-point/ap/id | |||
| +--ro vn-ap-id? | | +--ro vn-ap-id? | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| +--ro multi-src? boolean {multi-src-dest}? | | +--ro multi-src? boolean {multi-src-dest}? | |||
+--ro dest | +--ro dest | |||
| +--ro ap? -> /access-point/ap/id | | +--ro ap? -> /access-point/ap/id | |||
| +--ro vn-ap-id? | | +--ro vn-ap-id? | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| +--ro multi-dest? boolean {multi-src-dest}? | | +--ro multi-dest? boolean {multi-src-dest}? | |||
+--ro connectivity-matrix-id? leafref | +--ro connectivity-matrix-id? leafref | |||
+--ro underlay | +--ro underlay | |||
+--ro if-selected? boolean {multi-src-dest}? | +--ro if-selected? boolean {multi-src-dest}? | |||
+--ro compute-status? vn-compute-status | +--ro compute-status? vn-compute-status | |||
+--ro error-info | +--ro error-info | |||
+--ro error-description? string | +--ro error-description? string | |||
+--ro error-timestamp? yang:date-and-time | +--ro error-timestamp? yang:date-and-time | |||
+--ro error-reason? identityref | +--ro error-reason? identityref | |||
4.3.2. Multiple Sources and Multiple Destinations | 4.3.2. Multiple Sources and Multiple Destinations | |||
In creating a virtual network, the list of sources or destinations or | In creating a VN, the list of sources or destinations or both may not | |||
both may not be predetermined by the customer. For instance, for a | be predetermined by the customer. For instance, for a given source, | |||
given source, there may be a list of multiple destinations to which | there may be a list of multiple destinations to which the optimal | |||
the optimal destination may be chosen depending on the network | destination may be chosen depending on the network resource | |||
resource situations. Likewise, for a given destination, there may | situations. Likewise, for a given destination, there may also be | |||
also be multiple sources from which the optimal source may be chosen. | multiple sources from which the optimal source may be chosen. In | |||
In some cases, there may be a pool of multiple sources and | some cases, there may be a pool of multiple sources and destinations | |||
destinations from which the optimal source-destination may be chosen. | from which the optimal source-destination may be chosen. The | |||
The following YANG tree shows how to model multiple sources and | following YANG tree shows how to model multiple sources and multiple | |||
multiple destinations. | destinations. | |||
module: ietf-vn | module: ietf-vn | |||
+--rw virtual-network | +--rw virtual-network | |||
+--rw vn* [id] | +--rw vn* [id] | |||
+--rw id vn-id | +--rw id vn-id | |||
+--rw te-topology-identifier | +--rw te-topology-identifier | |||
| +--rw provider-id? te-global-id | | +--rw provider-id? te-global-id | |||
| +--rw client-id? te-global-id | | +--rw client-id? te-global-id | |||
| +--rw topology-id? te-topology-id | | +--rw topology-id? te-topology-id | |||
+--rw abstract-node? | +--rw abstract-node? | |||
| -> /nw:networks/network/node/tet:te-node-id | | -> /nw:networks/network/node/tet:te-node-id | |||
+--rw vn-member* [id] | +--rw vn-member* [id] | |||
| +--rw id vnm-id | | +--rw id vnm-id | |||
| +--rw src | | +--rw src | |||
| | +--rw ap? -> /access-point/ap/id | | | +--rw ap? -> /access-point/ap/id | |||
| | +--rw vn-ap-id? | | | +--rw vn-ap-id? | |||
| | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| | +--rw multi-src? boolean {multi-src-dest}? | | | +--rw multi-src? boolean {multi-src-dest}? | |||
| +--rw dest | | +--rw dest | |||
| | +--rw ap? -> /access-point/ap/id | | | +--rw ap? -> /access-point/ap/id | |||
| | +--rw vn-ap-id? | | | +--rw vn-ap-id? | |||
| | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | -> /access-point/ap[id=current()/../ap]/vn-ap/\ | |||
id | ||||
| | +--rw multi-dest? boolean {multi-src-dest}? | | | +--rw multi-dest? boolean {multi-src-dest}? | |||
| +--rw connectivity-matrix-id? leafref | | +--rw connectivity-matrix-id? leafref | |||
| +--rw underlay | | +--rw underlay | |||
| +--ro oper-status? te-types:te-oper-status | | +--ro oper-status? te-types:te-oper-status | |||
| +--ro if-selected? boolean {multi-src-dest}? | | +--ro if-selected? boolean {multi-src-dest}? | |||
+--rw admin-status? te-types:te-admin-status | +--rw admin-status? te-types:te-admin-status | |||
+--ro oper-status? te-types:te-oper-status | +--ro oper-status? te-types:te-oper-status | |||
+--rw vn-level-diversity? te-types:te-path-disjointness | +--rw vn-level-diversity? te-types:te-path-disjointness | |||
4.4. Others | 4.4. Others | |||
The VN YANG model can easily be augmented to support the mapping of | The VN YANG data model can easily be augmented to support the mapping | |||
VN to the services such as L3SM and L2SM as described in | of VN to the services such as L3SM and L2SM as described in | |||
[TE-SERVICE-MAPPING]. | [TE-SERVICE-MAPPING]. | |||
The VN YANG model can be extended to support telemetry, performance | The VN YANG data model can be extended to support telemetry, | |||
monitoring, and network autonomics as described in [TEAS-ACTN-PM]. | performance monitoring, and network autonomics as described in | |||
[TEAS-ACTN-PM]. | ||||
Note that the YANG model is tightly coupled with the TE Topology | Note that the VN YANG data model is tightly coupled with the TE | |||
model [RFC8795]. Any underlay technology not supported by [RFC8795] | Topology model [RFC8795]. Any underlay technology not supported by | |||
is also not supported by this model. The model does include an empty | the TE Topology model in [RFC8795] is also not supported by the VN | |||
container called "underlay" that can be augmented. For example the | model. However, the VN model does include an empty container called | |||
Segment Routing (SR) Policy [RFC9256] information can be augmented | "underlay" that can be augmented. For example, the Segment Routing | |||
for the SR underlay by a future model. | (SR) Policy [RFC9256] information can be augmented for the SR | |||
underlay by a future model. | ||||
Apart from the te-types:generic-path-constraints and te- | Apart from the te-types:generic-path-constraints and te- | |||
types:generic-path-optimization, an additional leaf called "cos" for | types:generic-path-optimization, an additional leaf called "cos" for | |||
the class of service [RFC4124] is added to represent the Class-Type | the class of service is added to represent the Class-Type of traffic | |||
of traffic to be used as one of the path constraints. | [RFC4124] to be used as one of the path constraints. | |||
4.5. Summary | 4.5. Summary | |||
This section summarizes the features of the VN YANG model. | This section summarizes the features of the VN YANG data model. | |||
* Maintenance of APs and VNAPs along with the VN | * Maintenance of APs and VNAPs along with the VN | |||
* VN construct to group of edge-to-edge links | * VN construct to group of edge-to-edge links | |||
* Ability to support various VN and VNS Types | * Ability to support various VN and VNS types | |||
- VN Type 1: Customer configures the VN as a set of VN Members. | - VN Type 1: Customer configures the VN as a set of VN members. | |||
No other details need to be set by the customer, making for a | No other details need to be set by the customer, making for a | |||
simplified operation for the customer. | simplified operation for the customer. | |||
- VN Type 2: Along with VN Members, the customer could also | - VN Type 2: Along with VN members, the customer could also | |||
provide an abstract topology, this topology is provided by the | provide an abstract topology, this topology is provided by the | |||
Abstract TE Topology YANG Model. | Abstract TE Topology YANG data model. | |||
o Note that the VN Type is not explicitly identified in the VN | o Note that the VN type is not explicitly identified in the VN | |||
Yang model, as the VN Model is exactly the same for both VN | YANG data model, as the VN YANG data model is exactly the | |||
Type 1 and VN Type 2. The VN type can be implicitly known | same for both VN Type 1 and VN Type 2. The VN type can be | |||
based on the referenced TE topology and whether the | implicitly known based on the referenced TE topology and | |||
connectivity matrix includes the underlay path (Type 2) or | whether the connectivity matrix includes the underlay path | |||
not (Type 1). | (Type 2) or not (Type 1). | |||
* VN Compute (pre-instantiate) | * VN Compute (pre-instantiate) | |||
* Multi-Source / Multi-Destination | * Multi-Source / Multi-Destination | |||
5. VN YANG Model (Tree Structure) | 5. VN YANG Data Model (Tree Structure) | |||
module: ietf-vn | module: ietf-vn | |||
+--rw access-point | +--rw access-point | |||
| +--rw ap* [id] | | +--rw ap* [id] | |||
| +--rw id ap-id | | +--rw id ap-id | |||
| +--rw pe? | | +--rw pe? | |||
| | -> /nw:networks/network/node/tet:te-node-id | | | -> /nw:networks/network/node/tet:te-node-id | |||
| +--rw max-bandwidth? te-types:te-bandwidth | | +--rw max-bandwidth? te-types:te-bandwidth | |||
| +--rw avl-bandwidth? te-types:te-bandwidth | | +--rw avl-bandwidth? te-types:te-bandwidth | |||
| +--rw vn-ap* [id] | | +--rw vn-ap* [id] | |||
| +--rw id ap-id | | +--rw id ap-id | |||
| +--rw vn? -> /virtual-network/vn/id | | +--rw vn? -> /virtual-network/vn/id | |||
| +--rw abstract-node? -> /nw:networks/network/node/node-id | | +--rw abstract-node? -> /nw:networks/network/node/\ | |||
node-id | ||||
| +--rw ltp? leafref | | +--rw ltp? leafref | |||
| +--ro max-bandwidth? te-types:te-bandwidth | | +--ro max-bandwidth? te-types:te-bandwidth | |||
+--rw virtual-network | +--rw virtual-network | |||
+--rw vn* [id] | +--rw vn* [id] | |||
+--rw id vn-id | +--rw id vn-id | |||
+--rw te-topology-identifier | +--rw te-topology-identifier | |||
| +--rw provider-id? te-global-id | | +--rw provider-id? te-global-id | |||
| +--rw client-id? te-global-id | | +--rw client-id? te-global-id | |||
| +--rw topology-id? te-topology-id | | +--rw topology-id? te-topology-id | |||
+--rw abstract-node? | +--rw abstract-node? | |||
| -> /nw:networks/network/node/tet:te-node-id | | -> /nw:networks/network/node/tet:te-node-id | |||
+--rw vn-member* [id] | +--rw vn-member* [id] | |||
| +--rw id vnm-id | | +--rw id vnm-id | |||
| +--rw src | | +--rw src | |||
| | +--rw ap? -> /access-point/ap/id | | | +--rw ap? -> /access-point/ap/id | |||
| | +--rw vn-ap-id? | | | +--rw vn-ap-id? | |||
| | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| | +--rw multi-src? boolean {multi-src-dest}? | | | +--rw multi-src? boolean {multi-src-dest}? | |||
| +--rw dest | | +--rw dest | |||
| | +--rw ap? -> /access-point/ap/id | | | +--rw ap? -> /access-point/ap/id | |||
| | +--rw vn-ap-id? | | | +--rw vn-ap-id? | |||
| | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| | +--rw multi-dest? boolean {multi-src-dest}? | | | +--rw multi-dest? boolean {multi-src-dest}? | |||
| +--rw connectivity-matrix-id? leafref | | +--rw connectivity-matrix-id? leafref | |||
| +--rw underlay | | +--rw underlay | |||
| +--ro oper-status? te-types:te-oper-status | | +--ro oper-status? te-types:te-oper-status | |||
| +--ro if-selected? boolean {multi-src-dest}? | | +--ro if-selected? boolean {multi-src-dest}? | |||
+--rw admin-status? te-types:te-admin-status | +--rw admin-status? te-types:te-admin-status | |||
+--ro oper-status? te-types:te-oper-status | +--ro oper-status? te-types:te-oper-status | |||
+--rw vn-level-diversity? te-types:te-path-disjointness | +--rw vn-level-diversity? te-types:te-path-disjointness | |||
rpcs: | rpcs: | |||
skipping to change at line 901 ¶ | skipping to change at line 915 ¶ | |||
| | +--:(metric) {path-optimization-metric}? | | | +--:(metric) {path-optimization-metric}? | |||
| | | ... | | | | ... | |||
| | +--:(objective-function) | | | +--:(objective-function) | |||
| | {path-optimization-objective-function}? | | | {path-optimization-objective-function}? | |||
| | ... | | | ... | |||
| +---w vn-member-list* [id] | | +---w vn-member-list* [id] | |||
| | +---w id vnm-id | | | +---w id vnm-id | |||
| | +---w src | | | +---w src | |||
| | | +---w ap? -> /access-point/ap/id | | | | +---w ap? -> /access-point/ap/id | |||
| | | +---w vn-ap-id? | | | | +---w vn-ap-id? | |||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| | | +---w multi-src? boolean {multi-src-dest}? | | | | +---w multi-src? boolean {multi-src-dest}? | |||
| | +---w dest | | | +---w dest | |||
| | | +---w ap? -> /access-point/ap/id | | | | +---w ap? -> /access-point/ap/id | |||
| | | +---w vn-ap-id? | | | | +---w vn-ap-id? | |||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| | | +---w multi-dest? boolean {multi-src-dest}? | | | | +---w multi-dest? boolean {multi-src-dest}? | |||
| | +---w connectivity-matrix-id? leafref | | | +---w connectivity-matrix-id? leafref | |||
| | +---w underlay | | | +---w underlay | |||
| | +---w path-constraints | | | +---w path-constraints | |||
| | | +---w te-bandwidth | | | | +---w te-bandwidth | |||
| | | | ... | | | | | ... | |||
| | | +---w link-protection? identityref | | | | +---w link-protection? identityref | |||
| | | +---w setup-priority? uint8 | | | | +---w setup-priority? uint8 | |||
| | | +---w hold-priority? uint8 | | | | +---w hold-priority? uint8 | |||
| | | +---w signaling-type? identityref | | | | +---w signaling-type? identityref | |||
skipping to change at line 932 ¶ | skipping to change at line 948 ¶ | |||
| | | | ... | | | | | ... | |||
| | | +---w path-srlgs-lists | | | | +---w path-srlgs-lists | |||
| | | | ... | | | | | ... | |||
| | | +---w path-srlgs-names | | | | +---w path-srlgs-names | |||
| | | | ... | | | | | ... | |||
| | | +---w disjointness? te-path-disjointness | | | | +---w disjointness? te-path-disjointness | |||
| | +---w cos? te-types:te-ds-class | | | +---w cos? te-types:te-ds-class | |||
| | +---w optimizations | | | +---w optimizations | |||
| | +---w (algorithm)? | | | +---w (algorithm)? | |||
| | ... | | | ... | |||
| +---w vn-level-diversity? te-types:te-path-disjointness | | +---w vn-level-diversity? te-types:te-path-\ | |||
disjointness | ||||
+--ro output | +--ro output | |||
+--ro te-topology-identifier | +--ro te-topology-identifier | |||
| +--ro provider-id? te-global-id | | +--ro provider-id? te-global-id | |||
| +--ro client-id? te-global-id | | +--ro client-id? te-global-id | |||
| +--ro topology-id? te-topology-id | | +--ro topology-id? te-topology-id | |||
+--ro abstract-node? | +--ro abstract-node? | |||
| -> /nw:networks/network/node/tet:te-node-id | | -> /nw:networks/network/node/tet:te-node-id | |||
+--ro vn-member-list* [id] | +--ro vn-member-list* [id] | |||
+--ro id vnm-id | +--ro id vnm-id | |||
+--ro src | +--ro src | |||
| +--ro ap? -> /access-point/ap/id | | +--ro ap? -> /access-point/ap/id | |||
| +--ro vn-ap-id? | | +--ro vn-ap-id? | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| +--ro multi-src? boolean {multi-src-dest}? | | +--ro multi-src? boolean {multi-src-dest}? | |||
+--ro dest | +--ro dest | |||
| +--ro ap? -> /access-point/ap/id | | +--ro ap? -> /access-point/ap/id | |||
| +--ro vn-ap-id? | | +--ro vn-ap-id? | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | -> /access-point/ap[id=current()/../ap]/\ | |||
vn-ap/id | ||||
| +--ro multi-dest? boolean {multi-src-dest}? | | +--ro multi-dest? boolean {multi-src-dest}? | |||
+--ro connectivity-matrix-id? leafref | +--ro connectivity-matrix-id? leafref | |||
+--ro underlay | +--ro underlay | |||
+--ro if-selected? boolean {multi-src-dest}? | +--ro if-selected? boolean {multi-src-\ | |||
dest}? | ||||
+--ro compute-status? vn-compute-status | +--ro compute-status? vn-compute-status | |||
+--ro error-info | +--ro error-info | |||
+--ro error-description? string | +--ro error-description? string | |||
+--ro error-timestamp? yang:date-and-time | +--ro error-timestamp? yang:date-and-time | |||
+--ro error-reason? identityref | +--ro error-reason? identityref | |||
6. VN YANG Model | 6. VN YANG Data Model | |||
The VN YANG model is as follows: | The VN YANG data model is as follows: | |||
<CODE BEGINS> file "ietf-vn@2025-01-27.yang" | <CODE BEGINS> file "ietf-vn@2025-01-27.yang" | |||
module ietf-vn { | module ietf-vn { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-vn"; | namespace "urn:ietf:params:xml:ns:yang:ietf-vn"; | |||
prefix vn; | prefix vn; | |||
/* Import common YANG types */ | /* Import common YANG types */ | |||
import ietf-yang-types { | import ietf-yang-types { | |||
skipping to change at line 1009 ¶ | skipping to change at line 1029 ¶ | |||
reference | reference | |||
"RFC 8776: Common YANG Data Types for Traffic Engineering"; | "RFC 8776: Common YANG Data Types for Traffic Engineering"; | |||
} | } | |||
/* Import TE Topology */ | /* Import TE Topology */ | |||
import ietf-te-topology { | import ietf-te-topology { | |||
prefix tet; | prefix tet; | |||
reference | reference | |||
"RFC 8795: YANG Data Model for Traffic Engineering (TE) | "RFC 8795: YANG Data Model for Traffic Engineering (TE) | |||
Topologies"; | Topologies"; | |||
} | } | |||
organization | organization | |||
"IETF Traffic Engineering Architecture and Signaling (TEAS) | "IETF Traffic Engineering Architecture and Signaling (TEAS) | |||
Working Group"; | Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/teas/> | "WG Web: <https://datatracker.ietf.org/wg/teas/> | |||
WG List: <mailto:teas@ietf.org> | WG List: <mailto:teas@ietf.org> | |||
Editor: Young Lee <younglee.tx@gmail.com> | Editor: Young Lee <younglee.tx@gmail.com> | |||
Editor: Dhruv Dhody <dhruv.ietf@gmail.com>"; | Editor: Dhruv Dhody <dhruv.ietf@gmail.com>"; | |||
description | description | |||
"This module contains a YANG module for the Virtual Network | "This YANG module for the Virtual Network (VN). | |||
(VN). It describes a VN operation module that can take place | It describes a VN operation module that can take place | |||
in the context of the Customer Network Controller (CNC) - | in the context of the Customer Network Controller (CNC) - | |||
Multi-Domain Service Coordinator (MDSC) interface (CMI) of | Multi-Domain Service Coordinator (MDSC) interface (CMI) of | |||
the Abstraction and Control of TE Networks (ACTN) | the Abstraction and Control of TE Networks (ACTN) | |||
architecture where the CNC is the actor of a VN | architecture where the CNC is the actor of a VN | |||
instantiation/modification/deletion as per RFC 8453. | instantiation/modification/deletion as per RFC 8453. | |||
This module uses the following abbreviations: | ||||
- VN: Virtual Network | ||||
- AP: Access Point | ||||
- VNAP: Virtual Network Access Point | ||||
- LTP: Link Termination Point | ||||
- PE: Provider Edge | ||||
- COS: Class of Service | ||||
Further, src and dest are used for source and | ||||
destination, respectively. | ||||
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 to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Revised BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 9731; see the | This version of this YANG module is part of RFC 9731; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2025-01-27 { | revision 2025-01-27 { | |||
description | description | |||
"The initial version."; | "The initial version."; | |||
reference | reference | |||
"RFC 9731: A YANG Data Model for Virtual Network (VN) | "RFC 9731: A YANG Data Model for Virtual Network (VN) | |||
Operations"; | Operations"; | |||
} | } | |||
/* Features */ | /* Features */ | |||
feature multi-src-dest { | feature multi-src-dest { | |||
description | description | |||
"Support for selection of one src or dest | "Support for selection of one source or destination | |||
among multiple."; | among multiple."; | |||
reference | reference | |||
"RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
Networks (ACTN)"; | Networks (ACTN)"; | |||
} | } | |||
/* Typedef */ | /* Typedef */ | |||
typedef vn-id { | typedef vn-id { | |||
type string { | type string { | |||
length "1..max"; | length "1..max"; | |||
} | } | |||
description | description | |||
"A type definition for a Virtual Network (VN) | "A type definition for a VN identifier."; | |||
identifier."; | ||||
} | } | |||
typedef ap-id { | typedef ap-id { | |||
type string { | type string { | |||
length "1..max"; | length "1..max"; | |||
} | } | |||
description | description | |||
"A type definition for an Access Point (AP) identifier."; | "A type definition for an Access Point (AP) identifier."; | |||
} | } | |||
typedef vnm-id { | typedef vnm-id { | |||
type string { | type string { | |||
length "1..max"; | length "1..max"; | |||
} | } | |||
description | description | |||
"A type definition for a VN member identifier."; | "A type definition for a VN-member identifier."; | |||
} | } | |||
typedef vn-compute-status { | typedef vn-compute-status { | |||
type te-types:te-common-status; | type te-types:te-common-status; | |||
description | description | |||
"A type definition for representing the VN compute status. | "A type definition for representing the VN compute status. | |||
Note that all statuses apart from up and down are considered | Note that all statuses apart from up and down are considered | |||
to be unknown."; | to be unknown."; | |||
} | } | |||
skipping to change at line 1161 ¶ | skipping to change at line 1169 ¶ | |||
grouping vn-member { | grouping vn-member { | |||
description | description | |||
"The vn-member is described by this grouping."; | "The vn-member is described by this grouping."; | |||
leaf id { | leaf id { | |||
type vnm-id; | type vnm-id; | |||
description | description | |||
"A vn-member identifier."; | "A vn-member identifier."; | |||
} | } | |||
container src { | container src { | |||
description | description | |||
"The source of VN Member."; | "The source of VN member."; | |||
leaf ap { | leaf ap { | |||
type leafref { | type leafref { | |||
path "/access-point/ap/id"; | path "/access-point/ap/id"; | |||
} | } | |||
description | description | |||
"A reference to the source AP."; | "A reference to the source AP."; | |||
} | } | |||
leaf vn-ap-id { | leaf vn-ap-id { | |||
type leafref { | type leafref { | |||
path "/access-point/ap[id=current()/../ap]/vn-ap" | path "/access-point/ap[id=current()/../ap]/vn-ap" | |||
skipping to change at line 1188 ¶ | skipping to change at line 1196 ¶ | |||
if-feature "multi-src-dest"; | if-feature "multi-src-dest"; | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Is the source part of a multi-source, where | "Is the source part of a multi-source, where | |||
only one of the sources is enabled?"; | only one of the sources is enabled?"; | |||
} | } | |||
} | } | |||
container dest { | container dest { | |||
description | description | |||
"The destination of the VN Member."; | "The destination of the VN member."; | |||
leaf ap { | leaf ap { | |||
type leafref { | type leafref { | |||
path "/access-point/ap/id"; | path "/access-point/ap/id"; | |||
} | } | |||
description | description | |||
"A reference to the destination AP."; | "A reference to the destination AP."; | |||
} | } | |||
leaf vn-ap-id { | leaf vn-ap-id { | |||
type leafref { | type leafref { | |||
path "/access-point/ap[id=current()/../ap]/" | path "/access-point/ap[id=current()/../ap]/" | |||
+ "vn-ap/id"; | + "vn-ap/id"; | |||
} | } | |||
description | description | |||
"A reference to the dest VNAP."; | "A reference to the destination VNAP."; | |||
} | } | |||
leaf multi-dest { | leaf multi-dest { | |||
if-feature "multi-src-dest"; | if-feature "multi-src-dest"; | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Is the destination part of a multi-destination, | "Is the destination part of a multi-destination, | |||
where only one of the destinations is enabled."; | where only one of the destinations is enabled."; | |||
} | } | |||
} | } | |||
skipping to change at line 1224 ¶ | skipping to change at line 1232 ¶ | |||
type leafref { | type leafref { | |||
path "/nw:networks/nw:network/nw:node/tet:te/" | path "/nw:networks/nw:network/nw:node/tet:te/" | |||
+ "tet:te-node-attributes/" | + "tet:te-node-attributes/" | |||
+ "tet:connectivity-matrices/" | + "tet:connectivity-matrices/" | |||
+ "tet:connectivity-matrix/tet:id"; | + "tet:connectivity-matrix/tet:id"; | |||
} | } | |||
description | description | |||
"A reference to the connectivity-matrix."; | "A reference to the connectivity-matrix."; | |||
reference | reference | |||
"RFC 8795: YANG Data Model for Traffic Engineering (TE) | "RFC 8795: YANG Data Model for Traffic Engineering (TE) | |||
Topologies"; | Topologies"; | |||
} | } | |||
container underlay { | container underlay { | |||
description | description | |||
"An empty container that can be augmented with underlay | "An empty container that can be augmented with underlay | |||
technology information not supported by RFC 8795 (for | technology information not supported by RFC 8795 (for | |||
example - Segment Routing (SR)."; | example, Segment Routing (SR)."; | |||
} | } | |||
reference | reference | |||
"RFC 8454: Information Model for Abstraction and Control of TE | "RFC 8454: Information Model for Abstraction and Control of TE | |||
Networks (ACTN)"; | Networks (ACTN)"; | |||
"RFC 8795: YANG Data Model for Traffic Engineering (TE) | ||||
Topologies"; | ||||
} | } | |||
grouping vn-policy { | grouping vn-policy { | |||
description | description | |||
"policy for VN-level diversity"; | "policy for VN-level diversity"; | |||
leaf vn-level-diversity { | leaf vn-level-diversity { | |||
type te-types:te-path-disjointness; | type te-types:te-path-disjointness; | |||
description | description | |||
"The type of disjointness on the VN level (i.e., across all | "The type of disjointness on the VN level (i.e., across all | |||
VN members)."; | VN members)."; | |||
skipping to change at line 1320 ¶ | skipping to change at line 1331 ¶ | |||
path "/nw:networks/nw:network/nw:node[nw:node-id=" | path "/nw:networks/nw:network/nw:node[nw:node-id=" | |||
+ "current()/../abstract-node]/nt:termination-point/" | + "current()/../abstract-node]/nt:termination-point/" | |||
+ "tet:te-tp-id"; | + "tet:te-tp-id"; | |||
} | } | |||
description | description | |||
"A reference to the Link Termination Point (LTP) | "A reference to the Link Termination Point (LTP) | |||
in the abstract-node, i.e., the LTP should be in | in the abstract-node, i.e., the LTP should be in | |||
the abstract layer and not the underlying layer."; | the abstract layer and not the underlying layer."; | |||
reference | reference | |||
"RFC 8795: YANG Data Model for Traffic Engineering (TE) | "RFC 8795: YANG Data Model for Traffic Engineering (TE) | |||
Topologies"; | Topologies"; | |||
} | } | |||
leaf max-bandwidth { | leaf max-bandwidth { | |||
type te-types:te-bandwidth; | type te-types:te-bandwidth; | |||
config false; | config false; | |||
description | description | |||
"The max bandwidth of the VNAP."; | "The max bandwidth of the VNAP."; | |||
} | } | |||
description | description | |||
"List of VNAPs in this AP."; | "List of VNAPs in this AP."; | |||
} | } | |||
} | } | |||
reference | reference | |||
"RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
Networks (ACTN), Section 6"; | Networks (ACTN), Section 6"; | |||
} | } | |||
container virtual-network { | container virtual-network { | |||
description | description | |||
"VN configurations."; | "VN configurations."; | |||
list vn { | list vn { | |||
key "id"; | key "id"; | |||
description | description | |||
"A virtual network is identified by a vn-id."; | "A VN is identified by a vn-id."; | |||
leaf id { | leaf id { | |||
type vn-id; | type vn-id; | |||
description | description | |||
"An identifier unique within the scope of the entity | "An identifier unique within the scope of the entity | |||
that controls the VN."; | that controls the VN."; | |||
} | } | |||
uses te-types:te-topology-identifier; | uses te-types:te-topology-identifier; | |||
leaf abstract-node { | leaf abstract-node { | |||
type leafref { | type leafref { | |||
path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | |||
skipping to change at line 1374 ¶ | skipping to change at line 1385 ¶ | |||
config false; | config false; | |||
description | description | |||
"The vn-member operational state."; | "The vn-member operational state."; | |||
} | } | |||
leaf if-selected { | leaf if-selected { | |||
if-feature "multi-src-dest"; | if-feature "multi-src-dest"; | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
config false; | config false; | |||
description | description | |||
"Is the vn-member selected among the multi-src | "Is the vn-member selected among the multi-source | |||
or multi-dest options?"; | or multi-destination options?"; | |||
} | } | |||
} | } | |||
leaf admin-status { | leaf admin-status { | |||
type te-types:te-admin-status; | type te-types:te-admin-status; | |||
default "up"; | default "up"; | |||
description | description | |||
"VN administrative state."; | "VN administrative state."; | |||
} | } | |||
leaf oper-status { | leaf oper-status { | |||
type te-types:te-oper-status; | type te-types:te-oper-status; | |||
skipping to change at line 1405 ¶ | skipping to change at line 1416 ¶ | |||
} | } | |||
/* RPC */ | /* RPC */ | |||
rpc vn-compute { | rpc vn-compute { | |||
description | description | |||
"The VN computation without actual instantiation. This is | "The VN computation without actual instantiation. This is | |||
used by the CNC to get the VN results without actually | used by the CNC to get the VN results without actually | |||
creating it in the network. | creating it in the network. | |||
The input could include a reference to the single-node | The input could include a reference to the single node | |||
-abstract topology. It could optionally also include | abstract topology. It could optionally also include | |||
constraints and optimization criteria. The computation | constraints and optimization criteria. The computation | |||
is done based on the list of VN-members. | is done based on the list of VN members. | |||
The output includes a reference to the single-node | The output includes a reference to the single node | |||
-abstract topology with each VN-member including a | abstract topology with each VN member including a | |||
reference to the connectivity-matrix-id where the | reference to the connectivity-matrix-id where the | |||
path properties could be found. Error information is | path properties could be found. Error information is | |||
also included."; | also included."; | |||
input { | input { | |||
uses te-types:te-topology-identifier; | uses te-types:te-topology-identifier; | |||
leaf abstract-node { | leaf abstract-node { | |||
type leafref { | type leafref { | |||
path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | |||
} | } | |||
description | description | |||
skipping to change at line 1434 ¶ | skipping to change at line 1445 ¶ | |||
uses te-types:generic-path-constraints; | uses te-types:generic-path-constraints; | |||
leaf cos { | leaf cos { | |||
type te-types:te-ds-class; | type te-types:te-ds-class; | |||
description | description | |||
"The class of service (COS)."; | "The class of service (COS)."; | |||
} | } | |||
uses te-types:generic-path-optimization; | uses te-types:generic-path-optimization; | |||
list vn-member-list { | list vn-member-list { | |||
key "id"; | key "id"; | |||
description | description | |||
"List of VN-members in a VN."; | "List of VN members in a VN."; | |||
uses vn-member; | uses vn-member; | |||
uses te-types:generic-path-constraints; | uses te-types:generic-path-constraints; | |||
leaf cos { | leaf cos { | |||
type te-types:te-ds-class; | type te-types:te-ds-class; | |||
description | description | |||
"The class of service."; | "The class of service."; | |||
reference | reference | |||
"RFC 4124: Protocol Extensions for Support of | "RFC 4124: Protocol Extensions for Support of | |||
Diffserv-aware MPLS Traffic Engineering, | Diffserv-aware MPLS Traffic Engineering, | |||
Section 4.3.1"; | Section 4.3.1"; | |||
skipping to change at line 1462 ¶ | skipping to change at line 1473 ¶ | |||
leaf abstract-node { | leaf abstract-node { | |||
type leafref { | type leafref { | |||
path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | path "/nw:networks/nw:network/nw:node/tet:te-node-id"; | |||
} | } | |||
description | description | |||
"A reference to the abstract node in TE Topology."; | "A reference to the abstract node in TE Topology."; | |||
} | } | |||
list vn-member-list { | list vn-member-list { | |||
key "id"; | key "id"; | |||
description | description | |||
"List of VN-members in a VN."; | "List of VN members in a VN."; | |||
uses vn-member; | uses vn-member; | |||
leaf if-selected { | leaf if-selected { | |||
if-feature "multi-src-dest"; | if-feature "multi-src-dest"; | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Is the vn-member selected among the multi-src or | "Is the vn-member selected among the multi-source or | |||
multi-dest options?"; | multi-destination options?"; | |||
reference | reference | |||
"RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
Networks (ACTN), Section 7"; | Networks (ACTN), Section 7"; | |||
} | } | |||
leaf compute-status { | leaf compute-status { | |||
type vn-compute-status; | type vn-compute-status; | |||
description | description | |||
"The VN-member compute state."; | "The VN-member compute state."; | |||
} | } | |||
container error-info { | container error-info { | |||
description | description | |||
"Error information related to the VN member."; | "Error information related to the VN member."; | |||
leaf error-description { | leaf error-description { | |||
skipping to change at line 1606 ¶ | skipping to change at line 1617 ¶ | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
nodes and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
* oper-status: This leaf can reveal the current operational state of | * oper-status: This leaf can reveal the current operational state of | |||
the VN. | the VN. | |||
* if-selected: This leaf can reveal which vn-member is selected | * if-selected: This leaf can reveal which vn-member is selected | |||
among the various multi-src/dest options. | among the various multi-source / multi-destination options. | |||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control access to these operations. These are the | important to control access to these operations. These are the | |||
operations and their sensitivity/vulnerability: | operations and their sensitivity/vulnerability: | |||
* vn-compute: This RPC triggers the VN computation at the MDSC, | * vn-compute: This RPC triggers the VN computation at the MDSC, | |||
which can reveal the VN information. | which can reveal the VN information. | |||
8. IANA Considerations | 8. IANA Considerations | |||
IANA has made the following allocation for a URI in the "ns" registry | IANA has made the following allocation for a URI in the "ns" registry | |||
within the "IETF XML Registry" registry group [RFC3688]: | within the "IETF XML Registry" registry group [RFC3688]: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-vn | URI: urn:ietf:params:xml:ns:yang:ietf-vn | |||
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 has made the following allocation for the VN YANG module (see | IANA has made the following allocation for the VN YANG data model | |||
Section 5in the "YANG Module Names" registry [RFC6020]: | (see Section 5 in the "YANG Module Names" registry [RFC6020]: | |||
name: ietf-vn | name: ietf-vn | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-vn | namespace: urn:ietf:params:xml:ns:yang:ietf-vn | |||
prefix: vn | prefix: vn | |||
reference: RFC 9731 | reference: RFC 9731 | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
skipping to change at line 1747 ¶ | skipping to change at line 1758 ¶ | |||
[RFC8454] Lee, Y., Belotti, S., Dhody, D., Ceccarelli, D., and B. | [RFC8454] Lee, Y., Belotti, S., Dhody, D., Ceccarelli, D., and B. | |||
Yoon, "Information Model for Abstraction and Control of TE | Yoon, "Information Model for Abstraction and Control of TE | |||
Networks (ACTN)", RFC 8454, DOI 10.17487/RFC8454, | Networks (ACTN)", RFC 8454, DOI 10.17487/RFC8454, | |||
September 2018, <https://www.rfc-editor.org/info/rfc8454>. | September 2018, <https://www.rfc-editor.org/info/rfc8454>. | |||
[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/info/rfc8466>. | 2018, <https://www.rfc-editor.org/info/rfc8466>. | |||
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | ||||
"Handling Long Lines in Content of Internet-Drafts and | ||||
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | ||||
<https://www.rfc-editor.org/info/rfc8792>. | ||||
[RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | |||
A., and P. Mattes, "Segment Routing Policy Architecture", | A., and P. Mattes, "Segment Routing Policy Architecture", | |||
RFC 9256, DOI 10.17487/RFC9256, July 2022, | RFC 9256, DOI 10.17487/RFC9256, July 2022, | |||
<https://www.rfc-editor.org/info/rfc9256>. | <https://www.rfc-editor.org/info/rfc9256>. | |||
[TE-SERVICE-MAPPING] | [TE-SERVICE-MAPPING] | |||
Lee, Y., Dhody, D., Fioccola, G., Wu, Q., Ceccarelli, D., | Lee, Y., Dhody, D., Fioccola, G., Wu, Q., Ceccarelli, D., | |||
and J. Tantsura, "Traffic Engineering (TE) and Service | and J. Tantsura, "Traffic Engineering (TE) and Service | |||
Mapping YANG Data Model", Work in Progress, Internet- | Mapping YANG Data Model", Work in Progress, Internet- | |||
Draft, draft-ietf-teas-te-service-mapping-yang-16, 20 | Draft, draft-ietf-teas-te-service-mapping-yang-17, 29 | |||
October 2024, <https://datatracker.ietf.org/doc/html/ | January 2025, <https://datatracker.ietf.org/doc/html/ | |||
draft-ietf-teas-te-service-mapping-yang-16>. | draft-ietf-teas-te-service-mapping-yang-17>. | |||
[TEAS-ACTN-PM] | [TEAS-ACTN-PM] | |||
Lee, Y., Dhody, D., Vilalta, R., King, D., and D. | Lee, Y., Dhody, D., Vilalta, R., King, D., and D. | |||
Ceccarelli, "YANG models for Virtual Network (VN)/TE | Ceccarelli, "YANG models for Virtual Network (VN)/TE | |||
Performance Monitoring Telemetry and Scaling Intent | Performance Monitoring Telemetry and Scaling Intent | |||
Autonomics", Work in Progress, Internet-Draft, draft-ietf- | Autonomics", Work in Progress, Internet-Draft, draft-ietf- | |||
teas-actn-pm-telemetry-autonomics-14, 19 October 2024, | teas-actn-pm-telemetry-autonomics-14, 19 October 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-teas- | <https://datatracker.ietf.org/doc/html/draft-ietf-teas- | |||
actn-pm-telemetry-autonomics-14>. | actn-pm-telemetry-autonomics-14>. | |||
skipping to change at line 1780 ¶ | skipping to change at line 1796 ¶ | |||
Bryskin, "A YANG Data Model for Traffic Engineering | Bryskin, "A YANG Data Model for Traffic Engineering | |||
Tunnels, Label Switched Paths and Interfaces", Work in | Tunnels, Label Switched Paths and Interfaces", Work in | |||
Progress, Internet-Draft, draft-ietf-teas-yang-te-37, 9 | Progress, Internet-Draft, draft-ietf-teas-yang-te-37, 9 | |||
October 2024, <https://datatracker.ietf.org/doc/html/ | October 2024, <https://datatracker.ietf.org/doc/html/ | |||
draft-ietf-teas-yang-te-37>. | draft-ietf-teas-yang-te-37>. | |||
Appendix A. Performance Constraints | Appendix A. Performance Constraints | |||
At the creation of a VN, it is natural to provide VN-level | At the creation of a VN, it is natural to provide VN-level | |||
constraints and optimization criteria. It should be noted that the | constraints and optimization criteria. It should be noted that the | |||
VN YANG module described in this document relies on the TE-Topology | VN YANG data model described in this document relies on the TE | |||
Model in [RFC8795] by using a reference to an abstract node to | Topology model in [RFC8795] by using a reference to an abstract node | |||
achieve this. Further, the connectivity-matrix structure is used to | to provide VN-level constraints and optimization criteria. Further, | |||
assign the constraints and optimization criteria including delay, | the connectivity-matrix structure is used to assign the constraints | |||
jitter, etc. [RFC8776] defines some of the metric-types; future | and optimization criteria including delay, jitter, etc. [RFC8776] | |||
documents are meant to augment it. | defines some of the metric-types; future documents are meant to | |||
augment it. | ||||
Note that the VN compute allows the inclusion of the constraints and | Note that the VN compute allows the inclusion of the constraints and | |||
the optimization criteria directly in the RPC to allow it to be used | the optimization criteria directly in the RPC to allow it to be used | |||
independently. | independently. | |||
Appendix B. JSON Example | Appendix B. JSON Example | |||
B.1. VN JSON | B.1. VN JSON | |||
This section provides JSON examples of how the VN YANG model and TE | This section provides JSON examples of how the VN YANG data model and | |||
topology model are used together to instantiate a VN. | TE Topology YANG data model are used together to instantiate a VN. | |||
The example in this section includes the following VNs: | The example in this section includes the following VNs: | |||
* VN1 (Type 1): This VN maps to the single node topology abstract1 | * VN1 (Type 1): This VN maps to the single node topology abstract1 | |||
and consists of VN Members 104 (L1 to L4), 107 (L1 to L7), 204 (L2 | and consists of VN members 104 (L1 to L4), 107 (L1 to L7), 204 (L2 | |||
to L4), 308 (L3 to L8), and 108 (L1 to L8). | to L4), 308 (L3 to L8), and 108 (L1 to L8). | |||
* VN2 (Type 2): This VN maps to the single node topology abstract2; | * VN2 (Type 2): This VN maps to the single node topology abstract2; | |||
this topology has an underlay topology (called underlay). This VN | this topology has an underlay topology (called underlay). This VN | |||
has a single VN member 105 (L1 to L5) and an underlay path (S4 and | has a single VN member 105 (L1 to L5) and an underlay path (S4 and | |||
S7) has been set in the connectivity matrix of the abstract2 | S7) has been set in the connectivity matrix of the abstract2 | |||
topology; | topology; | |||
* VN3 (Type 1): This VN has a multi-source and multi-destination | * VN3 (Type 1): This VN has a multi-source and multi-destination | |||
feature enabled. VN Member 106 (L1 to L6) and 107 (L1 to L7) | feature enabled. VN member 106 (L1 to L6) and 107 (L1 to L7) | |||
showcase multi-dest and VN Member 108 (L1 to L8) and 308 (L3 to | showcase multi-dest and VN member 108 (L1 to L8) and 308 (L3 to | |||
L8) showcase the multi-src feature. The selected VN-member is | L8) showcase the multi-src feature. The selected VN member is | |||
known via the field "if-selected" and the corresponding | known via the field "if-selected" and the corresponding | |||
connectivity-matrix-id. | connectivity-matrix-id. | |||
L1---104---L4 L1---105---L5 L1---106---L6(md) | L1---104---L4 L1---105---L5 L1---106---L6(md) | |||
L1---107---L7 Underlay Path: L1---107---L7(md) | L1---107---L7 Underlay Path: L1---107---L7(md) | |||
L2---204---L4 (S4 and S7) L1---108---L8(ms) | L2---204---L4 (S4 and S7) L1---108---L8(ms) | |||
L3---308---L8 L3---308---L8(ms) | L3---308---L8 L3---308---L8(ms) | |||
L1---108---L8 | L1---108---L8 | |||
--- --- --- | --- --- --- | |||
VN1 VN2 VN3 | VN1 VN2 VN3 | |||
--- --- --- | --- --- --- | |||
Figure 11 | Figure 11: Example | |||
Note that the VN YANG model also includes the AP and VNAP, which | Note that the VN YANG data model also includes the AP and VNAP, which | |||
shows various VNs using the same AP. | shows various VNs using the same AP. | |||
{ | { | |||
"ietf-vn:access-point": { | "ietf-vn:access-point": { | |||
"ap": [ | "ap": [ | |||
{ | { | |||
"id": "101", | "id": "101", | |||
"vn-ap": [ | "vn-ap": [ | |||
{ | { | |||
"id": "10101", | "id": "10101", | |||
skipping to change at line 2116 ¶ | skipping to change at line 2133 ¶ | |||
}, | }, | |||
"connectivity-matrix-id": 30308, | "connectivity-matrix-id": 30308, | |||
"if-selected": true | "if-selected": true | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
B.2. TE-Topology JSON | B.2. TE Topology JSON | |||
This section provides JSON examples of the various TE topology | This section provides JSON examples of the various TE topology | |||
instances. | instances. | |||
The example in this section includes the following TE Topologies: | The example in this section includes the following TE Topologies: | |||
* abstract1: a single node TE topology referenced by VN1. We also | * abstract1: a single node TE topology referenced by VN1. We also | |||
show how disjointness (node, link, Shared Risk Link Group (SRLG)) | show how disjointness (node, link, Shared Risk Link Group (SRLG)) | |||
is supported in the example on the connectivity matrices. | is supported in the example on the connectivity matrices. | |||
End of changes. 139 change blocks. | ||||
272 lines changed or deleted | 289 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |