ALTO WG J. Zhang Internet-Draft Tongji University Intended status: Informational D. Dhody Expires: 13 January 2022 Huawei Technologies K. Gao Sichuan University 12 July 2021 A Yang Data Model for Operations, Administration, and Maintenance of ALTO Protocol draft-zhang-alto-oam-yang-00 Abstract This document defines a YANG data model for the operations and management of Application-Layer Traffic Optimization (ALTO) Protocol. The operator can use the data model to create and update ALTO information resources, manage the access control, configure server- to-server communication and server discovery, and collect statistical data. Discussion Venues This note is to be removed before publishing as an RFC. Discussion of this document takes place on the ALTO Working Group mailing list (alto@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/alto/. Source for this draft and an issue tracker can be found at https://github.com/openalto/draft-alto-oam-yang. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." Zhang, et al. Expires 13 January 2022 [Page 1] Internet-Draft ALTO OAM YANG July 2021 This Internet-Draft will expire on 13 January 2022. Copyright Notice Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 4 5. Design of ALTO OAM Data Model . . . . . . . . . . . . . . . . 4 5.1. Overview of ALTO OAM Data Model . . . . . . . . . . . . . 4 5.2. Meta Information of ALTO Server . . . . . . . . . . . . . 6 5.3. Intent-based Interfaces for ALTO Information Resources Management . . . . . . . . . . . . . . . . . . . . . . . 7 5.3.1. Information Resource Creation Algorithm Example . . . 9 5.4. Data Sources . . . . . . . . . . . . . . . . . . . . . . 10 5.4.1. Internal Data Source . . . . . . . . . . . . . . . . 11 5.4.2. External Data Source . . . . . . . . . . . . . . . . 11 5.5. Model for ALTO Server-to-server Communication . . . . . . 11 5.6. Model for ALTO Statistics . . . . . . . . . . . . . . . . 11 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 7.1. Normative References . . . . . . . . . . . . . . . . . . 12 7.2. Informative References . . . . . . . . . . . . . . . . . 13 Appendix A. The Full ALTO OAM Data Model . . . . . . . . . . . . 14 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 Zhang, et al. Expires 13 January 2022 [Page 2] Internet-Draft ALTO OAM YANG July 2021 1. Introduction This document defines a YANG data model for the operations and management of Application-Layer Traffic Optimization (ALTO) Protocol. The basic propose of this YANG data model is discussed in Section 16 of [RFC7285]. The operator can use the data model to create and update ALTO information resources, manage the access control, configure server-to-server communication and server discovery, and collect statistical data. The basic structure of this YANG data model is guided by Section 16 of [RFC7285] and [RFC7971]. Although the scope of the YANG data model in this document mainly focuses on the support of the base ALTO protocol [RFC7285] and the existing ALTO standard extensions (including [RFC8189], [RFC8895] and [RFC8896]), the design will also be extensible for future standard extensions (e.g., [I-D.ietf-alto-path-vector], [I-D.ietf-alto-unified-props-new], [I-D.ietf-alto-cost-calendar], and [I-D.ietf-alto-performance-metrics]). 2. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. When the words appear in lower case, they are to be interpreted with their natural language meanings. 3. Terminology 3.1. Tree Diagrams A simplified graphical representation of the data model is used in this document. The meaning of the symbols in these diagrams is defined in [RFC8340]. 3.2. Prefixes in Data Node Names In this document, names of data nodes and other data model objects are often used without a prefix, as long as it is clear from the context in which YANG module each name is defined. Otherwise, names are prefixed using the standard prefix associated with the corresponding YANG module, as shown in Table 1. Zhang, et al. Expires 13 January 2022 [Page 3] Internet-Draft ALTO OAM YANG July 2021 +========+=================+===========+ | Prefix | YANG module | Reference | +========+=================+===========+ | yang | ietf-yang-types | [RFC6991] | +--------+-----------------+-----------+ | inet | ietf-inet-types | [RFC6991] | +--------+-----------------+-----------+ Table 1: Prefixes and corresponding YANG modules 4. Objectives This section describes the design objectives for the YANG data model: * The data model should provide intent-based interfaces for administrators to create, update and remove ALTO information resources. - The data model should be extensible for new ALTO information resources. - The data model should allow developers to augment new APIs for ALTO information resource generation. * The data model should support access control at the information resource level. * The data model should collect statistics information of the requests to each ALTO information resource. NOTE: The data model supporting configuration for the ALTO client and the communication between the administrated ALTO server and other ALTO servers will be considered in a future version of the document. 5. Design of ALTO OAM Data Model 5.1. Overview of ALTO OAM Data Model The ALTO YANG module defined in this document has all the common building blocks for ALTO OAM. NOTE: So far, the ALTO YANG module only focuses on the ALTO server related configuration. The ALTO client related configuration will be added in a future version of the document. Zhang, et al. Expires 13 January 2022 [Page 4] Internet-Draft ALTO OAM YANG July 2021 The container "alto-server" in the ALTO yang module contains all the configured and operational parameters of the adminstrated ALTO server instance. module: ietf-alto +--rw alto-server +--rw hostname inet:host +--rw cost-type* [cost-type-name] | +--rw cost-type-name string | +--rw cost-mode cost-mode | +--rw cost-metric cost-metric |--rw meta* [meta-key] | +--rw meta-key string | +--rw meta-value string +--rw resource* [resource-id] | +--rw resource-id resource-id | +--rw resource-type identityref | +--rw description? string | +--rw accepted-group* [user-group] | +--rw dependency* resource-id | | ... | +--rw (resource-params) | +--:(ird) | | +--rw alto-ird-params | | +--rw delegation inet:uri | +--:(networkmap) | | +--rw alto-networkmap-params | | +--rw is-default? boolean | | +--rw filtered? boolean | | +--rw (algorithm) | +--:(costmap) | | +--rw alto-costmap-params | | +--rw filtered? boolean | | +--rw cost-type-names* string | | +--rw cost-constraints? boolean | | +--rw max-cost-types? uint32 {multi-cost}? | | +--rw testable-cost-type-names* | | string {multi-cost}? | | +--rw calendar? boolean {cost-calendar}? | | +--rw (algorithm) | +--:(endpointcost) | | +--rw alto-endpointcost-params | | +--rw cost-type* [cost-mode,cost-metric] | | | +--rw cost-mode cost-mode | | | +--rw cost-metric cost-metric | | +--rw cost-constraints? boolean | | +--rw max-cost-types? uint32 {multi-cost}? | | +--rw testable-cost-type-names* Zhang, et al. Expires 13 January 2022 [Page 5] Internet-Draft ALTO OAM YANG July 2021 | | string {multi-cost}? | | +--rw calendar? boolean {cost-calendar}? | | +--rw (algorithm) | +--:(endpointprop) | | +--rw alto-endpointprop-params | | +--rw (algorithm) | +--:(propmap) {propmap}? | | +--rw alto-propmap-params | | +--rw (algorithm) | +--:(cdni) {cdni}? | | +--rw alto-cdni-params | | +--rw (algorithm) | +--:(update) {incr-update}? | +--rw alto-update-params | +--rw (algorithm) +--rw data-source* [source-id] +--rw source-id string +--rw source-type identityref +--rw (update-policy) | +--:(reactive) | | +--rw reactive boolean | +--:(proactive) | +--rw poll-interval uint32 +--rw (source-params) +--:(internal) | +--rw internal-source-params | +--rw source-path yang:xpath1.0 +--:(external) +--rw external-source-params +--rw source-uri inet:uri +--rw query-data? string 5.2. Meta Information of ALTO Server The ALTO server instance contains the following basic configurations for the server setup. The hostname is the name that is used to access the ALTO server. It will be also used in the URI of each information resource provided by the ALTO server. The cost type list is the registry for the cost types that can be used in the ALTO server. The "meta" list contains the customized meta data of the ALTO server. It will be populated into the meta field of the default Information Resource Directory (IRD). Zhang, et al. Expires 13 January 2022 [Page 6] Internet-Draft ALTO OAM YANG July 2021 module: ietf-alto +--rw alto-server +--rw hostname inet:host +--rw cost-type* [cost-type-name] | +--rw cost-type-name string | +--rw cost-mode cost-mode | +--rw cost-metric cost-metric |--rw meta* [meta-key] | +--rw meta-key string | +--rw meta-value string ... 5.3. Intent-based Interfaces for ALTO Information Resources Management The ALTO server instance contains a list of "resource" entries. Each "resource" entry contains the configurations of an ALTO information resource (See Section 8.1 of [RFC7285]). The operator of the ALTO server can use this model to create, update, and remove the ALTO information resource. Each "resoruce" entry is considered as an intent to create or update an ALTO information resource. Adding a new "resource" entry will submit an ALTO information resource creation intent to the intent system to create a new ALTO information resource. Updating an existing "resource" entry will update the corresponding ALTO information resource creation intent. Removing an existing "resource" entry will remove the corresponding ALTO information resource creation intent and also the created ALTO information resource. The parameter of the intent interface defined by a "resource" entry MUST include a unique "resource-id" and a "resource-type". It can also include an "accepted-group" node containing a list of "user-group"s that can access this ALTO information resource. For some "resource-type", the parameter of the intent interface MUST also include the a "dependency" node containing the "resource-id" of the dependent ALTO information resources (See Section 9.1.5 of [RFC7285]). For each type of ALTO information resource, the creation intent MAY also need type-specific parameters. These type-specific parameters include two categories: Zhang, et al. Expires 13 January 2022 [Page 7] Internet-Draft ALTO OAM YANG July 2021 1. One categories of the type-specific parameters are common for the same type of ALTO information resource. They declare the Capabilities of the ALTO information resource (See Section 9.1.3 of [RFC7285]). 2. The other categories of the type-specific parameters are algorithm-specific. The developer of the ALTO server can implement their own creation altorithms and augment the "algorithm" node to declare algorithm-specific input parameters. Except for the "ird" resource, all the other types of "resource" entries have augmented "algorithm" node. The augmented "algorithm" node can reference data sources subscribed by the "data-source" entries (See Section 5.4). The developer cannot customize the creation algorithm of the "ird" resource. The default "ird" resource will be created automatically based on all the added "resource" entries. The delegated "ird" resource will be created as a static ALTO information resource (See Section 9.2.4 of [RFC7285]). module: ietf-alto +--rw alto-server ... +--rw resource* [resource-id] | +--rw resource-id resource-id | +--rw resource-type identityref | +--rw description? string | +--rw accepted-group* [user-group] | +--rw dependency* resource-id | | ... | +--rw (resource-params) | +--:(ird) | | +--rw alto-ird-params | | +--rw delegation inet:uri | +--:(networkmap) | | +--rw alto-networkmap-params | | +--rw is-default? boolean | | +--rw filtered? boolean | | +--rw (algorithm) | +--:(costmap) | | +--rw alto-costmap-params | | +--rw filtered? boolean | | +--rw cost-type-names* string | | +--rw cost-constraints? boolean | | +--rw max-cost-types? uint32 {multi-cost}? | | +--rw testable-cost-type-names* | | string {multi-cost}? Zhang, et al. Expires 13 January 2022 [Page 8] Internet-Draft ALTO OAM YANG July 2021 | | +--rw calendar? boolean {cost-calendar}? | | +--rw (algorithm) | +--:(endpointcost) | | +--rw alto-endpointcost-params | | +--rw cost-type* [cost-mode,cost-metric] | | | +--rw cost-mode cost-mode | | | +--rw cost-metric cost-metric | | +--rw cost-constraints? boolean | | +--rw max-cost-types? uint32 {multi-cost}? | | +--rw testable-cost-type-names* | | string {multi-cost}? | | +--rw calendar? boolean {cost-calendar}? | | +--rw (algorithm) | +--:(endpointprop) | | +--rw alto-endpointprop-params | | +--rw (algorithm) | +--:(propmap) {propmap}? | | +--rw alto-propmap-params | | +--rw (algorithm) | +--:(cdni) {cdni}? | | +--rw alto-cdni-params | | +--rw (algorithm) | +--:(update) {incr-update}? | +--rw alto-update-params | +--rw (algorithm) ... 5.3.1. Information Resource Creation Algorithm Example The following example shows how the developer can augment a creation algorithm for the network map resource. augment /alto:alto-server/alto:resource/alto:resource-params /alto:networkmap/alto:alto-networkmap-params /alto:algorithm: +--rw l3-unicast-cluster-algorithm +--rw l3-unicast-topo | -> /alto:alto-server/data-source/source-id +--rw depth? uint32 This example defines a creation algorithm called "l3-unicast-cluster- algorithm" for the network map resource. It takes two algorithm- specific parameters: l3-unicast-topo This parameter refers to the source id of a data source node subscribed in the "data-source" list (See Section 5.4). The corresponding data source is assumed to be an internel data source (See Section 5.4.1) for an IETF layer 3 Zhang, et al. Expires 13 January 2022 [Page 9] Internet-Draft ALTO OAM YANG July 2021 unicast topology defined in [RFC8346]. The algorithm uses the topology data from this data source to compute the ALTO network map resource. depth This optional parameter sets the depth of the clustering algorithm. For example, if the depth sets to 1, the algorithm will generate PID for every l3-node in the topology. The creation algorithm can be reactively called once the referenced data source updates. Therefore, the ALTO network map resource can be updated dynamically. The update of the reference data source depends on the used "update-policy" (See Section 5.4). 5.4. Data Sources The ALTO server instance contains a list of "data-source" entries to subscribe the data sources from which ALTO information resources are derived (See Section 16.2.4 of [RFC7285]). A "data-source" entry MUST include: * a unique "source-id" for resource creation algorithms to reference, * the "source-type" attribute to declare the type of the data source, * the "update-policy" to specify how to get the data update from the data source, * the "source-params" to specify where and how to query the data. The update policy can be either reactive or proactive. For the reactive update, the ALTO server gets the update as soon as the data source changes. For the proactive update, the ALTO server has to proactively fetch the data source periodically. To use the reactive update, the "reactive" attribute MUST be set true. To use the proactive update, the "poll-interval" attribute MUST be greater than zero. The value of "poll-interval" specifies the interval of fetching the data in milliseconds. If "reactive" is false or "poll-interval" is zero, the ALTO server will not update the data source. The target of the data source can be either internal or external. Zhang, et al. Expires 13 January 2022 [Page 10] Internet-Draft ALTO OAM YANG July 2021 module: ietf-alto +--rw alto-server ... +--rw data-source* [source-id] +--rw source-id string +--rw source-type identityref +--rw (update-policy) | +--:(reactive) | | +--rw reactive boolean | +--:(proactive) | +--rw poll-interval uint32 +--rw (source-params) +--:(internal) | +--rw internal-source-params | +--rw source-path yang:xpath1.0 +--:(external) +--rw external-source-params +--rw source-uri inet:uri +--rw query-data? string 5.4.1. Internal Data Source The "internal-source-params" is used to subscribe the internel data source which is located in the same YANG model-driven data store supplying the current ALTO OAM data model. The "source-path" is used to specify the XPath of the data source node. 5.4.2. External Data Source The "external-source-params" is sued to subscribe the external data source which is located in other database systems, e.g., an SNMP server, a prometheus monitor, or a SQL database. The "source-uir" is used to establish the connection with the external data source. The "query-data" is used to speficify the potential query expression. 5.5. Model for ALTO Server-to-server Communication TBD. 5.6. Model for ALTO Statistics TBD. 6. Security Considerations TBD. 7. References Zhang, et al. Expires 13 January 2022 [Page 11] Internet-Draft ALTO OAM YANG July 2021 7.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, . [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, . [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., Previdi, S., Roome, W., Shalunov, S., and R. Woundy, "Application-Layer Traffic Optimization (ALTO) Protocol", RFC 7285, DOI 10.17487/RFC7285, September 2014, . [RFC7286] Kiesel, S., Stiemerling, M., Schwan, N., Scharf, M., and H. Song, "Application-Layer Traffic Optimization (ALTO) Server Discovery", RFC 7286, DOI 10.17487/RFC7286, November 2014, . [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and S. Previdi, "Application-Layer Traffic Optimization (ALTO) Deployment Considerations", RFC 7971, DOI 10.17487/RFC7971, October 2016, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8189] Randriamasy, S., Roome, W., and N. Schwan, "Multi-Cost Application-Layer Traffic Optimization (ALTO)", RFC 8189, DOI 10.17487/RFC8189, October 2017, . [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, . [RFC8571] Ginsberg, L., Ed., Previdi, S., Wu, Q., Tantsura, J., and C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of IGP Traffic Engineering Performance Metric Extensions", RFC 8571, DOI 10.17487/RFC8571, March 2019, . Zhang, et al. Expires 13 January 2022 [Page 12] Internet-Draft ALTO OAM YANG July 2021 [RFC8686] Kiesel, S. and M. Stiemerling, "Application-Layer Traffic Optimization (ALTO) Cross-Domain Server Discovery", RFC 8686, DOI 10.17487/RFC8686, February 2020, . [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic Optimization (ALTO) Incremental Updates Using Server-Sent Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November 2020, . [RFC8896] Randriamasy, S., Yang, R., Wu, Q., Deng, L., and N. Schwan, "Application-Layer Traffic Optimization (ALTO) Cost Calendar", RFC 8896, DOI 10.17487/RFC8896, November 2020, . 7.2. Informative References [I-D.ietf-alto-cost-calendar] Randriamasy, S., Yang, R., Wu, Q., Deng, L., and N. Schwan, "Application-Layer Traffic Optimization (ALTO) Cost Calendar", Work in Progress, Internet-Draft, draft- ietf-alto-cost-calendar-21, 17 March 2020, . [I-D.ietf-alto-path-vector] Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J. Zhang, "ALTO Extension: Path Vector", Work in Progress, Internet-Draft, draft-ietf-alto-path-vector-14, 22 February 2021, . [I-D.ietf-alto-performance-metrics] Wu, Q., Yang, Y. R., Lee, Y., Dhody, D., Randriamasy, S., and L. M. Contreras, "ALTO Performance Cost Metrics", Work in Progress, Internet-Draft, draft-ietf-alto-performance- metrics-16, 11 July 2021, . [I-D.ietf-alto-unified-props-new] Roome, W., Randriamasy, S., Yang, Y. R., Zhang, J. J., and K. Gao, "ALTO Extension: Entity Property Maps", Work in Progress, Internet-Draft, draft-ietf-alto-unified-props- new-17, 16 April 2021, . Zhang, et al. Expires 13 January 2022 [Page 13] Internet-Draft ALTO OAM YANG July 2021 [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, . Appendix A. The Full ALTO OAM Data Model TODO: The complete tree diagram and YANG modules will be updated soon. Authors' Addresses Jingxuan Jensen Zhang Tongji University 4800 Cao'An Hwy Shanghai 201804 China Email: jingxuan.n.zhang@gmail.com Dhruv Dhody Huawei Technologies Divyashree Techno Park, Whitefield Bangalore 560066 Karnataka India Email: dhruv.ietf@gmail.com Kai Gao Sichuan University No.24 South Section 1, Yihuan Road Chengdu 610000 China Email: kaigao@scu.edu.cn Zhang, et al. Expires 13 January 2022 [Page 14]