file "ietf-sap-ntw@2023-06-20.yang" module ietf-sap-ntw { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-sap-ntw"; prefix sap; import ietf-network-topology { prefix nt; reference "RFC 8345: A YANG Data Model for Network Topologies, Section 6.2"; } import ietf-network { prefix nw; reference "RFC 8345: A YANG Data Model for Network Topologies, Section 6.1"; } import ietf-vpn-common { prefix vpn-common; reference "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 VPNs"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types, Section 3"; } organization "IETF OPSA (Operations and Management Area) Working Group"; contact "WG Web: WG List: Editor: Mohamed Boucadair Author: Oscar Gonzalez de Dios Author: Samier Barguil Author: Qin Wu Author: Victor Lopez "; description "This YANG module defines a model for representing, managing, and controlling the Service Attachment Points (SAPs) in the network topology. Copyright (c) 2023 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC 9408; see the RFC itself for full legal notices."; revision 2023-06-20 { description "Initial version."; reference "RFC 9408: A YANG Network Data Model for Service Attachment Points (SAPs)"; } identity virtual-network { base vpn-common:service-type; description "Virtual network. Refers to a logical network instance that is built over a physical network."; reference "RFC 8453: Framework for Abstraction and Control of TE Networks (ACTN)"; } identity enhanced-vpn { base vpn-common:service-type; description "Enhanced VPN (VPN+). VPN+ is an approach that is based on existing VPN and Traffic Engineering (TE) technologies but adds characteristics that specific services require over and above conventional VPNs."; reference "draft-ietf-teas-enhanced-vpn: A Framework for Enhanced Virtual Private Network (VPN+)"; } identity network-slice { base vpn-common:service-type; description "IETF Network Slice. An IETF Network Slice is a logical network topology connecting a number of endpoints using a set of shared or dedicated network resources that are used to satisfy specific service objectives."; reference "draft-ietf-teas-ietf-network-slices: A Framework for IETF Network Slices"; } identity sdwan { base vpn-common:service-type; description "PE-based Software-Defined Wide-Area Network (SD-WAN)."; reference "draft-ietf-bess-bgp-sdwan-usage: BGP Usage for SD-WAN Overlay Networks"; } identity basic-connectivity { base vpn-common:service-type; description "Basic IP connectivity. This is, for example, a plain form of connectivity offered to enterprises over a dedicated or shared MPLS infrastructure."; } identity interface-role { description "Base identity for the network role of an interface."; } identity uni { base interface-role; description "User-to-Network Interface (UNI)."; } identity nni { base interface-role; description "Network-to-Network Interface (NNI)."; } identity interface-type { description "Base identity for the interface type."; } identity phy { base interface-type; description "Physical port."; } identity loopback { base interface-type; description "Loopback interface."; } identity lag { base interface-type; description "Link Aggregation Group (LAG) interface."; } identity irb { base interface-type; description "Integrated Routing and Bridging (IRB) interface. An IRB interface typically connects an IP Virtual Routing and Forwarding (IP-VRF) entity to a bridge domain."; } identity local-bridge { base interface-type; description "A local bridge reference to accommodate (for example) implementations that require internal bridging. When such a type is used, a reference to a local bridge domain is used to identify the interface."; } identity logical { base interface-type; description "Refers to a logical sub-interface that is typically used to bind a service. This type is used only if none of the other more specific types (i.e., 'loopback', 'lag', 'irb', or 'local-bridge') can be used."; } grouping sap-entry { description "Service Attachment Point (SAP) entry information."; leaf sap-id { type string; description "Indicates an identifier that uniquely identifies a SAP."; } leaf description { type string; description "A textual description of the SAP."; } leaf parent-termination-point { type nt:tp-id; description "Indicates the parent termination point to which the SAP is attached. A termination 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 { type identityref { base interface-type; } description "The type of the interface to which the SAP is bound."; } leaf encapsulation-type { type identityref { base vpn-common:encapsulation-type; } description "Encapsulation type of the interface to which the SAP is bound."; } leaf role { type identityref { base interface-role; } description "Indicates the role of a SAP."; } leaf allows-child-saps { type boolean; description "Indicates whether the attachment interface of this SAP is capable of hosting per-service sub-interfaces."; } leaf-list peer-sap-id { type string; description "Indicates an identifier of the peer's termination identifier (e.g., a Customer Edge (CE)). This information can be used for correlation purposes, such as identifying the SAP that is attached to an endpoint that is provided in a service request."; } } grouping sap-list { description "SAP information."; list sap { key "sap-id"; description "The SAPs are an abstraction of the points to which network services such as L3VPNs, L2VPNs, or network slices can be attached."; uses sap-entry; container sap-status { config false; description "Indicates the operational status of the SAP, independent of any service provisioned over it."; uses vpn-common:oper-status-timestamp; } container service-status { description "Indicates the service status."; container admin-status { description "Administrative service status."; leaf status { type identityref { base vpn-common:administrative-status; } description "Administrative status of the service provisioned at the SAP."; } leaf last-change { type yang:date-and-time; description "Indicates the actual date and time of the service status change."; } } container oper-status { config false; description "Operational status of the service provisioned at the SAP."; uses vpn-common:oper-status-timestamp; } } } } augment "/nw:networks/nw:network/nw:network-types" { description "Introduces a new network type for a SAP network."; container sap-network { presence "Indicates the SAP network type."; description "The presence of the container node indicates the SAP network type."; leaf-list service-type { type identityref { base vpn-common:service-type; } description "Indicates the set of supported service types."; } } } augment "/nw:networks/nw:network/nw:node" { when '../nw:network-types/sap:sap-network' { description "Augmentation parameters apply only for SAP networks."; } description "SAP parameters for the node level."; list service { key "service-type"; description "A list of supported service types for the node."; leaf service-type { type identityref { base vpn-common:service-type; } description "Indicates a service type."; } uses sap-list; } } } 7. IANA Considerations This document registers the following namespace URI in the "ns" subregistry within the "IETF XML Registry" [RFC3688]: URI: urn:ietf:params:xml:ns:yang:ietf-sap-ntw Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace. This document registers the following YANG module in the "YANG Module Names" subregistry [RFC6020] within the "YANG Parameters" registry: Name: ietf-sap-ntw Namespace: urn:ietf:params:xml:ns:yang:ietf-sap-ntw Maintained by IANA? N Prefix: sap Reference: RFC 9408 8. Security Considerations The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446]. The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability: /nw:networks/nw:network/nw:node/sap:service/sap:sap This subtree specifies the configurations of the nodes in a SAP network model. Unexpected changes to this subtree (e.g., associating a SAP with another parent termination point) could lead to service disruption and/or network misbehavior. Such network misbehavior results mainly from a network configuration that is inconsistent with the intended behavior as defined by the operator (e.g., Section 4.2.1 of [RFC8969]). Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. These are the subtrees and data nodes and their sensitivity/vulnerability: /nw:networks/nw:network/nw:node/sap:service/sap:sap Unauthorized access to this subtree can disclose the operational state information of the nodes in a SAP network model (e.g., can disclose the identity of a customer 'peer-sap-id'). 9. References 9.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, . [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, . [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, . [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, . [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, . [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, . [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, . [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 2018, . [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, March 2018, . [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, . [RFC8795] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, "YANG Data Model for Traffic Engineering (TE) Topologies", RFC 8795, DOI 10.17487/RFC8795, August 2020, . [RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., Ed., and Q. Wu, "A Common YANG Data Model for Layer 2 and Layer 3 VPNs", RFC 9181, DOI 10.17487/RFC9181, February 2022, . 9.2. Informative References [BGP-SDWAN-USAGE] Dunbar, L., Guichard, J., Sajassi, A., Drake, J., Najem, B., Banerjee, A., and D. Carrel, "BGP Usage for SD-WAN Overlay Networks", Work in Progress, Internet-Draft, draft-ietf-bess-bgp-sdwan-usage-09, 7 April 2023, . [ENHANCED-VPN] Dong, J., Bryant, S., Li, Z., Miyasaka, T., and Y. Lee, "A Framework for Enhanced Virtual Private Network (VPN+)", Work in Progress, Internet-Draft, draft-ietf-teas- enhanced-vpn-12, 23 January 2023, . [IEEE802.1AX] IEEE, "IEEE Standard for Local and Metropolitan Area Networks--Link Aggregation", IEEE Std 802.1AX-2020, DOI 10.1109/IEEESTD.2020.9105034, 2020, . [IETF-NETWORK-SLICES] Farrel, A., Ed., Drake, J., Ed., Rokui, R., Homma, S., Makhijani, K., Contreras, L.M., and J. Tantsura, "A Framework for IETF Network Slices", Work in Progress, Internet-Draft, draft-ietf-teas-ietf-network-slices-19, 21 January 2023, . [MEF17] The Metro Ethernet Forum, "Technical Specification MEF 17, Service OAM Requirements & Framework - Phase 1", April 2007, . [MEF6] The Metro Ethernet Forum, "Technical Specification MEF 6, Ethernet Services Definitions - Phase I", June 2004, . [RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual Private Network (VPN) Terminology", RFC 4026, DOI 10.17487/RFC4026, March 2005, . [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February 2006, . [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling", RFC 4761, DOI 10.17487/RFC4761, January 2007, . [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007, . [RFC6004] Berger, L. and D. Fedyk, "Generalized MPLS (GMPLS) Support for Metro Ethernet Forum and G.8011 Ethernet Service Switching", RFC 6004, DOI 10.17487/RFC6004, October 2010, . [RFC6215] Bocci, M., Levrau, L., and D. Frost, "MPLS Transport Profile User-to-Network and Network-to-Network Interfaces", RFC 6215, DOI 10.17487/RFC6215, April 2011, . [RFC7149] Boucadair, M. and C. Jacquenet, "Software-Defined Networking: A Perspective from within a Service Provider Environment", RFC 7149, DOI 10.17487/RFC7149, March 2014, . [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", RFC 7224, DOI 10.17487/RFC7224, May 2014, . [RFC7426] Haleplidis, E., Ed., Pentikousis, K., Ed., Denazis, S., Hadi Salim, J., Meyer, D., and O. Koufopavlou, "Software- Defined Networking (SDN): Layers and Architecture Terminology", RFC 7426, DOI 10.17487/RFC7426, January 2015, . [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February 2015, . [RFC7623] Sajassi, A., Ed., Salam, S., Bitar, N., Isaac, A., and W. Henderickx, "Provider Backbone Bridging Combined with Ethernet VPN (PBB-EVPN)", RFC 7623, DOI 10.17487/RFC7623, September 2015, . [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", RFC 7951, DOI 10.17487/RFC7951, August 2016, . [RFC8214] Boutros, S., Sajassi, A., Salam, S., Drake, J., and J. Rabadan, "Virtual Private Wire Service Support in Ethernet VPN", RFC 8214, DOI 10.17487/RFC8214, August 2017, . [RFC8299] Wu, Q., Ed., Litkowski, S., Tomotaki, L., and K. Ogaki, "YANG Data Model for L3VPN Service Delivery", RFC 8299, DOI 10.17487/RFC8299, January 2018, . [RFC8309] Wu, Q., Liu, W., and A. Farrel, "Service Models Explained", RFC 8309, DOI 10.17487/RFC8309, January 2018, . [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, . [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, . [RFC8365] Sajassi, A., Ed., Drake, J., Ed., Bitar, N., Shekhar, R., Uttaro, J., and W. Henderickx, "A Network Virtualization Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365, DOI 10.17487/RFC8365, March 2018, . [RFC8453] Ceccarelli, D., Ed. and Y. Lee, Ed., "Framework for Abstraction and Control of TE Networks (ACTN)", RFC 8453, DOI 10.17487/RFC8453, August 2018, . [RFC8466] Wen, B., Fioccola, G., Ed., Xie, C., and L. Jalil, "A YANG Data Model for Layer 2 Virtual Private Network (L2VPN) Service Delivery", RFC 8466, DOI 10.17487/RFC8466, October 2018, . [RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and L. Geng, "A Framework for Automating Service and Network Management with YANG", RFC 8969, DOI 10.17487/RFC8969, January 2021, . [RFC9135] Sajassi, A., Salam, S., Thoria, S., Drake, J., and J. Rabadan, "Integrated Routing and Bridging in Ethernet VPN (EVPN)", RFC 9135, DOI 10.17487/RFC9135, October 2021, . [RFC9182] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., Ed., Munoz, L., and A. Aguado, "A YANG Network Data Model for Layer 3 VPNs", RFC 9182, DOI 10.17487/RFC9182, February 2022, . [RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, S., and L. Munoz, "A YANG Network Data Model for Layer 2 VPNs", RFC 9291, DOI 10.17487/RFC9291, September 2022, . Appendix A. A Simplified SAP Network Example An example of a SAP topology that is reported by a network controller is depicted in Figure 7. This example echoes the topology shown in Figure 4. Only a minimum information set is provided for each SAP. Particularly, 'parent-termination-point', 'attachment-interface', 'interface-type', 'encapsulation-type', and 'role' are not shown in the example. SAPs that are capable of hosting a service but are not yet activated are identified by 'sap-status/status' set to 'ietf-vpn- common:op-down' and 'service-status/admin-status/status' set to 'ietf-vpn-common:admin-down'. SAPs that are enabled to deliver a service are identified by 'service-status/admin-status/status' set to 'ietf-vpn-common:admin-up' and 'service-status/oper-status/status' set to 'ietf-vpn-common:op-up'. Note that none of the anomalies discussed in Section 5 are detected for these SAPs. The message body depicted in the figures below is encoded following the JSON encoding of YANG-modeled data as per [RFC7951]. { "ietf-network:networks": { "network": [ { "network-types": { "ietf-sap-ntw:sap-network": { "service-type": [ "ietf-vpn-common:l3vpn", "ietf-vpn-common:vpls" ] } }, "network-id": "example:an-id", "node": [ { "node-id": "example:pe1", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#11", "peer-sap-id": ["ce-1"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } }, { "sap-id": "sap#12", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#13", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#14", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } } ] } ] }, { "node-id": "example:pe2", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#21", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#22", "peer-sap-id": ["ce-2"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] }, { "node-id": "example:pe3", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#31", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#32", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#33", "peer-sap-id": ["ce-3"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] }, { "node-id": "example:pe4", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#41", "peer-sap-id": ["ce-3"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } }, { "sap-id": "sap#42", "peer-sap-id": ["ce-4"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } }, { "sap-id": "sap#43", "sap-status": { "status": "ietf-vpn-common:op-down" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-down" } } }, { "sap-id": "sap#44", "peer-sap-id": ["ce-5"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] } ] } ] } } Figure 7: A Simplified SAP Network Example Appendix B. A Simple Example of the SAP Network Model: Node Filter In the example shown in Figure 8, PE1 (with a "node-id" set to "example:pe1", as shown in Figure 7) has two physical interfaces "GE0/6/1" and "GE0/6/4". Two sub-interfaces "GE0/6/4.1" and "GE0/6/4.2" are associated with the physical interface "GE0/6/4". Let us consider that four SAPs are exposed to the service orchestrator and mapped to these physical interfaces and sub- interfaces. .-------------------------. | GE0/6/4 | | PE1 .----+----. | |sap#2 |GE0/6/4.1 | | .--+--. | | |sap#3| | | '--+--' | | |GE0/6/4.2 | | .--+--. | | |sap#4| | | '--+--' | | | | +----+----+ | | | GE0/6/1| | .----+----. | |sap#1 | | '----+----' | | '-------------------------' Figure 8: An Example of a PE and Its Physical/Logical Interfaces Let us assume that no service is enabled yet for the SAP associated with the physical interface "GE0/6/1". Also, let us assume that, for the SAPs that are associated with the physical interface "GE0/6/4", VPLS and L3VPN services are activated on the two sub-interfaces "GE0/6/4.1" and "GE0/6/4.2", respectively. Both "sap#1" and "sap#2" are tagged as being capable of hosting per-service sub-interfaces ('allows-child-saps' is set to 'true'). For example, a service orchestrator can query what services are provided on which SAPs of PE1 from the network controller by sending a RESTCONF GET request. Figure 9 shows an example of the body of the RESTCONF response that is received from the network controller. { "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#1", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/1", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#2", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/4", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#3", "description": "A first SAP description", "parent-termination-point": "GE0/6/4", "attachment-interface": "GE0/6/4.1", "interface-type": "ietf-sap-ntw:logical", "encapsulation-type": "ietf-vpn-common:vlan-type", "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] }, { "service-type": "ietf-vpn-common:vpls", "sap": [ { "sap-id": "sap#1", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/1", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#2", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/4", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#4", "description": "Another description", "parent-termination-point": "GE0/6/4", "attachment-interface": "GE0/6/4.2", "interface-type": "ietf-sap-ntw:logical", "encapsulation-type": "ietf-vpn-common:vlan-type", "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] } Figure 9: An Example of a Response Body to a Request with a Node Filter Figure 10 shows an example of the response message body that is received from the network controller if the request includes a filter on the service type for a particular node: { "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#1", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/1", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#2", "description": "Ready to host SAPs", "attachment-interface": "GE0/6/4", "interface-type": "ietf-sap-ntw:phy", "role": "ietf-sap-ntw:uni", "allows-child-saps": true, "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#3", "description": "A first SAP description", "parent-termination-point": "GE0/6/4", "attachment-interface": "GE0/6/4.1", "interface-type": "ietf-sap-ntw:logical", "encapsulation-type": "ietf-vpn-common:vlan-type", "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] } Figure 10: An Example of a Response Body to a Request with a Service Filter Appendix C. An Example of an NNI SAP: Inter-AS VPN Option A Section 10 of [RFC4364] discusses several options to extend a VPN service beyond the scope of a single Autonomous System (AS). For illustration purposes, this section focuses on the so-called "Option A", but similar examples can be considered for other options. In this option, an AS Border Router (ASBR) of an AS is directly connected to an ASBR of a neighboring AS. These two ASBRs are connected by multiple physical or logical interfaces. Also, at least one sub-interface is 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 as a PE and treats the other as if it were a CE. Figure 11 shows a simplified (excerpt) topology of two ASes A and B with a focus on the interconnection links between these two ASes. .--------------------. .--------------------. | | | | | A .--+--. .--+--. A | | S | +================+ | S | | B | (VRF1)----(VPN1)----(VRF1) | B | | R | | | | R | | | (VRF2)----(VPN2)----(VRF2) | | | a | +================+ | b | | 1 '--+--' '--+--' 1 | | AS A | | AS B | | A .--+--. .--+--. A | | S | +================+ | S | | B | (VRF1)----(VPN1)----(VRF1) | B | | R | | | | R | | | (VRF2)----(VPN2)----(VRF2) | | | a | +================+ | b | | 2 '--+--' '--+--' 2 | | | | | '--------------------' '--------------------' Figure 11: An Example of an Inter-AS VPN (Option A) Figure 12 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 Figure 11). { "ietf-network:networks": { "network": [ { "network-types": { "ietf-sap-ntw:sap-network": { "service-type": [ "ietf-vpn-common:l3vpn" ] } }, "network-id": "example:an-id", "node": [ { "node-id": "example:asbr-a1", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#11", "description": "parent inter-as link#1", "role": "ietf-sap-ntw:nni", "allows-child-saps": true, "peer-sap-id": ["asbr-b1"], "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#12", "description": "parent inter-as link#2", "role": "ietf-sap-ntw:nni", "allows-child-saps": true, "peer-sap-id": ["asbr-b1"], "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#13", "description": "vpn1", "role": "ietf-sap-ntw:nni", "peer-sap-id": ["asbr-b1"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } }, { "sap-id": "sap#14", "description": "vpn2", "role": "ietf-sap-ntw:nni", "peer-sap-id": ["asbr-b1"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] }, { "node-id": "example:asbr-a2", "ietf-sap-ntw:service": [ { "service-type": "ietf-vpn-common:l3vpn", "sap": [ { "sap-id": "sap#11", "description": "parent inter-as link#1", "role": "ietf-sap-ntw:nni", "allows-child-saps": true, "peer-sap-id": ["asbr-b2"], "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#12", "description": "parent inter-as link#2", "role": "ietf-sap-ntw:nni", "allows-child-saps": true, "peer-sap-id": ["asbr-b2"], "sap-status": { "status": "ietf-vpn-common:op-up" } }, { "sap-id": "sap#21", "description": "vpn1", "role": "ietf-sap-ntw:nni", "peer-sap-id": ["asbr-b2"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } }, { "sap-id": "sap#22", "description": "vpn2", "role": "ietf-sap-ntw:nni", "peer-sap-id": ["asbr-b2"], "sap-status": { "status": "ietf-vpn-common:op-up" }, "service-status": { "admin-status": { "status": "ietf-vpn-common:admin-up" }, "oper-status": { "status": "ietf-vpn-common:op-up" } } } ] } ] } ] } ] } } Figure 12: An Example of SAP Usage for an NNI Appendix D. Examples of Using the SAP Network Model in Service Creation This section describes examples that illustrate the use of the SAP model for service creation purposes. An example of a SAP topology is presented in Figure 7. 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 7. That response indicates that the SAPs having "sap#31" and "sap#43" as attachment identifiers do not have any installed services. This is particularly inferred from (1) the administrative 'service-status' that is set to 'ietf-vpn-common:admin-down' for all the services that are supported by these two SAPs and (2) the absence of the anomalies discussed in Section 5. Note that none of the anomalies discussed in Section 5 are detected. 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, the 'attachment-id' value can be used as the VPN network access identifier in an L3NM "create" query. A similar process can be followed for creating the so-called "Inter- AS VPN Option A" services. Unlike the previous example, let us assume that an operator wants to create an L3VPN service between two PEs (PE3 and PE4) but these PEs are not in the same AS: PE3 belongs to AS A while PE4 belongs to AS B. The NNIs between these ASes are represented in Figure 11. The operator of AS A would query, via the controller of its AS, the SAP topology and would obtain not only the information that is depicted in Figure 7 but also the information shown in Figure 12 representing the NNIs. The operator would create the service in the AS A between PE3 and a free, compatible SAP in the ASBR A1. The same procedure is followed by the operator of AS B to create the service in the AS B between a free, compatible SAP in the ASBR B1 and PE4. The services can be provisioned in each of these ASes using the L3NM. 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's 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 [RFC9291]). Acknowledgements Thanks to Adrian Farrel, Daniel King, Dhruv Dhody, Benoit Claise, Bo Wu, Erez Segev, Raul Arco, Joe Clarke, Riyas Valiyapalathingal, Tom Petch, Olga Havel, and Richard Roberts for their comments. Thanks to Martin Björklund for the YANG Doctors review, Menachem Dodge for the opsdir review, Mach Chen for the rtgdir review, Linda Dunbar for the genart review, and Ivaylo Petrov for the secdir review. Special thanks to Adrian Farrel for the Shepherd review and Rob Wilton for the careful AD review. Thanks to Lars Eggert, Roman Danyliw, and Zaheduzzaman Sarker for their comments during the IESG review. Authors' Addresses Mohamed Boucadair (editor) Orange France Email: mohamed.boucadair@orange.com Oscar Gonzalez de Dios Telefonica Madrid Spain Email: oscar.gonzalezdedios@telefonica.com Samier Barguil Nokia Madrid Spain Email: samier.barguil_giraldo@nokia.com Qin Wu Huawei Yuhua District 101 Software Avenue Nanjing Jiangsu, 210012 China Email: bill.wu@huawei.com Victor Lopez Nokia Spain Email: victor.lopez@nokia.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4