ALTO WG J. Zhang Internet-Draft Tongji University Intended status: Standards Track D. Dhody Expires: 14 October 2022 Huawei Technologies K. Gao Sichuan University R. Schott Deutsche Telekom 12 April 2022 A Yang Data Model for OAM and Management of ALTO Protocol draft-ietf-alto-oam-yang-00 Abstract This document defines a YANG data model for Operations, Administration, and Maintenance (OAM) & 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 14 October 2022 [Page 1] Internet-Draft ALTO O&M YANG April 2022 This Internet-Draft will expire on 14 October 2022. Copyright Notice Copyright (c) 2022 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 Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised 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 . . . . . . . . . . . . . . . 4 4. Design Scope and Requirements . . . . . . . . . . . . . . . . 4 4.1. Scope of Data Model for ALTO O&M . . . . . . . . . . . . 4 4.2. Basic Requirements . . . . . . . . . . . . . . . . . . . 5 4.3. Additional Requirements for Extensibility . . . . . . . . 6 4.4. Overview of ALTO O&M Data Model for Reference ALTO Architecture . . . . . . . . . . . . . . . . . . . . . . 6 5. Design of ALTO O&M Data Model . . . . . . . . . . . . . . . . 6 5.1. Overview of ALTO O&M Data Model . . . . . . . . . . . . . 7 5.2. Meta Information of ALTO Server . . . . . . . . . . . . . 9 5.3. ALTO Information Resources Configuration Management . . . 9 5.4. Data Sources . . . . . . . . . . . . . . . . . . . . . . 12 5.4.1. Yang DataStore Data Source . . . . . . . . . . . . . 13 5.4.2. Prometheus Data Source . . . . . . . . . . . . . . . 13 5.5. Model for ALTO Server-to-server Communication . . . . . . 13 6. Design of ALTO O&M Statistics Data Model . . . . . . . . . . 13 6.1. Model for ALTO Logging and Fault Management . . . . . . . 14 6.2. Model for ALTO-specific Performance Monitoring . . . . . 14 7. Extension of ALTO O&M Data Model . . . . . . . . . . . . . . 15 8. ALTO OAM YANG Module . . . . . . . . . . . . . . . . . . . . 16 8.1. The ietf-alto Module . . . . . . . . . . . . . . . . . . 16 8.2. The ietf-alto-stats Module . . . . . . . . . . . . . . . 28 9. Security Considerations . . . . . . . . . . . . . . . . . . . 31 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 Zhang, et al. Expires 14 October 2022 [Page 2] Internet-Draft ALTO O&M YANG April 2022 11.2. Informative References . . . . . . . . . . . . . . . . . 33 Appendix A. Example Module for Information Resource Creation Algorithm . . . . . . . . . . . . . . . . . . . . . . . . 34 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 35 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 1. Introduction This document defines a YANG data model for the Operations, Administration, and Maintenance (OAM) & Management of Application- Layer Traffic Optimization (ALTO) Protocol. The basic purpose 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-cdni-request-routing-alto], 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 This document uses the following acronyms: * OAM - Operations, Administration, and Maintainance * O&M - OAM and Management 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]. Zhang, et al. Expires 14 October 2022 [Page 3] Internet-Draft ALTO O&M YANG April 2022 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. +===========+=================+===========+ | Prefix | YANG module | Reference | +===========+=================+===========+ | yang | ietf-yang-types | [RFC6991] | +-----------+-----------------+-----------+ | inet | ietf-inet-types | [RFC6991] | +-----------+-----------------+-----------+ | key-chain | ietf-key-chain | [RFC8177] | +-----------+-----------------+-----------+ Table 1: Prefixes and corresponding YANG modules 4. Design Scope and Requirements 4.1. Scope of Data Model for ALTO O&M What is in the scope of this document? * Data model for deploy an ALTO server/client. * Data model for operate and manage a running ALTO server/client. * Data model for functionality/capability configuration for ALTO services. * Data model for monitoring ALTO-related performance metrics. What is not in the scope of this document? This document does not define any data model related to specific implementation, including: * Data structures for how to store/deliver ALTO information resources (e.g., database schema to store a network map). * Data structures for how to store information collected from data sources. (e.g., database schema to store topology collected from an Interface to the Routing System (I2RS) client [RFC7921]) Zhang, et al. Expires 14 October 2022 [Page 4] Internet-Draft ALTO O&M YANG April 2022 4.2. Basic Requirements Based on discussions and recommendations in [RFC7285] and [RFC7971], the data model provided by this document satisfies basic requirements listed in Table 2. +======================================+========================+ | Requirement | Reference | +======================================+========================+ | R1: The data model should support | Section 16.1 of | | configuration for ALTO server setup. | [RFC7285] | +--------------------------------------+------------------------+ | R2: The data model should provide | Section 16.2.1 of | | logging management. | [RFC7285] | +--------------------------------------+------------------------+ | R3: The data model should provide | Section 16.2.2 of | | ALTO-related management information. | [RFC7285] | +--------------------------------------+------------------------+ | R4: The data model should provide | Section 16.2.3 of | | metrics for server failures. | [RFC7285], Section 3.3 | | | of [RFC7971] | +--------------------------------------+------------------------+ | R5-1: The data model should support | Section 16.2.4 of | | configuration for different data | [RFC7285], Section 3.2 | | sources. | of [RFC7971] | +--------------------------------------+------------------------+ | R5-2: The data model should support | Section 16.2.4 of | | configuration for information | [RFC7285] | | resource generation algorithms. | | +--------------------------------------+------------------------+ | R5-3: The data model should support | Section 16.2.4 of | | configuration for access control at | [RFC7285] | | information resource level. | | +--------------------------------------+------------------------+ | R6: The data model should provide | Section 16.2.5 of | | performance monitoring for ALTO- | [RFC7285], Section 3.4 | | specific metrics. | of [RFC7971] | +--------------------------------------+------------------------+ | R7: The data model should support | Section 16.2.6 of | | configuration for security policy | [RFC7285] | | management. | | +--------------------------------------+------------------------+ Table 2: Basic Requirements of Data Model for ALTO O&M. Zhang, et al. Expires 14 October 2022 [Page 5] Internet-Draft ALTO O&M YANG April 2022 4.3. Additional Requirements for Extensibility R8: As the ALTO protocol is extensible, the data model for ALTO O&M should allow for augmentation to support potential future extensions. 4.4. Overview of ALTO O&M Data Model for Reference ALTO Architecture Figure 1 shows a reference architecture for ALTO server implementation and YANG modules that server components implement. The server manager, information resource manager and data source listeners need to implement ietf-alto.yang (see Section 5). The performance monitor and logging and fault manager need to implement ietf-alto-stats.yang (see Section 6). The data broker and algorithm plugins are not in the scope of the data model defined in this document. But user specified YANG modules can be applied to different algorithm plugins by augmenting the data model defined in this document (see Section 7). +----------------------+ +-----------------+ | Performance Monitor: |<-----| Server Manager: | | ietf-alto-stats.yang |<-+ +-| ietf-alto.yang | +----------------------+ | | +-----------------+ report +----------------------+ | | +-------------------+ | Logging and Fault | +---| Information | | Manager: |<---+ | Resource Manager: | | ietf-alto-stats.yang |<-----| ietf-alto.yang | +----------------------+ +-------------------+ ^| || callback |v ............. .............................. / \ ------> . Algorithm Plugin: . . Data Broker . read . example-ietf-alto-alg.yang . ............... .............................. ^ | write +----------------+ Southbound ++=============++ | Data Source | API || || | Listener: | <==========> || Data Source || | ietf-alto.yang | || || +----------------+ ++=============++ Figure 1: A Reference ALTO Server Architecture and YANG Modules 5. Design of ALTO O&M Data Model Zhang, et al. Expires 14 October 2022 [Page 6] Internet-Draft ALTO O&M YANG April 2022 5.1. Overview of ALTO O&M Data Model The ietf-alto module defined in this document provide all the basic ALTO O&M data models fitting the requirements listed in Section 4. The container "alto-server" in the ietf-alto module contains all the configured and operational parameters of the adminstrated ALTO server instance. 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. 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* string | +--rw dependency* resource-id | +--rw auth | | +--rw (auth-type-selection)? | | +--:(auth-key-chain) | | | +--rw key-chain? key-chain:key-chain-ref | | +--:(auth-key) | | +--:(auth-tls) | +--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 Zhang, et al. Expires 14 October 2022 [Page 7] Internet-Draft ALTO O&M YANG April 2022 | | +--rw cost-constraints? boolean | | +--rw max-cost-types? uint32 {multi-cost}? | | +--rw testable-cost-type-names* string {multi-cost}? | | +--rw calendar-attributes {cost-calendar}? | | | +--rw cost-type-names* string | | | +--rw time-interval-size decimal64 | | | +--rw number-of-intervals uint32 | | +--rw (algorithm) | +--:(endpointcost) | | +--rw alto-endpointcost-params | | +--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-attributes {cost-calendar}? | | | +--rw cost-type-names* string | | | +--rw time-interval-size decimal64 | | | +--rw number-of-intervals uint32 | | +--rw (algorithm) | +--:(endpointprop) | | +--rw alto-endpointprop-params | | +--rw prop-types* string | | +--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)? +--:(yang-datastore) | +--rw yang-datastore-source-params | +--rw source-path yang:xpath1.0 +--:(prometheus) +--rw prometheus-source-params +--rw source-uri inet:uri +--rw query-data? string Zhang, et al. Expires 14 October 2022 [Page 8] Internet-Draft ALTO O&M YANG April 2022 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). TODO: As suggested by [RFC7286] and [RFC8686], the configuration related to ALTO server discovery should also be included here. 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. ALTO Information Resources Configuration 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 provide configuration defining how 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. Zhang, et al. Expires 14 October 2022 [Page 9] Internet-Draft ALTO O&M YANG April 2022 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- groups that can access this ALTO information resource. As section 15.5.2 of [RFC7285] suggests, the module also defines authentication related configuration to employ access control at information resource level. The ALTO server returns the IRD to the ALTO client based on its authentication information. 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: 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 Zhang, et al. Expires 14 October 2022 [Page 10] Internet-Draft ALTO O&M YANG April 2022 | +--rw accepted-group* string | +--rw dependency* resource-id | +--rw auth | | +--rw (auth-type-selection)? | | +--:(auth-key-chain) | | | +--rw key-chain? key-chain:key-chain-ref | | +--:(auth-key) | | +--:(auth-tls) | +--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-attributes {cost-calendar}? | | | +--rw cost-type-names* string | | | +--rw time-interval-size decimal64 | | | +--rw number-of-intervals uint32 | | +--rw (algorithm) | +--:(endpointcost) | | +--rw alto-endpointcost-params | | +--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-attributes {cost-calendar}? | | | +--rw cost-type-names* string | | | +--rw time-interval-size decimal64 | | | +--rw number-of-intervals uint32 | | +--rw (algorithm) | +--:(endpointprop) | | +--rw alto-endpointprop-params | | +--rw prop-types* string | | +--rw (algorithm) | +--:(propmap) {propmap}? | | +--rw alto-propmap-params | | +--rw (algorithm) | +--:(cdni) {cdni}? Zhang, et al. Expires 14 October 2022 [Page 11] Internet-Draft ALTO O&M YANG April 2022 | | +--rw alto-cdni-params | | +--rw (algorithm) | +--:(update) {incr-update}? | +--rw alto-update-params | +--rw (algorithm) ... 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 data-source/source-params node can be augmented for different types of data sources. This data model only includes import interfaces for a list of predefined data sources. More data sources can be supported by future documents and other third-party providers. Zhang, et al. Expires 14 October 2022 [Page 12] Internet-Draft ALTO O&M YANG April 2022 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)? +--:(yang-datastore) | +--rw yang-datastore-source-params | +--rw source-path yang:xpath1.0 +--:(prometheus) +--rw prometheus-source-params +--rw source-uri inet:uri +--rw query-data? string Note: Current source configuration still has limitations. It should be revised to support more general southbound and data retrieval mechanisms. 5.4.1. Yang DataStore Data Source The yang-datastore-source-params is used to import the YANG data which is located in the same YANG model-driven data store supplying the current ALTO O&M data model. The source-path is used to specify the XPath of the data source node. 5.4.2. Prometheus Data Source The prometheus-source-params is used to import common performance metrics data which is provided by a Prometheus server. The source- uir is used to establish the connection with the Prometheus server. The query-data is used to speficify the potential query expression in PromQL. 5.5. Model for ALTO Server-to-server Communication TBD. 6. Design of ALTO O&M Statistics Data Model Zhang, et al. Expires 14 October 2022 [Page 13] Internet-Draft ALTO O&M YANG April 2022 6.1. Model for ALTO Logging and Fault Management As section 16.2.1 and section 16.2.3 of [RFC7285] suggest, the YANG data module defined in this document contains statistics for logging and failure detection. NOTE: The detailed YANG module will appear in the future version. 6.2. Model for ALTO-specific Performance Monitoring As section 16.2.5 of [RFC7285] suggests, the YANG data module defined in this document also contains statistics for ALTO-specific performance metrics. More specifically, this data model contains the following measurement information suggested by [RFC7971]: * Measurement of impact - Total amount and distribution of traffic - Application performance * System and service performance - Requests and responses for each information resource - CPU and memory utilization - ALTO map updates - Number of PIDs - ALTO map sizes Besides the measurement information suggested by [RFC7971], this data model also contains useful measurement information for other ALTO extensions: * Number of generic ALTO entities (for [I-D.ietf-alto-unified-props-new] and [I-D.ietf-alto-cdni-request-routing-alto]) * Statistics for update sessions and events (for [RFC8189]) * Statistics for calendar (for [RFC8896]) Zhang, et al. Expires 14 October 2022 [Page 14] Internet-Draft ALTO O&M YANG April 2022 The module, "ietf-alto-stats", augments the ietf-alto module to include statistics at the ALTO server and information resource level. module: ietf-alto-stats augment /alto:alto-server/alto:resource: +--ro num-res-upd? yang:counter32 +--ro res-mem-size? yang:counter32 +--ro res-enc-size? yang:counter32 augment /alto:alto-server/alto:resource/alto:resource-params /alto:networkmap/alto:alto-networkmap-params: +--ro num-map-pid? yang:counter32 augment /alto:alto-server/alto:resource/alto:resource-params /alto:propmap/alto:alto-propmap-params: +--ro num-map-entry? yang:counter32 augment /alto:alto-server/alto:resource/alto:resource-params /alto:cdni/alto:alto-cdni-params: +--ro num-base-obj? yang:counter32 augment /alto:alto-server/alto:resource/alto:resource-params /alto:update/alto:alto-update-params: +--ro num-upd-sess yang:counter32 +--ro num-event-total yang:counter32 +--ro num-event-max? yang:counter32 +--ro num-event-min? yang:counter32 +--ro num-event-avg? yang:counter32 7. Extension of ALTO O&M Data Model As ALTO protocol is extensible, new protocol extensions can be developed after this data model is published. To support future ALTO protocol extensions, the extension documents can augment the existing cases of the resource-params choice with new configuration parameters for existing ALTO information resource extensions, or augment the resource-params with new cases for new ALTO information resources. Developers and operators can also extend this ALTO O&M data model to align with their own implementations. Specifically, the following nodes of the data model can be augmented: * The algorithm choice of the resource-params of each resource. * The data-source choice. Zhang, et al. Expires 14 October 2022 [Page 15] Internet-Draft ALTO O&M YANG April 2022 The following example shows how the developer augments the algorithm choice of alto-networkmap-params with a creation algorithm for the network map resource. module: example-ietf-alto-alg augment /alto:alto-server/alto:resource/alto:resource-params /alto:networkmap/alto:alto-networkmap-params /alto:algorithm: +--:(l3-unicast-cluster) +--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 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). 8. ALTO OAM YANG Module 8.1. The ietf-alto Module file "ietf-alto@2022-03-07.yang" module ietf-alto { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-alto"; prefix "alto"; import ietf-inet-types { prefix "inet"; Zhang, et al. Expires 14 October 2022 [Page 16] Internet-Draft ALTO O&M YANG April 2022 reference "RFC 6991: Common YANG Data Types"; } import ietf-yang-types { prefix "yang"; reference "RFC 6991: Common YANG Data Types"; } import ietf-key-chain { prefix key-chain; reference "RFC 8177: YANG Data Model for Key Chains"; } organization "IETF ALTO Working Group"; contact "WG Web: WG List: "; description "This YANG module defines all the configured and operational parameters of the administrated ALTO server instance. Copyright (c) 2022 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 XXXX (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices. 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 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; revision "2022-03-07" { Zhang, et al. Expires 14 October 2022 [Page 17] Internet-Draft ALTO O&M YANG April 2022 description "Initial Version."; reference "RFC XXXX: A YANG Data Model for OAM and Management of ALTO Protocol."; } typedef cost-mode { type enumeration { enum numerical { value 1; description "This mode indicates that it is safe to perform numerical operations"; } enum ordinal { value 2; description "This mode indicates that the cost values in a cost map represent ranking"; } } description "The cost mode attribute indicates how costs should be interpreted. Specifically, the cost mode attribute indicates whether returned costs should be interpreted as numerical values or ordinal rankings."; reference "Section 6.1.2 of RFC 7285."; } typedef cost-metric { type string; description "The cost metric attribute indicates what the cost represents."; reference "Section 6.1.1 of RFC 7285."; } typedef resource-id { type string { length "1..64"; pattern "[0-9a-zA-Z\\-:@_]*"; } description "Format of Resource ID"; reference Zhang, et al. Expires 14 October 2022 [Page 18] Internet-Draft ALTO O&M YANG April 2022 "Section 9.1.1 of RFC 7285."; } identity resource-types { description "Base identity for type of information resource."; } identity source-types { description "Base identity for type of data source."; } identity network-map { base resource-types; description "Identity for network map."; } identity cost-map { base resource-types; description "Identity for cost map."; } identity property-map { base resource-types; description "Identity for property map."; } identity yang-datastore { base source-types; description "Identity for data source of YANG-based datastore."; } identity prometheus { base source-types; description "Identity for data source of prometheus system."; } feature multi-cost { description "Support multi-cost extension."; reference "RFC 8189: Multi-Cost Application-Layer Traffic Optimization Zhang, et al. Expires 14 October 2022 [Page 19] Internet-Draft ALTO O&M YANG April 2022 (ALTO)"; } feature cost-calendar { description "Support cost calendar extension."; reference "RFC 8896: Application-Layer Traffic Optimization (ALTO) Cost Calendar"; } feature propmap { description "Support entity property map extension."; reference "RFC XXXX: An ALTO Extension: Entity Property Maps"; } feature cdni { description "Support CDNi extension."; reference "RFC XXXX: Content Delivery Network Interconnection (CDNI) Request Routing: CDNI Footprint and Capabilities Advertisement using ALTO"; } feature incr-update { description "Support incremental update extension."; reference "RFC 8896: Application-Layer Traffic Optimization (ALTO) Incremental Updates Using Server-Sent Events (SSE)"; } grouping filt-costmap-cap { description "This grouping defines data model for FilteredCostMapCapabilities."; reference "Sec 11.3.2.4 of RFC 7285."; leaf-list cost-type-names { type string; min-elements 1; description "Supported cost types"; } leaf cost-constraints { Zhang, et al. Expires 14 October 2022 [Page 20] Internet-Draft ALTO O&M YANG April 2022 type boolean; description "If true, then the ALTO server allows cost constraints to be included in requests to the corresponding URI. If not present, this field MUST be interpreted as if it specified false."; } leaf max-cost-types { if-feature "multi-cost"; type uint32; default 0; description "If present with value N greater than 0, this resource understands the multi-cost extensions in this document and can return a multi-cost map with any combination of N or fewer cost types in the 'cost-type-names' list. If omitted, the default value is 0."; } leaf-list testable-cost-type-names { if-feature "multi-cost"; type string; description "If present, the resource allows constraint tests, but only on the cost type names in this array."; } container calendar-attributes { if-feature "cost-calendar"; leaf-list cost-type-names { type string; min-elements 1; description "An array of one or more elements indicating the cost type names in the IRD entry to which the values of 'time-interval-size' and 'number-of-intervals' apply."; } leaf time-interval-size { type decimal64 { fraction-digits 4; } mandatory true; description "The duration of an ALTO Calendar time interval in a unit of seconds."; } leaf number-of-intervals { type uint32 { range "1..max"; } Zhang, et al. Expires 14 October 2022 [Page 21] Internet-Draft ALTO O&M YANG April 2022 mandatory true; description "A strictly positive integer (greater or equal to 1) that indicates the number of values of the Cost Calendar array."; } description "Configuration for CalendarAttributes."; reference "Section 4.1 of RFC 8896."; } } grouping algorithm { choice algorithm { mandatory true; description "Information resource creation algorithm to be augmented."; } description "This grouping defines base data model for information resource creation algorithm."; } container alto-server { description "The ALTO server instance."; leaf hostname { type inet:host; description "The name that is used to access the ALTO server."; } list cost-type { key "cost-type-name"; leaf cost-type-name { type string; description "The name to reference cost type"; } leaf cost-mode { type cost-mode; mandatory true; description "The referenced cost mode"; } leaf cost-metric { type cost-metric; mandatory true; Zhang, et al. Expires 14 October 2022 [Page 22] Internet-Draft ALTO O&M YANG April 2022 description "The referenced cost metric"; } description "Mapping between name and referenced cost type"; } list meta { key "meta-key"; leaf meta-key { type string; description "Custom meta key"; } leaf meta-value { type string; mandatory true; description "Custom meta value"; } description "Mapping of custom meta information"; reference "Section 8.4.1 of RFC 7285."; } list resource { key "resource-id"; leaf resource-id { type resource-id; description "resource-id to be defined."; } leaf resource-type { type identityref { base resource-types; } mandatory true; description "identityref to be defined."; } leaf description { type string; description "The optional description for this information resource."; } leaf-list accepted-group { type string; description "Access list for authenticated clients."; Zhang, et al. Expires 14 October 2022 [Page 23] Internet-Draft ALTO O&M YANG April 2022 } leaf-list dependency { type resource-id; description "A list of dependent information resources."; } container auth { description "The authentication options"; choice auth-type-selection { description "Options for expressing authentication setting."; case auth-key-chain { leaf key-chain { type key-chain:key-chain-ref; description "key-chain name."; } } case auth-key { } case auth-tls { } } } choice resource-params { description "Resource-specific configuration."; case ird { container alto-ird-params { leaf delegation { type inet:uri; mandatory true; description "Upstream IRD to be delegated"; } description "IRD-specific configuration"; } } case networkmap { container alto-networkmap-params { description "(Filtered) Network Map specific configuration"; reference "Section 11.2.1 and Section 11.3.1 of RFC 7285."; leaf is-default { Zhang, et al. Expires 14 October 2022 [Page 24] Internet-Draft ALTO O&M YANG April 2022 type boolean; description "Set whether this is the default network map"; } leaf filtered { type boolean; default false; description "Configure whether filtered network map is supported."; } uses algorithm; } } case costmap { container alto-costmap-params { description "(Filtered) Cost Map specific configuration"; reference "Section 11.2.2 and Section 11.3.2 of RFC 7285."; leaf filtered { type boolean; description "Configure whether filtered cost map is supported."; } uses filt-costmap-cap; uses algorithm; } } case endpointcost { container alto-endpointcost-params { description "Endpoint Cost Service specific configuration"; reference "Section 11.5 of RFC 7285"; uses filt-costmap-cap; uses algorithm; } } case endpointprop { container alto-endpointprop-params { description "Endpoint Cost Service specific configuration"; reference "Section 11.5 of RFC 7285"; leaf-list prop-types { type string; min-elements 1; Zhang, et al. Expires 14 October 2022 [Page 25] Internet-Draft ALTO O&M YANG April 2022 description "Supported endpoint properties."; } uses algorithm; } } case propmap { if-feature "propmap"; container alto-propmap-params { uses algorithm; description "(Filtered) Entity Property Map specific configuration"; } } case cdni { if-feature "cdni"; container alto-cdni-params { uses algorithm; description "CDNi specific configuration"; } } case update { if-feature "incr-update"; container alto-update-params { uses algorithm; description "Incremental Updates specific configuration"; } } } description "ALTO information resources to be defined"; } list data-source { key "source-id"; leaf source-id { type string; description "Data source id that can be referenced by information resource creation algorithms."; } leaf source-type { type identityref { base source-types; } mandatory true; Zhang, et al. Expires 14 October 2022 [Page 26] Internet-Draft ALTO O&M YANG April 2022 description "Source-type to be defined"; } choice update-policy { mandatory true; case reactive { leaf reactive { type boolean; mandatory true; description "Reactive mode"; } } case proactive { leaf poll-interval { type uint32; mandatory true; description "Polling interval in seconds for proactive mode"; } } description "Policy to get updates from data sources"; } choice source-params { case yang-datastore { container yang-datastore-source-params { leaf source-path { type yang:xpath1.0; mandatory true; description "XPath to subscribed YANG datastore node"; } description "YANG datastore specific configuration"; } } case prometheus { container prometheus-source-params { leaf source-uri { type inet:uri; mandatory true; description "URI to prometheus agent"; } leaf query-data { type string; description Zhang, et al. Expires 14 October 2022 [Page 27] Internet-Draft ALTO O&M YANG April 2022 "Query expression"; } description "Prometheus specific configuration"; } } description "Data source specific configuration"; } description "List of subscribed data sources."; } } } 8.2. The ietf-alto-stats Module file "ietf-alto-stats@2022-03-07.yang" module ietf-alto-stats { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-alto-stats"; prefix "alto-stats"; import ietf-yang-types { prefix "yang"; reference "RFC 6991: Common YANG Data Types"; } import ietf-alto { prefix alto; reference "RFC XXXX: A YANG Data Model for OAM and Management of ALTO Protocol."; } organization "IETF ALTO Working Group"; contact "WG Web: WG List: "; description "This YANG module defines all the configured and operational parameters of the administrated ALTO server instance. Zhang, et al. Expires 14 October 2022 [Page 28] Internet-Draft ALTO O&M YANG April 2022 Copyright (c) 2022 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 XXXX (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; revision "2022-03-07" { description "Initial Version."; reference "RFC XXXX: A YANG Data Model for Operations, Administration, and Maintenance of ALTO Protocol."; } augment "/alto:alto-server/alto:resource" { description "Common statistics for each information resource."; leaf num-res-upd { type yang:counter32; config false; description "The number of version updates since the information resource was created."; } leaf res-mem-size { type yang:counter32; config false; description "Memory size (Bytes) utilized by the information resource."; } leaf res-enc-size { type yang:counter32; config false; description "Size (Bytes) of JSON encoded data of the information resource."; } } augment "/alto:alto-server/alto:resource/alto:resource-params" Zhang, et al. Expires 14 October 2022 [Page 29] Internet-Draft ALTO O&M YANG April 2022 + "/alto:networkmap/alto:alto-networkmap-params" { description "Augmented statistics for network maps only."; leaf num-map-pid { type yang:counter32; config false; description "Number of PIDs contained by the network map."; } } augment "/alto:alto-server/alto:resource/alto:resource-params" + "/alto:propmap/alto:alto-propmap-params" { description "Augmented statistics for property maps only."; leaf num-map-entry { type yang:counter32; config false; description "Number of ALTO entities contained by the property map."; } } augment "/alto:alto-server/alto:resource/alto:resource-params" + "/alto:cdni/alto:alto-cdni-params" { description "Augmented statistics for CDNi resources only."; leaf num-base-obj { type yang:counter32; config false; description "Number of base CDNi advertisement objects contained by the CDNi resource."; } } augment "/alto:alto-server/alto:resource/alto:resource-params" + "/alto:update/alto:alto-update-params" { description "Augmented statistics for incremental updates only."; leaf num-upd-sess { type yang:counter32; config false; description "Number of sessions connected to the incremental update service."; } leaf num-event-total { Zhang, et al. Expires 14 October 2022 [Page 30] Internet-Draft ALTO O&M YANG April 2022 type yang:counter32; config false; description "Total number of update events sent to all the connected clients."; } leaf num-event-max { type yang:counter32; config false; description "The maximum number of update events sent to the connected clients."; } leaf num-event-min { type yang:counter32; config false; description "The minimum number of update events sent to the connected clients."; } leaf num-event-avg { type yang:counter32; config false; description "The average number of update events sent to the connected clients."; } } } 9. Security Considerations TBD. 10. IANA Considerations This document registers two URIs in the "IETF XML Registry" [RFC3688]. Following the format in RFC 3688, the following registrations are requested. URI: urn:ietf:params:xml:ns:yang:ietf-alto Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace. URI: urn:ietf:params:xml:ns:yang:ietf-alto-stats Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace. Zhang, et al. Expires 14 October 2022 [Page 31] Internet-Draft ALTO O&M YANG April 2022 This document registers two YANG modules in the "YANG Module Names" registry [RFC6020]. Name: ietf-alto Namespace: urn:ietf:params:xml:ns:yang:ietf-alto Prefix: alto Reference: [RFCthis] Name: ietf-alto-stats Namespace: urn:ietf:params:xml:ns:yang:ietf-alto-stats Prefix: alto Reference: [RFCthis] [RFC Editor: Please replace RFCthis with the published RFC number for this document.] 11. References 11.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, . [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, . Zhang, et al. Expires 14 October 2022 [Page 32] Internet-Draft ALTO O&M YANG April 2022 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. Zhang, "YANG Data Model for Key Chains", RFC 8177, DOI 10.17487/RFC8177, June 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, . [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, . 11.2. Informative References [I-D.ietf-alto-cdni-request-routing-alto] Seedorf, J., Yang, Y. R., Ma, K. J., Peterson, J., and J. J. Zhang, "Content Delivery Network Interconnection (CDNI) Request Routing: CDNI Footprint and Capabilities Advertisement using ALTO", Work in Progress, Internet- Draft, draft-ietf-alto-cdni-request-routing-alto-22, 16 February 2022, . Zhang, et al. Expires 14 October 2022 [Page 33] Internet-Draft ALTO O&M YANG April 2022 [I-D.ietf-alto-path-vector] Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J. Zhang, "An ALTO Extension: Path Vector", Work in Progress, Internet-Draft, draft-ietf-alto-path-vector-25, 20 March 2022, . [I-D.ietf-alto-performance-metrics] Wu, Q., Yang, Y. R., Lee, Y., Dhody, D., Randriamasy, S., and L. M. C. Murillo, "ALTO Performance Cost Metrics", Work in Progress, Internet-Draft, draft-ietf-alto- performance-metrics-28, 21 March 2022, . [I-D.ietf-alto-unified-props-new] Roome, W., Randriamasy, S., Yang, Y. R., Zhang, J. J., and K. Gao, "An ALTO Extension: Entity Property Maps", Work in Progress, Internet-Draft, draft-ietf-alto-unified-props- new-24, 28 February 2022, . [RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. Nadeau, "An Architecture for the Interface to the Routing System", RFC 7921, DOI 10.17487/RFC7921, June 2016, . [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, . [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. Example Module for Information Resource Creation Algorithm The base data model defined by ietf-alto.yang does not include any choice cases for information resource creation algorithms. But developers may augment the ietf-alto.yang data model with definitions for any custom creation algorithms for different information resources. The following example module demonstrates the parameters of a network map creation algorithm that translates an IETF layer 3 unicast topology into a network map. Zhang, et al. Expires 14 October 2022 [Page 34] Internet-Draft ALTO O&M YANG April 2022 module example-ietf-alto-alg { namespace "urn:example:ietf-alto-alg"; prefix "alto-alg"; import ietf-alto { prefix "alto"; } augment "/alto:alto-server/alto:resource/alto:resource-params" + "/alto:networkmap/alto:alto-networkmap-params" + "/alto:algorithm" { case l3-unicast-cluster { container l3-unicast-cluster-algorithm { leaf l3-unicast-topo { type leafref { path "/alto:alto-server/data-source/source-id"; } mandatory true; description "The data source to an IETF layer 3 unicast topology."; } leaf depth { type uint32; description "The depth of the clustering."; } } } } } Acknowledgements The authors thank Qiufang Ma and Qin Wu for their help with drafting the initial version of the YANG modules. Thanks also to Adrian Farrel, Qiao Xiang, Qin Wu, and Qiufang Ma for their reviews and valuable feedback. Authors' Addresses Jingxuan Jensen Zhang Tongji University 4800 Cao'An Hwy Shanghai 201804 China Email: jingxuan.n.zhang@gmail.com Zhang, et al. Expires 14 October 2022 [Page 35] Internet-Draft ALTO O&M YANG April 2022 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 Roland Schott Deutsche Telekom Heinrich-Hertz-Strasse 3-7 64295 Darmstadt Germany Email: Roland.Schott@telekom.de Zhang, et al. Expires 14 October 2022 [Page 36]