| < draft-ietf-opsawg-sap-02.txt | draft-ietf-opsawg-sap-03.txt > | |||
|---|---|---|---|---|
| OPSAWG M. Boucadair, Ed. | OPSAWG M. Boucadair, Ed. | |||
| Internet-Draft Orange | Internet-Draft Orange | |||
| Intended status: Standards Track O. Gonzalez de Dios | Intended status: Standards Track O. Gonzalez de Dios | |||
| Expires: 26 August 2022 S. Barguil | Expires: 22 September 2022 S. Barguil | |||
| Telefonica | Telefonica | |||
| Q. Wu | Q. Wu | |||
| Huawei | Huawei | |||
| V. Lopez | V. Lopez | |||
| Nokia | Nokia | |||
| 22 February 2022 | 21 March 2022 | |||
| A Network YANG Model for Service Attachment Points (SAPs) | A Network YANG Model for Service Attachment Points (SAPs) | |||
| draft-ietf-opsawg-sap-02 | draft-ietf-opsawg-sap-03 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for representing an abstract | This document defines a YANG data model for representing an abstract | |||
| view of the provider network topology that contains the points from | view of the provider network topology that contains the points from | |||
| which its services can be attached (e.g., basic connectivity, VPN, | which its services can be attached (e.g., basic connectivity, VPN, | |||
| network slices). Also, the model can be used to retrieve the points | network slices). Also, the model can be used to retrieve the points | |||
| where the services are actually being delivered to customers | where the services are actually being delivered to customers | |||
| (including peer networks). | (including peer networks). | |||
| skipping to change at page 1, line 49 ¶ | skipping to change at page 1, line 49 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 26 August 2022. | This Internet-Draft will expire on 22 September 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. SAP Network Model Usage . . . . . . . . . . . . . . . . . . . 4 | 3. SAP Network Model Usage . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Relationship to Other YANG Data Models . . . . . . . . . . . 8 | 4. Relationship to Other YANG Data Models . . . . . . . . . . . 8 | |||
| 5. SAP Module Tree Structure . . . . . . . . . . . . . . . . . . 9 | 5. SAP Module Tree Structure . . . . . . . . . . . . . . . . . . 9 | |||
| 6. SAP YANG Module . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. SAP YANG Module . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 21 | 10.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. A Simplified SAP Network Example . . . . . . . . . . 24 | Appendix A. A Simplified SAP Network Example . . . . . . . . . . 24 | |||
| Appendix B. A Simple Example of SAP Network Model: Node | Appendix B. A Simple Example of SAP Network Model: Node | |||
| Filter . . . . . . . . . . . . . . . . . . . . . . . . . 27 | Filter . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| Appendix C. An Example of NNI SAP: Inter-AS VPN Option A . . . . 31 | Appendix C. An Example of NNI SAP: Inter-AS VPN Option A . . . . 32 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | Appendix D. An Example of Using the SAP Network Model in Service | |||
| Creation . . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 1. Introduction | 1. Introduction | |||
| From the perspective of a service provider, the Service Attachment | From the perspective of a service provider, the Service Attachment | |||
| Points (SAPs) are abstraction of the network reference points where | Points (SAPs) are abstraction of the network reference points where | |||
| network services can be delivered to customers. The SAP is an | network services can be delivered to customers. The SAP is an | |||
| important architectural concept in many implementations and | important architectural concept in many implementations and service | |||
| deployments of services, such as Virtual Private Networks (VPNs), | deployments, such as Virtual Private Networks (VPNs), Software- | |||
| Software-Defined Wide Area Network (SDWAN) | Defined Wide Area Network (SDWAN) [I-D.ietf-bess-bgp-sdwan-usage], or | |||
| [I-D.ietf-bess-bgp-sdwan-usage], or network slices | network slices [I-D.ietf-teas-ietf-network-slices]. For example, | |||
| [I-D.ietf-teas-ietf-network-slices]. For example, it is used to | this concept is used to decide where to attach and, thus, deliver the | |||
| decide where to attach and, thus, deliver the service in the Layer 3 | service in the Layer 3 VPN Service Model (L3SM) [RFC8299] and the | |||
| VPN Service Model (L3SM) [RFC8299] and the Layer 2 VPN Service Model | Layer 2 VPN Service Model (L2SM) [RFC8466]. It can also be used to | |||
| (L2SM) [RFC8466]. It can also be used to retrieve where services, | retrieve where services, such as the Layer 3 VPN Network Model (L3NM) | |||
| such as the Layer 3 VPN Network Model (L3NM) [RFC9182], and the Layer | [RFC9182], and the Layer 2 VPN Network Model (L2NM) | |||
| 2 VPN Network Model (L2NM) [I-D.ietf-opsawg-l2nm], are delivered to | [I-D.ietf-opsawg-l2nm], are delivered to customers. | |||
| customers. | ||||
| This document defines a YANG network model (Section 6) for | This document defines a YANG network model (Section 6) for | |||
| representing, managing, and controlling the Service Attachment | representing, managing, and controlling the SAPs. The data model | |||
| Points. The data model augments the 'ietf-network' module [RFC8345] | augments the 'ietf-network' module [RFC8345] by adding the concept of | |||
| by adding the concept of Service Attachment Points. This document | SAPs. This document explains the scope and purpose of a SAP network | |||
| explains the scope and purpose of a SAP network model and its | model and its relation with other models (Section 4). | |||
| relation with other models (Section 4). | ||||
| Multiple service types can be associated with a given network. | Multiple service types can be associated with a given network. | |||
| Whether a SAP topology is dedicated to a specific service or shared | Whether a SAP topology is dedicated to a specific service or shared | |||
| among many services is deployment specific. This document supports | among many services is deployment specific. This document supports | |||
| both deployment schemes. | both deployment schemes. | |||
| This document does not make any assumption about the service(s) | This document does not make any assumption about the service(s) | |||
| provided by a network to its users. VPN services (e.g., Layer 3 | provided by a network to its users. VPN services (e.g., Layer 3 | |||
| Virtual Private Network (L3VPN) or Layer 2 Virtual Private Network | Virtual Private Network (L3VPN) or Layer 2 Virtual Private Network | |||
| (L2VPN)) are used for illustration purposes (Appendices A and B). | (L2VPN)) are used for illustration purposes (Appendices A and B). | |||
| skipping to change at page 4, line 11 ¶ | skipping to change at page 4, line 11 ¶ | |||
| This document uses the following terms: | This document uses the following terms: | |||
| Service povider: The organization responsible for operating the | Service povider: The organization responsible for operating the | |||
| network that offers a service (e.g., a VPN) to customers. | network that offers a service (e.g., a VPN) to customers. | |||
| Customer Edge (CE): An equipment that is dedicated to a particular | Customer Edge (CE): An equipment that is dedicated to a particular | |||
| customer and is directly connected to one or more Provider Edges | customer and is directly connected to one or more Provider Edges | |||
| (PEs) via attachment circuits (ACs). A CE is usually located at | (PEs) via attachment circuits (ACs). A CE is usually located at | |||
| the customer premises. A CE may be dedicated to a single service | the customer premises. A CE may be dedicated to a single service | |||
| (e.g., L3VPN), although it may support multiple VPNs if each one | (e.g., L3VPN), although it may support multiple VPNs if each one | |||
| has separate attachment circuits. A CE can be a router, bridge, | has separate attachment circuits. A CE can be a router, a bridge, | |||
| switch, etc. | a switch, etc. | |||
| Provider Edge (PE): An equipment owned and managed by the service | Provider Edge (PE): An equipment owned and managed by the service | |||
| provider that can support multiple services (e.g., VPNs) for | provider that can support multiple services (e.g., VPNs) for | |||
| different customers. A PE is directly connected to one or more | different customers. A PE is directly connected to one or more | |||
| CEs via ACs. | CEs via ACs. | |||
| Service Attachment Point (SAP): Describes the service's endpoint | Service Attachment Point (SAP): Describes the service's endpoint | |||
| characteristics and its reference to a Termination Point (TP) of a | characteristics and its reference to a Termination Point (TP). | |||
| PE. | ||||
| 3. SAP Network Model Usage | 3. SAP Network Model Usage | |||
| Management operations of a service provider network can be automated | Management operations of a service provider network can be automated | |||
| using a variety of means such as interfaces based on YANG modules | using a variety of means such as interfaces based on YANG modules | |||
| [RFC8969]. From that standpoint, and considering the architecture | [RFC8969]. From that standpoint, and considering the architecture | |||
| depicted in Figure 1, a goal of this document is to provide a | depicted in Figure 1, a goal of this document is to provide a | |||
| mechanism to show via a YANG-based interface an abstracted network | mechanism to show via a YANG-based interface an abstracted network | |||
| view from the network controller to the service orchestration layer | view from the network controller to the service orchestration layer | |||
| with a focus on where a service can be delivered to customers. The | with a focus on where a service can be delivered to customers. The | |||
| skipping to change at page 9, line 17 ¶ | skipping to change at page 9, line 17 ¶ | |||
| use. | use. | |||
| Advanced low-level interface-specific data nodes are not exposed in | Advanced low-level interface-specific data nodes are not exposed in | |||
| the SAP model. Filters based on the interface identifiers listed in | the SAP model. Filters based on the interface identifiers listed in | |||
| the SAP model can be used together with dedicated device models to | the SAP model can be used together with dedicated device models to | |||
| set or get such data. | set or get such data. | |||
| 5. SAP Module Tree Structure | 5. SAP Module Tree Structure | |||
| The SAP network model 'ietf-sap-ntw' builds on the 'ietf-network' | The SAP network model 'ietf-sap-ntw' builds on the 'ietf-network' | |||
| module [RFC8345] by augmenting the nodes with Service Attachment | module [RFC8345] by augmenting the nodes with SAPs, which anchor the | |||
| Points, which anchor the links and are contained in nodes. | links and are contained in nodes. | |||
| The 'service-attachment-point' attribute defined in the SAP network | The 'sap' attribute defined in the SAP network model is not a tunnel | |||
| model is not a tunnel termination point (TTP) (Section 3.6 of | termination point (TTP) (Section 3.6 of [RFC8795]) nor a link, but an | |||
| [RFC8795]) nor a link, but an abstraction of the termination point | abstraction of the termination point defined in [RFC8345]. | |||
| defined in [RFC8345]. | ||||
| The structure of the 'ietf-sap-ntw' module is shown in Figure 7. | The structure of the 'ietf-sap-ntw' module is shown in Figure 7. | |||
| module: ietf-sap-ntw | module: ietf-sap-ntw | |||
| augment /nw:networks/nw:network/nw:network-types: | augment /nw:networks/nw:network/nw:network-types: | |||
| +--rw sap-network! | +--rw sap-network! | |||
| +--rw sap-type* identityref | +--rw service-type* identityref | |||
| augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
| +--rw service* [sap-type] | +--rw service* [service-type] | |||
| +--rw sap-type identityref | +--rw service-type identityref | |||
| +--rw service-attachment-point* [attachment-id] | +--rw sap* [sap-id] | |||
| +--rw attachment-id string | +--rw sap-id string | |||
| +--rw description? string | +--rw description? string | |||
| +--rw attachment-interface? string | ||||
| +--rw parent-termination-point? nt:tp-id | +--rw parent-termination-point? nt:tp-id | |||
| +--rw attachment-interface? string | ||||
| +--rw interface-type? identityref | +--rw interface-type? identityref | |||
| +--rw encapsulation-type? identityref | +--rw encapsulation-type? identityref | |||
| +--rw role? identityref | +--rw role? identityref | |||
| +--rw peer-customer-sap-id? string | +--rw peer-sap-id? string | |||
| +--ro sap-status | +--ro sap-status | |||
| | +--ro status? identityref | | +--ro status? identityref | |||
| | +--ro last-change? yang:date-and-time | | +--ro last-change? yang:date-and-time | |||
| +--ro service-status | +--ro service-status | |||
| +--ro status? identityref | +--ro status? identityref | |||
| +--ro last-change? yang:date-and-time | +--ro last-change? yang:date-and-time | |||
| Figure 7: SAP YANG Module Tree Structure | Figure 7: SAP YANG Module Tree Structure | |||
| A SAP network topology can be used for one or multiple service types | A SAP network topology can be used for one or multiple service types | |||
| ('sap-type'). Examples of supported service types are as follows: | ('service-type'). Examples of supported service types are as | |||
| follows: | ||||
| * L3VPN [RFC4364], | * L3VPN [RFC4364], | |||
| * Virtual Private LAN Service (VPLS) [RFC4761][RFC4762], | * Virtual Private LAN Service (VPLS) [RFC4761][RFC4762], | |||
| * Virtual Private Wire Service (VPWS) [RFC8214], | * Virtual Private Wire Service (VPWS) [RFC8214], | |||
| * BGP MPLS-Based Ethernet VPN [RFC7432], | * BGP MPLS-Based Ethernet VPN [RFC7432], | |||
| * VPWS in Ethernet VPN [RFC8214], | * VPWS in Ethernet VPN [RFC8214], | |||
| skipping to change at page 10, line 41 ¶ | skipping to change at page 10, line 42 ¶ | |||
| * Basic IP connectivity. | * Basic IP connectivity. | |||
| These service types build on the types that are already defined in | These service types build on the types that are already defined in | |||
| [RFC9181] and additional types that are defined in this document. | [RFC9181] and additional types that are defined in this document. | |||
| Other service types can be defined in future YANG modules, if needed. | Other service types can be defined in future YANG modules, if needed. | |||
| Filters based on the service type can be used to access per-service | Filters based on the service type can be used to access per-service | |||
| SAP topology. A example is depicted in Figure 11. | SAP topology. A example is depicted in Figure 11. | |||
| A node in the topology can support one or multiple service types | A node in the topology can support one or multiple service types | |||
| ('sap-type') among those listed under the 'sap-network' container. A | ('service-type') among those listed under the 'sap-network' | |||
| list of SAPs are then bound to each service type supported by a given | container. A list of SAPs are then bound to each service type that | |||
| node. Each SAP is characterized as follows: | is supported by a given node. Each SAP is characterized as follows: | |||
| 'attachment-id': Includes an identifier that uniquely identifies a | 'sap-id': Includes an identifier that uniquely identifies a SAP | |||
| SAP within a node. | within a node. | |||
| The same SAP may appear under distinct service types. In such a | The same SAP may appear under distinct service types. In such a | |||
| case, the same identifier is used for these service types in | case, the same identifier is used for these service types in | |||
| association. | association. | |||
| SAPs that are associated with the interfaces that are directly | SAPs that are associated with the interfaces that are directly | |||
| hosting services, interfaces that are ready to host per-service | hosting services, interfaces that are ready to host per-service | |||
| sub-interfaces (but not yet activated), or service that are | sub-interfaces (but not yet activated), or service that are | |||
| already instantiated on sub-interfaces are listed as SAPs. | already instantiated on sub-interfaces are listed as SAPs. | |||
| For example, 'attachment-id' may be the VPN network access | For example, 'sap-id' may be the VPN network access identifier in | |||
| identifier in Section 7.6 of [RFC9182]. | Section 7.6 of [RFC9182]. An example to illustrate the use of | |||
| this attribute during service creation is provided in Appendix D. | ||||
| 'description': Includes a textual description of the SAP. | 'description': Includes a textual description of the SAP. | |||
| 'attachment-interface': Indicates a reference to the interface to | ||||
| which the SAP is bound. The same interface may host multiple | ||||
| services. | ||||
| Whether the attachment identifier echoes the content of the | ||||
| attachment interface is deployment specific. | ||||
| 'parent-termination-point': Includes a reference to the parent | 'parent-termination-point': Includes a reference to the parent | |||
| interface to which the SAP is bound (e.g., a physical port). | interface to which the SAP is bound (e.g., a physical port). | |||
| This attribute is used, e.g., to associate an interface with its | This attribute is used, e.g., to associate an interface with its | |||
| sub-interfaces as all these interfaces may be listed under the | sub-interfaces as all these interfaces may be listed under the | |||
| SAPs of a node. It is also used to link a SAP with the physical | SAPs of a node. It is also used to link a SAP with the physical | |||
| topology. | topology. | |||
| For example, this data node can be used to map the IETF Network | For example, this data node can be used to map the IETF Network | |||
| Slice endpoints to the service/tunnel/path endpoints in the | Slice endpoints to the service/tunnel/path endpoints in the | |||
| underlay network as per Section 5.4 of | underlay network as per Section 5.4 of | |||
| [I-D.ietf-teas-ietf-network-slices]. | [I-D.ietf-teas-ietf-network-slices]. | |||
| 'attachment-interface': Indicates a reference to the interface to | ||||
| which the SAP is bound. The same interface may host multiple | ||||
| services. | ||||
| Whether the attachment identifier echoes the content of the | ||||
| attachment interface is deployment specific. | ||||
| For example, this reference may be any of the identifiers ('l2- | ||||
| termination-point', 'local-bridge-reference', 'bearer-reference', | ||||
| or 'lag-interface-id') defined in Section 7.6.1 of [RFC9182] or | ||||
| 'l3-termination-point' defined in Section 7.6.2 of [RFC9182]. It | ||||
| is responsibility of the controller to ensure that consistent | ||||
| references are used in the SAP and underlying device modes or any | ||||
| other device inventory mechanism. | ||||
| 'interface-type': Indicates whether a SAP is bound to a physical | 'interface-type': Indicates whether a SAP is bound to a physical | |||
| port, a loopback interface, a Link Aggregation Group (LAG) | port, a loopback interface, a Link Aggregation Group (LAG) | |||
| interface, an Integrated Routing Bridge (IRB), a local bridge | interface, an Integrated Routing Bridge (IRB), a local bridge | |||
| reference, etc. | reference, etc. | |||
| The mapping to the detailed interface types as per [RFC7224] is | ||||
| maintained by the controller. That mapping is used, for example, | ||||
| when the controller translates this SAP network module into device | ||||
| modules. | ||||
| 'encapsulation-type': Indicates the encapsulation type for the | 'encapsulation-type': Indicates the encapsulation type for the | |||
| interface indicated in the 'attachment-interface' attribute. The | interface indicated in the 'attachment-interface' attribute. The | |||
| types are taken from [RFC9181]. | types are taken from [RFC9181]. | |||
| This data node can be used, for example, to decide whether an | This data node can be used, for example, to decide whether an | |||
| existing SAP can be (re)used to host a service or if a new sub- | existing SAP can be (re)used to host a service or if a new sub- | |||
| interface has to be instantiated. | interface has to be instantiated. | |||
| 'role': Specifies whether a SAP is a UNI or NNI. | 'role': Specifies the role of a SAP (e.g., a UNI or NNI). | |||
| A SAP inherits the role of its parent interface ('parent- | A SAP inherits the role of its parent interface ('parent- | |||
| termination-point'). | termination-point'). | |||
| 'peer-customer-sap-id': Includes a reference to the remote endpoint | 'peer-sap-id': Includes a reference to the remote endpoint of an | |||
| of an attachment circuit. | attachment circuit. | |||
| Examples of such a reference are: a site identifier (Section 6.3 | Examples of such a reference are: a site identifier (Section 6.3 | |||
| of [RFC8299]), a CE identifier (Section 2.1 of | of [RFC8299]), a CE identifier (Section 2.1 of | |||
| [I-D.ietf-teas-ietf-network-slices]), the IP address of a peer | [I-D.ietf-teas-ietf-network-slices]), the IP address of a peer | |||
| Autonomous System Border Router (ASBR). | Autonomous System Border Router (ASBR). | |||
| 'sap-status': Indicates the operational status of a SAP. Values are | 'sap-status': Indicates the operational status of a SAP. Values are | |||
| taken from the values defined in [RFC9181]. | taken from the values defined in [RFC9181]. | |||
| When both a sub-interface and its parent interface are present, | When both a sub-interface and its parent interface are present, | |||
| skipping to change at page 12, line 29 ¶ | skipping to change at page 12, line 42 ¶ | |||
| 'service-status': Reports the operational status of service for a | 'service-status': Reports the operational status of service for a | |||
| given SAP. This information is particularly useful when many | given SAP. This information is particularly useful when many | |||
| services are enabled for the same SAP, but only a subset of them | services are enabled for the same SAP, but only a subset of them | |||
| are activated. | are activated. | |||
| 6. SAP YANG Module | 6. SAP YANG Module | |||
| This module imports types from [RFC8343], [RFC8345], and [RFC9181]. | This module imports types from [RFC8343], [RFC8345], and [RFC9181]. | |||
| 'sap-information' is defined as a grouping to use the reuse of these | The 'sap-information' is defined as a grouping for the reuse of these | |||
| nodes in service-specific YANG modules. | nodes in service-specific YANG modules. | |||
| <CODE BEGINS> file "ietf-sap-ntw@2022-02-17.yang" | <CODE BEGINS> file "ietf-sap-ntw@2022-02-17.yang" | |||
| module ietf-sap-ntw { | module ietf-sap-ntw { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-sap-ntw"; | namespace "urn:ietf:params:xml:ns:yang:ietf-sap-ntw"; | |||
| prefix sap; | prefix sap; | |||
| import ietf-network-topology { | import ietf-network-topology { | |||
| prefix nt; | prefix nt; | |||
| skipping to change at page 16, line 30 ¶ | skipping to change at page 16, line 42 ¶ | |||
| base interface-type; | base interface-type; | |||
| description | description | |||
| "Refers to a logical sub-interface that is typically | "Refers to a logical sub-interface that is typically | |||
| used to bind a service. This type is used only | used to bind a service. This type is used only | |||
| if none of the other logical types can be used."; | if none of the other logical types can be used."; | |||
| } | } | |||
| grouping sap-information { | grouping sap-information { | |||
| description | description | |||
| "Service Attachment Point (SAP) information."; | "Service Attachment Point (SAP) information."; | |||
| list service-attachment-point { | list sap { | |||
| key "attachment-id"; | key "sap-id"; | |||
| description | description | |||
| "The Service Attachment Points are abstraction of | "The Service Attachment Points are abstraction of | |||
| the points where network services such as L3VPNs, | the points where network services such as L3VPNs, | |||
| L2VPNs, or network slices can be attached to."; | L2VPNs, or network slices can be attached to."; | |||
| leaf attachment-id { | leaf sap-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Indicates an identifier that uniquely identifies | "Indicates an identifier that uniquely identifies | |||
| SAP within a node."; | SAP within a node."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "A textual description of the SAP."; | "A textual description of the SAP."; | |||
| } | } | |||
| leaf attachment-interface { | ||||
| type string; | ||||
| description | ||||
| "Indicates the interface to which the SAP is bound."; | ||||
| } | ||||
| leaf parent-termination-point { | leaf parent-termination-point { | |||
| type nt:tp-id; | type nt:tp-id; | |||
| description | description | |||
| "Indicates the parent termination point to | "Indicates the parent termination point to | |||
| which the SAP is attached to. A termination | which the SAP is attached to. A termination | |||
| point can be a physical port, an interface, etc."; | point can be a physical port, an interface, etc."; | |||
| } | } | |||
| leaf attachment-interface { | ||||
| type string; | ||||
| description | ||||
| "Indicates the interface to which the SAP is bound."; | ||||
| } | ||||
| leaf interface-type { | leaf interface-type { | |||
| type identityref { | type identityref { | |||
| base interface-type; | base interface-type; | |||
| } | } | |||
| description | description | |||
| "The type of the interface to which the SAP is bound."; | "The type of the interface to which the SAP is bound."; | |||
| } | } | |||
| leaf encapsulation-type { | leaf encapsulation-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:encapsulation-type; | base vpn-common:encapsulation-type; | |||
| } | } | |||
| description | description | |||
| "Encapsulation type of the interface to which the | "Encapsulation type of the interface to which the | |||
| SAP is bound."; | SAP is bound."; | |||
| } | } | |||
| leaf role { | leaf role { | |||
| type identityref { | type identityref { | |||
| base interface-role; | base interface-role; | |||
| } | } | |||
| description | description | |||
| "Indicates whether the SAP is an UNI or a NNI."; | "Indicates the role of a SAP."; | |||
| } | } | |||
| leaf peer-customer-sap-id { | leaf peer-sap-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Indicates an identifier of the peer's termination | "Indicates an identifier of the peer's termination | |||
| identifier (e.g., Customer Edge (CE)). This | identifier (e.g., Customer Edge (CE)). This | |||
| information can be used for correlation purposes, | information can be used for correlation purposes, | |||
| such as identifying the SAP that is attached to | such as identifying the SAP that is attached to | |||
| an endpoint that is provided in a service request."; | an endpoint that is provided in a service request."; | |||
| } | } | |||
| container sap-status { | container sap-status { | |||
| config "false"; | config "false"; | |||
| skipping to change at page 18, line 4 ¶ | skipping to change at page 18, line 16 ¶ | |||
| container sap-status { | container sap-status { | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "Indicates the SAP status."; | "Indicates the SAP status."; | |||
| uses vpn-common:oper-status-timestamp; | uses vpn-common:oper-status-timestamp; | |||
| } | } | |||
| container service-status { | container service-status { | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "Indicates the service status."; | "Indicates the service status."; | |||
| uses vpn-common:oper-status-timestamp; | uses vpn-common:oper-status-timestamp; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/nw:networks/nw:network/nw:network-types" { | augment "/nw:networks/nw:network/nw:network-types" { | |||
| description | description | |||
| "Introduces a new network type for SAP network."; | "Introduces a new network type for SAP network."; | |||
| container sap-network { | container sap-network { | |||
| presence "Indicates SAP Network Type."; | presence "Indicates SAP Network Type."; | |||
| description | description | |||
| "The presence of the container node indicates the | "The presence of the container node indicates the | |||
| SAP network type."; | SAP network type."; | |||
| leaf-list sap-type { | leaf-list service-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:service-type; | base vpn-common:service-type; | |||
| } | } | |||
| description | description | |||
| "Indicates the set of supported service types."; | "Indicates the set of supported service types."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/nw:networks/nw:network/nw:node" { | augment "/nw:networks/nw:network/nw:node" { | |||
| description | description | |||
| "Parameters for the SAP level."; | "Parameters for the SAP level."; | |||
| list service { | list service { | |||
| key "sap-type"; | key "service-type"; | |||
| description | description | |||
| "A list of supported service type for the node."; | "A list of supported service type for the node."; | |||
| leaf sap-type { | leaf service-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:service-type; | base vpn-common:service-type; | |||
| } | } | |||
| description | description | |||
| "Indicates a service type."; | "Indicates a service type."; | |||
| } | } | |||
| uses sap-information; | uses sap-information; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document registers the following namespace URI in the "ns" | This document registers the following namespace URI in the "ns" | |||
| skipping to change at page 19, line 41 ¶ | skipping to change at page 20, line 5 ¶ | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
| default). These data nodes may be considered sensitive or vulnerable | default). 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: | |||
| * /nw:networks/nw:network/nw:node/sap:sap-type/sap:service- | * /nw:networks/nw:network/nw:node/sap:service-type/sap:sap | |||
| attachment-point | ||||
| This subtree specifies the configurations of the nodes in a SAP | This subtree specifies the configurations of the nodes in a SAP | |||
| network model. Unexpected changes to this subtree (e.g., | network model. Unexpected changes to this subtree (e.g., | |||
| associating a SAP with another parent termination interface) could | associating a SAP with another parent termination interface) could | |||
| lead to service disruption and/or network misbehavior. | lead to service disruption and/or network misbehavior. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
| nodes and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
| * /nw:networks/nw:network/nw:node/sap:sap-type/sap:service- | * /nw:networks/nw:network/nw:node/sap:service-type/sap:sap | |||
| attachment-point | ||||
| Unauthorized access to this subtree can disclose the operational | Unauthorized access to this subtree can disclose the operational | |||
| state information of the nodes in a SAP network model (e.g., | state information of the nodes in a SAP network model (e.g., | |||
| disclose the identity of a customer 'peer-customer-sap-id'). | disclose the identity of a customer 'peer-sap-id'). | |||
| 9. Acknowledgements | 9. Acknowledgements | |||
| Thanks to Adrian Farrell and Daniel King for the suggestions on the | Thanks to Adrian Farrell and Daniel King for the suggestions on the | |||
| name used in a previous version. | name used in a previous version. | |||
| Thanks to Dhruv Dhody, Benoit Claise, Bo Wu, Erez Segev, and Raul | Thanks to Dhruv Dhody, Benoit Claise, Bo Wu, Erez Segev, Raul Arco, | |||
| Arco for the comments. | and Joe Clarke for the comments. | |||
| Thanks to Martin Bjoerklund for yang-doctors review. | ||||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 22, line 19 ¶ | skipping to change at page 22, line 31 ¶ | |||
| Barguil, S., Dios, O. G. D., Boucadair, M., and L. A. | Barguil, S., Dios, O. G. D., Boucadair, M., and L. A. | |||
| Munoz, "A Layer 2 VPN Network YANG Model", Work in | Munoz, "A Layer 2 VPN Network YANG Model", Work in | |||
| Progress, Internet-Draft, draft-ietf-opsawg-l2nm-12, 22 | Progress, Internet-Draft, draft-ietf-opsawg-l2nm-12, 22 | |||
| November 2021, <https://www.ietf.org/archive/id/draft- | November 2021, <https://www.ietf.org/archive/id/draft- | |||
| ietf-opsawg-l2nm-12.txt>. | ietf-opsawg-l2nm-12.txt>. | |||
| [I-D.ietf-teas-enhanced-vpn] | [I-D.ietf-teas-enhanced-vpn] | |||
| Dong, J., Bryant, S., Li, Z., Miyasaka, T., and Y. Lee, "A | Dong, J., Bryant, S., Li, Z., Miyasaka, T., and Y. Lee, "A | |||
| Framework for Enhanced Virtual Private Network (VPN+) | Framework for Enhanced Virtual Private Network (VPN+) | |||
| Services", Work in Progress, Internet-Draft, draft-ietf- | Services", Work in Progress, Internet-Draft, draft-ietf- | |||
| teas-enhanced-vpn-09, 25 October 2021, | teas-enhanced-vpn-10, 6 March 2022, | |||
| <https://www.ietf.org/archive/id/draft-ietf-teas-enhanced- | <https://www.ietf.org/archive/id/draft-ietf-teas-enhanced- | |||
| vpn-09.txt>. | vpn-10.txt>. | |||
| [I-D.ietf-teas-ietf-network-slices] | [I-D.ietf-teas-ietf-network-slices] | |||
| Farrel, A., Gray, E., Drake, J., Rokui, R., Homma, S., | Farrel, A., Drake, J., Rokui, R., Homma, S., Makhijani, | |||
| Makhijani, K., Contreras, L. M., and J. Tantsura, | K., Contreras, L. M., and J. Tantsura, "Framework for IETF | |||
| "Framework for IETF Network Slices", Work in Progress, | Network Slices", Work in Progress, Internet-Draft, draft- | |||
| Internet-Draft, draft-ietf-teas-ietf-network-slices-05, 25 | ietf-teas-ietf-network-slices-08, 6 March 2022, | |||
| October 2021, <https://www.ietf.org/archive/id/draft-ietf- | <https://www.ietf.org/archive/id/draft-ietf-teas-ietf- | |||
| teas-ietf-network-slices-05.txt>. | network-slices-08.txt>. | |||
| [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | |||
| Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | |||
| 2006, <https://www.rfc-editor.org/info/rfc4364>. | 2006, <https://www.rfc-editor.org/info/rfc4364>. | |||
| [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private | [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private | |||
| LAN Service (VPLS) Using BGP for Auto-Discovery and | LAN Service (VPLS) Using BGP for Auto-Discovery and | |||
| Signaling", RFC 4761, DOI 10.17487/RFC4761, January 2007, | Signaling", RFC 4761, DOI 10.17487/RFC4761, January 2007, | |||
| <https://www.rfc-editor.org/info/rfc4761>. | <https://www.rfc-editor.org/info/rfc4761>. | |||
| [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private | [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private | |||
| LAN Service (VPLS) Using Label Distribution Protocol (LDP) | LAN Service (VPLS) Using Label Distribution Protocol (LDP) | |||
| Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007, | Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007, | |||
| <https://www.rfc-editor.org/info/rfc4762>. | <https://www.rfc-editor.org/info/rfc4762>. | |||
| [RFC7149] Boucadair, M. and C. Jacquenet, "Software-Defined | [RFC7149] Boucadair, M. and C. Jacquenet, "Software-Defined | |||
| Networking: A Perspective from within a Service Provider | Networking: A Perspective from within a Service Provider | |||
| Environment", RFC 7149, DOI 10.17487/RFC7149, March 2014, | Environment", RFC 7149, DOI 10.17487/RFC7149, March 2014, | |||
| <https://www.rfc-editor.org/info/rfc7149>. | <https://www.rfc-editor.org/info/rfc7149>. | |||
| [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", | ||||
| RFC 7224, DOI 10.17487/RFC7224, May 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7224>. | ||||
| [RFC7426] Haleplidis, E., Ed., Pentikousis, K., Ed., Denazis, S., | [RFC7426] Haleplidis, E., Ed., Pentikousis, K., Ed., Denazis, S., | |||
| Hadi Salim, J., Meyer, D., and O. Koufopavlou, "Software- | Hadi Salim, J., Meyer, D., and O. Koufopavlou, "Software- | |||
| Defined Networking (SDN): Layers and Architecture | Defined Networking (SDN): Layers and Architecture | |||
| Terminology", RFC 7426, DOI 10.17487/RFC7426, January | Terminology", RFC 7426, DOI 10.17487/RFC7426, January | |||
| 2015, <https://www.rfc-editor.org/info/rfc7426>. | 2015, <https://www.rfc-editor.org/info/rfc7426>. | |||
| [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., | [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., | |||
| Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based | Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based | |||
| Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February | Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February | |||
| 2015, <https://www.rfc-editor.org/info/rfc7432>. | 2015, <https://www.rfc-editor.org/info/rfc7432>. | |||
| skipping to change at page 24, line 37 ¶ | skipping to change at page 24, line 52 ¶ | |||
| An example of a SAP topology that is reported by a network controller | An example of a SAP topology that is reported by a network controller | |||
| is depicted in Figure 8. This example echoes the topology shown in | is depicted in Figure 8. This example echoes the topology shown in | |||
| Figure 5. Only a minimum set of information is provided for each | Figure 5. Only a minimum set of information is provided for each | |||
| SAP. | SAP. | |||
| { | { | |||
| "ietf-network:networks": { | "ietf-network:networks": { | |||
| "network": [ | "network": [ | |||
| { | { | |||
| "network-types": { | "network-types": { | |||
| "sap-type": [ | "service-type": [ | |||
| "ietf-vpn-common:l3vpn", | "ietf-vpn-common:l3vpn", | |||
| "ietf-vpn-common:vpls" | "ietf-vpn-common:vpls" | |||
| ] | ] | |||
| }, | }, | |||
| "network-id": "an-id", | "network-id": "foo:an-id", | |||
| "node": [ | "node": [ | |||
| { | { | |||
| "node-id": "PE1", | "node-id": "PE1", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#11", | "sap-id": "sap#11", | |||
| "peer-customer-sap-id": "ce-1", | "peer-sap-id": "ce-1", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#12" | "sap-id": "sap#12" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#13" | "sap-id": "sap#13" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#14" | "sap-id": "sap#14" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "node-id": "PE2", | "node-id": "PE2", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#21" | "sap-id": "sap#21" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#22", | "sap-id": "sap#22", | |||
| "peer-customer-sap-id": "ce-2", | "peer-sap-id": "ce-2", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "node-id": "PE3", | "node-id": "PE3", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#31" | "sap-id": "sap#31" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#32" | "sap-id": "sap#32" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#33", | "sap-id": "sap#33", | |||
| "peer-customer-sap-id": "ce-3", | "peer-sap-id": "ce-3", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "node-id": "PE4", | "node-id": "PE4", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#41" | "sap-id": "sap#41" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#42", | "sap-id": "sap#42", | |||
| "peer-customer-sap-id": "ce-4", | "peer-sap-id": "ce-4", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#43" | "sap-id": "sap#43" | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#44", | "sap-id": "sap#44", | |||
| "peer-customer-sap-id": "ce-5", | "peer-sap-id": "ce-5", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| skipping to change at page 28, line 8 ¶ | skipping to change at page 28, line 21 ¶ | |||
| "GE0/6/4.1" and "GE0/6/4.2", respectively. | "GE0/6/4.1" and "GE0/6/4.2", respectively. | |||
| A service orchestrator can query what services are provided on which | A service orchestrator can query what services are provided on which | |||
| SAPs of PE1 from the network controller by sending, e.g., a GET | SAPs of PE1 from the network controller by sending, e.g., a GET | |||
| RESTCONF request. Figure 10 shows the body of the RESTCONF response | RESTCONF request. Figure 10 shows the body of the RESTCONF response | |||
| that is received from the network controller. | that is received from the network controller. | |||
| { | { | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#1", | "sap-id": "sap#1", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/1", | "attachment-interface": "GE0/6/1", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#2", | "sap-id": "sap#2", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/4", | "attachment-interface": "GE0/6/4", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#3", | "sap-id": "sap#3", | |||
| "description": "A first SAP description", | "description": "A first SAP description", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "attachment-interface": "GE0/6/4.1", | "attachment-interface": "GE0/6/4.1", | |||
| "interface-type": "ietf-sap-ntw:logical", | "interface-type": "ietf-sap-ntw:logical", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "encapsulation-type": "ietf-vpn-common:vlan-type", | "encapsulation-type": "ietf-vpn-common:vlan-type", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| }, | }, | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:vpls", | "service-type": "ietf-vpn-common:vpls", | |||
| "service-attachment-point": [ | "sap": [ | |||
| "attachment-id": "sap#1", | "sap-id": "sap#1", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/1", | "attachment-interface": "GE0/6/1", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#2", | "sap-id": "sap#2", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/4", | "attachment-interface": "GE0/6/4", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#4", | "sap-id": "sap#4", | |||
| "description": "Another description", | "description": "Another description", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "attachment-interface": "GE0/6/4.2", | "attachment-interface": "GE0/6/4.2", | |||
| "interface-type": "ietf-sap-ntw:logical", | "interface-type": "ietf-sap-ntw:logical", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "encapsulation-type": "ietf-vpn-common:vlan-type", | "encapsulation-type": "ietf-vpn-common:vlan-type", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| }, | }, | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| skipping to change at page 29, line 37 ¶ | skipping to change at page 30, line 4 ¶ | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| }, | }, | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 10: An Example of a Response Body to a Request with a Node | Figure 10: An Example of a Response Body to a Request with a Node | |||
| Filter | Filter | |||
| Figure 11 shows the message body of a response that is received from | Figure 11 shows the message body of a response that is received from | |||
| the network controller if the request includes a filter on the | the network controller if the request includes a filter on the | |||
| service type for a particular node: | service type for a particular node: | |||
| { | { | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#1", | "sap-id": "sap#1", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/1", | "attachment-interface": "GE0/6/1", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#2", | "sap-id": "sap#2", | |||
| "description": "Ready to host SAPs", | "description": "Ready to host SAPs", | |||
| "attachment-interface": "GE0/6/4", | "attachment-interface": "GE0/6/4", | |||
| "interface-type": "ietf-sap-ntw:phy", | "interface-type": "ietf-sap-ntw:phy", | |||
| "role": "ietf-sap-ntw:uni", | "role": "ietf-sap-ntw:uni", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#3", | "sap-id": "sap#3", | |||
| "description": "A first SAP description", | "description": "A first SAP description", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "attachment-interface": "GE0/6/4.1", | "attachment-interface": "GE0/6/4.1", | |||
| "interface-type": "ietf-sap-ntw:logical", | "interface-type": "ietf-sap-ntw:logical", | |||
| "parent-termination-point": "GE0/6/4", | ||||
| "encapsulation-type": "ietf-vpn-common:vlan-type", | "encapsulation-type": "ietf-vpn-common:vlan-type", | |||
| "sap-status": { | "sap-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| }, | }, | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 11: An Example of a Response Body to a Request with a | Figure 11: An Example of a Response Body to a Request with a | |||
| Service Filter | Service Filter | |||
| Appendix C. An Example of NNI SAP: Inter-AS VPN Option A | Appendix C. An Example of NNI SAP: Inter-AS VPN Option A | |||
| Section 10 of [RFC4364] discuses several option to extend the scope | Section 10 of [RFC4364] discuses several options to extend a VPN | |||
| of a VPN service beyond the scope of a single Autonomous System (AS). | service beyond the scope of a single Autonomous System (AS). For | |||
| For illustration purposes, this section focuses on the so called | illustration purposes, this section focuses on the so called "Option | |||
| "Option A" but similar examples can be considered for other options. | A" but similar examples can be considered for other options. | |||
| In this option, an ASBR of an AS is directly connected to an ASBR of | In this option, an ASBR of an AS is directly connected to an ASBR of | |||
| a neighboring AS. These two ASBRs are connected by multiple physical | a neighboring AS. These two ASBRs are connected by multiple physical | |||
| or logical interfaces. Also, at least one sub-interface is | or logical interfaces. Also, at least one sub-interface is | |||
| maintained by these ASBRs for each of the VPNs that require their | maintained by these ASBRs for each of the VPNs that require their | |||
| routes to be passed from one AS to the other AS. Each ASBR behaves | routes to be passed from one AS to the other AS. Each ASBR behaves | |||
| as a PE and treats the other as if it were a CE. | as a PE and treats the other as if it were a CE. | |||
| Figure 12 shows a simplified (excerpt) topology of two ASes A and B | Figure 12 shows a simplified (excerpt) topology of two ASes A and B | |||
| with a focus on the interconnection links between these two ASes. | with a focus on the interconnection links between these two ASes. | |||
| skipping to change at page 32, line 10 ¶ | skipping to change at page 33, line 10 ¶ | |||
| Figure 13 shows an example of a message body that is received from | Figure 13 shows an example of a message body that is received from | |||
| the network controller of AS A (with a focus on the NNIs shown in | the network controller of AS A (with a focus on the NNIs shown in | |||
| Figure 12). | Figure 12). | |||
| { | { | |||
| "ietf-network:networks": { | "ietf-network:networks": { | |||
| "network": [ | "network": [ | |||
| { | { | |||
| "network-types": { | "network-types": { | |||
| "sap-type": [ | "service-type": [ | |||
| "ietf-vpn-common:l3vpn" | "ietf-vpn-common:l3vpn" | |||
| ] | ] | |||
| }, | }, | |||
| "network-id": "an-id", | "network-id": "foo:an-id", | |||
| "node": [ | "node": [ | |||
| { | { | |||
| "node-id": "asbr-a1", | "node-id": "asbr-a1", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#11", | "sap-id": "sap#11", | |||
| "description": "parent inter-as link#1", | "description": "parent inter-as link#1", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b1", | "peer-sap-id": "asbr-b1", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#12", | "sap-id": "sap#12", | |||
| "description": "parent inter-as link#2", | "description": "parent inter-as link#2", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b1", | "peer-sap-id": "asbr-b1", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#13", | "sap-id": "sap#13", | |||
| "description": "vpn1", | "description": "vpn1", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b1", | "peer-sap-id": "asbr-b1", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#14", | "sap-id": "sap#14", | |||
| "description": "vpn2", | "description": "vpn2", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b1", | "peer-sap-id": "asbr-b1", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| { | { | |||
| "node-id": "asbr-a2", | "node-id": "asbr-a2", | |||
| "ietf-sap-ntw:service": [ | "ietf-sap-ntw:service": [ | |||
| { | { | |||
| "sap-type": "ietf-vpn-common:l3vpn", | "service-type": "ietf-vpn-common:l3vpn", | |||
| "service-attachment-point": [ | "sap": [ | |||
| { | { | |||
| "attachment-id": "sap#11", | "sap-id": "sap#11", | |||
| "description": "parent inter-as link#1", | "description": "parent inter-as link#1", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b2", | "peer-sap-id": "asbr-b2", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#12", | "sap-id": "sap#12", | |||
| "description": "parent inter-as link#2", | "description": "parent inter-as link#2", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b2", | "peer-sap-id": "asbr-b2", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#21", | "sap-id": "sap#21", | |||
| "description": "vpn1", | "description": "vpn1", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b2", | "peer-sap-id": "asbr-b2", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "attachment-id": "sap#22", | "sap-id": "sap#22", | |||
| "description": "vpn2", | "description": "vpn2", | |||
| "role": "ietf-sap-ntw:nni", | "role": "ietf-sap-ntw:nni", | |||
| "peer-customer-sap-id": "asbr-b2", | "peer-sap-id": "asbr-b2", | |||
| "service-status": { | "service-status": { | |||
| "status": "ietf-vpn-common:op-up" | "status": "ietf-vpn-common:op-up" | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 13: An Example of SAP Usage for NNI | Figure 13: An Example of SAP Usage for NNI | |||
| Authors' Addresses | Appendix D. An Example of Using the SAP Network Model in Service | |||
| Creation | ||||
| This section describes an example to illustrate the use of the SAP | ||||
| model for service creation purposes. | ||||
| An example of a SAP topology is presented in Figure 8. This example | ||||
| includes four PEs with their SAPs, as well as the customer | ||||
| information. | ||||
| Let us assume that an operator wants to create an L3VPN service | ||||
| between two PEs (PE3 and PE4) that are servicing two CEs (CE6 and | ||||
| CE7). To that aim, the operator would query the SAP topology and | ||||
| would obtain a response similar to what is depicted in Figure 8. | ||||
| That response indicates that the SAPs having "sap#31" and "sap#43" as | ||||
| attachment identifiers do not have any installed services. Once the | ||||
| "free" SAPs are identified, the 'interface-type' and 'encapsulation- | ||||
| type' are checked to see if the requested L3VPN service is compatible | ||||
| with the SAP characteristics. If they are compatible, as proposed in | ||||
| Section 5, the 'attachment-id' value can be used as the VPN network | ||||
| access identifier in an L3NM create query. | ||||
| Let us now assume that, instead of the L3VPN service, the operator | ||||
| wants to set up an L2VPN service. If the 'interface-type' is a | ||||
| physical port, a new logical SAP can be created using the SAP model | ||||
| to cope with the service needs (e.g., the 'encapsulation-type' | ||||
| attribute can be set to 'ietf-vpn-common:vlan-type'). Once the | ||||
| logical SAP is created, the 'attachment-id' of the new SAP is used to | ||||
| create an L2NM instance (Section 7.6 of [I-D.ietf-opsawg-l2nm]). | ||||
| Authors' Addresses | ||||
| Mohamed Boucadair (editor) | Mohamed Boucadair (editor) | |||
| Orange | Orange | |||
| France | France | |||
| Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
| Oscar Gonzalez de Dios | Oscar Gonzalez de Dios | |||
| Telefonica | Telefonica | |||
| Madrid | Madrid | |||
| Spain | Spain | |||
| Email: oscar.gonzalezdedios@telefonica.com | Email: oscar.gonzalezdedios@telefonica.com | |||
| End of changes. 108 change blocks. | ||||
| 164 lines changed or deleted | 209 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||