idnits 2.17.1 draft-zhang-alto-oam-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 259 has weird spacing: '...pe-name str...' == Line 264 has weird spacing: '...a-value str...' == Line 280 has weird spacing: '...egation ine...' == Line 296 has weird spacing: '...tervals uin...' == Line 307 has weird spacing: '...tervals uin...' == (10 more instances...) -- The document date (7 March 2022) is 780 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFCthis' is mentioned on line 1435, but not defined == Outdated reference: A later version (-25) exists of draft-ietf-alto-path-vector-24 == Outdated reference: A later version (-28) exists of draft-ietf-alto-performance-metrics-26 Summary: 0 errors (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 ALTO WG J. Zhang 3 Internet-Draft Tongji University 4 Intended status: Standards Track D. Dhody 5 Expires: 8 September 2022 Huawei Technologies 6 K. Gao 7 Sichuan University 8 R. Schott 9 Deutsche Telekom 10 7 March 2022 12 A Yang Data Model for OAM and Management of ALTO Protocol 13 draft-zhang-alto-oam-yang-02 15 Abstract 17 This document defines a YANG data model for Operations, 18 Administration, and Maintenance (OAM) & Management of Application- 19 Layer Traffic Optimization (ALTO) Protocol. The operator can use the 20 data model to create and update ALTO information resources, manage 21 the access control, configure server-to-server communication and 22 server discovery, and collect statistical data. 24 Discussion Venues 26 This note is to be removed before publishing as an RFC. 28 Discussion of this document takes place on the ALTO Working Group 29 mailing list (alto@ietf.org), which is archived at 30 https://mailarchive.ietf.org/arch/browse/alto/. 32 Source for this draft and an issue tracker can be found at 33 https://github.com/openalto/draft-alto-oam-yang. 35 Status of This Memo 37 This Internet-Draft is submitted in full conformance with the 38 provisions of BCP 78 and BCP 79. 40 Internet-Drafts are working documents of the Internet Engineering 41 Task Force (IETF). Note that other groups may also distribute 42 working documents as Internet-Drafts. The list of current Internet- 43 Drafts is at https://datatracker.ietf.org/drafts/current/. 45 Internet-Drafts are draft documents valid for a maximum of six months 46 and may be updated, replaced, or obsoleted by other documents at any 47 time. It is inappropriate to use Internet-Drafts as reference 48 material or to cite them other than as "work in progress." 49 This Internet-Draft will expire on 8 September 2022. 51 Copyright Notice 53 Copyright (c) 2022 IETF Trust and the persons identified as the 54 document authors. All rights reserved. 56 This document is subject to BCP 78 and the IETF Trust's Legal 57 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 58 license-info) in effect on the date of publication of this document. 59 Please review these documents carefully, as they describe your rights 60 and restrictions with respect to this document. Code Components 61 extracted from this document must include Revised BSD License text as 62 described in Section 4.e of the Trust Legal Provisions and are 63 provided without warranty as described in the Revised BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 68 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 69 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 70 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 71 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 72 4. Design Scope and Requirements . . . . . . . . . . . . . . . . 4 73 4.1. Scope of Data Model for ALTO O&M . . . . . . . . . . . . 4 74 4.2. Basic Requirements . . . . . . . . . . . . . . . . . . . 5 75 4.3. Additional Requirements for Extensibility . . . . . . . . 6 76 5. Design of ALTO O&M Data Model . . . . . . . . . . . . . . . . 6 77 5.1. Overview of ALTO O&M Data Model . . . . . . . . . . . . . 6 78 5.2. Meta Information of ALTO Server . . . . . . . . . . . . . 8 79 5.3. ALTO Information Resources Configuration Management . . . 8 80 5.4. Data Sources . . . . . . . . . . . . . . . . . . . . . . 11 81 5.4.1. Yang DataStore Data Source . . . . . . . . . . . . . 12 82 5.4.2. Prometheus Data Source . . . . . . . . . . . . . . . 12 83 5.5. Model for ALTO Server-to-server Communication . . . . . . 12 84 6. Design of ALTO O&M Statistics Data Model . . . . . . . . . . 13 85 7. Extension of ALTO O&M Data Model . . . . . . . . . . . . . . 14 86 8. ALTO OAM YANG Module . . . . . . . . . . . . . . . . . . . . 15 87 8.1. The ietf-alto Module . . . . . . . . . . . . . . . . . . 15 88 8.2. The ietf-alto-stats Module . . . . . . . . . . . . . . . 27 89 9. Security Considerations . . . . . . . . . . . . . . . . . . . 30 90 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 91 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 92 11.1. Normative References . . . . . . . . . . . . . . . . . . 31 93 11.2. Informative References . . . . . . . . . . . . . . . . . 32 94 Appendix A. Example Module for Information Resource Creation 95 Algorithm . . . . . . . . . . . . . . . . . . . . . . . . 33 96 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 34 97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 99 1. Introduction 101 This document defines a YANG data model for the Operations, 102 Administration, and Maintenance (OAM) & Management of Application- 103 Layer Traffic Optimization (ALTO) Protocol. The basic purpose of 104 this YANG data model is discussed in Section 16 of [RFC7285]. The 105 operator can use the data model to create and update ALTO information 106 resources, manage the access control, configure server-to-server 107 communication and server discovery, and collect statistical data. 109 The basic structure of this YANG data model is guided by Section 16 110 of [RFC7285] and [RFC7971]. Although the scope of the YANG data 111 model in this document mainly focuses on the support of the base ALTO 112 protocol [RFC7285] and the existing ALTO standard extensions 113 (including [RFC8189], [RFC8895] and [RFC8896]), the design will also 114 be extensible for future standard extensions (e.g., 115 [I-D.ietf-alto-path-vector], [I-D.ietf-alto-unified-props-new], 116 [I-D.ietf-alto-cdni-request-routing-alto], and 117 [I-D.ietf-alto-performance-metrics]). 119 2. Requirements Language 121 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 122 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 123 "OPTIONAL" in this document are to be interpreted as described in BCP 124 14 [RFC2119] [RFC8174] when, and only when, they appear in all 125 capitals, as shown here. When the words appear in lower case, they 126 are to be interpreted with their natural language meanings. 128 3. Terminology 130 This document uses the following acronyms: 132 * OAM - Operations, Administration, and Maintainance 134 * O&M - OAM and Management 136 3.1. Tree Diagrams 138 A simplified graphical representation of the data model is used in 139 this document. The meaning of the symbols in these diagrams is 140 defined in [RFC8340]. 142 3.2. Prefixes in Data Node Names 144 In this document, names of data nodes and other data model objects 145 are often used without a prefix, as long as it is clear from the 146 context in which YANG module each name is defined. Otherwise, names 147 are prefixed using the standard prefix associated with the 148 corresponding YANG module, as shown in Table 1. 150 +===========+=================+===========+ 151 | Prefix | YANG module | Reference | 152 +===========+=================+===========+ 153 | yang | ietf-yang-types | [RFC6991] | 154 +-----------+-----------------+-----------+ 155 | inet | ietf-inet-types | [RFC6991] | 156 +-----------+-----------------+-----------+ 157 | key-chain | ietf-key-chain | [RFC8177] | 158 +-----------+-----------------+-----------+ 160 Table 1: Prefixes and corresponding 161 YANG modules 163 4. Design Scope and Requirements 165 4.1. Scope of Data Model for ALTO O&M 167 What is in the scope of this document? 169 * Data model for deploy an ALTO server/client. 171 * Data model for operate and manage a running ALTO server/client. 173 * Data model for functionality/capability configuration for ALTO 174 services. 176 * Data model for monitoring ALTO-related performance metrics. 178 What is not in the scope of this document? 180 This document does not define any data model related to specific 181 implementation, including: 183 * Data structures for how to store/deliver ALTO information 184 resources (e.g., database schema to store a network map). 186 * Data structures for how to store information collected from data 187 sources. (e.g., database schema to store topology collected from 188 an Interface to the Routing System (I2RS) client [RFC7921]) 190 4.2. Basic Requirements 192 Based on discussions and recommendations in [RFC7285] and [RFC7971], 193 the data model provided by this document satisfies basic requirements 194 listed in Table 2. 196 +======================================+========================+ 197 | Requirement | Reference | 198 +======================================+========================+ 199 | R1: The data model should support | Section 16.1 of | 200 | configuration for ALTO server setup. | [RFC7285] | 201 +--------------------------------------+------------------------+ 202 | R2: The data model should provide | Section 16.2.1 of | 203 | logging management. | [RFC7285] | 204 +--------------------------------------+------------------------+ 205 | R3: The data model should provide | Section 16.2.2 of | 206 | ALTO-related management information. | [RFC7285] | 207 +--------------------------------------+------------------------+ 208 | R4: The data model should provide | Section 16.2.3 of | 209 | metrics for server failures. | [RFC7285], Section 3.3 | 210 | | of [RFC7971] | 211 +--------------------------------------+------------------------+ 212 | R5-1: The data model should support | Section 16.2.4 of | 213 | configuration for different data | [RFC7285], Section 3.2 | 214 | sources. | of [RFC7971] | 215 +--------------------------------------+------------------------+ 216 | R5-2: The data model should support | Section 16.2.4 of | 217 | configuration for information | [RFC7285] | 218 | resource generation algorithms. | | 219 +--------------------------------------+------------------------+ 220 | R5-3: The data model should support | Section 16.2.4 of | 221 | configuration for access control at | [RFC7285] | 222 | information resource level. | | 223 +--------------------------------------+------------------------+ 224 | R6: The data model should provide | Section 16.2.5 of | 225 | performance monitoring for ALTO- | [RFC7285], Section 3.4 | 226 | specific metrics. | of [RFC7971] | 227 +--------------------------------------+------------------------+ 228 | R7: The data model should support | Section 16.2.6 of | 229 | configuration for security policy | [RFC7285] | 230 | management. | | 231 +--------------------------------------+------------------------+ 233 Table 2: Basic Requirements of Data Model for ALTO O&M. 235 4.3. Additional Requirements for Extensibility 237 R8: As the ALTO protocol is extensible, the data model for ALTO O&M 238 should allow for augmentation to support potential future extensions. 240 5. Design of ALTO O&M Data Model 242 5.1. Overview of ALTO O&M Data Model 244 The ietf-alto module defined in this document provide all the basic 245 ALTO O&M data models fitting the requirements listed in Section 4. 247 The container "alto-server" in the ietf-alto module contains all the 248 configured and operational parameters of the adminstrated ALTO server 249 instance. 251 NOTE: So far, the ALTO YANG module only focuses on the ALTO server 252 related configuration. The ALTO client related configuration will be 253 added in a future version of the document. 255 module: ietf-alto 256 +--rw alto-server 257 +--rw hostname? inet:host 258 +--rw cost-type* [cost-type-name] 259 | +--rw cost-type-name string 260 | +--rw cost-mode cost-mode 261 | +--rw cost-metric cost-metric 262 +--rw meta* [meta-key] 263 | +--rw meta-key string 264 | +--rw meta-value string 265 +--rw resource* [resource-id] 266 | +--rw resource-id resource-id 267 | +--rw resource-type identityref 268 | +--rw description? string 269 | +--rw accepted-group* string 270 | +--rw dependency* resource-id 271 | +--rw auth 272 | | +--rw (auth-type-selection)? 273 | | +--:(auth-key-chain) 274 | | | +--rw key-chain? key-chain:key-chain-ref 275 | | +--:(auth-key) 276 | | +--:(auth-tls) 277 | +--rw (resource-params)? 278 | +--:(ird) 279 | | +--rw alto-ird-params 280 | | +--rw delegation inet:uri 281 | +--:(networkmap) 282 | | +--rw alto-networkmap-params 283 | | +--rw is-default? boolean 284 | | +--rw filtered? boolean 285 | | +--rw (algorithm) 286 | +--:(costmap) 287 | | +--rw alto-costmap-params 288 | | +--rw filtered? boolean 289 | | +--rw cost-type-names* string 290 | | +--rw cost-constraints? boolean 291 | | +--rw max-cost-types? uint32 {multi-cost}? 292 | | +--rw testable-cost-type-names* string {multi-cost}? 293 | | +--rw calendar-attributes {cost-calendar}? 294 | | | +--rw cost-type-names* string 295 | | | +--rw time-interval-size decimal64 296 | | | +--rw number-of-intervals uint32 297 | | +--rw (algorithm) 298 | +--:(endpointcost) 299 | | +--rw alto-endpointcost-params 300 | | +--rw cost-type-names* string 301 | | +--rw cost-constraints? boolean 302 | | +--rw max-cost-types? uint32 {multi-cost}? 303 | | +--rw testable-cost-type-names* string {multi-cost}? 304 | | +--rw calendar-attributes {cost-calendar}? 305 | | | +--rw cost-type-names* string 306 | | | +--rw time-interval-size decimal64 307 | | | +--rw number-of-intervals uint32 308 | | +--rw (algorithm) 309 | +--:(endpointprop) 310 | | +--rw alto-endpointprop-params 311 | | +--rw prop-types* string 312 | | +--rw (algorithm) 313 | +--:(propmap) {propmap}? 314 | | +--rw alto-propmap-params 315 | | +--rw (algorithm) 316 | +--:(cdni) {cdni}? 317 | | +--rw alto-cdni-params 318 | | +--rw (algorithm) 319 | +--:(update) {incr-update}? 320 | +--rw alto-update-params 321 | +--rw (algorithm) 322 +--rw data-source* [source-id] 323 +--rw source-id string 324 +--rw source-type identityref 325 +--rw (update-policy) 326 | +--:(reactive) 327 | | +--rw reactive boolean 328 | +--:(proactive) 329 | +--rw poll-interval uint32 330 +--rw (source-params)? 331 +--:(yang-datastore) 332 | +--rw yang-datastore-source-params 333 | +--rw source-path yang:xpath1.0 334 +--:(prometheus) 335 +--rw prometheus-source-params 336 +--rw source-uri inet:uri 337 +--rw query-data? string 339 5.2. Meta Information of ALTO Server 341 The ALTO server instance contains the following basic configurations 342 for the server setup. 344 The hostname is the name that is used to access the ALTO server. It 345 will be also used in the URI of each information resource provided by 346 the ALTO server. 348 The cost type list is the registry for the cost types that can be 349 used in the ALTO server. 351 The meta list contains the customized meta data of the ALTO server. 352 It will be populated into the meta field of the default Information 353 Resource Directory (IRD). 355 TODO: As suggested by [RFC7286] and [RFC8686], the configuration 356 related to ALTO server discovery should also be included here. 358 module: ietf-alto 359 +--rw alto-server 360 +--rw hostname? inet:host 361 +--rw cost-type* [cost-type-name] 362 | +--rw cost-type-name string 363 | +--rw cost-mode cost-mode 364 | +--rw cost-metric cost-metric 365 +--rw meta* [meta-key] 366 | +--rw meta-key string 367 | +--rw meta-value string 368 ... 370 5.3. ALTO Information Resources Configuration Management 372 The ALTO server instance contains a list of resource entries. Each 373 resource entry contains the configurations of an ALTO information 374 resource (See Section 8.1 of [RFC7285]). The operator of the ALTO 375 server can use this model to create, update, and remove the ALTO 376 information resource. 378 Each resoruce entry provide configuration defining how to create or 379 update an ALTO information resource. Adding a new resource entry 380 will submit an ALTO information resource creation intent to the 381 intent system to create a new ALTO information resource. Updating an 382 existing resource entry will update the corresponding ALTO 383 information resource creation intent. Removing an existing resource 384 entry will remove the corresponding ALTO information resource 385 creation intent and also the created ALTO information resource. 387 The parameter of the intent interface defined by a resource entry 388 MUST include a unique resource-id and a resource-type. 390 It can also include an accepted-group node containing a list of user- 391 groups that can access this ALTO information resource. 393 As section 15.5.2 of [RFC7285] suggests, the module also defines 394 authentication related configuration to employ access control at 395 information resource level. The ALTO server returns the IRD to the 396 ALTO client based on its authentication information. 398 For some resource-type, the parameter of the intent interface MUST 399 also include the a dependency node containing the resource-id of the 400 dependent ALTO information resources (See Section 9.1.5 of 401 [RFC7285]). 403 For each type of ALTO information resource, the creation intent MAY 404 also need type-specific parameters. These type-specific parameters 405 include two categories: 407 1. One categories of the type-specific parameters are common for the 408 same type of ALTO information resource. They declare the 409 Capabilities of the ALTO information resource (See Section 9.1.3 410 of [RFC7285]). 412 2. The other categories of the type-specific parameters are 413 algorithm-specific. The developer of the ALTO server can 414 implement their own creation altorithms and augment the algorithm 415 node to declare algorithm-specific input parameters. 417 Except for the ird resource, all the other types of resource entries 418 have augmented algorithm node. The augmented algorithm node can 419 reference data sources subscribed by the data-source entries (See 420 Section 5.4). 422 The developer cannot customize the creation algorithm of the ird 423 resource. The default ird resource will be created automatically 424 based on all the added resource entries. The delegated ird resource 425 will be created as a static ALTO information resource (See 426 Section 9.2.4 of [RFC7285]). 428 module: ietf-alto 429 +--rw alto-server 430 ... 431 +--rw resource* [resource-id] 432 | +--rw resource-id resource-id 433 | +--rw resource-type identityref 434 | +--rw description? string 435 | +--rw accepted-group* string 436 | +--rw dependency* resource-id 437 | +--rw auth 438 | | +--rw (auth-type-selection)? 439 | | +--:(auth-key-chain) 440 | | | +--rw key-chain? key-chain:key-chain-ref 441 | | +--:(auth-key) 442 | | +--:(auth-tls) 443 | +--rw (resource-params)? 444 | +--:(ird) 445 | | +--rw alto-ird-params 446 | | +--rw delegation inet:uri 447 | +--:(networkmap) 448 | | +--rw alto-networkmap-params 449 | | +--rw is-default? boolean 450 | | +--rw filtered? boolean 451 | | +--rw (algorithm) 452 | +--:(costmap) 453 | | +--rw alto-costmap-params 454 | | +--rw filtered? boolean 455 | | +--rw cost-type-names* string 456 | | +--rw cost-constraints? boolean 457 | | +--rw max-cost-types? uint32 {multi-cost}? 458 | | +--rw testable-cost-type-names* string {multi-cost}? 459 | | +--rw calendar-attributes {cost-calendar}? 460 | | | +--rw cost-type-names* string 461 | | | +--rw time-interval-size decimal64 462 | | | +--rw number-of-intervals uint32 463 | | +--rw (algorithm) 464 | +--:(endpointcost) 465 | | +--rw alto-endpointcost-params 466 | | +--rw cost-type-names* string 467 | | +--rw cost-constraints? boolean 468 | | +--rw max-cost-types? uint32 {multi-cost}? 469 | | +--rw testable-cost-type-names* string {multi-cost}? 470 | | +--rw calendar-attributes {cost-calendar}? 471 | | | +--rw cost-type-names* string 472 | | | +--rw time-interval-size decimal64 473 | | | +--rw number-of-intervals uint32 474 | | +--rw (algorithm) 475 | +--:(endpointprop) 476 | | +--rw alto-endpointprop-params 477 | | +--rw prop-types* string 478 | | +--rw (algorithm) 479 | +--:(propmap) {propmap}? 480 | | +--rw alto-propmap-params 481 | | +--rw (algorithm) 482 | +--:(cdni) {cdni}? 483 | | +--rw alto-cdni-params 484 | | +--rw (algorithm) 485 | +--:(update) {incr-update}? 486 | +--rw alto-update-params 487 | +--rw (algorithm) 488 ... 490 5.4. Data Sources 492 The ALTO server instance contains a list of data-source entries to 493 subscribe the data sources from which ALTO information resources are 494 derived (See Section 16.2.4 of [RFC7285]). 496 A data-source entry MUST include: 498 * a unique source-id for resource creation algorithms to reference, 500 * the source-type attribute to declare the type of the data source, 502 * the update-policy to specify how to get the data update from the 503 data source, 505 * the source-params to specify where and how to query the data. 507 The update policy can be either reactive or proactive. For the 508 reactive update, the ALTO server gets the update as soon as the data 509 source changes. For the proactive update, the ALTO server has to 510 proactively fetch the data source periodically. 512 To use the reactive update, the reactive attribute MUST be set true. 513 To use the proactive update, the poll-interval attribute MUST be 514 greater than zero. The value of poll-interval specifies the interval 515 of fetching the data in milliseconds. If reactive is false or poll- 516 interval is zero, the ALTO server will not update the data source. 518 The data-source/source-params node can be augmented for different 519 types of data sources. This data model only includes import 520 interfaces for a list of predefined data sources. More data sources 521 can be supported by future documents and other third-party providers. 523 module: ietf-alto 524 +--rw alto-server 525 ... 526 +--rw data-source* [source-id] 527 +--rw source-id string 528 +--rw source-type identityref 529 +--rw (update-policy) 530 | +--:(reactive) 531 | | +--rw reactive boolean 532 | +--:(proactive) 533 | +--rw poll-interval uint32 534 +--rw (source-params)? 535 +--:(yang-datastore) 536 | +--rw yang-datastore-source-params 537 | +--rw source-path yang:xpath1.0 538 +--:(prometheus) 539 +--rw prometheus-source-params 540 +--rw source-uri inet:uri 541 +--rw query-data? string 543 Note: Current source configuration still has limitations. It should 544 be revised to support more general southbound and data retrieval 545 mechanisms. 547 5.4.1. Yang DataStore Data Source 549 The yang-datastore-source-params is used to import the YANG data 550 which is located in the same YANG model-driven data store supplying 551 the current ALTO O&M data model. The source-path is used to specify 552 the XPath of the data source node. 554 5.4.2. Prometheus Data Source 556 The prometheus-source-params is used to import common performance 557 metrics data which is provided by a Prometheus server. The source- 558 uir is used to establish the connection with the Prometheus server. 559 The query-data is used to speficify the potential query expression in 560 PromQL. 562 5.5. Model for ALTO Server-to-server Communication 564 TBD. 566 6. Design of ALTO O&M Statistics Data Model 568 As section 16.2.5 of [RFC7285] suggests, the YANG data module defined 569 in this document also contains statistics for ALTO-specific 570 performance metrics. 572 More specifically, this data model contains the following measurement 573 information suggested by [RFC7971]: 575 * Measurement of impact 577 - Total amount and distribution of traffic 579 - Application performance 581 * System and service performance 583 - Requests and responses for each information resource 585 - CPU and memory utilization 587 - ALTO map updates 589 - Number of PIDs 591 - ALTO map sizes 593 Besides the measurement information suggested by [RFC7971], this data 594 model also contains useful measurement information for other ALTO 595 extensions: 597 * Number of generic ALTO entities (for 598 [I-D.ietf-alto-unified-props-new] and 599 [I-D.ietf-alto-cdni-request-routing-alto]) 601 * Statistics for update sessions and events (for [RFC8189]) 603 * Statistics for calendar (for [RFC8896]) 605 The module, "ietf-alto-stats", augments the ietf-alto module to 606 include statistics at the ALTO server and information resource level. 608 module: ietf-alto-stats 610 augment /alto:alto-server/alto:resource: 611 +--ro num-res-upd? yang:counter32 612 +--ro res-mem-size? yang:counter32 613 +--ro res-enc-size? yang:counter32 615 augment /alto:alto-server/alto:resource/alto:resource-params 616 /alto:networkmap/alto:alto-networkmap-params: 617 +--ro num-map-pid? yang:counter32 619 augment /alto:alto-server/alto:resource/alto:resource-params 620 /alto:propmap/alto:alto-propmap-params: 621 +--ro num-map-entry? yang:counter32 623 augment /alto:alto-server/alto:resource/alto:resource-params 624 /alto:cdni/alto:alto-cdni-params: 625 +--ro num-base-obj? yang:counter32 627 augment /alto:alto-server/alto:resource/alto:resource-params 628 /alto:update/alto:alto-update-params: 629 +--ro num-upd-sess yang:counter32 630 +--ro num-event-total yang:counter32 631 +--ro num-event-max? yang:counter32 632 +--ro num-event-min? yang:counter32 633 +--ro num-event-avg? yang:counter32 635 7. Extension of ALTO O&M Data Model 637 As ALTO protocol is extensible, new protocol extensions can be 638 developed after this data model is published. To support future ALTO 639 protocol extensions, the extension documents can augment the existing 640 cases of the resource-params choice with new configuration parameters 641 for existing ALTO information resource extensions, or augment the 642 resource-params with new cases for new ALTO information resources. 644 Developers and operators can also extend this ALTO O&M data model to 645 align with their own implementations. Specifically, the following 646 nodes of the data model can be augmented: 648 * The algorithm choice of the resource-params of each resource. 650 * The data-source choice. 652 The following example shows how the developer augments the algorithm 653 choice of alto-networkmap-params with a creation algorithm for the 654 network map resource. 656 module: example-ietf-alto-alg 658 augment /alto:alto-server/alto:resource/alto:resource-params 659 /alto:networkmap/alto:alto-networkmap-params 660 /alto:algorithm: 661 +--:(l3-unicast-cluster) 662 +--rw l3-unicast-cluster-algorithm 663 +--rw l3-unicast-topo 664 | -> /alto:alto-server/data-source/source-id 665 +--rw depth? uint32 667 This example defines a creation algorithm called l3-unicast-cluster- 668 algorithm for the network map resource. It takes two algorithm- 669 specific parameters: 671 l3-unicast-topo This parameter refers to the source id of a data 672 source node subscribed in the data-source list (See Section 5.4). 673 The corresponding data source is assumed to be an internel data 674 source (See Section 5.4.1) for an IETF layer 3 unicast topology 675 defined in [RFC8346]. The algorithm uses the topology data from 676 this data source to compute the ALTO network map resource. 678 depth This optional parameter sets the depth of the clustering 679 algorithm. For example, if the depth sets to 1, the algorithm 680 will generate PID for every l3-node in the topology. 682 The creation algorithm can be reactively called once the referenced 683 data source updates. Therefore, the ALTO network map resource can be 684 updated dynamically. The update of the reference data source depends 685 on the used update-policy (See Section 5.4). 687 8. ALTO OAM YANG Module 689 8.1. The ietf-alto Module 691 file "ietf-alto@2022-03-07.yang" 692 module ietf-alto { 693 yang-version 1.1; 694 namespace 695 "urn:ietf:params:xml:ns:yang:ietf-alto"; 696 prefix "alto"; 698 import ietf-inet-types { 699 prefix "inet"; 700 reference 701 "RFC 6991: Common YANG Data Types"; 702 } 703 import ietf-yang-types { 704 prefix "yang"; 705 reference 706 "RFC 6991: Common YANG Data Types"; 707 } 709 import ietf-key-chain { 710 prefix key-chain; 711 reference 712 "RFC 8177: YANG Data Model for Key Chains"; 713 } 715 organization 716 "IETF ALTO Working Group"; 718 contact 719 "WG Web: 720 WG List: "; 722 description 723 "This YANG module defines all the configured and operational 724 parameters of the administrated ALTO server instance. 726 Copyright (c) 2022 IETF Trust and the persons identified as 727 authors of the code. All rights reserved. 729 Redistribution and use in source and binary forms, with or 730 without modification, is permitted pursuant to, and subject to 731 the license terms contained in, the Revised BSD License set 732 forth in Section 4.c of the IETF Trust's Legal Provisions 733 Relating to IETF Documents 734 (https://trustee.ietf.org/license-info). 736 This version of this YANG module is part of RFC XXXX 737 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 738 for full legal notices. 740 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 741 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 742 'MAY', and 'OPTIONAL' in this document are to be interpreted as 743 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 744 they appear in all capitals, as shown here."; 746 revision "2022-03-07" { 747 description 748 "Initial Version."; 749 reference 750 "RFC XXXX: A YANG Data Model for OAM and Management of ALTO 751 Protocol."; 752 } 754 typedef cost-mode { 755 type enumeration { 756 enum numerical { 757 value 1; 758 description 759 "This mode indicates that it is safe to perform numerical 760 operations"; 761 } 762 enum ordinal { 763 value 2; 764 description 765 "This mode indicates that the cost values in a cost map 766 represent ranking"; 767 } 768 } 769 description 770 "The cost mode attribute indicates how costs should be 771 interpreted. Specifically, the cost mode attribute indicates 772 whether returned costs should be interpreted as numerical 773 values or ordinal rankings."; 774 reference 775 "Section 6.1.2 of RFC 7285."; 776 } 778 typedef cost-metric { 779 type string; 780 description 781 "The cost metric attribute indicates what the cost 782 represents."; 783 reference 784 "Section 6.1.1 of RFC 7285."; 785 } 787 typedef resource-id { 788 type string { 789 length "1..64"; 790 pattern "[0-9a-zA-Z\\-:@_]*"; 791 } 792 description 793 "Format of Resource ID"; 794 reference 795 "Section 9.1.1 of RFC 7285."; 796 } 798 identity resource-types { 799 description 800 "Base identity for type of information resource."; 801 } 803 identity source-types { 804 description 805 "Base identity for type of data source."; 806 } 808 identity network-map { 809 base resource-types; 810 description 811 "Identity for network map."; 812 } 814 identity cost-map { 815 base resource-types; 816 description 817 "Identity for cost map."; 818 } 820 identity property-map { 821 base resource-types; 822 description 823 "Identity for property map."; 824 } 826 identity yang-datastore { 827 base source-types; 828 description 829 "Identity for data source of YANG-based datastore."; 830 } 832 identity prometheus { 833 base source-types; 834 description 835 "Identity for data source of prometheus system."; 836 } 838 feature multi-cost { 839 description 840 "Support multi-cost extension."; 841 reference 842 "RFC 8189: Multi-Cost Application-Layer Traffic Optimization 843 (ALTO)"; 844 } 846 feature cost-calendar { 847 description 848 "Support cost calendar extension."; 849 reference 850 "RFC 8896: Application-Layer Traffic Optimization (ALTO) Cost 851 Calendar"; 852 } 854 feature propmap { 855 description 856 "Support entity property map extension."; 857 reference 858 "RFC XXXX: An ALTO Extension: Entity Property Maps"; 859 } 861 feature cdni { 862 description 863 "Support CDNi extension."; 864 reference 865 "RFC XXXX: Content Delivery Network Interconnection (CDNI) 866 Request Routing: CDNI Footprint and Capabilities 867 Advertisement using ALTO"; 868 } 870 feature incr-update { 871 description 872 "Support incremental update extension."; 873 reference 874 "RFC 8896: Application-Layer Traffic Optimization (ALTO) 875 Incremental Updates Using Server-Sent Events (SSE)"; 876 } 878 grouping filt-costmap-cap { 879 description 880 "This grouping defines data model for 881 FilteredCostMapCapabilities."; 882 reference 883 "Sec 11.3.2.4 of RFC 7285."; 884 leaf-list cost-type-names { 885 type string; 886 min-elements 1; 887 description 888 "Supported cost types"; 889 } 890 leaf cost-constraints { 891 type boolean; 892 description 893 "If true, then the ALTO server allows cost 894 constraints to be included in requests to the 895 corresponding URI. If not present, this field MUST 896 be interpreted as if it specified false."; 897 } 898 leaf max-cost-types { 899 if-feature "multi-cost"; 900 type uint32; 901 default 0; 902 description 903 "If present with value N greater than 0, this resource 904 understands the multi-cost extensions in this document and 905 can return a multi-cost map with any combination of N or 906 fewer cost types in the 'cost-type-names' list. If omitted, 907 the default value is 0."; 908 } 909 leaf-list testable-cost-type-names { 910 if-feature "multi-cost"; 911 type string; 912 description 913 "If present, the resource allows constraint tests, but only 914 on the cost type names in this array."; 915 } 916 container calendar-attributes { 917 if-feature "cost-calendar"; 918 leaf-list cost-type-names { 919 type string; 920 min-elements 1; 921 description 922 "An array of one or more elements indicating the cost type 923 names in the IRD entry to which the values of 924 'time-interval-size' and 'number-of-intervals' apply."; 925 } 926 leaf time-interval-size { 927 type decimal64 { 928 fraction-digits 4; 929 } 930 mandatory true; 931 description 932 "The duration of an ALTO Calendar time interval in a unit 933 of seconds."; 934 } 935 leaf number-of-intervals { 936 type uint32 { 937 range "1..max"; 938 } 939 mandatory true; 940 description 941 "A strictly positive integer (greater or equal to 1) that 942 indicates the number of values of the Cost Calendar 943 array."; 944 } 945 description 946 "Configuration for CalendarAttributes."; 947 reference 948 "Section 4.1 of RFC 8896."; 949 } 950 } 952 grouping algorithm { 953 choice algorithm { 954 mandatory true; 955 description 956 "Information resource creation algorithm to be augmented."; 957 } 958 description 959 "This grouping defines base data model for information 960 resource creation algorithm."; 961 } 963 container alto-server { 964 description 965 "The ALTO server instance."; 966 leaf hostname { 967 type inet:host; 968 description 969 "The name that is used to access the ALTO server."; 970 } 971 list cost-type { 972 key "cost-type-name"; 973 leaf cost-type-name { 974 type string; 975 description 976 "The name to reference cost type"; 977 } 978 leaf cost-mode { 979 type cost-mode; 980 mandatory true; 981 description 982 "The referenced cost mode"; 983 } 984 leaf cost-metric { 985 type cost-metric; 986 mandatory true; 987 description 988 "The referenced cost metric"; 989 } 990 description 991 "Mapping between name and referenced cost type"; 992 } 993 list meta { 994 key "meta-key"; 995 leaf meta-key { 996 type string; 997 description 998 "Custom meta key"; 999 } 1000 leaf meta-value { 1001 type string; 1002 mandatory true; 1003 description 1004 "Custom meta value"; 1005 } 1006 description 1007 "Mapping of custom meta information"; 1008 reference 1009 "Section 8.4.1 of RFC 7285."; 1010 } 1011 list resource { 1012 key "resource-id"; 1013 leaf resource-id { 1014 type resource-id; 1015 description 1016 "resource-id to be defined."; 1017 } 1018 leaf resource-type { 1019 type identityref { 1020 base resource-types; 1021 } 1022 mandatory true; 1023 description 1024 "identityref to be defined."; 1025 } 1026 leaf description { 1027 type string; 1028 description 1029 "The optional description for this information resource."; 1030 } 1031 leaf-list accepted-group { 1032 type string; 1033 description 1034 "Access list for authenticated clients."; 1035 } 1036 leaf-list dependency { 1037 type resource-id; 1038 description 1039 "A list of dependent information resources."; 1040 } 1041 container auth { 1042 description 1043 "The authentication options"; 1044 choice auth-type-selection { 1045 description 1046 "Options for expressing authentication 1047 setting."; 1048 case auth-key-chain { 1049 leaf key-chain { 1050 type key-chain:key-chain-ref; 1051 description 1052 "key-chain name."; 1053 } 1054 } 1055 case auth-key { 1056 } 1057 case auth-tls { 1058 } 1059 } 1060 } 1061 choice resource-params { 1062 description 1063 "Resource-specific configuration."; 1064 case ird { 1065 container alto-ird-params { 1066 leaf delegation { 1067 type inet:uri; 1068 mandatory true; 1069 description 1070 "Upstream IRD to be delegated"; 1071 } 1072 description 1073 "IRD-specific configuration"; 1074 } 1075 } 1076 case networkmap { 1077 container alto-networkmap-params { 1078 description 1079 "(Filtered) Network Map specific configuration"; 1080 reference 1081 "Section 11.2.1 and Section 11.3.1 of RFC 7285."; 1082 leaf is-default { 1083 type boolean; 1084 description 1085 "Set whether this is the default network map"; 1086 } 1087 leaf filtered { 1088 type boolean; 1089 default false; 1090 description 1091 "Configure whether filtered network map is 1092 supported."; 1093 } 1094 uses algorithm; 1095 } 1096 } 1097 case costmap { 1098 container alto-costmap-params { 1099 description 1100 "(Filtered) Cost Map specific configuration"; 1101 reference 1102 "Section 11.2.2 and Section 11.3.2 of RFC 7285."; 1103 leaf filtered { 1104 type boolean; 1105 description 1106 "Configure whether filtered cost map is supported."; 1107 } 1108 uses filt-costmap-cap; 1109 uses algorithm; 1110 } 1111 } 1112 case endpointcost { 1113 container alto-endpointcost-params { 1114 description 1115 "Endpoint Cost Service specific configuration"; 1116 reference 1117 "Section 11.5 of RFC 7285"; 1118 uses filt-costmap-cap; 1119 uses algorithm; 1120 } 1121 } 1122 case endpointprop { 1123 container alto-endpointprop-params { 1124 description 1125 "Endpoint Cost Service specific configuration"; 1126 reference 1127 "Section 11.5 of RFC 7285"; 1128 leaf-list prop-types { 1129 type string; 1130 min-elements 1; 1131 description 1132 "Supported endpoint properties."; 1133 } 1134 uses algorithm; 1136 } 1137 } 1138 case propmap { 1139 if-feature "propmap"; 1140 container alto-propmap-params { 1141 uses algorithm; 1142 description 1143 "(Filtered) Entity Property Map specific 1144 configuration"; 1145 } 1146 } 1147 case cdni { 1148 if-feature "cdni"; 1149 container alto-cdni-params { 1150 uses algorithm; 1151 description 1152 "CDNi specific configuration"; 1153 } 1154 } 1155 case update { 1156 if-feature "incr-update"; 1157 container alto-update-params { 1158 uses algorithm; 1159 description 1160 "Incremental Updates specific configuration"; 1161 } 1162 } 1163 } 1164 description 1165 "ALTO information resources to be defined"; 1166 } 1167 list data-source { 1168 key "source-id"; 1169 leaf source-id { 1170 type string; 1171 description 1172 "Data source id that can be referenced by information 1173 resource creation algorithms."; 1174 } 1175 leaf source-type { 1176 type identityref { 1177 base source-types; 1178 } 1179 mandatory true; 1180 description 1181 "Source-type to be defined"; 1182 } 1183 choice update-policy { 1184 mandatory true; 1185 case reactive { 1186 leaf reactive { 1187 type boolean; 1188 mandatory true; 1189 description 1190 "Reactive mode"; 1191 } 1192 } 1193 case proactive { 1194 leaf poll-interval { 1195 type uint32; 1196 mandatory true; 1197 description 1198 "Polling interval in seconds for proactive mode"; 1199 } 1200 } 1201 description 1202 "Policy to get updates from data sources"; 1203 } 1204 choice source-params { 1205 case yang-datastore { 1206 container yang-datastore-source-params { 1207 leaf source-path { 1208 type yang:xpath1.0; 1209 mandatory true; 1210 description 1211 "XPath to subscribed YANG datastore node"; 1212 } 1213 description 1214 "YANG datastore specific configuration"; 1215 } 1216 } 1217 case prometheus { 1218 container prometheus-source-params { 1219 leaf source-uri { 1220 type inet:uri; 1221 mandatory true; 1222 description 1223 "URI to prometheus agent"; 1224 } 1225 leaf query-data { 1226 type string; 1227 description 1228 "Query expression"; 1229 } 1230 description 1231 "Prometheus specific configuration"; 1233 } 1234 } 1235 description 1236 "Data source specific configuration"; 1237 } 1238 description 1239 "List of subscribed data sources."; 1240 } 1241 } 1242 } 1243 1245 8.2. The ietf-alto-stats Module 1247 file "ietf-alto-stats@2022-03-07.yang" 1248 module ietf-alto-stats { 1249 yang-version 1.1; 1250 namespace 1251 "urn:ietf:params:xml:ns:yang:ietf-alto-stats"; 1252 prefix "alto-stats"; 1254 import ietf-yang-types { 1255 prefix "yang"; 1256 reference 1257 "RFC 6991: Common YANG Data Types"; 1258 } 1260 import ietf-alto { 1261 prefix alto; 1262 reference 1263 "RFC XXXX: A YANG Data Model for OAM and Management of ALTO 1264 Protocol."; 1265 } 1267 organization 1268 "IETF ALTO Working Group"; 1270 contact 1271 "WG Web: 1272 WG List: "; 1274 description 1275 "This YANG module defines all the configured and operational 1276 parameters of the administrated ALTO server instance. 1278 Copyright (c) 2022 IETF Trust and the persons identified as 1279 authors of the code. All rights reserved. 1281 Redistribution and use in source and binary forms, with or 1282 without modification, is permitted pursuant to, and subject to 1283 the license terms contained in, the Revised BSD License set 1284 forth in Section 4.c of the IETF Trust's Legal Provisions 1285 Relating to IETF Documents 1286 (https://trustee.ietf.org/license-info). 1288 This version of this YANG module is part of RFC XXXX 1289 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 1290 for full legal notices."; 1292 revision "2022-03-07" { 1293 description 1294 "Initial Version."; 1295 reference 1296 "RFC XXXX: A YANG Data Model for Operations, Administration, 1297 and Maintenance of ALTO Protocol."; 1298 } 1300 augment "/alto:alto-server/alto:resource" { 1301 description 1302 "Common statistics for each information resource."; 1303 leaf num-res-upd { 1304 type yang:counter32; 1305 config false; 1306 description 1307 "The number of version updates since the information resource 1308 was created."; 1309 } 1310 leaf res-mem-size { 1311 type yang:counter32; 1312 config false; 1313 description 1314 "Memory size (Bytes) utilized by the information resource."; 1315 } 1316 leaf res-enc-size { 1317 type yang:counter32; 1318 config false; 1319 description 1320 "Size (Bytes) of JSON encoded data of the information 1321 resource."; 1322 } 1323 } 1325 augment "/alto:alto-server/alto:resource/alto:resource-params" 1326 + "/alto:networkmap/alto:alto-networkmap-params" { 1327 description 1328 "Augmented statistics for network maps only."; 1330 leaf num-map-pid { 1331 type yang:counter32; 1332 config false; 1333 description 1334 "Number of PIDs contained by the network map."; 1335 } 1336 } 1338 augment "/alto:alto-server/alto:resource/alto:resource-params" 1339 + "/alto:propmap/alto:alto-propmap-params" { 1340 description 1341 "Augmented statistics for property maps only."; 1342 leaf num-map-entry { 1343 type yang:counter32; 1344 config false; 1345 description 1346 "Number of ALTO entities contained by the property map."; 1347 } 1348 } 1350 augment "/alto:alto-server/alto:resource/alto:resource-params" 1351 + "/alto:cdni/alto:alto-cdni-params" { 1352 description 1353 "Augmented statistics for CDNi resources only."; 1354 leaf num-base-obj { 1355 type yang:counter32; 1356 config false; 1357 description 1358 "Number of base CDNi advertisement objects contained by the 1359 CDNi resource."; 1360 } 1361 } 1363 augment "/alto:alto-server/alto:resource/alto:resource-params" 1364 + "/alto:update/alto:alto-update-params" { 1365 description 1366 "Augmented statistics for incremental updates only."; 1367 leaf num-upd-sess { 1368 type yang:counter32; 1369 config false; 1370 description 1371 "Number of sessions connected to the incremental update 1372 service."; 1373 } 1374 leaf num-event-total { 1375 type yang:counter32; 1376 config false; 1377 description 1378 "Total number of update events sent to all the connected 1379 clients."; 1380 } 1381 leaf num-event-max { 1382 type yang:counter32; 1383 config false; 1384 description 1385 "The maximum number of update events sent to the connected 1386 clients."; 1387 } 1388 leaf num-event-min { 1389 type yang:counter32; 1390 config false; 1391 description 1392 "The minimum number of update events sent to the connected 1393 clients."; 1394 } 1395 leaf num-event-avg { 1396 type yang:counter32; 1397 config false; 1398 description 1399 "The average number of update events sent to the connected 1400 clients."; 1401 } 1402 } 1403 } 1404 1406 9. Security Considerations 1408 TBD. 1410 10. IANA Considerations 1412 This document registers two URIs in the "IETF XML Registry" 1413 [RFC3688]. Following the format in RFC 3688, the following 1414 registrations are requested. 1416 URI: urn:ietf:params:xml:ns:yang:ietf-alto 1417 Registrant Contact: The IESG. 1418 XML: N/A; the requested URI is an XML namespace. 1420 URI: urn:ietf:params:xml:ns:yang:ietf-alto-stats 1421 Registrant Contact: The IESG. 1422 XML: N/A; the requested URI is an XML namespace. 1424 This document registers two YANG modules in the "YANG Module Names" 1425 registry [RFC6020]. 1427 Name: ietf-alto 1428 Namespace: urn:ietf:params:xml:ns:yang:ietf-alto 1429 Prefix: alto 1430 Reference: [RFCthis] 1432 Name: ietf-alto-stats 1433 Namespace: urn:ietf:params:xml:ns:yang:ietf-alto-stats 1434 Prefix: alto 1435 Reference: [RFCthis] 1437 [RFC Editor: Please replace RFCthis with the published RFC number for 1438 this document.] 1440 11. References 1442 11.1. Normative References 1444 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1445 Requirement Levels", BCP 14, RFC 2119, 1446 DOI 10.17487/RFC2119, March 1997, 1447 . 1449 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1450 DOI 10.17487/RFC3688, January 2004, 1451 . 1453 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1454 the Network Configuration Protocol (NETCONF)", RFC 6020, 1455 DOI 10.17487/RFC6020, October 2010, 1456 . 1458 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1459 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1460 . 1462 [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., 1463 Previdi, S., Roome, W., Shalunov, S., and R. Woundy, 1464 "Application-Layer Traffic Optimization (ALTO) Protocol", 1465 RFC 7285, DOI 10.17487/RFC7285, September 2014, 1466 . 1468 [RFC7286] Kiesel, S., Stiemerling, M., Schwan, N., Scharf, M., and 1469 H. Song, "Application-Layer Traffic Optimization (ALTO) 1470 Server Discovery", RFC 7286, DOI 10.17487/RFC7286, 1471 November 2014, . 1473 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1474 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1475 May 2017, . 1477 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 1478 Zhang, "YANG Data Model for Key Chains", RFC 8177, 1479 DOI 10.17487/RFC8177, June 2017, 1480 . 1482 [RFC8189] Randriamasy, S., Roome, W., and N. Schwan, "Multi-Cost 1483 Application-Layer Traffic Optimization (ALTO)", RFC 8189, 1484 DOI 10.17487/RFC8189, October 2017, 1485 . 1487 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1488 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1489 . 1491 [RFC8686] Kiesel, S. and M. Stiemerling, "Application-Layer Traffic 1492 Optimization (ALTO) Cross-Domain Server Discovery", 1493 RFC 8686, DOI 10.17487/RFC8686, February 2020, 1494 . 1496 [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic 1497 Optimization (ALTO) Incremental Updates Using Server-Sent 1498 Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November 1499 2020, . 1501 [RFC8896] Randriamasy, S., Yang, R., Wu, Q., Deng, L., and N. 1502 Schwan, "Application-Layer Traffic Optimization (ALTO) 1503 Cost Calendar", RFC 8896, DOI 10.17487/RFC8896, November 1504 2020, . 1506 11.2. Informative References 1508 [I-D.ietf-alto-cdni-request-routing-alto] 1509 Seedorf, J., Yang, Y. R., Ma, K. J., Peterson, J., and J. 1510 J. Zhang, "Content Delivery Network Interconnection (CDNI) 1511 Request Routing: CDNI Footprint and Capabilities 1512 Advertisement using ALTO", Work in Progress, Internet- 1513 Draft, draft-ietf-alto-cdni-request-routing-alto-22, 16 1514 February 2022, . 1517 [I-D.ietf-alto-path-vector] 1518 Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J. 1519 Zhang, "An ALTO Extension: Path Vector", Work in Progress, 1520 Internet-Draft, draft-ietf-alto-path-vector-24, 7 March 1521 2022, . 1524 [I-D.ietf-alto-performance-metrics] 1525 Wu, Q., Yang, Y. R., Lee, Y., Dhody, D., Randriamasy, S., 1526 and L. M. C. Murillo, "ALTO Performance Cost Metrics", 1527 Work in Progress, Internet-Draft, draft-ietf-alto- 1528 performance-metrics-26, 2 March 2022, 1529 . 1532 [I-D.ietf-alto-unified-props-new] 1533 Roome, W., Randriamasy, S., Yang, Y. R., Zhang, J. J., and 1534 K. Gao, "An ALTO Extension: Entity Property Maps", Work in 1535 Progress, Internet-Draft, draft-ietf-alto-unified-props- 1536 new-24, 28 February 2022, 1537 . 1540 [RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. 1541 Nadeau, "An Architecture for the Interface to the Routing 1542 System", RFC 7921, DOI 10.17487/RFC7921, June 2016, 1543 . 1545 [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and 1546 S. Previdi, "Application-Layer Traffic Optimization (ALTO) 1547 Deployment Considerations", RFC 7971, 1548 DOI 10.17487/RFC7971, October 2016, 1549 . 1551 [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., 1552 Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model 1553 for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, 1554 March 2018, . 1556 Appendix A. Example Module for Information Resource Creation Algorithm 1558 The base data model defined by ietf-alto.yang does not include any 1559 choice cases for information resource creation algorithms. But 1560 developers may augment the ietf-alto.yang data model with definitions 1561 for any custom creation algorithms for different information 1562 resources. The following example module demonstrates the parameters 1563 of a network map creation algorithm that translates an IETF layer 3 1564 unicast topology into a network map. 1566 module example-ietf-alto-alg { 1568 namespace "urn:example:ietf-alto-alg"; 1569 prefix "alto-alg"; 1571 import ietf-alto { 1572 prefix "alto"; 1573 } 1575 augment "/alto:alto-server/alto:resource/alto:resource-params" 1576 + "/alto:networkmap/alto:alto-networkmap-params" 1577 + "/alto:algorithm" { 1578 case l3-unicast-cluster { 1579 container l3-unicast-cluster-algorithm { 1580 leaf l3-unicast-topo { 1581 type leafref { 1582 path "/alto:alto-server/data-source/source-id"; 1583 } 1584 mandatory true; 1585 description 1586 "The data source to an IETF layer 3 unicast topology."; 1587 } 1588 leaf depth { 1589 type uint32; 1590 description 1591 "The depth of the clustering."; 1592 } 1593 } 1594 } 1595 } 1596 } 1598 Acknowledgements 1600 The authors thank Qiufang Ma and Qin Wu for their help with drafting 1601 the initial version of the YANG modules. Thanks also to Adrian 1602 Farrel, Qiao Xiang, Qin Wu, and Qiufang Ma for their reviews and 1603 valuable feedback. 1605 Authors' Addresses 1607 Jingxuan Jensen Zhang 1608 Tongji University 1609 4800 Cao'An Hwy 1610 Shanghai 1611 201804 1612 China 1613 Email: jingxuan.n.zhang@gmail.com 1614 Dhruv Dhody 1615 Huawei Technologies 1616 Divyashree Techno Park, Whitefield 1617 Bangalore 560066 1618 Karnataka 1619 India 1620 Email: dhruv.ietf@gmail.com 1622 Kai Gao 1623 Sichuan University 1624 No.24 South Section 1, Yihuan Road 1625 Chengdu 1626 610000 1627 China 1628 Email: kaigao@scu.edu.cn 1630 Roland Schott 1631 Deutsche Telekom 1632 Heinrich-Hertz-Strasse 3-7 1633 64295 Darmstadt 1634 Germany 1635 Email: Roland.Schott@telekom.de