idnits 2.17.1 draft-ietf-alto-cdni-request-routing-alto-03.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 : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([RFC8008], [RFC7336]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 401: '... the network map MUST be included in "...' RFC 2119 keyword, line 403: '...sources, "Uses" field MUST NOT appear....' RFC 2119 keyword, line 408: '...FCI map response MUST include the "vta...' RFC 2119 keyword, line 411: '... network map, it MUST include the "dep...' RFC 2119 keyword, line 435: '... The ALTO client MUST interpret footpr...' (13 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 18, 2018) is 2138 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) ** Downref: Normative reference to an Informational RFC: RFC 5693 ** Downref: Normative reference to an Informational RFC: RFC 6707 ** Downref: Normative reference to an Informational RFC: RFC 7336 -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO3166-1' == Outdated reference: A later version (-22) exists of draft-ietf-alto-incr-update-sse-07 == Outdated reference: A later version (-24) exists of draft-ietf-alto-unified-props-new-00 Summary: 5 errors (**), 0 flaws (~~), 3 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 CDNI J. Seedorf 3 Internet-Draft HFT Stuttgart - Univ. of Applied Sciences 4 Intended status: Standards Track Y. Yang 5 Expires: December 20, 2018 Tongji/Yale 6 K. Ma 7 Ericsson 8 J. Peterson 9 Neustar 10 X. Lin 11 Tongji 12 June 18, 2018 14 Content Delivery Network Interconnection (CDNI) Request Routing: CDNI 15 Footprint and Capabilities Advertisement using ALTO 16 draft-ietf-alto-cdni-request-routing-alto-03 18 Abstract 20 The Content Delivery Networks Interconnection (CDNI) WG is defining a 21 set of protocols to inter-connect CDNs, to achieve multiple goals 22 such as extending the reach of a given CDN to areas that are not 23 covered by that particular CDN. One component that is needed to 24 achieve the goal of CDNI is the CDNI Request Routing Footprint & 25 Capabilities Advertisement interface (FCI) [RFC7336]. [RFC8008] has 26 defined precisely the semantics of FCI and provided guidelines on the 27 FCI protocol, but the exact protocol is explicitly outside the scope 28 of that document. In this document, we define an FCI protocol using 29 the Application-Layer Traffic Optimization (ALTO) protocol. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at http://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on December 20, 2018. 48 Copyright Notice 50 Copyright (c) 2018 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (http://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 67 2.1. Semantics of FCI Advertisement . . . . . . . . . . . . . 4 68 2.2. ALTO Background and Benefits . . . . . . . . . . . . . . 6 69 3. CDNI FCI Map . . . . . . . . . . . . . . . . . . . . . . . . 8 70 3.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 9 71 3.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 9 72 3.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 9 73 3.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 9 74 3.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 9 75 3.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 9 76 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 10 77 3.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 10 78 3.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 12 79 3.7.3. Incremental Updates Example . . . . . . . . . . . . . 13 80 4. CDNI FCI Map using ALTO Network Map . . . . . . . . . . . . . 15 81 4.1. Introduce Footprint Type: altonetworkmap . . . . . . . . 15 82 4.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 15 83 4.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 15 84 4.2.2. ALTO Network Map for CDNI FCI Footprints Example . . 15 85 4.2.3. ALTO Network Map Footprints in CDNI FCI Map . . . . . 16 86 4.2.4. Incremental Updates Example . . . . . . . . . . . . . 17 87 5. Filtered CDNI FCI Map using Capabilities . . . . . . . . . . 19 88 5.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 19 89 5.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 19 90 5.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 19 91 5.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 20 92 5.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 20 93 5.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 20 94 5.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 21 95 5.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 21 96 5.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 21 97 5.7.3. Incremental Updates Example . . . . . . . . . . . . . 22 98 6. Query Footprint Properties using ALTO Unified Property 99 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 100 6.1. Representing Footprint Objects as Unified Property Map 101 Entities . . . . . . . . . . . . . . . . . . . . . . . . 24 102 6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 25 103 6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 25 104 6.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 26 105 6.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 26 106 6.2.2. Property Map Example . . . . . . . . . . . . . . . . 26 107 6.2.3. Filtered Property Map Example . . . . . . . . . . . . 27 108 6.2.4. Incremental Updates Example . . . . . . . . . . . . . 28 109 7. Protocol Errors . . . . . . . . . . . . . . . . . . . . . . . 30 110 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 111 8.1. CDNI Metadata Footprint Type Registry . . . . . . . . . . 30 112 8.2. ALTO Entity Domain Registry . . . . . . . . . . . . . . . 31 113 8.3. ALTO CDNI FCI Property Type Registry . . . . . . . . . . 31 114 9. Security Considerations . . . . . . . . . . . . . . . . . . . 31 115 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 32 116 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 117 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 118 11.2. Informative References . . . . . . . . . . . . . . . . . 33 119 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 121 1. Introduction 123 Many Network Service Providers (NSPs) are currently considering or 124 have already started to deploy Content Delivery Networks (CDNs) 125 within their networks. As a consequence of this development, there 126 is a need for interconnecting these local CDNs. Content Delivery 127 Networks Interconnection (CDNI) has the goal of standardizing 128 protocols to enable such interconnection of CDNs [RFC6707]. 130 The CDNI problem statement [RFC6707] defines four interfaces to be 131 standardized within the IETF for CDN interconnection: 133 o CDNI Request Routing Interface 135 o CDNI Metadata Interface 137 o CDNI Logging Interface 139 o CDNI Control Interface 141 The main purpose of the CDNI Request Routing Interface is described 142 in [RFC6707] as follows: "The CDNI Request Routing interface enables 143 a Request Routing function in an Upstream CDN to query a Request 144 Routing function in a Downstream CDN to determine if the Downstream 145 CDN is able (and willing) to accept the delegated Content Request. 146 It also allows the Downstream CDN to control what should be returned 147 to the User Agent in the redirection message by the upstream Request 148 Routing function." On a high level, the scope of the CDNI Request 149 Routing Interface, therefore, contains two main tasks: 151 o determining if the downstream CDN (dCDN) is willing to accept a 152 delegated content request; 154 o redirecting the content request coming from an upstream CDN (uCDN) 155 to the proper entry point or entity in the downstream CDN. 157 Correspondingly, the request routing interface is broadly divided 158 into two functionalities: 160 o CDNI Footprint & Capabilities Advertisement interface (FCI): the 161 advertisement from a dCDN to a uCDN or a query from a uCDN to a 162 dCDN for the uCDN to decide whether to redirect particular user 163 requests to that dCDN; 165 o CDNI Request Routing Redirection interface (RI): the synchronous 166 operation of actually redirecting a user request. 168 This document focuses solely on CDNI FCI, with a goal to specify a 169 new Application-Layer Traffic Optimization (ALTO) [RFC7285] service 170 called "CDNI FCI Map Service", to transport and update CDNI FCI 171 objects, which are defined in a separate document in [RFC8008] and to 172 describe a mechanism for filtering CDNI FCI map on capabilities or 173 footprints. 175 Throughout this document, we use the terminology for CDNI defined in 176 [RFC6707] and [RFC8008]. 178 2. Background 180 The design of CDNI FCI transport using ALTO depends on understanding 181 of both FCI semantics and ALTO. Hence, we start with a review of 182 both. 184 2.1. Semantics of FCI Advertisement 186 The CDNI document on "Footprint and Capabilities Semantics" [RFC8008] 187 defines the semantics for the CDNI FCI. It thus provides guidance on 188 what Footprint and Capabilities mean in a CDNI context and how a 189 protocol solution should in principle look like. The definitions in 190 [RFC8008] depend on [RFC8006]. Here we briefly summarize key related 191 points of [RFC8008] and [RFC8006]. For a detailed discussion, the 192 reader is referred to the RFCs. 194 o Footprint and capabilities are tied together and cannot be 195 interpreted independently from each other. In such cases, i.e. 196 where capabilities must be expressed on a per footprint basis, it 197 may be beneficial to combine footprint and capabilities 198 advertisement. [RFC8008] integrates footprint and capabilities 199 with an approach of "capabilities with footprint restrictions". 201 o Given that a large part of Footprint and Capabilities 202 Advertisement will actually happen in contractual agreements, the 203 semantics of CDNI Footprint and Capabilities advertisement refer 204 to answering the following question: what exactly still needs to 205 be advertised by the CDNI FCI? For instance, updates about 206 temporal failures of part of a footprint can be useful information 207 to convey via the CDNI request routing interface. Such 208 information would provide updates on information previously agreed 209 in contracts between the participating CDNs. In other words, the 210 CDNI FCI is a means for a dCDN to provide changes/updates 211 regarding a footprint and/or capabilities it has prior agreed to 212 serve in a contract with a uCDN. Hence, server push and 213 incremental encoding will be necessary techniques. 215 o Multiple types of footprints are defined in [RFC8006]: 217 * List of ISO Country Codes 219 * List of AS numbers 221 * Set of IP-prefixes 223 A "set of IP-prefixes" must be able to contain full IP addresses, 224 i.e., a /32 for IPv4 and a /128 for IPv6, and also IP prefixes 225 with an arbitrary prefix length. There must also be support for 226 multiple IP address versions, i.e., IPv4 and IPv6, in such a 227 footprint. 229 o For all of these mandatory-to-implement footprint types, 230 footprints can be viewed as constraints for delegating requests to 231 a dCDN: A dCDN footprint advertisement tells the uCDN the 232 limitations for delegating a request to the dCDN. For IP prefixes 233 or ASN(s), the footprint signals to the uCDN that it should 234 consider the dCDN a candidate only if the IP address of the 235 request routing source falls within the prefix set (or ASN, 236 respectively). The CDNI specifications do not define how a given 237 uCDN determines what address ranges are in a particular ASN. 238 Similarly, for country codes, a uCDN should only consider the dCDN 239 a candidate if it covers the country of the request routing 240 source. The CDNI specifications do not define how a given uCDN 241 determines the country of the request routing source. Multiple 242 footprint constraints are additive, i.e. the advertisement of 243 different types of footprint narrows the dCDN candidacy 244 cumulatively. 246 o The following capabilities are defined as "base" capabilities, 247 i.e. ones that are needed in any case and therefore constitute 248 mandatory capabilities to be supported by the CDNI FCI: 250 * Delivery Protocol (e.g., HTTP vs. RTMP) 252 * Acquisition Protocol (for acquiring content from a uCDN) 254 * Redirection Mode (e.g., DNS Redirection vs. HTTP Redirection as 255 discussed in [RFC7336]) 257 * Capabilities related to CDNI Logging (e.g., supported logging 258 mechanisms) 260 * Capabilities related to CDNI Metadata (e.g., authorization 261 algorithms or support for proprietary vendor metadata) 263 2.2. ALTO Background and Benefits 265 Application-Layer Traffic Optimization (ALTO) [RFC7285] is an 266 approach for guiding the resource provider selection process in 267 distributed applications that can choose among several candidate 268 resources providers to retrieve a given resource. By conveying 269 network layer (topology) information, an ALTO server can provide 270 important information to "guide" the resource provider selection 271 process in distributed applications. Usually, it is assumed that an 272 ALTO server conveys information these applications cannot measure 273 themselves [RFC5693]. 275 Originally, ALTO was motivated by the huge amount of cross-ISP 276 traffic generated by P2P applications [RFC5693]. Recently, however, 277 ALTO is also being considered for improving the request routing in 278 CDNs [I-D.jenkins-alto-cdn-use-cases]. In this context, it has also 279 been proposed to use ALTO for selecting an entry-point in a 280 downstream NSP's network (see section 3.4 "CDN delivering Over-The- 281 Top of a NSP's network" in [I-D.jenkins-alto-cdn-use-cases]). Also, 282 the CDNI problem statement explicitly mentions ALTO as a candidate 283 protocol for "actual algorithms for selection of CDN or Surrogate by 284 Request-Routing systems" [RFC6707]. 286 The following reasons make ALTO a suitable candidate protocol for 287 downstream CDN selection as part of CDNI request routing and in 288 particular for an FCI protocol: 290 o CDN request routing is done at the application layer. ALTO is a 291 protocol specifically designed to improve application layer 292 traffic (and application layer connections among hosts on the 293 Internet) by providing additional information to applications that 294 these applications could not easily retrieve themselves. For 295 CDNI, this is exactly the case: a uCDN wants to improve 296 application layer CDN request routing by using dedicated 297 information (provided by a dCDN) that the uCDN could not easily 298 obtain otherwise. 300 o The semantics of an ALTO network map are an exact match for the 301 needed information to convey a footprint by a downstream CDN, in 302 particular if such a footprint is being expressed by IP-prefix 303 ranges. 305 o Security: ALTO maps can be signed and hence provide inherent 306 integrity protection (see Section 9). 308 o RESTful-Design: The ALTO protocol has undergone extensive 309 revisions in order to provide a RESTful design regarding the 310 client-server interaction specified by the protocol. A CDNI FCI 311 interface based on ALTO would inherit this RESTful design. 313 o Error-handling: The ALTO protocol has undergone extensive 314 revisions in order to provide sophisticated error-handling, in 315 particular regarding unexpected cases. A CDNI FCI interface based 316 on ALTO would inherit this thought-through and mature error- 317 handling. 319 o Filtered network map: The ALTO Map Filtering Service (see 320 [RFC7285] for details) would allow a uCDN to query only for parts 321 of an ALTO map. 323 o Server-initiated Notifications and Incremental Updates: In case 324 the footprint or the capabilities of a downstream CDN change 325 abruptly (i.e. unexpectedly from the perspective of an upstream 326 CDN), server-initiated notifications would enable a dCDN to 327 directly inform an upstream CDN about such changes. Consider the 328 case where - due to failure - part of the footprint of the dCDN is 329 not functioning, i.e. the CDN cannot serve content to such clients 330 with reasonable QoS. Without server-initiated notifications, the 331 uCDN might still use a very recent network and cost map from dCDN, 332 and therefore redirect requests to dCDN which it cannot serve. 333 Similarly, the possibility for incremental updates would enable 334 efficient conveyance of the aforementioned (or similar) status 335 changes by the dCDN to the uCDN. The newest design of ALTO 336 supports server pushed incremental updates 337 [I-D.ietf-alto-incr-update-sse]. 339 o Content Availability on Hosts: A dCDN might want to express CDN 340 capabilities in terms of certain content types (e.g. codecs/ 341 formats, or content from certain content providers). The new 342 endpoint property for ALTO would enable a dCDN to make such 343 information available to an upstream CDN. This would enable a 344 uCDN to determine if a given dCDN actually has the capabilities 345 for a given request with respect to the type of content requested. 347 o Resource Availability on Hosts or Links: The capabilities on links 348 (e.g. maximum bandwidth) or caches (e.g. average load) might be 349 useful information for an upstream CDN for optimized downstream 350 CDN selection. For instance, if a uCDN receives a streaming 351 request for content with a certain bitrate, it needs to know if it 352 is likely that a dCDN can fulfill such stringent application-level 353 requirements (i.e. can be expected to have enough consistent 354 bandwidth) before it redirects the request. In general, if ALTO 355 could convey such information via new endpoint properties, it 356 would enable more sophisticated means for downstream CDN selection 357 with ALTO. 359 3. CDNI FCI Map 361 The ALTO protocol is based on an ALTO Information Service Framework 362 which consists of several services, where all ALTO services are 363 "provided through a common transport protocol, messaging structure 364 and encoding, and transaction model" [RFC7285]. The ALTO protocol 365 specification [RFC7285] defines several such services, e.g. the ALTO 366 map service. 368 This document defines a new ALTO Map Service called "CDNI FCI Map 369 Service" which conveys JSON objects of media type "application/alto- 370 cdnifcimap+json". These JSON objects are used to transport 371 BaseAdvertisementObject objects defined in [RFC8008]; this document 372 specifies how to transport such BaseAdvertisementObject objects via 373 the ALTO protocol with the ALTO "CDNI FCI Map Service". Given that 374 the "CDNI FCI Map Service" is very similar in structure to the two 375 already defined map services (network maps and cost maps), the 376 specification of CDNI FCI Map below uses the same specification 377 structure for Cost Map specification in Section 11.2.3 of [RFC7285] 378 when specifying cost maps. 380 3.1. Media Type 382 The media type of the CDNI FCI Map is "application/alto- 383 cdnifcimap+json". 385 3.2. HTTP Method 387 A CDNI FCI map resource is requested using the HTTP GET method. 389 3.3. Accept Input Parameters 391 None. 393 3.4. Capabilities 395 None. 397 3.5. Uses 399 The resource ID of the resource based on which the CDNI FCI map will 400 be defined. For example, if a CDNI FCI map depends on a network map, 401 the resource ID of the network map MUST be included in "Uses" field. 402 Please see Section 4 for details. If the CDNI FCI map does not 403 depend on any other resources, "Uses" field MUST NOT appear. 405 3.6. Response 407 If a CDNI FCI map does not depend on other resources, the "meta" 408 field of a CDNI FCI map response MUST include the "vtag" field 409 defined in Section 10.3 of [RFC7285], which provides the version tag 410 of the retrieved CDNI FCI map. If a CDNI FCI map response depends on 411 a resource such a network map, it MUST include the "dependent-vtags" 412 field, whose value is an array to indicate the version tag of the 413 resource used, where the resource is specified in "uses" of the IRD. 414 The current defined dependent resource is only network map, and the 415 usage of it is described in Section 4. The data component of an ALTO 416 CDNI FCI map response is named "cdni-fci-map", which is a JSON object 417 of type CDNIFCIMapData: 419 object { 420 CDNIFCIMapData cdni-fci-map; 421 } InfoResourceCDNIFCIMap : ResponseEntityBase; 423 object { 424 BaseAdvertisementObject capabilities<1..*>; 425 } CDNIFCIMapData 427 Specifically, a CDNIFCIMapData object is a JSON object, and it 428 includes only one property "capabilities" and whose value is an array 429 of BaseAdvertisementObject objects. The syntax and semantics of 430 BaseAdvertisementObject are well defined in Section 5.1 of [RFC8008]. 431 BaseAdvertisementObject object consists of capability-type, 432 capability-value and footprints. And footprints are defined in 433 Section 4.2.2.2 of [RFC8006]. 435 The ALTO client MUST interpret footprints appearing multiple times as 436 if they appeared only once. If no footprint restriction list is 437 specified (or an empty list is specified), the ALTO client MUST 438 understand that all footprint types are reset to "global" coverage. 440 Note: Further optimization of BaseAdvertisement objects to 441 effectively provide the advertisement of capabilities with footprint 442 restrictions is certainly possible, however, it is not necessary for 443 the basic interconnection of CDNs. The note here is for 444 completeness, however, the specifics of such mechanisms are outside 445 the scope of this document. 447 3.7. Examples 449 3.7.1. IRD Example 451 Below is an example IRD announcing two network maps, one CDNI FCI map 452 without dependency, one CDNI FCI map depending on a network map, one 453 filtered CDNI FCI map, one unified property map including "cdni-fci- 454 capabilities" as its entities' property, one filtered unified 455 property map including "cdni-fci-capabilities" and "pid" as its 456 entities' properties and two update stream services (one for updating 457 CDNI FCI maps, and the other for updating property maps). 459 GET /directory HTTP/1.1 460 Host: alto.example.com 461 Accept: application/alto-directory+json,application/alto-error+json 463 { 464 "meta" : { ... }, 465 "resources": { 466 "my-default-network-map": { 467 "uri" : "http://alto.example.com/networkmap", 468 "media-type" : "application/alto-networkmap+json" 469 }, 470 "my-eu-netmap" : { 471 "uri" : "http://alto.example.com/myeunetmap", 472 "media-type" : "application/alto-networkmap+json" 473 }, 474 "my-default-cdnifci-map": { 475 "uri" : "http://alto.example.com/cdnifcimap", 476 "media-type": "application/alto-cdnifcimap+json" 477 }, 478 "my-filtered-cdnifci-map" : { 479 "uri" : "http://alto.example.com/cdnifcimap/filtered", 480 "media-type" : "application/alto-cdnifcimap+json", 481 "accepts" : "application/alto-cdnifcimapfilter+json", 482 "uses" : [ "my-default-cdnifci-map" ] 483 }, 484 "my-cdnifci-map-with-network-map-footprints": { 485 "uri" : "http://alto.example.com/networkcdnifcimap", 486 "media-type" : "application/alto-cdnifcimap+json", 487 "uses" : [ "my-eu-netmap" ] 488 }, 489 "cdnifci-property-map" : { 490 "uri" : "http://alto.example.com/propmap/full/cdnifci", 491 "media-type" : "application/alto-propmap+json", 492 "capabilities" : { 493 "domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ], 494 "prop-types" : [ "cdni-fci-capabilities" ] 495 } 496 }, 497 "filtered-cdnifci-property-map" : { 498 "uri" : "http://alto.example.com/propmap/lookup/cdnifci-pid", 499 "media-type" : "application/alto-propmap+json", 500 "accpets" : "application/alto-propmapparams+json", 501 "capabilities" : { 502 "domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ], 503 "prop-types" : [ "cdni-fci-capabilities", "pid" ] 504 } 505 }, 506 "update-my-cdni-fci-maps" : { 507 "uri": "http:///alto.example.com/updates/cdnifcimaps", 508 "media-type" : "text/event-stream", 509 "accepts" : "application/alto-updatestreamparams+json", 510 "uses" : [ 511 "my-default-network-map", 512 "my-eu-netmap", 513 "my-default-cdnifci-map", 514 "my-filtered-cdnifci-map" 515 "my-cdnifci-map-with-network-map-footprints" 516 ], 517 "capabilities" : { 518 "incremental-change-media-types" : { 519 "my-default-network-map" : "application/json-patch+json", 520 "my-eu-netmap" : "application/json-patch+json", 521 "my-default-cdnifci-map" : 522 "application/merge-patch+json,application/json-patch+json", 523 "my-filtered-cdnifci-map" : 524 "application/merge-patch+jso,application/json-patch+json", 525 "my-cdnifci-map-with-network-map-footprints" : 526 "application/merge-patch+json,application/json-patch+json" 527 } 528 } 529 }, 530 "update-my-props": { 531 "uri" : "http://alto.example.com/updates/properties", 532 "media-type" : "text/event-stream", 533 "uses" : [ 534 "cdnifci-property-map", 535 "filtered-cdnifci-property-map" 536 ], 537 "capabilities" : { 538 "incremental-change-media-types": { 539 "cdnifci-property-map" : 540 "application/merge-patch+json,application/json-patch+json", 541 "filtered-cdnifci-property-map": 542 "application/merge-patch+json,application/json-patch+json" 543 } 544 } 545 } 546 } 547 } 549 3.7.2. Basic Example 551 In this example, we demonstrate a simple CDNI FCI map; this map does 552 not depend on other resources. 554 GET /cdnifcimap HTTP/1.1 555 Host: alto.example.com 556 Accept: application/alto-cdnifcimap+json,application/alto-error+json 558 HTTP/1.1 200 OK 559 Content-Length: XXX 560 Content-Type: application/alto-cdnifcimap+json 561 { 562 "meta" : { 563 "vtag": { 564 "resource-id": "my-default-cdnifci-map", 565 "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785" 566 } 567 }, 568 "cdni-fci-map": { 569 "capabilities": [ 570 { 571 "capability-type": "FCI.DeliveryProtocol", 572 "capability-value": { 573 "delivery-protocols": [ 574 "http/1.1" 575 ] 576 }, 577 "footprints": [ 578 579 ] 580 }, 581 { 582 "capability-type": "FCI.DeliveryProtocol", 583 "capability-value": { 584 "delivery-protocols": [ 585 "https/1.1", 586 "http/1.1" 587 ] 588 }, 589 "footprints": [ 590 591 ] 592 }, 593 { 594 "capability-type": "FCI.AcquisitionProtocol", 595 "capability-value": { 596 "acquisition-protocols": [ 597 "https/1.1" 598 ] 599 }, 600 "footprints": [ 601 602 ] 603 } 604 ] 605 } 606 } 608 3.7.3. Incremental Updates Example 610 A benefit of using ALTO to provide CDNI FCI maps is that such maps 611 can be updated using ALTO incremental updates. Below is an example 612 that also shows a benefit of using a JSON merge patch to encode a big 613 update and using a JSON patch to encode a small update. 615 POST /updates/cdnifcimaps HTTP/1.1 616 Host: alto.example.com 617 Accept: text/event-stream,application/alto-error+json 618 Content-Type: application/alto-updatestreamparams+json 619 Content-Length: ### 621 { "add": { 622 "my-cdnifci-stream": { 623 "resource-id": "my-default-cdnifci-map" 624 } 625 } 627 HTTP/1.1 200 OK 628 Connection: keep-alive 629 Content-Type: text/event-stream 631 event: application/alto-updatestreamcontrol+json 632 data: {"control-uri": 633 data: "http://alto.example.com/updates/streams/3141592653589"} 635 event: application/alto-cdnifcimap+json,my-fci-stream 636 data: { ... full CDNI FCI map ... } 638 event: application/merge-patch+json,my-fci-stream 639 data: { 640 data: "meta": { 641 data: "vtag": { 642 data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716" 643 data: } 644 data: }, 645 data: { 646 data: "capability-type": "FCI.DeliveryProtocol", 647 data: "capability-value": { 648 data: "delivery-protocols": [ 649 data: "http/1.1" 650 data: ] 651 data: }, 652 data: "footprints": [ 653 data: 655 data: ] 656 data: } 657 data: } 659 event: application/json-patch+json,my-fci-stream 660 data: [ 661 data: { 662 data: "op": "replace", 663 data: "path": "/meta/vtag/tag", 664 data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" 665 data: }, 666 data: { "op": "add", 667 data: "path": "/cdni-fci-map/capabilities/0/footprints/-", 668 data: "value": "ipv4:192.0.2.0/24" 669 data: } 670 data: ] 672 4. CDNI FCI Map using ALTO Network Map 674 4.1. Introduce Footprint Type: altonetworkmap 676 In addition to the already defined CDNI footprint typs (e.g., 677 ipv4cidr, ipv6cidr, asn, countrycode), ALTO network maps can be a 678 type of FCI footprint. To enable such referencing to ALTO network 679 maps, a new CDNI Footprint Type "altonetworkmap" is defined (see also 680 Section 8.1). 682 All altonetworkmap entries MUST be of type PIDName (as defined in 683 [RFC7285], where PIDName corresponds to a PID in the ALTO network map 684 referenced by the resource ID of the network map listed in 685 "dependent-vtags" field). 687 4.2. Examples 689 4.2.1. IRD Example 691 We use the same IRD example given by Section 3.7.1. 693 4.2.2. ALTO Network Map for CDNI FCI Footprints Example 695 Below is an example network map that is referenced by the CDNI FCI 696 map example in Section 4.2.3 698 GET /networkmap HTTP/1.1 699 Host: http://alto.example.com/myeunetmap 700 Accept: application/alto-networkmap+json,application/alto-error+json 701 HTTP/1.1 200 OK 702 Content-Length: XXX 703 Content-Type: application/alto-networkmap+json 705 { 706 "meta" : { 707 "vtag": [ 708 {"resource-id": "my-eu-netmap", 709 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" 710 } 711 ] 712 }, 713 "network-map" : { 714 "south-france" : { 715 "ipv4" : [ "192.0.2.0/24", "198.51.100.0/25" ] 716 }, 717 "germany" : { 718 "ipv4" : [ "192.0.3.0/24"] 719 } 720 } 721 } 723 4.2.3. ALTO Network Map Footprints in CDNI FCI Map 725 In this example, we show a CDNI FCI map that depends on a network map 726 described in Section 4.2.2. 728 GET /networkcdnifcimap HTTP/1.1 729 Host: alto.example.com 730 Accept: application/alto-cdnifcimap+json,application/alto-error+json 731 HTTP/1.1 200 OK 732 Content-Length: 618 733 Content-Type: application/alto-cdnifcimap+json 735 { 736 "meta" : { 737 "dependent-vtags" : [ 738 { 739 "resource-id": "my-eu-netmap", 740 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" 741 } 742 ] 743 }, 744 "cdni-fci-map": { 745 "capabilities": [ 746 { "capability-type": "FCI.DeliveryProtocol", 747 "capability-value": [ 748 "http/1.1" 749 ] 750 }, 751 { "capability-type": "FCI.DeliveryProtocol", 752 "capability-value": [ 753 "values": [ 754 "https/1.1" 755 ], 756 "footprints": [ 757 { "footprint-type": "altonetworkmap", 758 "footprint-value": [ 759 "germany", 760 "south-france" 761 ] 762 } 763 ] 764 } 765 ] 766 } 767 } 769 4.2.4. Incremental Updates Example 771 In this example, the ALTO client is interested in changes of "my- 772 cdnifci-map-with-network-map-footrprints". And we present two 773 patches here. The first one of it is to change footprints of 774 http/1.1 Delivery Protocol capability, and the second one is to 775 remove "south-france" from the footprints of https/1.1 Delivery 776 Protocol capability. 778 POST /updates/cdnifcimaps HTTP/1.1 779 Host: alto.example.com 780 Accept: text/event-stream,application/alto-error+json 781 Content-Type: application/alto-updatestreamparams+json 782 Content-Length: ### 784 { "add": { 785 "my-network-map-cdnifci-stream": { 786 "resource-id": "my-cdnifci-map-with-network-map-footprints" 787 } 788 } 790 HTTP/1.1 200 OK 791 Connection: keep-alive 792 Content-Type: text/event-stream 794 event: application/alto-updatestreamcontrol+json 795 data: {"control-uri": 796 data: "http://alto.example.com/updates/streams/3141592653590"} 798 event: application/alto-cdnifcimap+json,my-fci-stream 799 data: { ... full CDNI FCI map ... } 801 event: application/merge-patch+json,my-fci-stream 802 data: { 803 data: "meta": { 804 data: "dependent-vtags" : [ 805 data: { 806 data: "resource-id": "my-eu-netmap", 807 data: "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" 808 data: } 809 data: ], 810 data: "vtag": { 811 data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716" 812 data: } 813 data: }, 814 data: { 815 data: "capability-type": "FCI.DeliveryProtocol", 816 data: "capability-value": { 817 data: "delivery-protocols": [ 818 data: "http/1.1" 819 data: ] 820 data: }, 821 data: "footprints": [ 822 data: 824 data: ] 825 data: } 826 data: } 827 event: application/json-patch+json,my-fci-stream 828 data: [ 829 data: { 830 data: "op": "replace", 831 data: "path": "/meta/vtag/tag", 832 data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" 833 data: }, 834 data: { "op": "remove", 835 data: "path": "/cdni-fci-map/capabilities/2/footprints/0/ 836 data: footprint-value/1", 837 data: } 838 data: ] 840 5. Filtered CDNI FCI Map using Capabilities 842 This document defines a new service named "Filtered CDNI FCI Map 843 Service". The semantic of a Filtered CDNI FCI Map is that given some 844 capabilities, which footprints have at least one of these 845 capabilities. And a filtered CDNI FCI map is a CDNI FCI map for 846 which an ALTO client may supply additional capabilities to limit the 847 scope of the resulting CDNI FCI map. The relationship between a 848 filtered CDNI FCI map and a CDNI FCI Map is similar to the 849 relationship between a filtered network/cost map and a network/cost 850 map. 852 5.1. Media Type 854 Since a filtered CDNI FCI map is still a CDNI FCI map, it uses the 855 media type defined for CDNI FCI maps at Section 3.1. 857 5.2. HTTP Method 859 A filtered CDNI FCI map is requested using the HTTP POST method. 861 5.3. Accept Input Parameters 863 The input parameters for a filtered CDNI FCI map are supplied in the 864 entity body of the POST request. This document specifies the input 865 parameters with a data format indicated by the media type 866 "application/alto-cdni-filter", which is a JSON object of type 867 ReqFilteredCDNIFCIMap, where: 869 object { 870 JSONString capability-type; 871 JSONValue capability-value; 872 } CDNIFCICapability; 874 object { 875 [CDNIFCICapability cdni-fci-capabilities<0..*>;] 876 } ReqFilteredCDNIFCIMap; 878 with fields: 880 capability-type: The same as Base Advertisement Object's capability- 881 type defined in Section 5.1 of [RFC8008]. 883 capability-value: The same as Base Advertisement Object's 884 capability-value defined in Section 5.1 of [RFC8008]. 886 cdni-fci-capabilities: A list of CDNI FCI capabilities defined in 887 Section 5.1 of [RFC8008] for which footprints are to be returned. 888 If a list is empty, the ALTO server MUST interpret it as a request 889 for the full CDNI FCI Map. The ALTO server MUST interpret entries 890 appearing in a list multiple times as if they appeared only once. 891 The ALTO client SHOULD avoid the same entries appearing in "cdni- 892 fci-capabilities" multiple times. If the "cdni-fci-capabilities" 893 field is not present, the ALTO server MUST interpret it as a 894 request for the full CDNI FCI Map. If a "capability-type" or a 895 "capability-value" is not defined, the ALTO server MUST ignore 896 this capability. If it is the only capability in the list, the 897 ALTO server MUST return nothing. 899 5.4. Capabilities 901 None. 903 5.5. Uses 905 The resource ID of the CDNI FCI map based on which the filtering is 906 performed. 908 5.6. Response 910 The format is the same as an unfiltered CDNI FCI map. See 911 Section 3.6 for the format. 913 The returned CDNI FCI map MUST contain only BaseAdvertisementObject 914 objects whose CDNI capability object is the superset of one of CDNI 915 capability object in "cdni-fci-capabilities". Specifically, that a 916 CDNI capability object A is the superset of another CDNI capability 917 object B means that these two CDNI capability objects have the same 918 capability type and mandatory properties in capability value of A 919 MUST include mandatory properties in capability value of B 920 semantically. For example, if a CDNI FCI capability in "cdni-fci- 921 capabilities" is Delivery Protocol capability object with "http/1.1" 922 in its field "delivery-protocols" and the original full CDNI FCI map 923 has two CDNI FCI objects whose capabilities are Delivery Protocol 924 capability objects with ["http/1.1"] and ["http/1.1", "https/1.1"] in 925 their field "delivery-protocols" respectively, both of these two CDNI 926 FCI objects MUST be returned. If the input parameters contain a CDNI 927 capability object that is not currently defined, the ALTO server MUST 928 behave as if the CDNI capability object did not appear in the input 929 parameters. 931 The version tag included in the "vtag" field of the response MUST 932 correspond to the full CDNI FCI map resource from which the filtered 933 CDNI FCI map is provided. This ensures that a single, canonical 934 version tag is used independently of any filtering that is requested 935 by an ALTO client. 937 5.7. Examples 939 5.7.1. IRD Example 941 We use the same IRD example by Section 3.7.1. 943 5.7.2. Basic Example 945 This example is filtering the full CDNI FCI map example in 946 Section 3.7.2. 948 POST /cdnifcimap/filtered HTTP/1.1 949 HOST: alto.example.com 950 Content-Type: application/cdnifilter+json 951 Accept: application/alto-cdnifcimap+json 953 { 954 "cdni-fci-capabilities": [ 955 { 956 "capability-type": "FCI.DeliveryProtocol", 957 "capability-value": { 958 "delivery-protocols": [ 959 "http/1.1" 960 ] 961 } 962 } 963 ] 964 } 965 HTTP/1.1 200 OK 966 Content-Length: XXX 967 Content-Type: application/alto-cdnifcimap+json 968 { 969 "meta" : { 970 "vtag": { 971 "resource-id": "my-default-cdnifci-map", 972 "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785" 973 } 974 }, 975 "cdni-fci-map": { 976 "capabilities": [ 977 { 978 "capability-type": "FCI.DeliveryProtocol", 979 "capability-value": { 980 "delivery-protocols": [ 981 "http/1.1" 982 ] 983 }, 984 "footprints": [ 985 986 ] 987 }, 988 { 989 "capability-type": "FCI.DeliveryProtocol", 990 "capability-value": { 991 "delivery-protocols": [ 992 "https/1.1", 993 "http/1.1" 994 ] 995 }, 996 "footprints": [ 997 998 ] 999 } 1000 ] 1001 } 1002 } 1004 5.7.3. Incremental Updates Example 1006 In this example, the ALTO client only cares about the updates of one 1007 Delivery Protocol object whose value is "http/1.1". So it adds its 1008 limitation of capabilities in "input" field of the POST request. 1010 POST /updates/cdnifcimaps HTTP/1.1 1011 Host: fcialtoupdate.example.com 1012 Accept: text/event-stream,application/alto-error+json 1013 Content-Type: application/alto-updatestreamparams+json 1014 Content-Length: ### 1016 { "add": { 1017 "my-fci-stream": { 1018 "resource-id": "my-filtered-cdnifci-map", 1019 "input": { 1020 "cdni-fci-capabilities": [ 1021 { 1022 "capability-type": "FCI.DeliveryProtocol", 1023 "capability-value": { 1024 "delivery-protocols": [ 1025 "http/1.1" 1026 ] 1027 } 1028 } 1029 ] 1030 } 1031 } 1032 } 1033 } 1035 HTTP/1.1 200 OK 1036 Connection: keep-alive 1037 Content-Type: text/event-stream 1039 event: application/alto-updatestreamcontrol+json 1040 data: {"control-uri": 1041 data: "http://alto.example.com/updates/streams/3141592653590"} 1043 event: application/alto-cdnifcimap+json,my-fci-stream 1044 data: { ... full filtered CDNI FCI map ... } 1046 event: application/merge-patch+json,my-fci-stream 1047 data: { 1048 data: "meta": { 1049 data: "vtag": { 1050 data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716" 1051 data: } 1052 data: }, 1053 data: { 1054 data: "capability-type": "FCI.DeliveryProtocol", 1055 data: "capability-value": { 1056 data: "delivery-protocols": [ 1057 data: "http/1.1" 1058 data: ] 1059 data: }, 1060 data: "footprints": [ 1061 data: 1063 data: ] 1064 data: } 1065 data: } 1067 event: application/json-patch+json,my-fci-stream 1068 data: [ 1069 data: { 1070 data: "op": "replace", 1071 data: "path": "/meta/vtag/tag", 1072 data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" 1073 data: }, 1074 data: { "op": "add", 1075 data: "path": "/cdni-fci-map/capabilities/0/footprints/-", 1076 data: "value": "ipv4:192.0.2.0/24" 1077 data: } 1078 data: ] 1080 6. Query Footprint Properties using ALTO Unified Property Service 1082 In this section, we describe how ALTO clients look up properties for 1083 individual footprints. Our design decision here is to use ALTO 1084 unified property map service to query footprint properties because we 1085 do not want to introduce extra complexity and ALTO unified property 1086 map defined in [I-D.ietf-alto-unified-props-new] already meets the 1087 requirement. A footprint is a group of entities, and CDNI 1088 capabilities can be regarded as properties of a footprint. Unified 1089 property map is used to provide properties for collections of 1090 entities such as CIDRs or PIDs. So every footprint can be presented 1091 as a set of entities, and we will describe it in details in 1092 Section 6.1. In addition, two resource types Property Maps and 1093 Filtered Property Maps are already well-defined in 1094 [I-D.ietf-alto-unified-props-new]. 1096 A unified property map that includes "cdni-fci-capabilities" property 1097 registered in Section 8 builds the inverted index of a CDNI FCI map. 1098 The building process consists of two steps: firstly, each footprint 1099 object is represented as a set of unified property map entities in a 1100 domain; secondly, each unified property map entity is mapped into a 1101 list of property objects including CDNI capabilities. 1103 6.1. Representing Footprint Objects as Unified Property Map Entities 1105 A footprint object has two properties: footprint-type and footprint- 1106 value. A footprint-value is an array of footprint values conforming 1107 to the specification associated with the registered footprint type 1108 ("ipv4cidr", "ipv6cidr", "asn", and "countrycode"). Since each 1109 unified property map entity has a unique address and each pair of 1110 footprint-type and a footprint value determines a group of unique 1111 addresses, a footprint object can be represented as a set of entities 1112 according to their different footprint-type and footprint values. 1113 However, [I-D.ietf-alto-unified-props-new] only defines IPv4 Domain 1114 and IPv6 Domain which represent footprint-type "ipv4cidr" and 1115 "ipv6cidr" respectively. To represent footprint-type "asn" and 1116 "countrycode", this document registers two new domains in Section 8. 1118 Here gives an example of representing a footprint object as a set of 1119 unified property map entities. 1121 {"footprint-type": "ipv4cidr", "footprint-value": ["192.0.2.0/24", 1122 "198.51.100.0/24"]} --> "ipv4:192.168.2.0/24", "ipv4:198.51.100.0/24" 1124 6.1.1. ASN Domain 1126 This document specifies a new domain in addition to the ones in 1127 [I-D.ietf-alto-unified-props-new]. ASN is the abbreviation of 1128 Autonomous System Number. 1130 6.1.1.1. Domain Name 1132 asn 1134 6.1.1.2. Domain-Specific Entity Addresses 1136 The entity address of asn domain is encoded as a string consisting of 1137 the characters "as" (in lowercase) followed by the ASN [RFC6793]. 1139 6.1.1.3. Hierarchy and Inheritance 1141 There is no hierarchy or inheritance for properties associated with 1142 ASN. 1144 6.1.2. COUNTRYCODE Domain 1146 This document specifies a new domain in addition to the ones in 1147 [I-D.ietf-alto-unified-props-new]. 1149 6.1.2.1. Domain Name 1151 countrycode 1153 6.1.2.2. Domain-Specific Entity Addresses 1155 The entity address of countrycode domain is encoded as an ISO 3166-1 1156 alpha-2 code [ISO3166-1] in lowercase. 1158 6.1.2.3. Hierarchy and Inheritance 1160 There is no hierarchy or inheritance for properties associated with 1161 country codes. 1163 6.2. Examples 1165 6.2.1. IRD Example 1167 We use the same IRD example given by Section 3.7.1. 1169 6.2.2. Property Map Example 1171 This example shows a full unified property map in which entities are 1172 footprints and entities' property is "cdni-fci-capabilities". 1174 GET /propmap/full/cdnifci HTTP/1.1 1175 HOST: alto.example.com 1176 Accept: application/alto-propmap+json,application/alto-error+json 1177 HTTP/1.1 200 OK 1178 Content-Length: ### 1179 Content-Type: application/alto-propmap+json 1181 { 1182 "property-map": { 1183 "meta": { 1184 "dependent-vtags": [ 1185 {"resource-id": "my-default-cdnifci-map", 1186 "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"} 1187 ] 1188 }, 1189 "countrycode:us": { 1190 "cdni-fci-capabilities": [{"capability-type":, 1191 "capability-value":}] 1192 }, 1193 "ipv4:192.0.2.0/24": { 1194 "cdni-fci-capabilities": [{"capability-type":, 1195 "capability-value":}] 1196 }, 1197 "ipv4:198.51.100.0/24": { 1198 "cdni-fci-capabilities": [{"capability-type":, 1199 "capability-value":}] 1200 }, 1201 "ipv6:2001:db8::/32": { 1202 "cdni-fci-capabilities": [{"capability-type":, 1203 "capability-value":}] 1204 }, 1205 "asn:as64496": { 1206 "cdni-fci-capabilities": [{"capability-type":, 1207 "capability-value":}] 1208 } 1209 } 1210 } 1212 6.2.3. Filtered Property Map Example 1214 In this example, we use filtered property map service to get "pid" 1215 and "cdni-fci-capabilities" properties for two footprints 1216 "ipv4:192.0.2.0/24" and "ipv6:2001:db8::/32". 1218 POST /propmap/lookup/cdnifci-pid HTTP/1.1 1219 HOST: alto.example.com 1220 Content-Type: application/alto-propmapparams+json 1221 Accept: application/alto-propmap+json,application/alto-error+json 1222 Content-Length: 1224 { 1225 "entities": [ 1226 "ipv4:192.0.2.0/24", 1227 "ipv6:2001:db8::/32" 1228 ], 1229 "properties": [ "cdni-fci-capabilities", "pid" ] 1230 } 1232 HTTP/1.1 200 OK 1233 Content-Length: ### 1234 Content-Type: application/alto-propmap+json 1236 { 1237 "property-map": { 1238 "meta": { 1239 "dependent-vtags": [ 1240 {"resource-id": "my-default-cdnifci-map", 1241 "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"}, 1242 {"resource-id": "my-default-networkmap", 1243 "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"} 1244 ] 1245 }, 1246 "ipv4:192.0.2.0/24": { 1247 "cdni-fci-capabilities": [{"capability-type":, 1248 "capability-value":}], 1249 "pid": "pid1" 1250 }, 1251 "ipv6:2001:db8::/32": { 1252 "cdni-fci-capabilities": [{"capability-type":, 1253 "capability-value":}], 1254 "pid": "pid3" 1255 } 1256 } 1257 } 1259 6.2.4. Incremental Updates Example 1261 In this example, here is a client want to request updates for the 1262 properties "cdni-fci-capabilities" and "pid" for two footprints 1263 "ipv4:192.0.2.0/24" and "ipv6:2001:db8::/32". 1265 POST /updates/properties HTTP/1.1 1266 Host: alto.example.com 1267 Accept: text/event-stream,application/alto-error+json 1268 Content-Type: application/alto-updatestreamparams+json 1269 Content-Length: ### 1271 { "add": { 1272 "property-map-including-capability-property": { 1273 "resource-id": "filtered-cdnifci-property-map", 1274 "input": { 1275 "properties": ["cdni-fci-capabilities", "pid"], 1276 "entities": [ 1277 "ipv4:192.0.2.0/24", 1278 "ipv6:2001:db8::/32" 1279 ] 1280 } 1281 } 1282 } 1284 HTTP/1.1 200 OK 1285 Connection: keep-alive 1286 Content-Type: text/event-stream 1288 event: application/alto-updatestreamcontrol+json 1289 data: {"control-uri": 1290 data: "http://alto.example.com/updates/streams/1414213562373"} 1292 event: application/alto-cdnifcimap+json,my-fci-stream 1293 data: { ... full filtered unified property map ... } 1295 event: application/merge-patch+json,my-fci-stream 1296 data: { 1297 data: "property-map": 1298 data: { 1299 data: "meta": { 1300 data: "dependent-vtags": [ 1301 data: {"resource-id": "my-default-cdnifci-map", 1302 data: "tag": "2beeac8ee23c3dd1e98a73fd30df80ece9fa5627"}, 1303 data: {"resource-id": "my-default-networkmap", 1304 data: "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"} 1305 data: ] 1306 data: }, 1307 data: "ipv4:192.0.2.0/24": 1308 data: { 1309 data: "cdni-fci-capabilities": 1310 data: [{"capability-type":,"capability-value":}] 1311 data: } 1312 data: } 1313 data: } 1314 event: application/json-patch+json,my-fci-stream 1315 data: {[ 1316 data: { 1317 data: { "op": "replace", 1318 data: "path": "/meta/dependent-vtags/0/tag", 1319 data: "value": "61b23185a50dc7b334577507e8f00ff8c3b409e4" 1320 data: }, 1321 data: { "op": "replace", 1322 data: "path": "/property-map/ipv4:192.0.2.0/124/", 1323 data: "value": "pid5" 1324 data: } 1325 data: } 1326 data: ]} 1328 7. Protocol Errors 1330 Protocol errors are handled as specified in Section 8.5 of the ALTO 1331 protocol [RFC7285]. 1333 Here we explain the error-handling mechanism of filtered CDNI FCI 1334 map: 1336 o E_SYNTAX covers all cases of syntax errors of filtered CDNI FCI 1337 map queries. 1339 o When the syntax of queries is correct, there may be some errors in 1340 queries' semantics. Such Cases can be covered by 1341 E_INVALID_FIELD_VALUE: 1343 * The value of "capability-type" is null; 1345 * The value of "capability-value" is null; 1347 * The value of "capability-value" is inconsistent with 1348 "capability-type". 1350 The error-handling mechanism of query footprints is the same as the 1351 error-handling mechanism of ALTO Unified Property Map Service 1352 described in [I-D.ietf-alto-unified-props-new]. 1354 8. IANA Considerations 1356 8.1. CDNI Metadata Footprint Type Registry 1357 +-----------------+-----------------------+-----------------------+ 1358 | Footprint Type | Description | Specification | 1359 +-----------------+-----------------------+-----------------------+ 1360 | altonetworkmap | A list of PID-names | RFCthis | 1361 +-----------------+-----------------------+-----------------------+ 1363 Table 1: CDNI Metadata Footprint Type 1365 [RFC Editor: Please replace RFCthis with the published RFC number for 1366 this document.] 1368 8.2. ALTO Entity Domain Registry 1370 As proposed in Section 9.2 of [I-D.ietf-alto-unified-props-new], 1371 "ALTO Entity Domain Registry" is requested. Besides, two new domains 1372 are to be registered, listed in Table 2. 1374 +--------------+-------------------------+--------------------------+ 1375 | Identifier | Entity Address Encoding | Hierarchy & Inheritance | 1376 +--------------+-------------------------+--------------------------+ 1377 | asn | See Section 6.1.1.2 | None | 1378 | countrycode | See Section 6.1.2.2 | None | 1379 +--------------+-------------------------+--------------------------+ 1381 Table 2: ALTO Entity Domain 1383 8.3. ALTO CDNI FCI Property Type Registry 1385 The "ALTO CDNI FCI Property Type Registry" is required by the ALTO 1386 Entity Domain "asn", "countrycode", "pid", "ipv4" and "ipv6", listed 1387 in Table 3. 1389 +------------------------+------------------------------------------+ 1390 | Identifier | Intended Semantics | 1391 +------------------------+------------------------------------------+ 1392 | cdni-fci-capabilities | An array of CDNI FCI capability objects | 1393 +------------------------+------------------------------------------+ 1395 Table 3: ALTO CDNI FCI Property Type 1397 9. Security Considerations 1399 One important security consideration is the proper authentication of 1400 advertisement information provided by a downstream CDN. The ALTO 1401 protocol provides a specification for a signature of ALTO information 1402 (see Section 15 of [RFC7285]. ALTO thus provides a proper mechanism 1403 for protecting the integrity of FCI information. 1405 More Security Considerations will be discussed in a future version of 1406 this document. 1408 10. Acknowledgments 1410 The authors would like to thank Kevin Ma, Daryl Malas, Matt Caulfield 1411 for their timely reviews and invaluable comments. 1413 Jan Seedorf is partially supported by the GreenICN project (GreenICN: 1414 Architecture and Applications of Green Information Centric 1415 Networking), a research project supported jointly by the European 1416 Commission under its 7th Framework Program (contract no. 608518) and 1417 the National Institute of Information and Communications Technology 1418 (NICT) in Japan (contract no. 167). The views and conclusions 1419 contained herein are those of the authors and should not be 1420 interpreted as necessarily representing the official policies or 1421 endorsements, either expressed or implied, of the GreenICN project, 1422 the European Commission, or NICT. 1424 11. References 1426 11.1. Normative References 1428 [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic 1429 Optimization (ALTO) Problem Statement", RFC 5693, 1430 DOI 10.17487/RFC5693, October 2009, . 1433 [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content 1434 Distribution Network Interconnection (CDNI) Problem 1435 Statement", RFC 6707, DOI 10.17487/RFC6707, September 1436 2012, . 1438 [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet 1439 Autonomous System (AS) Number Space", RFC 6793, 1440 DOI 10.17487/RFC6793, December 2012, . 1443 [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., 1444 Previdi, S., Roome, W., Shalunov, S., and R. Woundy, 1445 "Application-Layer Traffic Optimization (ALTO) Protocol", 1446 RFC 7285, DOI 10.17487/RFC7285, September 2014, 1447 . 1449 [RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed., 1450 "Framework for Content Distribution Network 1451 Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336, 1452 August 2014, . 1454 [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, 1455 "Content Delivery Network Interconnection (CDNI) 1456 Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, 1457 . 1459 [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, 1460 R., and K. Ma, "Content Delivery Network Interconnection 1461 (CDNI) Request Routing: Footprint and Capabilities 1462 Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, 1463 . 1465 [ISO3166-1] 1466 The International Organization for Standardization, "Codes 1467 for the representation of names of countries and their 1468 subdivisions -- Part 1: Country codes", ISO 3166-1:2013, 1469 2013. 1471 11.2. Informative References 1473 [I-D.ietf-alto-incr-update-sse] 1474 Roome, W. and Y. Yang, "ALTO Incremental Updates Using 1475 Server-Sent Events (SSE)", draft-ietf-alto-incr-update- 1476 sse-07 (work in progress), July 2017. 1478 [I-D.jenkins-alto-cdn-use-cases] 1479 Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and 1480 S. Previdi, "Use Cases for ALTO within CDNs", draft- 1481 jenkins-alto-cdn-use-cases-03 (work in progress), June 1482 2012. 1484 [I-D.ietf-alto-unified-props-new] 1485 Roome, W. and Y. Yang, "Extensible Property Maps for the 1486 ALTO Protocol", draft-ietf-alto-unified-props-new-00 (work 1487 in progress), July 2017. 1489 Authors' Addresses 1491 Jan Seedorf 1492 HFT Stuttgart - Univ. of Applied Sciences 1493 Schellingstrasse 24 1494 Stuttgart 70174 1495 Germany 1497 Phone: +49-0711-8926-2801 1498 Email: jan.seedorf@hft-stuttgart.de 1499 Y.R. Yang 1500 Tongji/Yale University 1501 51 Prospect Street 1502 New Haven, CT 06511 1503 United States of America 1505 Email: yry@cs.yale.edu 1506 URI: http://www.cs.yale.edu/~yry/ 1508 Kevin J. Ma 1509 Ericsson 1510 43 Nagog Park 1511 Acton, MA 01720 1512 United States of America 1514 Phone: +1-978-844-5100 1515 Email: kevin.j.ma@ericsson.com 1517 Jon Peterson 1518 NeuStar 1519 1800 Sutter St Suite 570 1520 Concord, CA 94520 1521 United States of America 1523 Email: jon.peterson@neustar.biz 1525 X.S. Lin 1526 Tongji University 1527 4800 Cao'an Hwy 1528 Shanghai 201804 1529 China 1531 Email: x.shawn.lin@gmail.com