rfc9731.original | rfc9731.txt | |||
---|---|---|---|---|
TEAS Working Group Y. Lee, Ed. | Internet Engineering Task Force (IETF) Y. Lee, Ed. | |||
Internet-Draft Samsung Electronics | Request for Comments: 9731 Samsung Electronics | |||
Intended status: Standards Track D. Dhody, Ed. | Category: Standards Track D. Dhody, Ed. | |||
Expires: 24 December 2024 Huawei | ISSN: 2070-1721 Huawei | |||
D. Ceccarelli | D. Ceccarelli | |||
Cisco | Cisco | |||
I. Bryskin | I. Bryskin | |||
Individual | Individual | |||
B. Yoon | B. Yoon | |||
ETRI | ETRI | |||
22 June 2024 | January 2025 | |||
A YANG Data Model for Virtual Network (VN) Operations | A YANG Data Model for Virtual Network (VN) Operations | |||
draft-ietf-teas-actn-vn-yang-29 | ||||
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 | |||
was 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. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 24 December 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9731. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology | |||
1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Tree Diagram | |||
1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 | 1.3. Prefixes in Data Node Names | |||
2. Use-case of VN YANG Model in the ACTN context . . . . . . . . 5 | 2. Use Case of VN YANG Model in the ACTN Context | |||
2.1. Type 1 VN . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.1. Type 1 VN | |||
2.2. Type 2 VN . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.2. Type 2 VN | |||
3. High-Level Control Flows with Examples . . . . . . . . . . . 8 | 3. High-Level Control Flows with Examples | |||
3.1. Type 1 VN Illustration . . . . . . . . . . . . . . . . . 8 | 3.1. Type 1 VN Illustration | |||
3.2. Type 2 VN Illustration . . . . . . . . . . . . . . . . . 9 | 3.2. Type 2 VN Illustration | |||
3.2.1. VN and AP Usage . . . . . . . . . . . . . . . . . . . 12 | 3.2.1. VN and AP Usage | |||
4. VN Model Usage . . . . . . . . . . . . . . . . . . . . . . . 12 | 4. VN Model Usage | |||
4.1. Customer view of VN . . . . . . . . . . . . . . . . . . . 12 | 4.1. Customer View of VN | |||
4.2. Auto-creation of VN by MDSC . . . . . . . . . . . . . . . 12 | 4.2. Auto-creation of VN by MDSC | |||
4.3. Innovative Services . . . . . . . . . . . . . . . . . . . 12 | 4.3. Innovative Services | |||
4.3.1. VN Compute . . . . . . . . . . . . . . . . . . . . . 13 | 4.3.1. VN Compute | |||
4.3.2. Multi-sources and Multi-destinations . . . . . . . . 17 | 4.3.2. Multiple Sources and Multiple Destinations | |||
4.4. Others . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 4.4. Others | |||
4.5. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 4.5. Summary | |||
5. VN YANG Model (Tree Structure) . . . . . . . . . . . . . . . 19 | 5. VN YANG Model (Tree Structure) | |||
6. VN YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 22 | 6. VN YANG Model | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 7. Security Considerations | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 | 8. IANA Considerations | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 36 | 9. References | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 9.1. Normative References | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 37 | 9.2. Informative References | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 38 | Appendix A. Performance Constraints | |||
Appendix A. Performance Constraints . . . . . . . . . . . . . . 40 | Appendix B. JSON Example | |||
Appendix B. JSON Example . . . . . . . . . . . . . . . . . . . . 40 | B.1. VN JSON | |||
B.1. VN JSON . . . . . . . . . . . . . . . . . . . . . . . . . 40 | B.2. TE-Topology JSON | |||
B.2. TE-topology JSON . . . . . . . . . . . . . . . . . . . . 47 | Acknowledgments | |||
Appendix C. Contributors Addresses . . . . . . . . . . . . . . . 54 | Contributors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Abstraction and Control of Traffic Engineered (TE) Networks (ACTN) | Abstraction and Control of TE Networks (ACTN) describes a set of | |||
describes a set of management and control functions used to operate | management and control functions used to operate one or more Traffic | |||
one or more TE networks to construct a Virtual Network (VN). A VN is | Engineered (TE) networks to construct a Virtual Network (VN). A VN | |||
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 | underlying TE networks [RFC8453]. This document provides a YANG data | |||
[RFC7950] data model generally applicable to any mode of VN | model [RFC7950] generally applicable to any mode of VN operation. | |||
operation. ACTN is the primary example of the usage of the VN YANG | ACTN is the primary example of the usage of the VN YANG model, but VN | |||
model but not limited to it. | 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. The VN model defined | sense as an independent model in and of itself. It can also work | |||
in this document can also work together with other customer service | together with other customer service models such as the L3VPN Service | |||
models such as the Layer Three Virtual Private Network Service Model | Model (L3SM) [RFC8299], the L2VPN Service Model (L2SM) [RFC8466], and | |||
(L3SM) [RFC8299], the Layer Two Virtual Private Network Service Model | the L1 Connectivity Service Model (L1CSM) [L1CSM-YANG] to provide | |||
(L2SM) [RFC8466] and the Layer One Connectivity Service Model (L1CSM) | complete life-cycle service management and operations. | |||
[I-D.ietf-ccamp-l1csm-yang] to provide a complete life-cycle service | ||||
management and operations. | ||||
The YANG model discussed in this document basically provides the | The YANG 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 (VNAP) 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 Virtual Networks (VNs) that describe the | |||
customer's VN in terms of multiple VN Members comprising a VN, | customer's VN in terms of multiple VN Members comprising a VN, | |||
multi-source and/or multi-destination characteristics of the VN | multi-source and/or multi-destination characteristics of the VN | |||
Member, the VN's reference to TE-topology's Abstract Node; | Member, the VN's reference 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 customised based on | topological elements (nodes, links) created and customized based on | |||
customer's 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 connectivity matrix entry, an underlay path can also | of VN members to a connectivity matrix entry, an underlay path can | |||
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 [I-D.ietf-teas-yang-te] Model will | over the networks, the TE-tunnel Model [YANG-TE] will inevitably | |||
inevitably interact with the TE-Topology model for setting up actual | interact with the TE-Topology model when setting up actual tunnels | |||
tunnels and LSPs under the tunnels. | and Label 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 model is | |||
applicable to the ACTN context where Virtual Network Service (VNS) | applicable to the ACTN context where a Virtual Network Service (VNS) | |||
operation is implemented for the Customer Network Controller (CNC)- | operation is implemented for the interface of the Customer Network | |||
Multi-Domain Service Coordinator (MDSC) interface (CMI). | Controller (CNC) and the Multi-Domain Service Coordinator (MDSC). | |||
The YANG model on the CMI is also known as the customer service model | The YANG model for the CNC-MDSC Interface (CMI) is also known as the | |||
in [RFC8309]. The YANG model discussed in this document is used to | "customer service model" in [RFC8309]. The YANG model discussed in | |||
operate customer-driven VNs during the VN instantiation, VN | this document is used to operate customer-driven VNs during the VN | |||
computation, and its life-cycle service management and operations. | instantiation and computation as well as its life-cycle 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 | |||
This document borrows the following terms from [RFC8453]: | This document borrows the following terms from [RFC8453]: | |||
* 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]: | This document borrows the following terms from [RFC8795]: | |||
* LTP: Link Termination Point | LTP: Link Termination Point | |||
Connectivity Matrix | ||||
* Connectivity Matrix | ||||
This document borrows the terminology in Section 1.1 of [RFC7926]. | This document borrows the terminology in Section 1.1 of [RFC7926]. | |||
This document uses the term 'Service Model' as described in | This document uses the term 'Service Model' as described in | |||
[RFC8309]. | [RFC8309]. | |||
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 | |||
objects are prefixed using the standard prefix associated with the | objects are prefixed using the standard prefix associated with the | |||
corresponding YANG imported modules, as shown in Table 1. | corresponding YANG imported modules as shown in Table 1. | |||
+==========+=======================+===========+ | +==========+=======================+===========+ | |||
| Prefix | YANG module | Reference | | | Prefix | YANG Module | Reference | | |||
+==========+=======================+===========+ | +==========+=======================+===========+ | |||
| vn | ietf-vn | [RFCXXXX] | | | vn | ietf-vn | RFC 9731 | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| yang | ietf-yang-types | [RFC6991] | | | yang | ietf-yang-types | [RFC6991] | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| nw | ietf-network | [RFC8345] | | | nw | ietf-network | [RFC8345] | | |||
+----------+-----------------------+-----------+ | +----------+-----------------------+-----------+ | |||
| 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 | |||
Note: The RFC Editor will replace XXXX with the number assigned to | ||||
the RFC once this draft becomes an RFC. | ||||
2. Use-case of VN YANG Model in the ACTN context | 2. Use Case of VN YANG 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 model. The model presented in this section has the | |||
following ACTN context. | following ACTN context. | |||
+-------+ | +-------+ | |||
| CNC | | | CNC | | |||
+-------+ | +-------+ | |||
| | | | |||
| VN YANG + TE-topology YANG | | VN YANG + TE-topology YANG | |||
| | | | |||
+-----------------------+ | +-----------------------+ | |||
| 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 YANG and TE-topology models are used over the CMI to | |||
establish a VN over TE networks as shown in Figure 1. | 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 Virtual Network is a customer view of the | |||
TE network. To recapitulate VN types from [RFC8453], Type 1 VN is | TE network. To recapitulate VN types from [RFC8453], a Type 1 VN is | |||
defined as follows: | defined as 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 VN). Each abstract link is referred to as a VN member and is | | 1 VN). Each abstract link is referred to as a VN member and is | |||
| formed as an end-to-end tunnel across the underlying networks. | | formed as an end-to-end tunnel across the underlying networks. | |||
| Such tunnels may be constructed by recursive slicing or | | Such tunnels may be constructed by recursive slicing or | |||
| abstraction of paths in the underlying networks and can encompass | | abstraction of paths in the underlying networks and can encompass | |||
| edge points of the customer's network, access links, intra-domain | | edge points of the customer's network, access links, intra-domain | |||
| paths, and inter-domain links. | | paths, and inter-domain links. | |||
If we were to create a VN where we have four VN-members as | If we were to create a VN where we have four VN-members as follows: | |||
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 | |||
Where L1, L2, L3, L4, L7, and L8 correspond to a Customer End- | Figure 2 | |||
Point (or AP). | ||||
This VN can be modelled as one abstract node representation as | Where L1, L2, L3, L4, L7, and L8 correspond to a Customer Endpoint | |||
follows in Figure 2: | (or AP). | |||
+----------------------------------------------+ | This VN can be modeled as one abstract node representation as follows | |||
| | | in Figure 3: | |||
L1----|..............................................|------L4 | ||||
| . . | | ||||
| . AN1 . | | ||||
| . . | | ||||
| ..................................*.....|------L7 | ||||
| . | | ||||
L2-----|....................................... | | ||||
| | | ||||
L3-----|..............................................|------L8 | ||||
| | | ||||
+----------------------------------------------+ | ||||
Figure 2: Abstract Node (One node topology) | +----------------------------------------------+ | |||
| | | ||||
L1----|..............................................|------L4 | ||||
| . . | | ||||
| . AN1 . | | ||||
| . . | | ||||
| ..................................*.....|------L7 | ||||
| . | | ||||
L2-----|....................................... | | ||||
| | | ||||
L3-----|..............................................|------L8 | ||||
| | | ||||
+----------------------------------------------+ | ||||
Modelling a VN as one abstract node is the easiest way for customers | Figure 3: Abstract Node (One Node Topology) | |||
to express their end-to-end connectivity as shown in Figure 2. | ||||
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. | ||||
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. | 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 seen as a higher abstraction of a Type 2 VN (which | |||
along with a single node abstract topology, an underlay topology and | along with a single node abstract topology, an underlay topology and | |||
the intended path is specified). These topologies could be mutually | the intended path are specified). These topologies could be mutually | |||
agreed between CNC and MDSC prior to VN creation or it could be | agreed upon between the CNC and the MDSC prior to VN creation or they | |||
created as part of VN instantiation. | 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 | | |||
L1----|.O......................O.........O...........|------L4 | L1----|.O......................O.........O...........|------L4 | |||
| . . . | | | . . . | | |||
| . . . | | | . . . | | |||
| . S6 . S7 . S8 | | | . S6 . S7 . S8 | | |||
| O ................O.........O.......|------L7 | | O ................O.........O.......|------L7 | |||
| . . . . ..... | | | . . . . ..... | | |||
|S9 . . .S10 . . | | |S9 . . .S10 . . | | |||
L2-----|...O.....O.....................O..............|------L8 | L2-----|...O.....O.....................O..............|------L8 | |||
| . S11 | | | . S11 | | |||
L3-----|.. | | L3-----|.. | | |||
| AN1 | | | AN1 | | |||
+----------------------------------------------+ | +----------------------------------------------+ | |||
Figure 3: Type 2 topology | Figure 4: Type 2 Topology | |||
As shown in Figure 3, 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 abstract path {S3,S4,S5} based on the underlay | |||
topology and its service requirement. This capability is enacted via | topology and its service requirement. This capability is enacted via | |||
TE-topology configuration by the customer. | TE-topology configuration by the customer. | |||
3. High-Level Control Flows with Examples | 3. High-Level Control Flows with Examples | |||
skipping to change at page 9, line 11 ¶ | skipping to change at line 352 ¶ | |||
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. | 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 (with 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 a | to the TE-topo | HTTP 200 | selects an | |||
|<--------------------------------| src or dest | |<--------------------------------| 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 4: 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" explicit | For some VN members, the customer may want to "configure" an explicit | |||
path that connects its two end-points. 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 2 L1-L7 (via S3, S4, S7 and S8) | ||||
VN-member 3 L2-L7 (via S9, S10, and S11) | VN-member 1 L1-L4 (via S3, S4, and S5) | |||
VN-member 2 L1-L7 (via S3, S4, S7, and S8) | ||||
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 | |||
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 CNC creates the single-abstract-node topology, the following | If the CNC creates the single-abstract-node topology, the message | |||
diagram shows the message flow between CNC and MDSC to instantiate | flow between the CNC and MDSC to instantiate this VN using a VN and | |||
this VN using VN and TE-Topology Model. | TE-Topology 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 (with 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 | | |||
|<----------------------------------------| | |<----------------------------------------| | |||
| | | | | | |||
| | | | | | |||
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 5: 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 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 (with | 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 6: 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 customised based on the | topology ([RFC8453]) that is further customized based on the | |||
requirements of the customer and configured at MDSC. | requirements of the customer and configured at the MDSC. | |||
Appendix B provides JSON examples for both VN model and TE-topology | Appendix B provides JSON examples for both the VN model and the TE- | |||
Connectivity Matrix sub-model to illustrate how a VN can be created | topology Connectivity Matrix sub-model to illustrate how a VN can be | |||
by the CNC making use of the VN module as well as the TE-topology | created by the CNC making use of the VN module as well as the TE- | |||
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 as well. The customer access information | |||
could be added later. | could be added later. | |||
To achieve this, the 'ap' container has a leaf for 'pe' node that | To achieve this, the 'ap' container has a leaf for the 'pe' node that | |||
allows AP to be created with PE information. The vn-member (and vn) | allows the AP to be created with PE information. The vn-member (and | |||
could use APs that only have PE information initially. | vn) could use APs that initially only have PE information. | |||
4. VN Model Usage | 4. VN Model Usage | |||
4.1. Customer view of VN | 4.1. Customer View of VN | |||
The VN-YANG model allows to define a customer view, and allows the | The VN-YANG model allows the definition of a customer view and allows | |||
customer to communicate using the VN constructs as described in the | the customer to communicate using the VN constructs as described in | |||
[RFC8454]. It allows the grouping of edge-to-edge links (i.e., VN | [RFC8454]. It allows the grouping of edge-to-edge links (i.e., VN | |||
members) under a common umbrella of VN. This allows the customer to | members) under a common umbrella of VN. This allows the customer to | |||
instantiate and view the VN as one entity, making it easier for some | instantiate and view the VN as one entity, making it easier for some | |||
customers to work on VN without worrying about the details of the | customers to work on VN without worrying about the details of the | |||
provider-based YANG models. | provider-based YANG 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 model for | |||
the customer services as described in [RFC8309], which states that | customer services described in [RFC8309], which states that service | |||
service models do not make any assumption about how a service is | models do not make any assumptions about how a service is actually | |||
actually engineered and delivered for a customer. | 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 model. In some other cases, the VN is not explicitly | |||
configured, but created automatically by the MDSC based on the | configured but is instead created automatically by the MDSC based on | |||
customer service model and local policy, even in these cases, the VN | the customer service model and local policy; even in these cases, the | |||
YANG model can be used by the CNC to learn details of the underlying | VN YANG model can be used by the CNC to learn details of the | |||
VN, created to meet the requirements of the customer service model. | underlying VN, created to meet the requirements of the customer | |||
service model. | ||||
4.3. Innovative Services | 4.3. Innovative Services | |||
4.3.1. VN Compute | 4.3.1. VN Compute | |||
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 | path computation or "compute only" tunnel setup ([YANG-TE]) does not | |||
([I-D.ietf-teas-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(with 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|---------------------------------------->| | |||
skipping to change at page 13, line 34 ¶ | skipping to change at line 557 ¶ | |||
| | | | | | |||
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 7: VN Compute | Figure 9: VN Compute | |||
The VN compute RPC allows you to optionally include 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 8: VN Compute | Figure 10: VN Compute | |||
In either case the output includes a reference to the single node | In either case, the output includes a reference to the single node | |||
abstract topology with each VN-member including a reference to the | abstract topology with each VN-member including a reference to the | |||
connectivity-matrix-id where the path properties could be found. | 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: This is used optionally in the | |||
RPC input at the VN and/or VN-member level. The VN-member level | RPC input at the VN and/or VN-member level. The VN-member level | |||
overrides the VN-level data. This also overrides any constraints | overrides the VN-level data. This also overrides any constraints | |||
in the referenced abstract node in the TE topology. | in the referenced abstract node in the TE topology. | |||
* te-types:generic-path-optimization: This is used optionally in the | * te-types:generic-path-optimization: This is used optionally in the | |||
RPC input at the VN and/or VN-member level. The VN-member level | RPC input at the VN and/or VN-member level. The VN-member level | |||
overrides the VN-level data. This also overrides any optimization | overrides the VN-level data. This also overrides any optimization | |||
in the referenced abstract node in the TE topology. | in the referenced abstract node in the TE topology. | |||
* vn-member: This identifies the VN member in both RPC input and | * vn-member: This 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: This is used optionally in the RPC input to apply any | |||
VN level policies. | VN-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 call. 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 | |||
| +---w abstract-node? | | +---w abstract-node? | |||
| | -> /nw:networks/network/node/tet:te-node-id | | | -> /nw:networks/network/node/tet:te-node-id | |||
| +---w path-constraints | | +---w path-constraints | |||
| | +---w te-bandwidth | | | +---w te-bandwidth | |||
| | | +---w (technology)? | | | | +---w (technology)? | |||
| | | ... | | | | ... | |||
| | +---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 | |||
| | +---w path-metric-bounds | | | +---w path-metric-bounds | |||
| | | +---w path-metric-bound* [metric-type] | | | | +---w path-metric-bound* [metric-type] | |||
| | | ... | | | | ... | |||
| | +---w path-affinities-values | | | +---w path-affinities-values | |||
| | | +---w path-affinities-value* [usage] | | | | +---w path-affinities-value* [usage] | |||
| | | ... | | | | ... | |||
| | +---w path-affinity-names | | | +---w path-affinity-names | |||
| | | +---w path-affinity-name* [usage] | | | | +---w path-affinity-name* [usage] | |||
| | | ... | | | | ... | |||
| | +---w path-srlgs-lists | | | +---w path-srlgs-lists | |||
| | | +---w path-srlgs-list* [usage] | | | | +---w path-srlgs-list* [usage] | |||
| | | ... | | | | ... | |||
| | +---w path-srlgs-names | | | +---w path-srlgs-names | |||
| | | +---w path-srlgs-name* [usage] | | | | +---w path-srlgs-name* [usage] | |||
| | | ... | | | | ... | |||
| | +---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)? | |||
| | +--:(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 | |||
| | | +---w path-metric-bounds | | | | +---w path-metric-bounds | |||
| | | | ... | | | | | ... | |||
| | | +---w path-affinities-values | | | | +---w path-affinities-values | |||
| | | | ... | | | | | ... | |||
| | | +---w path-affinity-names | | | | +---w path-affinity-names | |||
| | | | ... | | | | | ... | |||
| | | +---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. Multi-sources and Multi-destinations | 4.3.2. Multiple Sources and Multiple Destinations | |||
In creating a virtual network, the list of sources or destinations or | In creating a virtual network, the list of sources or destinations or | |||
both may not be pre-determined by the customer. For instance, for a | both may not be predetermined by the customer. For instance, for a | |||
given source, there may be a list of multiple-destinations to which | given source, there may be a list of multiple destinations to which | |||
the optimal destination may be chosen depending on the network | the optimal destination may be chosen depending on the network | |||
resource situations. Likewise, for a given destination, there may | resource situations. Likewise, for a given destination, there may | |||
also be multiple-sources from which the optimal source may be chosen. | also be multiple sources from which the optimal source may be chosen. | |||
In some cases, there may be a pool of multiple sources and | In some cases, there may be a pool of multiple sources and | |||
destinations from which the optimal source-destination may be chosen. | destinations from which the optimal source-destination may be chosen. | |||
The following YANG tree shows how to model multi-sources and multi- | The following YANG tree shows how to model multiple sources and | |||
destinations. | multiple 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 be easily augmented to support the mapping of | The VN YANG model can easily be augmented to support the mapping of | |||
VN to the Services such as L3SM and L2SM as described in | VN to the services such as L3SM and L2SM as described in | |||
[I-D.ietf-teas-te-service-mapping-yang]. | [TE-SERVICE-MAPPING]. | |||
The VN YANG model can be extended to support telemetry, performance | The VN YANG model can be extended to support telemetry, performance | |||
monitoring and network autonomics as described in | monitoring, and network autonomics as described in [TEAS-ACTN-PM]. | |||
[I-D.ietf-teas-actn-pm-telemetry-autonomics]. | ||||
Note that the YANG model is tightly coupled with the TE Topology | Note that the YANG model is tightly coupled with the TE Topology | |||
model [RFC8795]. Any underlay technology not supported by [RFC8795] | model [RFC8795]. Any underlay technology not supported by [RFC8795] | |||
is also not supported by this model. The model does include an empty | is also not supported by this model. The model does include an empty | |||
container called "underlay" that can be augmented. For example the | container called "underlay" that can be augmented. For example the | |||
Segment Routing (SR) Policy [RFC9256] information can be augmented | Segment Routing (SR) Policy [RFC9256] information can be augmented | |||
for the SR underlay by a future model. | 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 cos for the class | types:generic-path-optimization, an additional leaf called "cos" for | |||
of service [RFC4124] is added to represent the Class-Type of traffic | the class of service [RFC4124] is added to represent the Class-Type | |||
to be used as one of the path constraints. | of traffic to be used as one of the path constraints. | |||
4.5. Summary | 4.5. Summary | |||
This section summarizes the features of the VN YANG. | This section summarizes the features of the VN YANG model. | |||
* Maintenance of AP and VNAP along with 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 Model. | |||
- 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 model, as the VN Model is exactly the same for both VN | |||
Type 1 and 2. The VN type can be implicitly known based on the | Type 1 and VN Type 2. The VN type can be implicitly known | |||
referenced TE topology and whether the connectivity matrix | based on the referenced TE topology and whether the | |||
includes the underlay path (Type 2) or not (Type 1). | connectivity matrix includes the underlay path (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 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: | ||||
+---x vn-compute | ||||
+---w input | ||||
| +---w te-topology-identifier | ||||
| | +---w provider-id? te-global-id | ||||
| | +---w client-id? te-global-id | ||||
| | +---w topology-id? te-topology-id | ||||
| +---w abstract-node? | ||||
| | -> /nw:networks/network/node/tet:te-node-id | ||||
| +---w path-constraints | ||||
| | +---w te-bandwidth | ||||
| | | +---w (technology)? | ||||
| | | ... | ||||
| | +---w link-protection? identityref | ||||
| | +---w setup-priority? uint8 | ||||
| | +---w hold-priority? uint8 | ||||
| | +---w signaling-type? identityref | ||||
| | +---w path-metric-bounds | ||||
| | | +---w path-metric-bound* [metric-type] | ||||
| | | ... | ||||
| | +---w path-affinities-values | ||||
| | | +---w path-affinities-value* [usage] | ||||
| | | ... | ||||
| | +---w path-affinity-names | ||||
| | | +---w path-affinity-name* [usage] | ||||
| | | ... | ||||
| | +---w path-srlgs-lists | ||||
| | | +---w path-srlgs-list* [usage] | ||||
| | | ... | ||||
| | +---w path-srlgs-names | ||||
| | | +---w path-srlgs-name* [usage] | ||||
| | | ... | ||||
| | +---w disjointness? te-path-disjointness | ||||
| +---w cos? te-types:te-ds-class | ||||
| +---w optimizations | ||||
| | +---w (algorithm)? | ||||
| | +--:(metric) {path-optimization-metric}? | ||||
| | | ... | ||||
| | +--:(objective-function) | ||||
| | {path-optimization-objective-function}? | ||||
| | ... | ||||
| +---w vn-member-list* [id] | ||||
| | +---w id vnm-id | ||||
| | +---w src | ||||
| | | +---w ap? -> /access-point/ap/id | ||||
| | | +---w vn-ap-id? | ||||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| | | +---w multi-src? boolean {multi-src-dest}? | ||||
| | +---w dest | ||||
| | | +---w ap? -> /access-point/ap/id | ||||
| | | +---w vn-ap-id? | ||||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| | | +---w multi-dest? boolean {multi-src-dest}? | ||||
| | +---w connectivity-matrix-id? leafref | ||||
| | +---w underlay | ||||
| | +---w path-constraints | ||||
| | | +---w te-bandwidth | ||||
| | | | ... | ||||
| | | +---w link-protection? identityref | ||||
| | | +---w setup-priority? uint8 | ||||
| | | +---w hold-priority? uint8 | ||||
| | | +---w signaling-type? identityref | ||||
| | | +---w path-metric-bounds | ||||
| | | | ... | ||||
| | | +---w path-affinities-values | ||||
| | | | ... | ||||
| | | +---w path-affinity-names | rpcs: | |||
| | | | ... | +---x vn-compute | |||
| | | +---w path-srlgs-lists | +---w input | |||
| | | | ... | | +---w te-topology-identifier | |||
| | | +---w path-srlgs-names | | | +---w provider-id? te-global-id | |||
| | | | ... | | | +---w client-id? te-global-id | |||
| | | +---w disjointness? te-path-disjointness | | | +---w topology-id? te-topology-id | |||
| | +---w cos? te-types:te-ds-class | | +---w abstract-node? | |||
| | +---w optimizations | | | -> /nw:networks/network/node/tet:te-node-id | |||
| | +---w (algorithm)? | | +---w path-constraints | |||
| | ... | | | +---w te-bandwidth | |||
| +---w vn-level-diversity? te-types:te-path-disjointness | | | | +---w (technology)? | |||
+--ro output | | | | ... | |||
+--ro te-topology-identifier | | | +---w link-protection? identityref | |||
| +--ro provider-id? te-global-id | | | +---w setup-priority? uint8 | |||
| +--ro client-id? te-global-id | | | +---w hold-priority? uint8 | |||
| +--ro topology-id? te-topology-id | | | +---w signaling-type? identityref | |||
+--ro abstract-node? | | | +---w path-metric-bounds | |||
| -> /nw:networks/network/node/tet:te-node-id | | | | +---w path-metric-bound* [metric-type] | |||
+--ro vn-member-list* [id] | | | | ... | |||
+--ro id vnm-id | | | +---w path-affinities-values | |||
+--ro src | | | | +---w path-affinities-value* [usage] | |||
| +--ro ap? -> /access-point/ap/id | | | | ... | |||
| +--ro vn-ap-id? | | | +---w path-affinity-names | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | | +---w path-affinity-name* [usage] | |||
| +--ro multi-src? boolean {multi-src-dest}? | | | | ... | |||
+--ro dest | | | +---w path-srlgs-lists | |||
| +--ro ap? -> /access-point/ap/id | | | | +---w path-srlgs-list* [usage] | |||
| +--ro vn-ap-id? | | | | ... | |||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | | | +---w path-srlgs-names | |||
| +--ro multi-dest? boolean {multi-src-dest}? | | | | +---w path-srlgs-name* [usage] | |||
+--ro connectivity-matrix-id? leafref | | | | ... | |||
+--ro underlay | | | +---w disjointness? te-path-disjointness | |||
+--ro if-selected? boolean {multi-src-dest}? | | +---w cos? te-types:te-ds-class | |||
+--ro compute-status? vn-compute-status | | +---w optimizations | |||
+--ro error-info | | | +---w (algorithm)? | |||
+--ro error-description? string | | | +--:(metric) {path-optimization-metric}? | |||
+--ro error-timestamp? yang:date-and-time | | | | ... | |||
+--ro error-reason? identityref | | | +--:(objective-function) | |||
| | {path-optimization-objective-function}? | ||||
| | ... | ||||
| +---w vn-member-list* [id] | ||||
| | +---w id vnm-id | ||||
| | +---w src | ||||
| | | +---w ap? -> /access-point/ap/id | ||||
| | | +---w vn-ap-id? | ||||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| | | +---w multi-src? boolean {multi-src-dest}? | ||||
| | +---w dest | ||||
| | | +---w ap? -> /access-point/ap/id | ||||
| | | +---w vn-ap-id? | ||||
| | | | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| | | +---w multi-dest? boolean {multi-src-dest}? | ||||
| | +---w connectivity-matrix-id? leafref | ||||
| | +---w underlay | ||||
| | +---w path-constraints | ||||
| | | +---w te-bandwidth | ||||
| | | | ... | ||||
| | | +---w link-protection? identityref | ||||
| | | +---w setup-priority? uint8 | ||||
| | | +---w hold-priority? uint8 | ||||
| | | +---w signaling-type? identityref | ||||
| | | +---w path-metric-bounds | ||||
| | | | ... | ||||
| | | +---w path-affinities-values | ||||
| | | | ... | ||||
| | | +---w path-affinity-names | ||||
| | | | ... | ||||
| | | +---w path-srlgs-lists | ||||
| | | | ... | ||||
| | | +---w path-srlgs-names | ||||
| | | | ... | ||||
| | | +---w disjointness? te-path-disjointness | ||||
| | +---w cos? te-types:te-ds-class | ||||
| | +---w optimizations | ||||
| | +---w (algorithm)? | ||||
| | ... | ||||
| +---w vn-level-diversity? te-types:te-path-disjointness | ||||
+--ro output | ||||
+--ro te-topology-identifier | ||||
| +--ro provider-id? te-global-id | ||||
| +--ro client-id? te-global-id | ||||
| +--ro topology-id? te-topology-id | ||||
+--ro abstract-node? | ||||
| -> /nw:networks/network/node/tet:te-node-id | ||||
+--ro vn-member-list* [id] | ||||
+--ro id vnm-id | ||||
+--ro src | ||||
| +--ro ap? -> /access-point/ap/id | ||||
| +--ro vn-ap-id? | ||||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| +--ro multi-src? boolean {multi-src-dest}? | ||||
+--ro dest | ||||
| +--ro ap? -> /access-point/ap/id | ||||
| +--ro vn-ap-id? | ||||
| | -> /access-point/ap[id=current()/../ap]/vn-ap/id | ||||
| +--ro multi-dest? boolean {multi-src-dest}? | ||||
+--ro connectivity-matrix-id? leafref | ||||
+--ro underlay | ||||
+--ro if-selected? boolean {multi-src-dest}? | ||||
+--ro compute-status? vn-compute-status | ||||
+--ro error-info | ||||
+--ro error-description? string | ||||
+--ro error-timestamp? yang:date-and-time | ||||
+--ro error-reason? identityref | ||||
6. VN YANG Model | 6. VN YANG Model | |||
The YANG model is as follows: | The VN YANG model is as follows: | |||
<CODE BEGINS> file "ietf-vn@2024-06-22.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 { | |||
prefix yang; | prefix yang; | |||
reference | reference | |||
skipping to change at page 24, line 9 ¶ | skipping to change at line 1018 ¶ | |||
"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> | ||||
: Dhruv Dhody <dhruv.ietf@gmail.com>"; | Editor: Young Lee <younglee.tx@gmail.com> | |||
Editor: Dhruv Dhody <dhruv.ietf@gmail.com>"; | ||||
description | description | |||
"This module contains a YANG module for the Virtual Network | "This module contains a YANG module for the Virtual Network | |||
(VN). It describes a VN operation module that can take place | (VN). 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 Traffic Engineered (TE) | the Abstraction and Control of TE Networks (ACTN) | |||
Networks (ACTN) architecture where the CNC is the actor of | architecture where the CNC is the actor of a VN | |||
a VN Instantiation/modification/deletion as per RFC 8453. | instantiation/modification/deletion as per RFC 8453. | |||
This module uses following abbreviations: | This module uses the following abbreviations: | |||
- VN: Virtual Network | - VN: Virtual Network | |||
- AP: Access Point | - AP: Access Point | |||
- VNAP: Virtual Network Access Point | - VNAP: Virtual Network Access Point | |||
- LTP: Link Termination Point | - LTP: Link Termination Point | |||
- PE: Provider Edge | - PE: Provider Edge | |||
- COS: Class of Service | - COS: Class of Service | |||
Further, 'src' and 'dest' is used for source and destination | Further, src and dest are used for source and | |||
respectively. | destination, respectively. | |||
Copyright (c) 2024 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 XXXX; 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 2024-06-22 { | revision 2025-01-27 { | |||
description | description | |||
"The initial version."; | "The initial version."; | |||
reference | reference | |||
"RFC XXXX: 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 destination | "Support for selection of one src or dest | |||
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 Virtual Network (VN) | "A type definition for a Virtual Network (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 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 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. Note | "A type definition for representing the VN compute status. | |||
that all statuses apart from up and down are considered as | Note that all statuses apart from up and down are considered | |||
unknown."; | to be unknown."; | |||
} | } | |||
/* identities */ | /* identities */ | |||
identity vn-computation-error-reason { | identity vn-computation-error-reason { | |||
description | description | |||
"Base identity for VN computation error reasons."; | "Base identity for VN computation error reasons."; | |||
} | } | |||
identity vn-computation-error-not-ready { | identity vn-computation-error-not-ready { | |||
base vn-computation-error-reason; | base vn-computation-error-reason; | |||
description | description | |||
"VN computation has failed because the MDSC is not | "VN computation has failed because the MDSC is not | |||
ready."; | ready."; | |||
} | } | |||
identity vn-computation-error-no-cnc { | identity vn-computation-error-no-cnc { | |||
base vn-computation-error-reason; | base vn-computation-error-reason; | |||
description | description | |||
"VN computation has failed because one or more dependent | "VN computation has failed because one or more dependent | |||
CNC are unavailable."; | CNCs are unavailable."; | |||
} | } | |||
identity vn-computation-error-no-resource { | identity vn-computation-error-no-resource { | |||
base vn-computation-error-reason; | base vn-computation-error-reason; | |||
description | description | |||
"VN computation has failed because there is no | "VN computation has failed because there is no | |||
available resource in one or more domains."; | available resource in one or more domains."; | |||
} | } | |||
identity vn-computation-error-path-not-found { | identity vn-computation-error-path-not-found { | |||
skipping to change at page 27, line 4 ¶ | skipping to change at line 1158 ¶ | |||
/* Groupings */ | /* Groupings */ | |||
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 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" | |||
+ "/id"; | + "/id"; | |||
} | } | |||
description | description | |||
"A reference to source VNAP."; | "A reference to the source VNAP."; | |||
} | } | |||
leaf multi-src { | leaf multi-src { | |||
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 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 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 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 dest VNAP."; | "A reference to the dest 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 destination part of multi-destination, where only one | "Is the destination part of a multi-destination, | |||
of the destinations is enabled."; | where only one of the destinations is enabled."; | |||
} | } | |||
} | } | |||
leaf connectivity-matrix-id { | leaf connectivity-matrix-id { | |||
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 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)."; | |||
} | } | |||
skipping to change at page 28, line 50 ¶ | skipping to change at line 1252 ¶ | |||
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)."; | |||
} | } | |||
} | } | |||
/* Configuration data nodes */ | /* Configuration data nodes */ | |||
container access-point { | container access-point { | |||
description | description | |||
"AP configurations"; | "AP configurations."; | |||
list ap { | list ap { | |||
key "id"; | key "id"; | |||
description | description | |||
"access-point identifier."; | "The access-point identifier."; | |||
leaf id { | leaf id { | |||
type ap-id; | type ap-id; | |||
description | description | |||
"An AP identifier unique within the scope of the entity | "An AP identifier unique within the scope of the entity | |||
that controls the VN."; | that controls the VN."; | |||
} | } | |||
leaf pe { | leaf pe { | |||
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 page 30, line 7 ¶ | skipping to change at line 1305 ¶ | |||
type leafref { | type leafref { | |||
path "/nw:networks/nw:network/nw:node/nw:node-id"; | path "/nw:networks/nw:network/nw:node/nw:node-id"; | |||
} | } | |||
must '/nw:networks/nw:network/nw:node[nw:node-id=' | must '/nw:networks/nw:network/nw:node[nw:node-id=' | |||
+ 'current()/../abstract-node]/tet:te-node-id' { | + 'current()/../abstract-node]/tet:te-node-id' { | |||
description | description | |||
"The associated network for the abstract-node | "The associated network for the abstract-node | |||
must be TE enabled."; | must be TE enabled."; | |||
} | } | |||
description | description | |||
"A reference to the abstract node that represent | "A reference to the abstract node that represents | |||
the VN."; | the VN."; | |||
} | } | |||
leaf ltp { | leaf ltp { | |||
type leafref { | type leafref { | |||
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 Link Termination Point (LTP) in the | "A reference to the Link Termination Point (LTP) | |||
abstract-node i.e. the LTP should be in the abstract | in the abstract-node, i.e., the LTP should be in | |||
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 VNAP 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 { | |||
skipping to change at page 31, line 28 ¶ | skipping to change at line 1374 ¶ | |||
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/dest | "Is the vn-member selected among the multi-src | |||
options."; | or multi-dest 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 page 32, line 4 ¶ | skipping to change at line 1398 ¶ | |||
"VN operational state."; | "VN operational state."; | |||
} | } | |||
uses vn-policy; | uses vn-policy; | |||
} | } | |||
reference | reference | |||
"RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
Networks (ACTN)"; | Networks (ACTN)"; | |||
} | } | |||
/* 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 | |||
"A reference to the abstract node in TE Topology."; | "A reference to the abstract node in TE Topology."; | |||
} | } | |||
skipping to change at page 33, line 27 ¶ | skipping to change at line 1469 ¶ | |||
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/dest | "Is the vn-member selected among the multi-src or | |||
options."; | multi-dest 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 { | |||
type string { | type string { | |||
length "1..max"; | length "1..max"; | |||
} | } | |||
description | description | |||
"Textual representation of the error occurred during | "Textual representation of the error that occurred | |||
VN compute."; | during VN compute."; | |||
} | } | |||
leaf error-timestamp { | leaf error-timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Timestamp of the attempt."; | "Timestamp of the attempt."; | |||
} | } | |||
leaf error-reason { | leaf error-reason { | |||
type identityref { | type identityref { | |||
base vn-computation-error-reason; | base vn-computation-error-reason; | |||
} | } | |||
description | description | |||
"Reason for the VN computation error."; | "Reason for the VN computation error."; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at page 34, line 30 ¶ | skipping to change at line 1520 ¶ | |||
7. Security Considerations | 7. Security Considerations | |||
The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC8446]. | [RFC8446]. | |||
The NETCONF access control model [RFC8341] provides the means to | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
restrict access for particular NETCONF or RESTCONF users to a | provides the means to restrict access for particular NETCONF or | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
The model presented in this document is used in the interface between | The model presented in this document is used in the interface between | |||
the CNC and MDSC, which is referred to as CNC-MDSC Interface (CMI). | the CNC and MDSC, which is referred to as CNC-MDSC Interface (CMI). | |||
Security risks such as malicious attack and rogue elements attempting | Security risks, such as malicious attack and rogue elements | |||
to connect to the various ACTN components are possible. Furthermore, | attempting to connect to the various ACTN components, are possible. | |||
some ACTN components (e.g., MDSC) represent a single point of failure | Furthermore, some ACTN components (e.g., MDSC) represent a single | |||
and threat vector. Also, there is a need to manage policy conflicts | point of failure and threat vector. Also, there is a need to manage | |||
and eavesdropping of communication between different ACTN components. | policy conflicts and eavesdropping on communication between different | |||
ACTN components. | ||||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., "config true", which is the | writable/creatable/deletable (i.e., "config true", which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
* ap: This list includes a set of sensitive data that influences how | * ap: This list includes a set of sensitive data that influences how | |||
the access points in the VN service are attached. By accessing | the APs in the VN service are attached. By accessing the | |||
the following data nodes, an attacker may be able to manipulate | following data nodes, an attacker may be able to manipulate the | |||
the VN. | VN. | |||
- id | - id | |||
- pe | - pe | |||
- max-bandwidth | - max-bandwidth | |||
- avl-bandwidth | - avl-bandwidth | |||
* vn-ap: This list includes a set of sensitive data that influences | * vn-ap: This list includes a set of sensitive data that influences | |||
skipping to change at page 36, line 27 ¶ | skipping to change at line 1613 ¶ | |||
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-src/dest 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 which | * vn-compute: This RPC triggers the VN computation at the MDSC, | |||
can reveal the VN information. | which can reveal the VN information. | |||
8. IANA Considerations | 8. IANA Considerations | |||
IANA is requested to make the following allocation for the URIs in | IANA has made the following allocation for a URI in the "ns" registry | |||
the "ns" subregistry within the "IETF XML Registry" [RFC3688]: | within the "IETF XML Registry" registry group [RFC3688]: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-vn | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
IANA is requested to make the following allocation for the YANG | ||||
module in the "YANG Module Names" registry [RFC6020]: | ||||
name: ietf-vn | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-vn | ||||
prefix: vn | ||||
reference: RFC XXXX | ||||
9. Acknowledgments | ||||
The authors would like to thank Xufeng Liu, Adrian Farrel, Tom Petch, | URI: urn:ietf:params:xml:ns:yang:ietf-vn | |||
Mohamed Boucadair, Italo Busi, Bo Wu and Daniel King for their | Registrant Contact: The IESG. | |||
helpful comments and valuable suggestions. | XML: N/A, the requested URI is an XML namespace. | |||
Thanks to Andy Bierman for YANGDIR review. Thanks to Darren Dukes | IANA has made the following allocation for the VN YANG module (see | |||
for RTGDIR review. Thanks to Behcet Sarikaya for GENART review. | Section 5in the "YANG Module Names" registry [RFC6020]: | |||
Thanks to Bo Wu for OPSDIR review. Thanks to Shivan Sahib for SECDIR | ||||
review. Thanks to Susan Hares for RTGDIR review. | ||||
Thanks to Deb Cooley, Francesca Palombini, Gunter Van de Velde, and | name: ietf-vn | |||
Mahesh Jethanandani for IESG review. | namespace: urn:ietf:params:xml:ns:yang:ietf-vn | |||
prefix: vn | ||||
reference: RFC 9731 | ||||
10. References | 9. References | |||
10.1. Normative References | 9.1. Normative References | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC4124] Le Faucheur, F., Ed., "Protocol Extensions for Support of | [RFC4124] Le Faucheur, F., Ed., "Protocol Extensions for Support of | |||
Diffserv-aware MPLS Traffic Engineering", RFC 4124, | Diffserv-aware MPLS Traffic Engineering", RFC 4124, | |||
DOI 10.17487/RFC4124, June 2005, | DOI 10.17487/RFC4124, June 2005, | |||
<https://www.rfc-editor.org/info/rfc4124>. | <https://www.rfc-editor.org/info/rfc4124>. | |||
skipping to change at page 38, line 39 ¶ | skipping to change at line 1706 ¶ | |||
"Common YANG Data Types for Traffic Engineering", | "Common YANG Data Types for Traffic Engineering", | |||
RFC 8776, DOI 10.17487/RFC8776, June 2020, | RFC 8776, DOI 10.17487/RFC8776, June 2020, | |||
<https://www.rfc-editor.org/info/rfc8776>. | <https://www.rfc-editor.org/info/rfc8776>. | |||
[RFC8795] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and | [RFC8795] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and | |||
O. Gonzalez de Dios, "YANG Data Model for Traffic | O. Gonzalez de Dios, "YANG Data Model for Traffic | |||
Engineering (TE) Topologies", RFC 8795, | Engineering (TE) Topologies", RFC 8795, | |||
DOI 10.17487/RFC8795, August 2020, | DOI 10.17487/RFC8795, August 2020, | |||
<https://www.rfc-editor.org/info/rfc8795>. | <https://www.rfc-editor.org/info/rfc8795>. | |||
10.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-ccamp-l1csm-yang] | [L1CSM-YANG] | |||
Lee, Y., Lee, K., Zheng, H., de Dios, O. G., and D. | Lee, Y., Lee, K., Zheng, H., Gonzalez de Dios, O., and D. | |||
Ceccarelli, "A YANG Data Model for L1 Connectivity Service | Ceccarelli, "A YANG Data Model for L1 Connectivity Service | |||
Model (L1CSM)", Work in Progress, Internet-Draft, draft- | Model (L1CSM)", Work in Progress, Internet-Draft, draft- | |||
ietf-ccamp-l1csm-yang-26, 11 April 2024, | ietf-ccamp-l1csm-yang-26, 11 April 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-ccamp- | <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp- | |||
l1csm-yang-26>. | l1csm-yang-26>. | |||
[I-D.ietf-teas-actn-pm-telemetry-autonomics] | ||||
Lee, Y., Dhody, D., Vilalta, R., King, D., and D. | ||||
Ceccarelli, "YANG models for Virtual Network (VN)/TE | ||||
Performance Monitoring Telemetry and Scaling Intent | ||||
Autonomics", Work in Progress, Internet-Draft, draft-ietf- | ||||
teas-actn-pm-telemetry-autonomics-12, 16 March 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teas- | ||||
actn-pm-telemetry-autonomics-12>. | ||||
[I-D.ietf-teas-te-service-mapping-yang] | ||||
Lee, Y., Dhody, D., Fioccola, G., Wu, Q., Ceccarelli, D., | ||||
and J. Tantsura, "Traffic Engineering (TE) and Service | ||||
Mapping YANG Data Model", Work in Progress, Internet- | ||||
Draft, draft-ietf-teas-te-service-mapping-yang-15, 16 | ||||
March 2024, <https://datatracker.ietf.org/doc/html/draft- | ||||
ietf-teas-te-service-mapping-yang-15>. | ||||
[I-D.ietf-teas-yang-te] | ||||
Saad, T., Gandhi, R., Liu, X., Beeram, V. P., and I. | ||||
Bryskin, "A YANG Data Model for Traffic Engineering | ||||
Tunnels, Label Switched Paths and Interfaces", Work in | ||||
Progress, Internet-Draft, draft-ietf-teas-yang-te-36, 2 | ||||
February 2024, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-teas-yang-te-36>. | ||||
[RFC7926] Farrel, A., Ed., Drake, J., Bitar, N., Swallow, G., | [RFC7926] Farrel, A., Ed., Drake, J., Bitar, N., Swallow, G., | |||
Ceccarelli, D., and X. Zhang, "Problem Statement and | Ceccarelli, D., and X. Zhang, "Problem Statement and | |||
Architecture for Information Exchange between | Architecture for Information Exchange between | |||
Interconnected Traffic-Engineered Networks", BCP 206, | Interconnected Traffic-Engineered Networks", BCP 206, | |||
RFC 7926, DOI 10.17487/RFC7926, July 2016, | RFC 7926, DOI 10.17487/RFC7926, July 2016, | |||
<https://www.rfc-editor.org/info/rfc7926>. | <https://www.rfc-editor.org/info/rfc7926>. | |||
[RFC8299] Wu, Q., Ed., Litkowski, S., Tomotaki, L., and K. Ogaki, | [RFC8299] Wu, Q., Ed., Litkowski, S., Tomotaki, L., and K. Ogaki, | |||
"YANG Data Model for L3VPN Service Delivery", RFC 8299, | "YANG Data Model for L3VPN Service Delivery", RFC 8299, | |||
DOI 10.17487/RFC8299, January 2018, | DOI 10.17487/RFC8299, January 2018, | |||
skipping to change at page 40, line 15 ¶ | skipping to change at line 1752 ¶ | |||
[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>. | |||
[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] | ||||
Lee, Y., Dhody, D., Fioccola, G., Wu, Q., Ceccarelli, D., | ||||
and J. Tantsura, "Traffic Engineering (TE) and Service | ||||
Mapping YANG Data Model", Work in Progress, Internet- | ||||
Draft, draft-ietf-teas-te-service-mapping-yang-16, 20 | ||||
October 2024, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-teas-te-service-mapping-yang-16>. | ||||
[TEAS-ACTN-PM] | ||||
Lee, Y., Dhody, D., Vilalta, R., King, D., and D. | ||||
Ceccarelli, "YANG models for Virtual Network (VN)/TE | ||||
Performance Monitoring Telemetry and Scaling Intent | ||||
Autonomics", Work in Progress, Internet-Draft, draft-ietf- | ||||
teas-actn-pm-telemetry-autonomics-14, 19 October 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-teas- | ||||
actn-pm-telemetry-autonomics-14>. | ||||
[YANG-TE] Saad, T., Gandhi, R., Liu, X., Beeram, V. P., and I. | ||||
Bryskin, "A YANG Data Model for Traffic Engineering | ||||
Tunnels, Label Switched Paths and Interfaces", Work in | ||||
Progress, Internet-Draft, draft-ietf-teas-yang-te-37, 9 | ||||
October 2024, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-teas-yang-te-37>. | ||||
Appendix A. Performance Constraints | Appendix A. Performance Constraints | |||
At the time of creation of 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 this | constraints and optimization criteria. It should be noted that the | |||
YANG module relies on the TE-Topology Model [RFC8795] by using a | VN YANG module described in this document relies on the TE-Topology | |||
reference to an abstract node to achieve this. Further, the | Model in [RFC8795] by using a reference to an abstract node to | |||
connectivity-matrix structure is used to assign the constraints and | achieve this. Further, the connectivity-matrix structure is used to | |||
optimization criteria including delay, jitter etc. [RFC8776] defines | assign the constraints and optimization criteria including delay, | |||
some of the metric-types already and future documents are meant to | jitter, etc. [RFC8776] defines some of the metric-types; future | |||
augment it. | 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 VN YANG model and TE | This section provides JSON examples of how the VN YANG model and TE | |||
topology model are used together to instantiate VN. | topology model are used together to instantiate a VN. | |||
The example in this section includes the following VN | The example in this section includes the following VNs: | |||
* VN1 (Type 1): Which maps to the single node topology abstract1 and | * VN1 (Type 1): This VN maps to the single node topology abstract1 | |||
consist of VN Members 104 (L1 to L4), 107 (L1 to L7), 204 (L2 to | and consists of VN Members 104 (L1 to L4), 107 (L1 to L7), 204 (L2 | |||
L4), 308 (L3 to L8) and 108 (L1 to L8). | to L4), 308 (L3 to L8), and 108 (L1 to L8). | |||
* VN2 (Type 2): Which 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 abstract2 topology; | S7) has been set in the connectivity matrix of the abstract2 | |||
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 multi-src feature. The selected VN-member is known | L8) showcase the multi-src feature. The selected VN-member is | |||
via the field "if-selected" and the corresponding connectivity- | known via the field "if-selected" and the corresponding | |||
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 | |||
--- --- --- | --- --- --- | |||
Note that the VN YANG model also includes the AP and VNAP which shows | Figure 11 | |||
various VN using the same AP. | ||||
Note that the VN YANG model also includes the AP and VNAP, which | ||||
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", | |||
"vn": "1", | "vn": "1", | |||
skipping to change at page 47, line 20 ¶ | skipping to change at line 2116 ¶ | |||
}, | }, | |||
"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. | |||
* abstract2: a single node TE topology referenced by VN2 with | * abstract2: a single node TE topology referenced by VN2 with an | |||
underlay path. | underlay path. | |||
* underlay: the topology with multiple nodes (in the underlay path | * underlay: the topology with multiple nodes (in the underlay path | |||
of abstract2). For brevity, the example includes only the node | of abstract2). For brevity, the example includes only the node: | |||
and other parameters are not included. | other parameters are not included. | |||
* abstract3: a single node TE topology referenced by VN3. | * abstract3: a single node TE topology referenced by VN3. | |||
{ | { | |||
"ietf-network:networks": { | "ietf-network:networks": { | |||
"network": [ | "network": [ | |||
{ | { | |||
"network-types": { | "network-types": { | |||
"ietf-te-topology:te-topology": {} | "ietf-te-topology:te-topology": {} | |||
}, | }, | |||
skipping to change at page 54, line 45 ¶ | skipping to change at line 2477 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Appendix C. Contributors Addresses | Acknowledgments | |||
The authors would like to thank Xufeng Liu, Adrian Farrel, Tom Petch, | ||||
Mohamed Boucadair, Italo Busi, Bo Wu, and Daniel King for their | ||||
helpful comments and valuable suggestions. | ||||
Thanks to: | ||||
* Andy Bierman for the YANGDIR review. | ||||
* Darren Dukes and Susan Hares for the RTGDIR review. | ||||
* Behcet Sarikaya for the GENART review. | ||||
* Bo Wu for the OPSDIR review. | ||||
* Shivan Sahib for the SECDIR review. | ||||
* Deb Cooley, Francesca Palombini, Gunter Van de Velde, and Mahesh | ||||
Jethanandani for the IESG review. | ||||
Contributors' Addresses | ||||
Qin Wu | Qin Wu | |||
Huawei Technologies | Huawei Technologies | |||
Email: bill.wu@huawei.com | Email: bill.wu@huawei.com | |||
Peter Park | Peter Park | |||
KT | KT | |||
Email: peter.park@kt.com | Email: peter.park@kt.com | |||
Haomian Zheng | Haomian Zheng | |||
Huawei Technologies | Huawei Technologies | |||
End of changes. 165 change blocks. | ||||
681 lines changed or deleted | 684 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |