| rfc9241.original | rfc9241.txt | |||
|---|---|---|---|---|
| ALTO & CDNI WGs J. Seedorf | Internet Engineering Task Force (IETF) J. Seedorf | |||
| Internet-Draft HFT Stuttgart - Univ. of Applied Sciences | Request for Comments: 9241 HFT Stuttgart | |||
| Intended status: Standards Track Y. Yang | Category: Standards Track Y. Yang | |||
| Expires: 21 August 2022 Yale University | ISSN: 2070-1721 Yale University | |||
| K. Ma | K. Ma | |||
| Ericsson | Ericsson | |||
| J. Peterson | J. Peterson | |||
| NeuStar | NeuStar | |||
| J. Zhang | J. Zhang | |||
| Tongji University | Tongji University | |||
| 17 February 2022 | July 2022 | |||
| Content Delivery Network Interconnection (CDNI) Request Routing: CDNI | Content Delivery Network Interconnection (CDNI) Footprint and | |||
| Footprint and Capabilities Advertisement using ALTO | Capabilities Advertisement Using Application-Layer Traffic Optimization | |||
| draft-ietf-alto-cdni-request-routing-alto-22 | (ALTO) | |||
| Abstract | Abstract | |||
| The Content Delivery Networks Interconnection (CDNI) framework in RFC | The Content Delivery Networks Interconnection (CDNI) framework in RFC | |||
| 6707 defines a set of protocols to interconnect CDNs to achieve | 6707 defines a set of protocols to interconnect CDNs to achieve | |||
| multiple goals, including extending the reach of a given CDN. A CDNI | multiple goals, including extending the reach of a given CDN. A CDNI | |||
| Request Routing Footprint & Capabilities Advertisement interface | Request Routing Footprint & Capabilities Advertisement interface | |||
| (FCI) is needed to achieve the goals of a CDNI. RFC 8008 defines the | (FCI) is needed to achieve the goals of a CDNI. RFC 8008 defines the | |||
| FCI semantics and provides guidelines on the FCI protocol, but the | FCI semantics and provides guidelines on the FCI protocol, but the | |||
| exact protocol is not specified. This document defines a new | exact protocol is not specified. This document defines a new | |||
| Application-Layer Traffic Optimization (ALTO) service, called "CDNI | Application-Layer Traffic Optimization (ALTO) service, called "CDNI | |||
| Advertisement Service", that provides an implementation of the FCI, | Advertisement Service", that provides an implementation of the FCI, | |||
| following the guidelines defined in RFC 8008. | following the guidelines defined in RFC 8008. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 21 August 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9241. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Terminology and Background . . . . . . . . . . . . . . . . . 4 | 2. Terminology and Background | |||
| 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terminology | |||
| 2.2. Semantics of FCI Advertisement . . . . . . . . . . . . . 5 | 2.2. Semantics of FCI Advertisement | |||
| 2.3. ALTO Background and Benefits . . . . . . . . . . . . . . 6 | 2.3. ALTO Background and Benefits | |||
| 3. CDNI Advertisement Service . . . . . . . . . . . . . . . . . 8 | 3. CDNI Advertisement Service | |||
| 3.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.1. Media Type | |||
| 3.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.2. HTTP Method | |||
| 3.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 9 | 3.3. Accept Input Parameters | |||
| 3.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 9 | 3.4. Capabilities | |||
| 3.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.5. Uses | |||
| 3.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.6. Response | |||
| 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 12 | 3.7. Examples | |||
| 3.7.1. IRD . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 3.7.1. IRD | |||
| 3.7.2. A Basic Example . . . . . . . . . . . . . . . . . . . 15 | 3.7.2. A Basic Example | |||
| 3.7.3. Incremental Updates . . . . . . . . . . . . . . . . . 17 | 3.7.3. Incremental Updates | |||
| 4. CDNI Advertisement Service using ALTO Network Map . . . . . . 18 | 4. CDNI Advertisement Service Using ALTO Network Map | |||
| 4.1. Network Map Footprint Type: altopid . . . . . . . . . . . 19 | 4.1. Network Map Footprint Type: altopid | |||
| 4.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 19 | 4.2. Examples | |||
| 4.2.1. ALTO Network Map for CDNI Advertisements . . . . . . 19 | 4.2.1. ALTO Network Map for CDNI Advertisements | |||
| 4.2.2. ALTO PID Footprints in CDNI Advertisements . . . . . 20 | 4.2.2. ALTO PID Footprints in CDNI Advertisements | |||
| 4.2.3. Incremental Updates . . . . . . . . . . . . . . . . . 21 | 4.2.3. Incremental Updates | |||
| 5. Filtered CDNI Advertisement using CDNI Capabilities . . . . . 23 | 5. Filtered CDNI Advertisement Using CDNI Capabilities | |||
| 5.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 23 | 5.1. Media Type | |||
| 5.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 23 | 5.2. HTTP Method | |||
| 5.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 23 | 5.3. Accept Input Parameters | |||
| 5.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 24 | 5.4. Capabilities | |||
| 5.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 5.5. Uses | |||
| 5.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 24 | 5.6. Response | |||
| 5.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 25 | 5.7. Examples | |||
| 5.7.1. A Basic Example . . . . . . . . . . . . . . . . . . . 25 | 5.7.1. A Basic Example | |||
| 5.7.2. Incremental Updates . . . . . . . . . . . . . . . . . 26 | 5.7.2. Incremental Updates | |||
| 6. Query Footprint Properties Using ALTO Property Map Service | ||||
| 6. Query Footprint Properties using ALTO Property Map Service . 28 | 6.1. Representing Footprint Objects as Property Map Entities | |||
| 6.1. Representing Footprint Objects as Property Map | 6.1.1. ASN Domain | |||
| Entities . . . . . . . . . . . . . . . . . . . . . . . . 28 | 6.1.2. COUNTRYCODE Domain | |||
| 6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 29 | ||||
| 6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 30 | ||||
| 6.2. Representing CDNI Capabilities as Property Map Entity | 6.2. Representing CDNI Capabilities as Property Map Entity | |||
| Properties . . . . . . . . . . . . . . . . . . . . . . . 30 | Properties | |||
| 6.2.1. Defining Information Resource Media Type for Property | 6.2.1. Defining Information Resource Media Type for Property | |||
| Type cdni-capabilities . . . . . . . . . . . . . . . 30 | Type cdni-capabilities | |||
| 6.2.2. Intended Semantics of Property Type | 6.2.2. Intended Semantics of Property Type cdni-capabilities | |||
| cdni-capabilities . . . . . . . . . . . . . . . . . . 31 | 6.3. Examples | |||
| 6.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 31 | 6.3.1. Property Map | |||
| 6.3.1. Property Map . . . . . . . . . . . . . . . . . . . . 31 | 6.3.2. Filtered Property Map | |||
| 6.3.2. Filtered Property Map . . . . . . . . . . . . . . . . 32 | 6.3.3. Incremental Updates | |||
| 6.3.3. Incremental Updates . . . . . . . . . . . . . . . . . 34 | 7. IANA Considerations | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 7.1. application/alto-cdni+json Media Type | |||
| 7.1. application/alto-cdni+json Media Type . . . . . . . . . . 35 | 7.2. application/alto-cdnifilter+json Media Type | |||
| 7.2. application/alto-cdnifilter+json Media Type . . . . . . . 36 | 7.3. CDNI Metadata Footprint Types Registry | |||
| 7.3. CDNI Metadata Footprint Type Registry . . . . . . . . . . 38 | 7.4. ALTO Entity Domain Types Registry | |||
| 7.4. ALTO Entity Domain Type Registry . . . . . . . . . . . . 38 | 7.5. ALTO Entity Property Types Registry | |||
| 7.5. ALTO Entity Property Type Registry . . . . . . . . . . . 39 | 8. Security Considerations | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | 9. References | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 9.1. Normative References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 41 | 9.2. Informative References | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 42 | Acknowledgments | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 43 | Contributors | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 43 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| 1. Introduction | 1. Introduction | |||
| The ability to interconnect multiple content delivery networks (CDNs) | The ability to interconnect multiple content delivery networks (CDNs) | |||
| has many benefits, including increased coverage, capability, and | has many benefits, including increased coverage, capability, and | |||
| reliability. The Content Delivery Networks Interconnection (CDNI) | reliability. The Content Delivery Networks Interconnection (CDNI) | |||
| framework [RFC6707] defines four interfaces to interconnect CDNs: (1) | framework [RFC6707] defines four interfaces to interconnect CDNs: (1) | |||
| the CDNI Request Routing Interface, (2) the CDNI Metadata Interface, | the CDNI Request Routing Interface, (2) the CDNI Metadata Interface, | |||
| (3) the CDNI Logging Interface, and (4) the CDNI Control Interface. | (3) the CDNI Logging Interface, and (4) the CDNI Control Interface. | |||
| Among these four interfaces, the CDNI Request Routing Interface | Among these four interfaces, the CDNI Request Routing Interface | |||
| provides key functions, as specified in [RFC6707]: "The CDNI Request | provides key functions, as specified in [RFC6707]: | |||
| Routing interface enables a Request Routing function in an Upstream | ||||
| CDN to query a Request Routing function in a Downstream CDN to | | The CDNI Request Routing interface enables a Request Routing | |||
| determine if the Downstream CDN is able (and willing) to accept the | | function in an Upstream CDN to query a Request Routing function in | |||
| delegated Content Request. It also allows the Downstream CDN to | | a Downstream CDN to determine if the Downstream CDN is able (and | |||
| control what should be returned to the User Agent in the redirection | | willing) to accept the delegated Content Request. It also allows | |||
| message by the upstream Request Routing function." At a high level, | | the Downstream CDN to control what should be returned to the User | |||
| the scope of the CDNI Request Routing Interface, therefore, contains | | Agent in the redirection message by the upstream Request Routing | |||
| two main tasks: (1) determining if the dCDN (downstream CDN) is | | function. | |||
| willing to accept a delegated content request, and (2) redirecting | ||||
| the content request coming from a uCDN (upstream CDN) to the proper | At a high level, therefore, the scope of the CDNI Request Routing | |||
| entry point or entity in the dCDN. | Interface contains two main tasks: (1) determining if the dCDN | |||
| (downstream CDN) is willing to accept a delegated Content Request and | ||||
| (2) redirecting the Content Request coming from a uCDN (upstream CDN) | ||||
| to the proper entry point or entity in the dCDN. | ||||
| Correspondingly, the Request Routing Interface is broadly divided | Correspondingly, the Request Routing Interface is broadly divided | |||
| into two functionalities: (1) the CDNI Footprint & Capabilities | into two functionalities: (1) the CDNI Footprint & Capabilities | |||
| Advertisement interface (FCI) defined in [RFC8008], and (2) the CDNI | Advertisement interface (FCI) defined in [RFC8008] and (2) the CDNI | |||
| Request Routing Redirection interface (RI) defined in [RFC7975]. | Request Routing Redirection interface (RI) defined in [RFC7975]. | |||
| This document focuses on the first functionality (CDNI FCI). | This document focuses on the first functionality (CDNI FCI). | |||
| Specifically, CDNI FCI allows both an advertisement from a dCDN to a | Specifically, CDNI FCI allows both an Advertisement from a dCDN to a | |||
| uCDN (push) and a query from a uCDN to a dCDN (pull) so that the uCDN | uCDN (push) and a query from a uCDN to a dCDN (pull) so that the uCDN | |||
| knows whether it can redirect a particular user request to that dCDN. | knows whether it can redirect a particular user request to that dCDN. | |||
| A key component in defining CDNI FCI is defining objects describing | A key component in defining the CDNI FCI is defining the objects that | |||
| the footprints and capabilities of a dCDN. Such objects are already | describe the footprints and capabilities of a dCDN. Such objects are | |||
| defined in Section 5 of [RFC8008]. However, no protocol is defined | already specified in Section 5 of [RFC8008]. However, no protocol is | |||
| to transport and update such objects between a uCDN and a dCDN. | defined to transport and update such objects between a uCDN and a | |||
| dCDN. | ||||
| To define such a protocol, this document specifies an extension of | To define such a protocol, this document specifies an extension of | |||
| the Application-Layer Traffic Optimization (ALTO) [RFC7285] protocol | the Application-Layer Traffic Optimization (ALTO) Protocol [RFC7285] | |||
| by introducing a new ALTO service called "CDNI Advertisement | by introducing a new ALTO service called "CDNI Advertisement | |||
| Service". | Service". | |||
| Section 2.3 discusses the benefits in using ALTO as a transport | Section 2.3 discusses the benefits in using ALTO as a transport | |||
| protocol. | protocol. | |||
| 2. Terminology and Background | 2. Terminology and Background | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119][RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| The design of CDNI FCI transport using ALTO assumes an understanding | The design of CDNI FCI transport using ALTO assumes an understanding | |||
| of both FCI semantics and ALTO. Hence, this document starts with a | of both FCI semantics and ALTO. Hence, this document starts with a | |||
| non-normative review for both. | non-normative review of both. | |||
| 2.1. Terminology | 2.1. Terminology | |||
| The document uses the CDNI terms defined in [RFC6707], [RFC8006] and | The document uses the CDNI terms defined in [RFC6707], [RFC8006], and | |||
| [RFC8008]. Also, the document uses the ALTO terms defined in | [RFC8008]. Also, the document uses the ALTO terms defined in | |||
| [RFC7285] and [I-D.ietf-alto-unified-props-new]. This document uses | [RFC7285] and [RFC9240]. This document uses the following | |||
| the following abbreviations: | abbreviations: | |||
| * ALTO: Application-Layer Traffic Optimization | ALTO: Application-Layer Traffic Optimization | |||
| * ASN: Autonomous System Number | ||||
| * CDN: Content Delivery Network | ASN: Autonomous System Number | |||
| * CDNI: CDN Interconnection | CDN: Content Delivery Network | |||
| * dCDN: Downstream CDN | CDNI: CDN Interconnection | |||
| * FCI: CDNI FCI, CDNI Request Routing Footprint & Capabilities | dCDN: Downstream CDN | |||
| Advertisement interface | ||||
| * IRD: Information Resource Directory in ALTO | FCI: CDNI FCI, CDNI Request Routing Footprint & Capabilities | |||
| Advertisement interface | ||||
| * PID: Provider-defined Identifier in ALTO | IRD: Information Resource Directory in ALTO | |||
| * uCDN: Upstream CDN | PID: Provider-defined Identifier in ALTO | |||
| uCDN: Upstream CDN | ||||
| 2.2. Semantics of FCI Advertisement | 2.2. Semantics of FCI Advertisement | |||
| [RFC8008] defines the semantics of CDNI FCI, provides guidance on | [RFC8008] defines the semantics of CDNI FCI, provides guidance on | |||
| what Footprint and Capabilities mean in a CDNI context, and specifies | what footprint and capabilities mean in a CDNI context, and specifies | |||
| the requirements on the CDNI FCI transport protocol. The definitions | the requirements on the CDNI FCI transport protocol. The definitions | |||
| in [RFC8008] depend on [RFC8006]. Below is a non-normative review of | in [RFC8008] depend on [RFC8006]. Below is a non-normative review of | |||
| key related points of [RFC8008] and [RFC8006]. For detailed | key related points of [RFC8008] and [RFC8006]. For detailed | |||
| information and normative specification, the reader should refer to | information and normative specification, the reader should refer to | |||
| these two RFCs. | these two RFCs. | |||
| * Multiple types of mandatory-to-implement footprints (i.e., | * Multiple types of mandatory-to-implement footprints (i.e., | |||
| ipv4cidr, ipv6cidr, asn, and countrycode) are defined in | "ipv4cidr", "ipv6cidr", "asn", and "countrycode") are defined in | |||
| [RFC8006]. A "Set of IP-prefixes" can contain both full IP | [RFC8006]. A "set of IP prefixes" can contain both full IP | |||
| addresses (i.e., a /32 for IPv4 or a /128 for IPv6) and IP | addresses (i.e., a /32 for IPv4 or a /128 for IPv6) and IP | |||
| prefixes with an arbitrary prefix length. There must also be | prefixes with an arbitrary prefix length. There must also be | |||
| support for multiple IP address versions, i.e., IPv4 and IPv6, in | support for multiple IP address versions, i.e., IPv4 and IPv6, in | |||
| such a footprint. | such a footprint. | |||
| * Multiple initial types of capabilities are defined in [RFC8008] | * Multiple initial types of capabilities are defined in [RFC8008] | |||
| including (1) Delivery Protocol, (2) Acquisition Protocol, (3) | including (1) Delivery Protocol, (2) Acquisition Protocol, (3) | |||
| Redirection Mode, (4) Capabilities related to CDNI Logging, and | Redirection Mode, (4) capabilities related to CDNI Logging, and | |||
| (5) Capabilities related to CDNI Metadata. They are required in | (5) capabilities related to CDNI Metadata. They are required in | |||
| all cases and, therefore, considered as mandatory-to-implement | all cases and, therefore, considered as mandatory-to-implement | |||
| capabilities for all CDNI FCI implementations. | capabilities for all CDNI FCI implementations. | |||
| * Footprint and capabilities are defined together and cannot be | * Footprint and capabilities are defined together and cannot be | |||
| interpreted independently from each other. Specifically, | interpreted independently from each other. Specifically, | |||
| [RFC8008] integrates footprint and capabilities with an approach | [RFC8008] integrates footprint and capabilities with an approach | |||
| of "capabilities with footprint restrictions", by expressing | of "capabilities with footprint restrictions", by expressing | |||
| capabilities on a per footprint basis. | capabilities on a per footprint basis. | |||
| * Specifically, for all mandatory-to-implement footprint types, | * Specifically, for all mandatory-to-implement footprint types, | |||
| footprints can be viewed as constraints for delegating requests to | footprints can be viewed as constraints for delegating requests to | |||
| a dCDN: A dCDN footprint advertisement tells the uCDN the | a dCDN: a dCDN footprint advertisement tells the uCDN the | |||
| limitations for delegating a request to the dCDN. For IP prefixes | limitations for delegating a request to the dCDN. For IP prefixes | |||
| or Autonomous System Numbers (ASNs), the footprint signals to the | or Autonomous System Numbers (ASNs), the footprint signals to the | |||
| uCDN that it should consider the dCDN a candidate only if the IP | uCDN that it should consider the dCDN a candidate only if the IP | |||
| address of the request routing source falls within the prefix set | address of the Request Routing source falls within the prefix set | |||
| or ASN, respectively. The CDNI specifications do not define how a | or ASN, respectively. The CDNI specifications do not define how a | |||
| given uCDN determines what address ranges are in a particular ASN. | given uCDN determines what address ranges are in a particular ASN. | |||
| Similarly, for country codes, a uCDN should only consider the dCDN | Similarly, for country codes, a uCDN should only consider the dCDN | |||
| a candidate if it covers the country of the request routing | a candidate if it covers the country of the Request Routing | |||
| source. The CDNI specifications do not define how a given uCDN | source. The CDNI specifications do not define how a given uCDN | |||
| determines the country of the request routing source. Different | determines the country of the Request Routing source. Different | |||
| types of footprint constraints can be combined together to narrow | types of footprint constraints can be combined together to narrow | |||
| the dCDN candidacy, i.e., the uCDN should consider the dCDN a | the dCDN candidacy, i.e., the uCDN should consider the dCDN a | |||
| candidate only if the request routing source satisfies all the | candidate only if the request routing source satisfies all the | |||
| types of footprint constraints in the advertisement. | types of footprint constraints in the advertisement. | |||
| * Given that a large part of Footprint and Capabilities | * Given that a large part of Footprint and Capabilities | |||
| Advertisement may happen in contractual agreements, the semantics | Advertisement may happen in contractual agreements, the semantics | |||
| of CDNI Footprint and Capabilities advertisement refers to | of CDNI Footprint and Capabilities Advertisement refers to | |||
| answering the following question: what exactly still needs to be | answering the following question: what exactly still needs to be | |||
| advertised by the CDNI FCI? For instance, updates about temporal | advertised by the CDNI FCI? For instance, updates about temporal | |||
| failures of part of a footprint can be useful information to | failures of part of a footprint can be useful information to | |||
| convey via the CDNI FCI. Such information would provide updates | convey via the CDNI FCI. Such information would provide updates | |||
| on information previously agreed in contracts between the | on information previously agreed to in contracts between the | |||
| participating CDNs. In other words, the CDNI FCI is a means for a | participating CDNs. In other words, the CDNI FCI is a means for a | |||
| dCDN to provide changes/updates regarding a footprint and/or | dCDN to provide changes and updates regarding a footprint and/or | |||
| capabilities that it has previously agreed to serve in a contract | capabilities that it has previously agreed to serve in a contract | |||
| with a uCDN. Hence, server push and incremental encoding will be | with a uCDN. Hence, server push and incremental encoding will be | |||
| necessary techniques. | necessary techniques. | |||
| 2.3. ALTO Background and Benefits | 2.3. ALTO Background and Benefits | |||
| Application-Layer Traffic Optimization (ALTO) [RFC7285] defines an | Application-Layer Traffic Optimization (ALTO) [RFC7285] defines an | |||
| approach for conveying network layer (topology) information to | approach for conveying network-layer (topology) information to | |||
| "guide" the resource provider selection process in distributed | "guide" the resource provider selection process in distributed | |||
| applications that can choose among several candidate resources | applications that can choose among several candidate resources | |||
| providers to retrieve a given resource. Usually, it is assumed that | providers to retrieve a given resource. Usually, it is assumed that | |||
| an ALTO server conveys information that these applications cannot | an ALTO server conveys information that these applications cannot | |||
| measure or have difficulty measuring themselves [RFC5693]. | measure or have difficulty measuring themselves [RFC5693]. | |||
| Originally, ALTO was motivated by optimizing cross-ISP traffic | Originally, ALTO was motivated by optimizing cross-ISP traffic | |||
| generated by P2P applications [RFC5693]. However, ALTO can also be | generated by peer-to-peer applications [RFC5693]. However, ALTO can | |||
| used for improving the request routing in CDNs. In particular, | also be used for improving the Request Routing in CDNs. In | |||
| Section 5 of [RFC7971] explicitly mentions ALTO as a candidate | particular, Section 5 of [RFC7971] explicitly mentions ALTO as a | |||
| protocol to improve the selection of a CDN surrogate or origin. | candidate protocol to improve the selection of a CDN surrogate or | |||
| origin. | ||||
| The following reasons make ALTO a suitable candidate protocol for | The following reasons make ALTO a suitable candidate protocol for | |||
| dCDN selection as part of CDNI request routing and, in particular, | dCDN selection as part of CDNI Request Routing and, in particular, | |||
| for an FCI protocol: | for an FCI protocol: | |||
| * Application Layer-oriented: ALTO is a protocol specifically | * Application-Layer-oriented: ALTO is a protocol specifically | |||
| designed to improve application layer traffic (and application | designed to improve application-layer traffic (and application- | |||
| layer connections among hosts on the Internet) by providing | layer connections among hosts on the Internet) by providing | |||
| additional information to applications that these applications | additional information to applications that these applications | |||
| could not easily retrieve themselves. This matches the need of | could not easily retrieve themselves. This matches the need of | |||
| CDNI, where a uCDN wants to improve application layer CDN request | CDNI, where a uCDN wants to improve application-layer CDN request | |||
| routing by using information (provided by a dCDN) that the uCDN | routing by using information (provided by a dCDN) that the uCDN | |||
| could not easily obtain otherwise. Hence, ALTO can help a uCDN to | could not easily obtain otherwise. Hence, ALTO can help a uCDN to | |||
| select a proper dCDN by first providing dCDNs' capabilities as | select a proper dCDN by first providing dCDNs' capabilities as | |||
| well as footprints (see Section 3) and then providing costs of | well as footprints (see Section 3) and then providing costs of | |||
| surrogates in a dCDN by ALTO cost maps. | surrogates in a dCDN by ALTO cost maps. | |||
| * Security: The identification between uCDNs and dCDNs is an | * Security: The identification between uCDNs and dCDNs is an | |||
| important requirement (see Section 8). ALTO maps can be signed | important requirement (see Section 8). ALTO maps can be signed | |||
| and hence provide inherent origin protection. Please see | and hence provide inherent origin protection. Please see | |||
| Section 15.1.2 of [RFC7285] for detailed protection strategies. | Section 15.1.2 of [RFC7285] for detailed protection strategies. | |||
| * RESTful design: The ALTO protocol has undergone extensive | * RESTful design: The ALTO Protocol has undergone extensive | |||
| revisions in order to provide a RESTful design regarding the | revisions in order to provide a RESTful design regarding the | |||
| client-server interaction specified by the protocol. It is | client-server interaction specified by the protocol. It is | |||
| flexible and extensible enough to handle existing and potential | flexible and extensible enough to handle existing and potential | |||
| future data formats defined by CDNI. It can provide the | future data formats defined by CDNI. It can provide the | |||
| consistent client-server interaction model for other existing CDNI | consistent client-server interaction model for other existing CDNI | |||
| interfaces or potential future extensions and therefore reduce the | interfaces or potential future extensions and therefore reduce the | |||
| learning cost for both users and developers, although they are not | learning cost for both users and developers, although they are not | |||
| in the scope of this document. A CDNI FCI interface based on ALTO | in the scope of this document. A CDNI FCI interface based on ALTO | |||
| would inherit this RESTful design. Please see Section 3. | would inherit this RESTful design. Please see Section 3. | |||
| * Error-handling: The ALTO protocol provides extensive error- | * Error handling: The ALTO Protocol provides extensive error | |||
| handling in the whole request and response process (see | handling in the whole request and response process (see | |||
| Section 8.5 of [RFC7285]). A CDNI FCI interface based on ALTO | Section 8.5 of [RFC7285]). A CDNI FCI interface based on ALTO | |||
| would inherit this extensive error-handling framework. Please see | would inherit this extensive error-handling framework. Please see | |||
| Section 5. | Section 5. | |||
| * Map Service: The semantics of an ALTO network map is an exact | * Map Service: The semantics of an ALTO network map is an exact | |||
| match for the needed information to convey a footprint by a dCDN, | match for the needed information to convey a footprint by a dCDN, | |||
| in particular, if such a footprint is being expressed by IP-prefix | in particular, if such a footprint is being expressed by IP prefix | |||
| ranges. Please see Section 4. | ranges. Please see Section 4. | |||
| * Filtered Map Service: The ALTO map filtering service would allow a | * Filtered Map Service: The ALTO map filtering service would allow a | |||
| uCDN to query only for parts of an ALTO map. For example, the | uCDN to query only for parts of an ALTO map. For example, the | |||
| ALTO filtered property map service can enable a uCDN to query | ALTO filtered property Map Service can enable a uCDN to query | |||
| properties of a part of footprints efficiently. Please see | properties of a part of footprints efficiently. Please see | |||
| Section 6. | Section 6. | |||
| * Server-initiated notifications and incremental updates: When the | * Server-initiated notifications and incremental updates: When the | |||
| footprint or the capabilities of a dCDN change (i.e., unexpectedly | footprint or the capabilities of a dCDN change (i.e., unexpectedly | |||
| from the perspective of a uCDN), server-initiated notifications | from the perspective of a uCDN), server-initiated notifications | |||
| would enable a dCDN to inform a uCDN about such changes directly. | would enable a dCDN to inform a uCDN about such changes directly. | |||
| Consider the case where - due to failure - part of the footprint | Consider the case where -- due to failure -- part of the footprint | |||
| of the dCDN is not functioning, i.e., the CDN cannot serve content | of the dCDN is not functioning, i.e., the CDN cannot serve content | |||
| to such clients with reasonable QoS. Without server-initiated | to such clients with reasonable QoS. Without server-initiated | |||
| notifications, the uCDN might still use a recent network and cost | notifications, the uCDN might still use a recent network and cost | |||
| map from the dCDN, and therefore redirect requests to the dCDN | map from the dCDN and therefore redirect requests to the dCDN that | |||
| which it cannot serve. Similarly, the possibility for incremental | it cannot serve. Similarly, the possibility for incremental | |||
| updates would enable efficient conveyance of the aforementioned | updates would enable efficient conveyance of the aforementioned | |||
| (or similar) status changes by the dCDN to the uCDN. The newest | (or similar) status changes by the dCDN to the uCDN. The newest | |||
| design of ALTO supports server pushed incremental updates | design of ALTO supports server-pushed incremental updates | |||
| [RFC8895]. | [RFC8895]. | |||
| * Content availability on hosts: A dCDN might want to express CDN | * Content availability on hosts: A dCDN might want to express CDN | |||
| capabilities in terms of certain content types (e.g., codecs/ | capabilities in terms of certain content types (e.g., codecs and/ | |||
| formats, or content from certain content providers). ALTO Entity | or formats, or content from certain content providers). ALTO | |||
| Property Map [I-D.ietf-alto-unified-props-new] would enable a dCDN | Entity Property Map [RFC9240] would enable a dCDN to make such | |||
| to make such information available to a uCDN. This would enable a | information available to a uCDN. This would enable a uCDN to | |||
| uCDN to access whether a dCDN has the capabilities for a given | assess whether a dCDN has the capabilities for a given type of | |||
| type of content requested. | content requested. | |||
| * Resource availability on hosts or links: The capabilities on links | * Resource availability on hosts or links: The capabilities on links | |||
| (e.g., maximum bandwidth) or caches (e.g., average load) might be | (e.g., maximum bandwidth) or caches (e.g., average load) might be | |||
| useful information for a uCDN for optimized dCDN selection. For | useful information for a uCDN for optimized dCDN selection. For | |||
| instance, if a uCDN receives a streaming request for content with | instance, if a uCDN receives a streaming request for content with | |||
| a certain bitrate, it needs to know if it is likely that a dCDN | a certain bitrate, it needs to know if it is likely that a dCDN | |||
| can fulfill such stringent application-level requirements (i.e., | can fulfill such stringent application-level requirements (i.e., | |||
| can be expected to have enough consistent bandwidth) before it | can be expected to have enough consistent bandwidth) before it | |||
| redirects the request. In general, if ALTO could convey such | redirects the request. In general, if ALTO could convey such | |||
| information via ALTO Entity Property Map | information via ALTO Entity Property Map [RFC9240], it would | |||
| [I-D.ietf-alto-unified-props-new], it would enable more | enable more sophisticated means for dCDN selection with ALTO. The | |||
| sophisticated means for dCDN selection with ALTO. ALTO Path | ALTO Path Vector extension [ALTO-PATH-VECTOR] is designed to allow | |||
| Vector Extension [I-D.ietf-alto-path-vector] is designed to allow | ||||
| ALTO clients to query information such as capacity regions for a | ALTO clients to query information such as capacity regions for a | |||
| given set of flows. | given set of flows. | |||
| 3. CDNI Advertisement Service | 3. CDNI Advertisement Service | |||
| The ALTO protocol relies upon the ALTO Information Service framework | The ALTO Protocol relies upon the ALTO information service framework, | |||
| which consists of multiple services. All ALTO services are "provided | which consists of multiple services. All ALTO services are "provided | |||
| through a common transport protocol, messaging structure and | through a common transport protocol; messaging structure and | |||
| encoding, and transaction model" [RFC7285]. The ALTO protocol | encoding; and transaction model" [RFC7285]. The ALTO Protocol | |||
| specification defines multiple initial services, e.g., the ALTO | specification defines multiple initial services, e.g., the ALTO | |||
| network map service and cost map service. | Network Map Service and Cost Map Service. | |||
| This document defines a new ALTO service, called "CDNI Advertisement | This document defines a new ALTO service, called "CDNI Advertisement | |||
| Service", which conveys JSON [RFC8259] objects of media type | Service", which conveys JSON [RFC8259] objects of media type | |||
| "application/alto-cdni+json". These JSON objects are used to | "application/alto-cdni+json". These JSON objects are used to | |||
| transport BaseAdvertisementObject objects defined in [RFC8008]. This | transport BaseAdvertisementObject objects defined in [RFC8008]. This | |||
| document specifies how to transport such BaseAdvertisementObject | document specifies how to transport such BaseAdvertisementObject | |||
| objects via the ALTO protocol with the ALTO "CDNI Advertisement | objects via the ALTO Protocol with the ALTO CDNI Advertisement | |||
| Service". Similar to other ALTO services, this document defines the | Service. Similar to other ALTO services, this document defines the | |||
| ALTO information resource for the "CDNI Advertisement Service" as | ALTO information resource for the CDNI Advertisement Service as | |||
| follows. | follows. | |||
| Note that the encoding of BaseAdvertisementObject reuses the one | Note that the encoding of BaseAdvertisementObject reuses the one | |||
| defined in [RFC8008] and therefore also follows the recommendations | defined in [RFC8008] and therefore also follows the recommendations | |||
| of I-JSON (Internet JSON) [RFC7493], which is required by [RFC8008]. | of I-JSON (Internet JSON) [RFC7493], which is required by [RFC8008]. | |||
| 3.1. Media Type | 3.1. Media Type | |||
| The media type of the CDNI Advertisement resource is "application/ | The media type of the CDNI Advertisement resource is "application/ | |||
| alto-cdni+json" (see Section 7). | alto-cdni+json" (see Section 7). | |||
| skipping to change at page 10, line 26 ¶ | skipping to change at line 453 ¶ | |||
| CDNIAdvertisementData cdni-advertisement; | CDNIAdvertisementData cdni-advertisement; | |||
| } InfoResourceCDNIAdvertisement : ResponseEntityBase; | } InfoResourceCDNIAdvertisement : ResponseEntityBase; | |||
| object { | object { | |||
| BaseAdvertisementObject capabilities-with-footprints<0..*>; | BaseAdvertisementObject capabilities-with-footprints<0..*>; | |||
| } CDNIAdvertisementData; | } CDNIAdvertisementData; | |||
| Specifically, a CDNIAdvertisementData object is a JSON object that | Specifically, a CDNIAdvertisementData object is a JSON object that | |||
| includes only one property named "capabilities-with-footprints", | includes only one property named "capabilities-with-footprints", | |||
| whose value is an array of BaseAdvertisementObject objects. It | whose value is an array of BaseAdvertisementObject objects. It | |||
| provides capabilities with footprint restrictions for uCDN to decide | provides capabilities with footprint restrictions for the uCDN to | |||
| the dCDN selection. If the value of this property is an empty array, | decide the dCDN selection. If the value of this property is an empty | |||
| it means the corresponding dCDN cannot provide any mandatory-to- | array, it means the corresponding dCDN cannot provide any mandatory- | |||
| implement CDNI capabilities for any footprints. | to-implement CDNI capabilities for any footprints. | |||
| The syntax and semantics of BaseAdvertisementObject are well defined | The syntax and semantics of BaseAdvertisementObject are well defined | |||
| in Section 5.1 of [RFC8008]. A BaseAdvertisementObject object | in Section 5.1 of [RFC8008]. A BaseAdvertisementObject object | |||
| includes multiple properties, including capability-type, capability- | includes multiple properties, including "capability-type", | |||
| value, and footprints, where footprints are defined in | "capability-value", and "footprints", where "footprints" are defined | |||
| Section 4.2.2.2 of [RFC8006]. | in Section 4.2.2.2 of [RFC8006]. | |||
| To be self-contained, below is an equivalent specification of | An equivalent specification in the ALTO-style notation (see | |||
| BaseAdvertisementObject described in the ALTO-style notation (see | Section 8.2 of [RFC7285]) creates a self-contained description of the | |||
| Section 8.2 of [RFC7285]). As mentioned above, the normative | BaseAdvertisementObject. As mentioned above, the normative | |||
| specification of BaseAdvertisementObject is in [RFC8008]. | specification of BaseAdvertisementObject is in [RFC8008]. | |||
| object { | object { | |||
| JSONString capability-type; | JSONString capability-type; | |||
| JSONValue capability-value; | JSONValue capability-value; | |||
| Footprint footprints<0..*>; | Footprint footprints<0..*>; | |||
| } BaseAdvertisementObject; | } BaseAdvertisementObject; | |||
| object { | object { | |||
| JSONString footprint-type; | JSONString footprint-type; | |||
| JSONString footprint-value<1..*>; | JSONString footprint-value<1..*>; | |||
| } Footprint; | } Footprint; | |||
| For each BaseAdvertisementObject, the ALTO client MUST interpret | For each BaseAdvertisementObject, the ALTO client MUST interpret | |||
| footprints appearing multiple times as if they appeared only once. | "footprints" appearing multiple times as if they appeared only once. | |||
| If footprints in a BaseAdvertisementObject is null or empty or not | If "footprints" in a BaseAdvertisementObject is null or empty or does | |||
| appearing, the ALTO client MUST understand that the capabilities in | not appear, the ALTO client MUST understand that the capabilities in | |||
| this BaseAdvertisementObject have the "global" coverage, i.e., the | this BaseAdvertisementObject have the "global" coverage, i.e., the | |||
| corresponding dCDN can provide them for any request routing source. | corresponding dCDN can provide them for any Request Routing source. | |||
| Note: Further optimization of BaseAdvertisement objects to | Note: Further optimization of BaseAdvertisementObjects to effectively | |||
| effectively provide the advertisement of capabilities with footprint | provide the advertisement of capabilities with footprint restrictions | |||
| restrictions is certainly possible. For example, these two examples | is certainly possible. For example, these two examples below both | |||
| below both describe that the dCDN can provide capabilities | describe that the dCDN can provide capabilities ["http/1.1", | |||
| ["http/1.1", "https/1.1"] for the same footprints. However, the | "https/1.1"] for the same footprints. However, the latter one is | |||
| latter one is smaller in its size. | smaller in its size. | |||
| EXAMPLE 1 | EXAMPLE 1 | |||
| { | { | |||
| "meta": {...}, | "meta": {...}, | |||
| "cdni-advertisement": { | "cdni-advertisement": { | |||
| "capabilities-with-footprints": [ | "capabilities-with-footprints": [ | |||
| { | { | |||
| "capability-type": "FCI.DeliveryProtocol", | "capability-type": "FCI.DeliveryProtocol", | |||
| "capability-value": { | "capability-value": { | |||
| "delivery-protocols": [ | "delivery-protocols": [ | |||
| skipping to change at page 12, line 37 ¶ | skipping to change at line 561 ¶ | |||
| This document only requires the ALTO server to provide the initial | This document only requires the ALTO server to provide the initial | |||
| FCI-specific CDNI Payload Types defined in [RFC8008] as the | FCI-specific CDNI Payload Types defined in [RFC8008] as the | |||
| mandatory-to-implement CDNI capabilities. | mandatory-to-implement CDNI capabilities. | |||
| 3.7. Examples | 3.7. Examples | |||
| 3.7.1. IRD | 3.7.1. IRD | |||
| Below is the IRD of a simple, example ALTO server. The server | Below is the IRD of a simple, example ALTO server. The server | |||
| provides both base ALTO information resources (e.g., network maps) | provides both base ALTO information resources (e.g., network maps) | |||
| and CDNI FCI related information resources (e.g., CDNI Advertisement | and CDNI FCI-related information resources (e.g., CDNI Advertisement | |||
| resources), demonstrating a single, integrated environment. | resources), demonstrating a single, integrated environment. | |||
| Specifically, the IRD announces nine information resources as | Specifically, the IRD announces nine information resources as | |||
| follows: | follows: | |||
| * two network maps, | * two network maps, | |||
| * one CDNI Advertisement resource without dependency, | * one CDNI Advertisement resource without dependency, | |||
| * one CDNI Advertisement resource depending on a network map, | * one CDNI Advertisement resource depending on a network map, | |||
| skipping to change at page 15, line 35 ¶ | skipping to change at line 702 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| 3.7.2. A Basic Example | 3.7.2. A Basic Example | |||
| This basic example demonstrates a simple CDNI Advertisement resource, | This basic example demonstrates a simple CDNI Advertisement resource, | |||
| which does not depend on other resources. There are three | which does not depend on other resources. There are three | |||
| BaseAdvertisementObjects in this resource and these objects' | BaseAdvertisementObjects in this resource and these objects' | |||
| capabilities are http/1.1 delivery protocol, [http/1.1, https/1.1] | capabilities are "http/1.1" delivery protocol, ["http/1.1", | |||
| delivery protocol, and https/1.1 acquisition protocol, respectively. | "https/1.1"] delivery protocol, and "https/1.1" acquisition protocol, | |||
| respectively. | ||||
| GET /cdnifci HTTP/1.1 | GET /cdnifci HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: application/alto-cdni+json,application/alto-error+json | Accept: application/alto-cdni+json,application/alto-error+json | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 1411 | Content-Length: 1411 | |||
| Content-Type: application/alto-cdni+json | Content-Type: application/alto-cdni+json | |||
| { | { | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at line 769 ¶ | |||
| "acquisition-protocols": [ | "acquisition-protocols": [ | |||
| "https/1.1" | "https/1.1" | |||
| ] | ] | |||
| }, | }, | |||
| "footprints": [ | "footprints": [ | |||
| { | { | |||
| "footprint-type": "ipv4cidr", | "footprint-type": "ipv4cidr", | |||
| "footprint-value": [ "203.0.113.0/24" ] | "footprint-value": [ "203.0.113.0/24" ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| 3.7.3. Incremental Updates | 3.7.3. Incremental Updates | |||
| A benefit of using ALTO to provide CDNI Advertisement resources is | A benefit of using ALTO to provide CDNI Advertisement resources is | |||
| that such resources can be updated using ALTO incremental updates | that such resources can be updated using ALTO incremental updates | |||
| [RFC8895]. Below is an example that also shows the benefit of having | [RFC8895]. Below is an example that also shows the benefit of having | |||
| both JSON merge patch and JSON patch to encode updates. | both JSON merge patch and JSON patch to encode updates. | |||
| At first, an ALTO client requests updates for "my-default-cdnifci", | At first, an ALTO client requests updates for "my-default-cdnifci", | |||
| and the ALTO server returns the "control-uri" followed by the full | and the ALTO server returns the "control-uri" followed by the full | |||
| CDNI Advertisement response. Then when there is a change in the | CDNI Advertisement response. Then when there is a change in the | |||
| delivery-protocols in that http/1.1 is removed (from [http/1.1, | "delivery-protocols" in that "http/1.1" is removed (from ["http/1.1", | |||
| https/1.1] to only https/1.1) due to maintenance of the http/1.1 | "https/1.1"] to only "https/1.1") due to maintenance of the | |||
| clusters, the ALTO server regenerates the new CDNI Advertisement | "http/1.1" clusters, the ALTO server regenerates the new CDNI | |||
| resource and pushes the full replacement to the ALTO client. Later | Advertisement resource and pushes the full replacement to the ALTO | |||
| on, the ALTO server notifies the ALTO client that "192.0.2.0/24" is | client. Later on, the ALTO server notifies the ALTO client that | |||
| added into the "ipv4" footprint object for delivery-protocol | "192.0.2.0/24" is added into the "ipv4" footprint object for delivery | |||
| https/1.1 by sending the change encoded by JSON patch to the ALTO | protocol "https/1.1" by sending the change encoded by JSON patch to | |||
| client. | the ALTO client. | |||
| POST /updates/cdnifci HTTP/1.1 | POST /updates/cdnifci HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: text/event-stream,application/alto-error+json | Accept: text/event-stream,application/alto-error+json | |||
| Content-Type: application/alto-updatestreamparams+json | Content-Type: application/alto-updatestreamparams+json | |||
| Content-Length: 94 | Content-Length: 94 | |||
| { | { | |||
| "add": { | "add": { | |||
| "my-cdnifci-stream": { | "my-cdnifci-stream": { | |||
| skipping to change at page 18, line 44 ¶ | skipping to change at line 858 ¶ | |||
| data: "path": "/meta/vtag/tag", | data: "path": "/meta/vtag/tag", | |||
| data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | |||
| data: }, | data: }, | |||
| data: { "op": "add", | data: { "op": "add", | |||
| data: "path": "/cdni-advertisement/capabilities-with-footprints | data: "path": "/cdni-advertisement/capabilities-with-footprints | |||
| /0/footprints/0/footprint-value/-", | /0/footprints/0/footprint-value/-", | |||
| data: "value": "192.0.2.0/24" | data: "value": "192.0.2.0/24" | |||
| data: } | data: } | |||
| data: ] | data: ] | |||
| 4. CDNI Advertisement Service using ALTO Network Map | 4. CDNI Advertisement Service Using ALTO Network Map | |||
| 4.1. Network Map Footprint Type: altopid | 4.1. Network Map Footprint Type: altopid | |||
| The ALTO protocol defines a concept called Provider-defined | The ALTO Protocol defines a concept called Provider-defined | |||
| Identifier (PID) to represent a group of IPv4 or IPv6 addresses which | Identifier (PID) to represent a group of IPv4 or IPv6 addresses to | |||
| can be applied the same management policy. The PID is an alternative | which can be applied the same management policy. The PID is an | |||
| to the pre-defined CDNI footprint types (i.e., ipv4cidr, ipv6cidr, | alternative to the predefined CDNI footprint types (i.e., "ipv4cidr", | |||
| asn, and countrycode). | "ipv6cidr", "asn", and "countrycode"). | |||
| To leverage this concept, this document defines a new CDNI Footprint | To leverage this concept, this document defines a new CDNI Footprint | |||
| Type called "altopid". A CDNI Advertisement resource can depend on | Type called "altopid". A CDNI Advertisement resource can depend on | |||
| an ALTO network map resource and use "altopid" footprints to compress | an ALTO network map resource and use "altopid" footprints to compress | |||
| its CDNI Footprint Payload. | its CDNI Footprint Payload. | |||
| Specifically, the "altopid" footprint type indicates that the | Specifically, the "altopid" footprint type indicates that the | |||
| corresponding footprint value is a list of PIDNames as defined in | corresponding footprint value is a list of PIDNames as defined in | |||
| [RFC7285]. These PIDNames are references of PIDs in a network map | [RFC7285]. These PIDNames are references of PIDs in a network map | |||
| resource. Hence a CDNI Advertisement resource using "altopid" | resource. Hence a CDNI Advertisement resource using "altopid" | |||
| footprints depends on a network map. For such a CDNI Advertisement | footprints depends on a network map. For such a CDNI Advertisement | |||
| resource, the resource id of its dependent network map MUST be | resource, the resource ID of its dependent network map MUST be | |||
| included in the "uses" field of its IRD entry, and the "dependent- | included in the "uses" field of its IRD entry, and the "dependent- | |||
| vtags" field with a reference to this network map MUST be included in | vtags" field with a reference to this network map MUST be included in | |||
| its response (see the example in Section 4.2.2). | its response (see the example in Section 4.2.2). | |||
| 4.2. Examples | 4.2. Examples | |||
| The following examples use the same IRD given in Section 3.7.1. | The following examples use the same IRD given in Section 3.7.1. | |||
| 4.2.1. ALTO Network Map for CDNI Advertisements | 4.2.1. ALTO Network Map for CDNI Advertisements | |||
| Below provides a sample network map whose resource id is "my-eu- | Below provides a sample network map whose resource ID is "my-eu- | |||
| netmap". This map is referenced by the CDNI Advertisement example in | netmap". This map is referenced by the CDNI Advertisement example in | |||
| Section 4.2.2. | Section 4.2.2. | |||
| GET /myeunetmap HTTP/1.1 | GET /myeunetmap HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: application/alto-networkmap+json,application/alto-error+json | Accept: application/alto-networkmap+json,application/alto-error+json | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 344 | Content-Length: 344 | |||
| Content-Type: application/alto-networkmap+json | Content-Type: application/alto-networkmap+json | |||
| skipping to change at page 21, line 49 ¶ | skipping to change at line 969 ¶ | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| 4.2.3. Incremental Updates | 4.2.3. Incremental Updates | |||
| In this example, the ALTO client is interested in changes of "my- | In this example, the ALTO client is interested in changes of "my- | |||
| cdnifci-with-pid-footprints" and its dependent network map "my-eu- | cdnifci-with-pid-footprints" and its dependent network map "my-eu- | |||
| netmap". Considering two changes, the first one is to change | netmap". Considering two changes, the first one is to change | |||
| footprints of the https/1.1 delivery protocol capability, and the | footprints of the "https/1.1" delivery protocol capability, and the | |||
| second one is to remove the "south-france" PID from the footprints of | second one is to remove the "south-france" PID from the footprints of | |||
| the https/1.1 acquisition protocol capability. | the "https/1.1" acquisition protocol capability. | |||
| POST /updates/cdnifci HTTP/1.1 | POST /updates/cdnifci HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: text/event-stream,application/alto-error+json | Accept: text/event-stream,application/alto-error+json | |||
| Content-Type: application/alto-updatestreamparams+json | Content-Type: application/alto-updatestreamparams+json | |||
| Content-Length: 185 | Content-Length: 185 | |||
| { | { | |||
| "add": { | "add": { | |||
| "my-eu-netmap-stream": { | "my-eu-netmap-stream": { | |||
| skipping to change at page 23, line 14 ¶ | skipping to change at line 1031 ¶ | |||
| data: "path": "/meta/vtag/tag", | data: "path": "/meta/vtag/tag", | |||
| data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | |||
| data: }, | data: }, | |||
| data: { "op": "remove", | data: { "op": "remove", | |||
| data: "path": | data: "path": | |||
| data: "/cdni-advertisement/capabilities-with-footprints | data: "/cdni-advertisement/capabilities-with-footprints | |||
| /1/footprints/0/footprint-value/1" | /1/footprints/0/footprint-value/1" | |||
| data: } | data: } | |||
| data: ] | data: ] | |||
| 5. Filtered CDNI Advertisement using CDNI Capabilities | 5. Filtered CDNI Advertisement Using CDNI Capabilities | |||
| Sections 3 (Section 3) and 4 (Section 4) describe CDNI Advertisement | Sections 3 and 4 describe the CDNI Advertisement Service that can be | |||
| Service which can be used to enable a uCDN to get capabilities with | used to enable a uCDN to get capabilities with footprint restrictions | |||
| footprint restrictions from dCDNs. However, since always getting | from dCDNs. However, since always getting full CDNI Advertisement | |||
| full CDNI Advertisement resources from dCDNs is inefficient, this | resources from dCDNs is inefficient, this document introduces a new | |||
| document introduces a new service named "Filtered CDNI Advertisement | service named "Filtered CDNI Advertisement Service" to allow a client | |||
| Service", to allow a client to filter a CDNI Advertisement resource | to filter a CDNI Advertisement resource using a client-given set of | |||
| using a client-given set of CDNI capabilities. For each entry of the | CDNI capabilities. For each entry of the CDNI Advertisement | |||
| CDNI Advertisement response, an entry will only be returned to the | response, an entry will only be returned to the client if it contains | |||
| client if it contains at least one of the client given CDNI | at least one of the client-given CDNI capabilities. The relationship | |||
| capabilities. The relationship between a filtered CDNI Advertisement | between a filtered CDNI Advertisement resource and a CDNI | |||
| resource and a CDNI Advertisement resource is similar to the | Advertisement resource is similar to the relationship between a | |||
| relationship between a filtered network/cost map and a network/cost | filtered network/cost map and a network/cost map. | |||
| map. | ||||
| 5.1. Media Type | 5.1. Media Type | |||
| A filtered CDNI Advertisement resource uses the same media type | A filtered CDNI Advertisement resource uses the same media type | |||
| defined for the CDNI Advertisement resource in Section 3.1: | defined for the CDNI Advertisement resource in Section 3.1: | |||
| "application/alto-cdni+json". | "application/alto-cdni+json". | |||
| 5.2. HTTP Method | 5.2. HTTP Method | |||
| A filtered CDNI Advertisement resource is requested using the HTTP | A filtered CDNI Advertisement resource is requested using the HTTP | |||
| POST method. | POST method. | |||
| 5.3. Accept Input Parameters | 5.3. Accept Input Parameters | |||
| The input parameters for a filtered CDNI Advertisement resource are | The input parameters for a filtered CDNI Advertisement resource are | |||
| supplied in the entity body of the POST request. This document | supplied in the entity body of the POST request. This document | |||
| specifies the input parameters with a data format indicated by the | specifies the input parameters with a data format indicated by the | |||
| media type "application/alto-cdnifilter+json" which is a JSON object | media type "application/alto-cdnifilter+json", which is a JSON object | |||
| of type ReqFilteredCDNIAdvertisement, where: | of type ReqFilteredCDNIAdvertisement where: | |||
| object { | object { | |||
| JSONString capability-type; | JSONString capability-type; | |||
| JSONValue capability-value; | JSONValue capability-value; | |||
| } CDNICapability; | } CDNICapability; | |||
| object { | object { | |||
| CDNICapability cdni-capabilities<0..*>; | CDNICapability cdni-capabilities<0..*>; | |||
| } ReqFilteredCDNIAdvertisement; | } ReqFilteredCDNIAdvertisement; | |||
| with fields: | with fields: | |||
| capability-type: The same as Base Advertisement Object's capability- | capability-type: The same as Base Advertisement Object's | |||
| type defined in Section 5.1 of [RFC8008]. | "capability-type" defined in Section 5.1 of [RFC8008]. | |||
| capability-value: The same as Base Advertisement Object's | capability-value: The same as Base Advertisement Object's | |||
| capability-value defined in Section 5.1 of [RFC8008]. | "capability-value" defined in Section 5.1 of [RFC8008]. | |||
| cdni-capabilities: A list of CDNI capabilities defined in | cdni-capabilities: A list of CDNI capabilities defined in | |||
| Section 5.1 of [RFC8008] for which footprints are to be returned. | Section 5.1 of [RFC8008] for which footprints are to be returned. | |||
| If this list is empty, the ALTO server MUST interpret it as a | If this list is empty, the ALTO server MUST interpret it as a | |||
| request for the full CDNI Advertisement resource. The ALTO server | request for the full CDNI Advertisement resource. The ALTO server | |||
| MUST interpret entries appearing in this list multiple times as if | MUST interpret entries appearing in this list multiple times as if | |||
| they appeared only once. If the ALTO server does not define any | they appeared only once. If the ALTO server does not define any | |||
| footprints for a CDNI capability, it MUST omit this capability | footprints for a CDNI capability, it MUST omit this capability | |||
| from the response. | from the response. | |||
| 5.4. Capabilities | 5.4. Capabilities | |||
| There are no applicable capabilities. | There are no applicable capabilities. | |||
| 5.5. Uses | 5.5. Uses | |||
| Same to the "uses" field of the CDNI Advertisement resource (see | The same rules as for the "uses" field of the CDNI Advertisement | |||
| Section 3.5). | resource apply (see Section 3.5). | |||
| 5.6. Response | 5.6. Response | |||
| If the request is invalid, the response MUST indicate an error, using | If the request is invalid, the response MUST indicate an error using | |||
| ALTO protocol error handling specified in Section 8.5 of [RFC7285]. | ALTO Protocol error handling specified in Section 8.5 of [RFC7285]. | |||
| Specifically, a filtered CDNI Advertisement request is invalid if: | Specifically, a filtered CDNI Advertisement request is invalid if: | |||
| * the value of "capability-type" is null; | * the value of "capability-type" is null; | |||
| * the value of "capability-value" is null; | * the value of "capability-value" is null; or | |||
| * the value of "capability-value" is inconsistent with "capability- | * the value of "capability-value" is inconsistent with "capability- | |||
| type". | type". | |||
| When a request is invalid, the ALTO server MUST return an | When a request is invalid, the ALTO server MUST return an | |||
| "E_INVALID_FIELD_VALUE" error defined in Section 8.5.2 of [RFC7285], | "E_INVALID_FIELD_VALUE" error defined in Section 8.5.2 of [RFC7285], | |||
| and the "value" field of the error message SHOULD indicate this CDNI | and the "value" field of the error message SHOULD indicate this CDNI | |||
| capability. | capability. | |||
| The ALTO server returns a filtered CDNI Advertisement resource for a | The ALTO server returns a filtered CDNI Advertisement resource for a | |||
| valid request. The format of a filtered CDNI Advertisement resource | valid request. The format of a filtered CDNI Advertisement resource | |||
| is the same as a full CDNI Advertisement resource (See Section 3.6.) | is the same as a full CDNI Advertisement resource (see Section 3.6). | |||
| The returned filtered CDNI Advertisement resource MUST contain all | The returned filtered CDNI Advertisement resource MUST contain all | |||
| the BaseAdvertisementObject objects satisfying the following | the BaseAdvertisementObject objects satisfying the following | |||
| condition: The CDNI capability object of each included | condition: the CDNI capability object of each included | |||
| BaseAdvertisementObject object MUST follow two constraints: | BaseAdvertisementObject object MUST follow two constraints: | |||
| * The "cdni-capabilities" field of the input includes a CDNI | * The "cdni-capabilities" field of the input includes a CDNI | |||
| capability object X having the same capability type as it. | capability object X having the same "capability-type" as it. | |||
| * All the mandatory properties in its capability value is a superset | * All the mandatory properties in its "capability-value" is a | |||
| of mandatory properties in capability value of X semantically. | superset of mandatory properties in "capability-value" of X | |||
| semantically. | ||||
| See Section 5.7.1 for a concrete example. | See Section 5.7.1 for a concrete example. | |||
| The version tag included in the "vtag" field of the response MUST | The version tag included in the "vtag" field of the response MUST | |||
| correspond to the full CDNI Advertisement resource from which the | correspond to the full CDNI Advertisement resource from which the | |||
| filtered CDNI Advertisement resource is provided. This ensures that | filtered CDNI Advertisement resource is provided. This ensures that | |||
| a single, canonical version tag is used independently of any | a single, canonical version tag is used independently of any | |||
| filtering that is requested by an ALTO client. | filtering that is requested by an ALTO client. | |||
| 5.7. Examples | 5.7. Examples | |||
| The following examples use the same IRD example as in Section 3.7.1. | The following examples use the same IRD example as in Section 3.7.1. | |||
| 5.7.1. A Basic Example | 5.7.1. A Basic Example | |||
| This example filters the full CDNI Advertisement resource in | This example filters the full CDNI Advertisement resource in | |||
| Section 3.7.2 by selecting only the http/1.1 delivery protocol | Section 3.7.2 by selecting only the "http/1.1" delivery protocol | |||
| capability. Only the second BaseAdvertisementObjects in the full | capability. Only the second BaseAdvertisementObject in the full | |||
| resource will be returned because the second object's capability is | resource will be returned because the second object's capability is | |||
| http/1.1 and https/1.1 delivery protocols which is the superset of | "http/1.1" and "https/1.1" delivery protocols, which is the superset | |||
| https/1.1 delivery protocol. | of "https/1.1" delivery protocol. | |||
| POST /cdnifci/filtered HTTP/1.1 | POST /cdnifci/filtered HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: application/alto-cdni+json | Accept: application/alto-cdni+json | |||
| Content-Type: application/cdnifilter+json | Content-Type: application/cdnifilter+json | |||
| Content-Length: 176 | Content-Length: 176 | |||
| { | { | |||
| "cdni-capabilities": [ | "cdni-capabilities": [ | |||
| { | { | |||
| skipping to change at page 28, line 6 ¶ | skipping to change at line 1262 ¶ | |||
| data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" | |||
| data: }, | data: }, | |||
| data: { "op": "add", | data: { "op": "add", | |||
| data: "path": | data: "path": | |||
| data: "/cdni-advertisement/capabilities-with-footprints | data: "/cdni-advertisement/capabilities-with-footprints | |||
| /0/footprints/0/footprint-value/-", | /0/footprints/0/footprint-value/-", | |||
| data: "value": "192.0.2.0/24" | data: "value": "192.0.2.0/24" | |||
| data: } | data: } | |||
| data: ] | data: ] | |||
| 6. Query Footprint Properties using ALTO Property Map Service | 6. Query Footprint Properties Using ALTO Property Map Service | |||
| Besides the requirement of retrieving footprints of given | Besides the requirement of retrieving footprints of given | |||
| capabilities, another common requirement for uCDN is to query CDNI | capabilities, another common requirement for uCDN is to query CDNI | |||
| capabilities of given footprints. | capabilities of given footprints. | |||
| Considering each footprint as an entity with properties including | Considering each footprint as an entity with properties including | |||
| CDNI capabilities, a natural way to satisfy this requirement is to | CDNI capabilities, a natural way to satisfy this requirement is to | |||
| use the ALTO property map as defined in | use the ALTO property map as defined in [RFC9240]. This section | |||
| [I-D.ietf-alto-unified-props-new]. This section describes how ALTO | describes how ALTO clients look up properties for individual | |||
| clients look up properties for individual footprints. First, it | footprints. First, it describes how to represent footprint objects | |||
| describes how to represent footprint objects as entities in the ALTO | as entities in the ALTO property map. Then it describes how to | |||
| property map. Then it describes how to represent footprint | represent footprint capabilities as entity properties in the ALTO | |||
| capabilities as entity properties in the ALTO property map. Finally, | property map. Finally, it provides examples of the full property map | |||
| it provides examples of the full property map and the filtered | and the filtered property map supporting CDNI capabilities, and their | |||
| property map supporting CDNI capabilities, and their incremental | incremental updates. | |||
| updates. | ||||
| 6.1. Representing Footprint Objects as Property Map Entities | 6.1. Representing Footprint Objects as Property Map Entities | |||
| A footprint object has two properties: footprint-type and footprint- | A footprint object has two properties: "footprint-type" and | |||
| value. A footprint-value is an array of footprint values conforming | "footprint-value". A "footprint-value" is an array of footprint | |||
| to the specification associated with the registered footprint type | values conforming to the specification associated with the registered | |||
| ("ipv4cidr", "ipv6cidr", "asn", "countrycode", and "altopid"). | footprint type ("ipv4cidr", "ipv6cidr", "asn", "countrycode", and | |||
| Considering each ALTO entity defined in | "altopid"). Considering each ALTO entity defined in [RFC9240] also | |||
| [I-D.ietf-alto-unified-props-new] also has two properties: entity | has two properties: entity domain type and domain-specific | |||
| domain type and domain-specific identifier, a straightforward | identifier, a straightforward approach to represent a footprint as an | |||
| approach to represent a footprint as an ALTO entity is to represent | ALTO entity is to represent its "footprint-type" as an entity domain | |||
| its footprint-type as an entity domain type, and its footprint value | type, and its footprint value as a domain-specific identifier. | |||
| as a domain-specific identifier. | ||||
| Each existing footprint type can be represented as an entity domain | Each existing footprint type can be represented as an entity domain | |||
| type as follows: | type as follows: | |||
| * According to [I-D.ietf-alto-unified-props-new], "ipv4" and "ipv6" | * According to [RFC9240], "ipv4" and "ipv6" are two predefined | |||
| are two predefined entity domain types, which can be used to | entity domain types, which can be used to represent "ipv4cidr" and | |||
| represent "ipv4cidr" and "ipv6cidr" footprints respectively. Note | "ipv6cidr" footprints respectively. Note that both "ipv4" and | |||
| that both "ipv4" and "ipv6" domains can include not only | "ipv6" domains can include not only hierarchical addresses but | |||
| hierarchical addresses but also individual addresses. Therefore, | also individual addresses. Therefore, a "ipv4cidr" or "ipv6cidr" | |||
| a "ipv4cidr" or "ipv6cidr" footprint with the longest prefix can | footprint with the longest prefix can also be represented by an | |||
| also be represented by an individual address entity. When the | individual address entity. When the uCDN receives a property map | |||
| uCDN receives a property map with individual addresses in an | with individual addresses in an "ipv4" or "ipv6" domain, it can | |||
| "ipv4" or "ipv6" domain, it can translate them as corresponding | translate them as corresponding "ipv4cidr" or "ipv6cidr" | |||
| "ipv4cidr" or "ipv6cidr" footprints with the longest prefix. | footprints with the longest prefix. | |||
| * "pid" is also a predefined entity domain type, which can be used | * "pid" is also a predefined entity domain type, which can be used | |||
| to represent "altopid" footprints. Note that "pid" is a resource- | to represent "altopid" footprints. Note that "pid" is a resource- | |||
| specific entity domain. To represent an "altopid" footprint, the | specific entity domain. To represent an "altopid" footprint, the | |||
| specifying information resource of the corresponding "pid" entity | specifying information resource of the corresponding "pid" entity | |||
| domain MUST be the dependent network map used by the CDNI | domain MUST be the dependent network map used by the CDNI | |||
| Advertisement resource providing this "altopid" footprint. | Advertisement resource providing this "altopid" footprint. | |||
| * However, no existing entity domain type can represent "asn" and | * However, no existing entity domain type can represent "asn" and | |||
| "countrycode" footprints. To represent footprint-type "asn" and | "countrycode" footprints. To represent footprint-type "asn" and | |||
| "countrycode", this document registers two new entity domains in | "countrycode", this document registers two new entity domains in | |||
| Section 7 in addition to the ones in | Section 7 in addition to the ones in [RFC9240]. | |||
| [I-D.ietf-alto-unified-props-new]. | ||||
| Here is an example of representing a footprint object of "ipv4cidr" | Here is an example of representing a footprint object of "ipv4cidr" | |||
| type as a set of "ipv4" entities in the ALTO property map. The | type as a set of "ipv4" entities in the ALTO property map. The | |||
| representation of the footprint object of "ipv6cidr" type is similar. | representation of the footprint object of "ipv6cidr" type is similar. | |||
| { "footprint-type": "ipv4cidr", | { "footprint-type": "ipv4cidr", | |||
| "footprint-value": ["192.0.2.0/24", "198.51.100.0/24"] | "footprint-value": ["192.0.2.0/24", "198.51.100.0/24"] | |||
| } --> "ipv4:192.0.2.0/24", "ipv4:198.51.100.0/24" | } --> "ipv4:192.0.2.0/24", "ipv4:198.51.100.0/24" | |||
| And here is an example of corresponding footprint object of | And here is an example of the corresponding footprint object of | |||
| "ipv4cidr" type represented by an individual address in an "ipv4" | "ipv4cidr" type represented by an individual address in an "ipv4" | |||
| domain in the ALTO property map. The translation of the entities in | domain in the ALTO property map. The translation of the entities in | |||
| an "ipv6" domain is similar. | an "ipv6" domain is similar. | |||
| "ipv4:203.0.113.100" --> { | "ipv4:203.0.113.100" --> { | |||
| "footprint-type": "ipv4cidr", | "footprint-type": "ipv4cidr", | |||
| "footprint-value": ["203.0.113.100/32"] | "footprint-value": ["203.0.113.100/32"] | |||
| } | } | |||
| 6.1.1. ASN Domain | 6.1.1. ASN Domain | |||
| skipping to change at page 30, line 33 ¶ | skipping to change at line 1378 ¶ | |||
| 6.1.2.3. Hierarchy and Inheritance | 6.1.2.3. Hierarchy and Inheritance | |||
| There is no hierarchy or inheritance for properties associated with | There is no hierarchy or inheritance for properties associated with | |||
| country codes. | country codes. | |||
| 6.2. Representing CDNI Capabilities as Property Map Entity Properties | 6.2. Representing CDNI Capabilities as Property Map Entity Properties | |||
| This document defines a new entity property type called "cdni- | This document defines a new entity property type called "cdni- | |||
| capabilities". An ALTO server can provide a property map resource | capabilities". An ALTO server can provide a property map resource | |||
| mapping the "cdni-capablities" entity property type for a CDNI | mapping the "cdni-capabilities" entity property type for a CDNI | |||
| Advertisement resource that it provides to an "ipv4", "ipv6", "asn" | Advertisement resource that it provides to an "ipv4", "ipv6", "asn", | |||
| or "countrycode" entity domain. | or "countrycode" entity domain. | |||
| 6.2.1. Defining Information Resource Media Type for Property Type cdni- | 6.2.1. Defining Information Resource Media Type for Property Type cdni- | |||
| capabilities | capabilities | |||
| The entity property type "cdni-capabilities" allows defining | The entity property type "cdni-capabilities" allows defining | |||
| resource-specific entity properties. When resource-specific entity | resource-specific entity properties. When resource-specific entity | |||
| properties are defined with entity property type "cdni-capabilities", | properties are defined with entity property type "cdni-capabilities", | |||
| the defining information resource for a "cdni-capabilities" property | the defining information resource for a "cdni-capabilities" property | |||
| MUST be a CDNI Advertisement resource provided by the ALTO server. | MUST be a CDNI Advertisement resource provided by the ALTO server. | |||
| The media type of the defining information resource for a "cdni- | The media type of the defining information resource for a "cdni- | |||
| capabilities" property is therefore: | capabilities" property is therefore: | |||
| application/alto-cdni+json | application/alto-cdni+json | |||
| 6.2.2. Intended Semantics of Property Type cdni-capabilities | 6.2.2. Intended Semantics of Property Type cdni-capabilities | |||
| A "cdni-capabilities" property for an entity is to indicate all the | The purpose of a "cdni-capabilities" property for an entity is to | |||
| CDNI capabilities that a corresponding CDNI Advertisement resource | indicate all the CDNI capabilities that a corresponding CDNI | |||
| provides for the footprint represented by this entity. Thus, the | Advertisement resource provides for the footprint represented by this | |||
| value of a "cdni-capabilities" property MUST be a JSON array. Each | entity. Thus, the value of a "cdni-capabilities" property MUST be a | |||
| element in a "cdni-capabilities" property MUST be an JSON object as | JSON array. Each element in a "cdni-capabilities" property MUST be a | |||
| format of CDNICapability (see Section 5.3). The value of a "cdni- | JSON object in the format of CDNICapability (see Section 5.3). The | |||
| capabilities" property for an "ipv4", "ipv6", "asn", "countrycode" or | value of a "cdni-capabilities" property for an "ipv4", "ipv6", "asn", | |||
| "altopid" entity MUST include all the CDNICapability objects | "countrycode", or "altopid" entity MUST include all the | |||
| satisfying the following conditions: (1) they are provided by the | CDNICapability objects satisfying the following conditions: (1) they | |||
| defining CDNI Advertisement resource; and (2) the represented | are provided by the defining CDNI Advertisement resource, and (2) the | |||
| footprint object of this entity is in their footprint restrictions. | represented footprint object of this entity is in their footprint | |||
| restrictions. | ||||
| 6.3. Examples | 6.3. Examples | |||
| The following examples use the same IRD example given by | The following examples use the same IRD example given by | |||
| Section 3.7.1. | Section 3.7.1. | |||
| 6.3.1. Property Map | 6.3.1. Property Map | |||
| This example shows a full property map in which entities are | This example shows a full property map in which entities are | |||
| footprints and entities' property is "cdni-capabilities". | footprints and entities' property is "cdni-capabilities". | |||
| skipping to change at page 32, line 37 ¶ | skipping to change at line 1477 ¶ | |||
| "my-default-cdnifci.cdni-capabilities": [ | "my-default-cdnifci.cdni-capabilities": [ | |||
| { "capability-type": "FCI.DeliveryProtocol", | { "capability-type": "FCI.DeliveryProtocol", | |||
| "capability-value": { | "capability-value": { | |||
| "delivery-protocols": ["https/1.1", "http/1.1"]}}] | "delivery-protocols": ["https/1.1", "http/1.1"]}}] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| 6.3.2. Filtered Property Map | 6.3.2. Filtered Property Map | |||
| This example uses the filtered property map service to get "pid" and | This example uses the filtered property Map Service to get "pid" and | |||
| "cdni-capabilities" properties for two footprints "ipv4:192.0.2.0/24" | "cdni-capabilities" properties for two footprints "ipv4:192.0.2.0/24" | |||
| and "ipv6:2001:db8::/32". | and "ipv6:2001:db8::/32". | |||
| POST /propmap/lookup/cdnifci-pid HTTP/1.1 | POST /propmap/lookup/cdnifci-pid HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Content-Type: application/alto-propmapparams+json | Content-Type: application/alto-propmapparams+json | |||
| Accept: application/alto-propmap+json,application/alto-error+json | Accept: application/alto-propmap+json,application/alto-error+json | |||
| Content-Length: 181 | Content-Length: 181 | |||
| { | { | |||
| skipping to change at page 35, line 31 ¶ | skipping to change at line 1600 ¶ | |||
| data: "/property-map/countrycode:fr/my-default-networkmap.pid", | data: "/property-map/countrycode:fr/my-default-networkmap.pid", | |||
| data: "value": "pid5" | data: "value": "pid5" | |||
| data: } | data: } | |||
| data: ] | data: ] | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document defines two new media types: "application/alto- | This document defines two new media types: "application/alto- | |||
| cdni+json", as described in Section 7.1, and "application/ | cdni+json", as described in Section 7.1, and "application/ | |||
| cdnifilter+json", as described in Section 7.2. It also defines a new | cdnifilter+json", as described in Section 7.2. It also defines a new | |||
| CDNI metadata footprint type (Section 7.3), two new ALTO entity | CDNI Metadata Footprint Type (Section 7.3), two new ALTO entity | |||
| domain types (Section 7.4), and a new ALTO entity property type | domain types (Section 7.4), and a new ALTO entity property type | |||
| (Section 7.5). | (Section 7.5). | |||
| 7.1. application/alto-cdni+json Media Type | 7.1. application/alto-cdni+json Media Type | |||
| Type name: | Type name: | |||
| application | application | |||
| Subtype name: | Subtype name: | |||
| alto-cdni+json | alto-cdni+json | |||
| skipping to change at page 36, line 14 ¶ | skipping to change at line 1631 ¶ | |||
| Security considerations: | Security considerations: | |||
| Security considerations related to the generation and consumption | Security considerations related to the generation and consumption | |||
| of ALTO Protocol messages are discussed in Section 15 of | of ALTO Protocol messages are discussed in Section 15 of | |||
| [RFC7285]. | [RFC7285]. | |||
| Interoperability considerations: | Interoperability considerations: | |||
| N/A | N/A | |||
| Published specification: | Published specification: | |||
| Section 3 of RFCthis | Section 3 of RFC 9241 | |||
| Applications that use this media type: | Applications that use this media type: | |||
| ALTO servers and ALTO clients [RFC7285] either stand alone or are | ALTO servers and ALTO clients [RFC7285] either stand alone or are | |||
| embedded within other applications that provides CDNI interfaces | embedded within other applications that provide CDNI interfaces | |||
| for uCDNs or dCDNs. | for uCDNs or dCDNs. | |||
| Fragment identifier considerations: | Fragment identifier considerations: | |||
| N/A | N/A | |||
| Additional information: | Additional information: | |||
| Magic number(s): N/A | Magic number(s): N/A | |||
| File extension(s): N/A | File extension(s): N/A | |||
| skipping to change at page 36, line 44 ¶ | skipping to change at line 1661 ¶ | |||
| Intended usage: | Intended usage: | |||
| COMMON | COMMON | |||
| Restrictions on usage: | Restrictions on usage: | |||
| N/A | N/A | |||
| Author: | Author: | |||
| See Authors' Addresses section. | See Authors' Addresses section. | |||
| Change controller: | Change controller: | |||
| Internet Engineering Task Force (mailto:iesg@ietf.org). | Internet Engineering Task Force (iesg@ietf.org) | |||
| 7.2. application/alto-cdnifilter+json Media Type | 7.2. application/alto-cdnifilter+json Media Type | |||
| Type name: | Type name: | |||
| application | application | |||
| Subtype name: | Subtype name: | |||
| alto-cdnifilter+json | alto-cdnifilter+json | |||
| Required parameters: | Required parameters: | |||
| skipping to change at page 37, line 24 ¶ | skipping to change at line 1690 ¶ | |||
| Security considerations: | Security considerations: | |||
| Security considerations related to the generation and consumption | Security considerations related to the generation and consumption | |||
| of ALTO Protocol messages are discussed in Section 15 of | of ALTO Protocol messages are discussed in Section 15 of | |||
| [RFC7285]. | [RFC7285]. | |||
| Interoperability considerations: | Interoperability considerations: | |||
| N/A | N/A | |||
| Published specification: | Published specification: | |||
| Section 5 of RFCthis | Section 5 of RFC 9241 | |||
| Applications that use this media type: | Applications that use this media type: | |||
| ALTO servers and ALTO clients [RFC7285] either stand alone or are | ALTO servers and ALTO clients [RFC7285] either stand alone or are | |||
| embedded within other applications that provides CDNI interfaces | embedded within other applications that provide CDNI interfaces | |||
| for uCDNs or dCDNs and supports CDNI capability-based filtering. | for uCDNs or dCDNs and supports CDNI capability-based filtering. | |||
| Fragment identifier considerations: | Fragment identifier considerations: | |||
| N/A | N/A | |||
| Additional information: | Additional information: | |||
| Magic number(s): N/A | Magic number(s): N/A | |||
| File extension(s): N/A | File extension(s): N/A | |||
| skipping to change at page 38, line 6 ¶ | skipping to change at line 1720 ¶ | |||
| Intended usage: | Intended usage: | |||
| COMMON | COMMON | |||
| Restrictions on usage: | Restrictions on usage: | |||
| N/A | N/A | |||
| Author: | Author: | |||
| See Authors' Addresses section. | See Authors' Addresses section. | |||
| Change controller: | Change controller: | |||
| Internet Engineering Task Force (mailto:iesg@ietf.org). | Internet Engineering Task Force (iesg@ietf.org) | |||
| 7.3. CDNI Metadata Footprint Type Registry | ||||
| This document updates the CDNI Metadata Footprint Types Registry | 7.3. CDNI Metadata Footprint Types Registry | |||
| created by Section 7.2 of [RFC8006]. A new footprint type is to be | ||||
| registered, listed in Table 1. | ||||
| +================+=====================+======================+ | This document updates the "CDNI Metadata Footprint Types" registry | |||
| | Footprint Type | Description | Specification | | created by Section 7.2 of [RFC8006]. A new footprint type, which is | |||
| +================+=====================+======================+ | listed in Table 1, has been registered. | |||
| | altopid | A list of PID names | Section 4 of RFCthis | | ||||
| +----------------+---------------------+----------------------+ | ||||
| Table 1: CDNI Metadata Footprint Type | +================+=====================+=====================+ | |||
| | Footprint Type | Description | Reference | | ||||
| +================+=====================+=====================+ | ||||
| | altopid | A list of PID names | RFC 9241, Section 4 | | ||||
| +----------------+---------------------+---------------------+ | ||||
| [RFC Editor: Please replace RFCthis with the published RFC number for | Table 1: CDNI Metadata Footprint Type | |||
| this document.] | ||||
| 7.4. ALTO Entity Domain Type Registry | 7.4. ALTO Entity Domain Types Registry | |||
| This document updates the ALTO Entity Domain Type Registry created by | This document updates the "ALTO Entity Domain Types" registry created | |||
| Section 11.2 of [I-D.ietf-alto-unified-props-new]. Two new entity | by Section 11.2 of [RFC9240]. Two new entity domain types, which are | |||
| domain types are to be registered, listed in Table 2. | listed in Table 2, have been registered. | |||
| +=============+============+=============+=============+=========+ | +=============+============+=============+=============+=========+ | |||
| | Identifier | Entity | Hierarchy & | Media Type | Mapping | | | Identifier | Entity | Hierarchy | Media Type | Mapping | | |||
| | | Address | Inheritance | of Defining | to ALTO | | | | Identifier | and | of Defining | to ALTO | | |||
| | | Encoding | | Resource | Address | | | | Encoding | Inheritance | Resource | Address | | |||
| | | | | | Type | | | | | | | Type | | |||
| +=============+============+=============+=============+=========+ | +=============+============+=============+=============+=========+ | |||
| | asn | See | None | None | false | | | asn | See RFC | None | None | false | | |||
| | | 9241, | | | | | ||||
| | | Section | | | | | | | Section | | | | | |||
| | | 6.1.1.2 of | | | | | | | 6.1.1.2 | | | | | |||
| | | RFCthis | | | | | ||||
| +-------------+------------+-------------+-------------+---------+ | +-------------+------------+-------------+-------------+---------+ | |||
| | countrycode | See | None | None | false | | | countrycode | See RFC | None | None | false | | |||
| | | 9241, | | | | | ||||
| | | Section | | | | | | | Section | | | | | |||
| | | 6.1.2.2 of | | | | | | | 6.1.2.2 | | | | | |||
| | | RFCthis | | | | | ||||
| +-------------+------------+-------------+-------------+---------+ | +-------------+------------+-------------+-------------+---------+ | |||
| Table 2: Additional ALTO Entity Domain Types | Table 2: Additional ALTO Entity Domain Types | |||
| [RFC Editor: Please replace RFCthis with the published RFC number for | 7.5. ALTO Entity Property Types Registry | |||
| this document.] | ||||
| 7.5. ALTO Entity Property Type Registry | ||||
| This document updates the ALTO Entity Property Type Registry created | This document updates the "ALTO Entity Property Types" registry | |||
| by Section 11.3 of [I-D.ietf-alto-unified-props-new]. A new entity | created by Section 11.3 of [RFC9240]. A new entity property type, | |||
| property type is to be registered, listed in Table 3. | which is listed in Table 3, has been registered. | |||
| +===================+====================+===================+ | +===================+====================+===================+ | |||
| | Identifier | Intended Semantics | Media Type of | | | Identifier | Intended Semantics | Media Type of | | |||
| | | | Defining Resource | | | | | Defining Resource | | |||
| +===================+====================+===================+ | +===================+====================+===================+ | |||
| | cdni-capabilities | Section 6.2 of | application/alto- | | | cdni-capabilities | See RFC 9241, | application/alto- | | |||
| | | RFCthis | cdni+json | | | | Section 6.2 | cdni+json | | |||
| +-------------------+--------------------+-------------------+ | +-------------------+--------------------+-------------------+ | |||
| Table 3: Additional ALTO Entity Property Type | Table 3: Additional ALTO Entity Property Type | |||
| [RFC Editor: Please replace RFCthis with the published RFC number for | ||||
| this document.] | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| As an extension of the base ALTO protocol [RFC7285], this document | As an extension of the base ALTO Protocol [RFC7285], this document | |||
| fits into the architecture of the base protocol. And hence Security | fits into the architecture of the base protocol, and hence Security | |||
| Considerations of the base protocol (Section 15 of [RFC7285]) fully | Considerations of the base protocol (Section 15 of [RFC7285]) fully | |||
| apply when this extension is provided by an ALTO server. | apply when this extension is provided by an ALTO server. | |||
| In the context of CDNI Advertisement, the following security risk | In the context of CDNI Advertisement, the following security risk | |||
| scenarios should be considered: | scenarios should be considered: | |||
| * For authenticity and integrity of ALTO information, an attacker | * Authenticity and integrity of ALTO information: an attacker may | |||
| may disguise itself as an ALTO server for a dCDN (e.g., by | disguise itself as an ALTO server for a dCDN (e.g., by starting a | |||
| starting a man-in-the-middle attack), and provide false | on-path attack) and provide false capabilities and footprints to a | |||
| capabilities and footprints to a uCDN using the CDNI Advertisement | uCDN using the CDNI Advertisement Service. Such false information | |||
| service. Such false information may lead a uCDN to (1) select an | may lead a uCDN to (1) select an incorrect dCDN to serve user | |||
| incorrect dCDN to serve user requests, or (2) skip uCDNs in good | requests or (2) skip uCDNs in good conditions. To address this | |||
| conditions. To address this risk, protection strategies in | risk, protection strategies in Section 15.1.2 of [RFC7285] can be | |||
| Section 15.1.2 of [RFC7285] can be applied. | applied. | |||
| * For potential undesirable guidance from authenticated ALTO | * Potential undesirable guidance from authenticated ALTO | |||
| information, a dCDN can provide a uCDN with limited capabilities | information: a dCDN can provide a uCDN with limited capabilities | |||
| and smaller footprint coverage so that the dCDN can avoid | and smaller footprint coverage so that the dCDN can avoid | |||
| transferring traffic for a uCDN which they should have to | transferring traffic for a uCDN that they should have to transfer. | |||
| transfer. To reduce this risk, the protection strategies in | To reduce this risk, the protection strategies in Section 15.2.2 | |||
| Section 15.2.2 of [RFC7285] can be considered. | of [RFC7285] can be considered. | |||
| * For confidentiality and privacy of ALTO information, footprint | * Confidentiality and privacy of ALTO information: footprint | |||
| properties integrated with ALTO property maps may expose network | properties integrated with ALTO property maps may expose network | |||
| location identifiers (e.g., IP addresses or fine-grained PIDs). | location identifiers (e.g., IP addresses or fine-grained PIDs). | |||
| To address this risk, the protection strategy for risk types (1) | To address this risk, the protection strategy for risk types (1) | |||
| and (3) as described in Section 15.3 of [RFC7285] can be | and (3) as described in Section 15.3 of [RFC7285] can be | |||
| considered. | considered. | |||
| * For availability of ALTO services, an attacker may conduct service | * For availability of ALTO services, an attacker may conduct | |||
| degradation attacks using services defined in this document to | service-degradation attacks using services defined in this | |||
| disable ALTO services of a network. It may request potentially | document to disable ALTO services of a network. It may request | |||
| large, full CDNI Advertisement resources from an ALTO server in a | potentially large, full CDNI Advertisement resources from an ALTO | |||
| dCDN continuously, to consume the bandwidth resources of that ALTO | server in a dCDN continuously in order to consume the bandwidth | |||
| server. It may also query filtered property map services with | resources of that ALTO server. It may also query filtered | |||
| many smaller individual footprints, to consume the computation | property Map Services with many smaller individual footprints in | |||
| resources of the ALTO server. To mitigate these risks, the | order to consume the computation resources of the ALTO server. To | |||
| protection strategies in Section 15.5.2 of [RFC7285] can be | mitigate these risks, the protection strategies in Section 15.5.2 | |||
| applied. | of [RFC7285] can be applied. | |||
| Although protection strategies as described in Section 15 of | Although protection strategies as described in Section 15 of | |||
| [RFC7285] should be applied to address aforementioned security and | [RFC7285] should be applied to address aforementioned security and | |||
| privacy considerations, two special cases need to be included as | privacy considerations, two special cases need to be included as | |||
| follows: | follows: | |||
| * As required by section 7 of [RFC8008], | * As required by Section 7 of [RFC8008], | |||
| "All protocols that implement these capabilities and footprint | | All protocols that implement these capabilities and footprint | |||
| advertisement objects are REQUIRED to provide integrity and | | advertisement objects are REQUIRED to provide integrity and | |||
| authentication services." | | authentication services. | |||
| Therefore, the uCDN (ALTO Client) MUST be authenticated to the | Therefore, the uCDN (ALTO Client) MUST be authenticated to the | |||
| dCDN (ALTO Server). And the dCDN (ALTO Server) MUST support HTTP | dCDN (ALTO Server). And the dCDN (ALTO Server) MUST support HTTP | |||
| Digest Authentication and MAY also support TLS mutual | Digest Authentication [RFC7616] and MAY also support TLS mutual | |||
| authentication. The authentication method will need to be | authentication [RFC8446]. The authentication method will need to | |||
| negotiated out of band and is out of scope for this document, as | be negotiated out of band and is out of scope for this document, | |||
| is the approach for provisioning and managing these credentials. | as is the approach for provisioning and managing these | |||
| credentials. | ||||
| * One specific information leakage risk introduced by this document | * One specific information leakage risk introduced by this document | |||
| could not be addressed by these strategies. In particular, if a | cannot be addressed by these strategies. In particular, if a dCDN | |||
| dCDN signs agreements with multiple uCDNs without any isolation, | A signs agreements with multiple uCDNs without any isolation, dCDN | |||
| this dCDN may disclose extra information of one uCDN to another | A may disclose extra information of one uCDN to another one. In | |||
| one. In that case, one uCDN may redirect requests which should | that case, one uCDN may redirect requests that should not have to | |||
| not have to be served by this dCDN to it. | be served by dCDN A to dCDN A. | |||
| To reduce the risk, a dCDN SHOULD isolate full/filtered CDNI | To reduce the risk, a dCDN SHOULD isolate full and/or filtered | |||
| Advertisement resources for different uCDNs. It could consider | CDNI Advertisement resources for different uCDNs. It could | |||
| generating URIs of different full/filtered CDNI Advertisement | consider generating URIs of different full and/or filtered CDNI | |||
| resources by hashing its company ID, a uCDN's company ID as well | Advertisement resources by hashing its company ID, a uCDN's | |||
| as their agreements. A dCDN SHOULD avoid exposing all full/ | company ID as well as their agreements. A dCDN SHOULD avoid | |||
| filtered CDNI Advertisement resources in one of its IRDs. | exposing all full and/or filtered CDNI Advertisement resources in | |||
| one of its IRDs. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | ||||
| [I-D.ietf-alto-unified-props-new] | 9.1. Normative References | |||
| Roome, W., Randriamasy, S., Yang, Y. R., Zhang, J. J., and | ||||
| K. Gao, "An ALTO Extension: Entity Property Maps", Work in | ||||
| Progress, Internet-Draft, draft-ietf-alto-unified-props- | ||||
| new-22, 25 January 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-alto- | ||||
| unified-props-new-22>. | ||||
| [ISO3166-1] | [ISO3166-1] | |||
| ISO (International Organization for Standardization), ., | International Organization for Standardization, "Codes for | |||
| "ISO 3166-1: Codes for the representation of names of | the representation of names of countries and their | |||
| countries and their subdivisions -- Part 1: Country | subdivisions -- Part 1: Country codes", ISO 3166-1:2020, | |||
| codes", 2020. | August 2020. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet | [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet | |||
| Autonomous System (AS) Number Space", RFC 6793, | Autonomous System (AS) Number Space", RFC 6793, | |||
| DOI 10.17487/RFC6793, December 2012, | DOI 10.17487/RFC6793, December 2012, | |||
| <https://www.rfc-editor.org/rfc/rfc6793>. | <https://www.rfc-editor.org/info/rfc6793>. | |||
| [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., | [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., | |||
| Previdi, S., Roome, W., Shalunov, S., and R. Woundy, | Previdi, S., Roome, W., Shalunov, S., and R. Woundy, | |||
| "Application-Layer Traffic Optimization (ALTO) Protocol", | "Application-Layer Traffic Optimization (ALTO) Protocol", | |||
| RFC 7285, DOI 10.17487/RFC7285, September 2014, | RFC 7285, DOI 10.17487/RFC7285, September 2014, | |||
| <https://www.rfc-editor.org/rfc/rfc7285>. | <https://www.rfc-editor.org/info/rfc7285>. | |||
| [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, | [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, | |||
| DOI 10.17487/RFC7493, March 2015, | DOI 10.17487/RFC7493, March 2015, | |||
| <https://www.rfc-editor.org/rfc/rfc7493>. | <https://www.rfc-editor.org/info/rfc7493>. | |||
| [RFC7616] Shekh-Yusef, R., Ed., Ahrens, D., and S. Bremer, "HTTP | ||||
| Digest Access Authentication", RFC 7616, | ||||
| DOI 10.17487/RFC7616, September 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7616>. | ||||
| [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, | |||
| "Content Delivery Network Interconnection (CDNI) | "Content Delivery Network Interconnection (CDNI) | |||
| Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc8006>. | <https://www.rfc-editor.org/info/rfc8006>. | |||
| [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, | |||
| R., and K. Ma, "Content Delivery Network Interconnection | R., and K. Ma, "Content Delivery Network Interconnection | |||
| (CDNI) Request Routing: Footprint and Capabilities | (CDNI) Request Routing: Footprint and Capabilities | |||
| Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc8008>. | <https://www.rfc-editor.org/info/rfc8008>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
| Interchange Format", STD 90, RFC 8259, | Interchange Format", STD 90, RFC 8259, | |||
| DOI 10.17487/RFC8259, December 2017, | DOI 10.17487/RFC8259, December 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8259>. | <https://www.rfc-editor.org/info/rfc8259>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic | [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic | |||
| Optimization (ALTO) Incremental Updates Using Server-Sent | Optimization (ALTO) Incremental Updates Using Server-Sent | |||
| Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November | Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November | |||
| 2020, <https://www.rfc-editor.org/rfc/rfc8895>. | 2020, <https://www.rfc-editor.org/info/rfc8895>. | |||
| [RFC9240] Roome, W., Randriamasy, S., Yang, Y., Zhang, J., and K. | ||||
| Gao, "An Extension for Application-Layer Traffic | ||||
| Optimization (ALTO): Entity Property Maps", RFC 9240, | ||||
| DOI 10.17487/RFC9240, July 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9240>. | ||||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-alto-path-vector] | [ALTO-PATH-VECTOR] | |||
| Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J. | Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J. | |||
| Zhang, "An ALTO Extension: Path Vector", Work in Progress, | Zhang, "An ALTO Extension: Path Vector", Work in Progress, | |||
| Internet-Draft, draft-ietf-alto-path-vector-21, 2 February | Internet-Draft, draft-ietf-alto-path-vector-25, 20 March | |||
| 2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | |||
| alto-path-vector-21>. | alto-path-vector-25>. | |||
| [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic | [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic | |||
| Optimization (ALTO) Problem Statement", RFC 5693, | Optimization (ALTO) Problem Statement", RFC 5693, | |||
| DOI 10.17487/RFC5693, October 2009, | DOI 10.17487/RFC5693, October 2009, | |||
| <https://www.rfc-editor.org/rfc/rfc5693>. | <https://www.rfc-editor.org/info/rfc5693>. | |||
| [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | |||
| Distribution Network Interconnection (CDNI) Problem | Distribution Network Interconnection (CDNI) Problem | |||
| Statement", RFC 6707, DOI 10.17487/RFC6707, September | Statement", RFC 6707, DOI 10.17487/RFC6707, September | |||
| 2012, <https://www.rfc-editor.org/rfc/rfc6707>. | 2012, <https://www.rfc-editor.org/info/rfc6707>. | |||
| [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and | [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and | |||
| S. Previdi, "Application-Layer Traffic Optimization (ALTO) | S. Previdi, "Application-Layer Traffic Optimization (ALTO) | |||
| Deployment Considerations", RFC 7971, | Deployment Considerations", RFC 7971, | |||
| DOI 10.17487/RFC7971, October 2016, | DOI 10.17487/RFC7971, October 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc7971>. | <https://www.rfc-editor.org/info/rfc7971>. | |||
| [RFC7975] Niven-Jenkins, B., Ed. and R. van Brandenburg, Ed., | [RFC7975] Niven-Jenkins, B., Ed. and R. van Brandenburg, Ed., | |||
| "Request Routing Redirection Interface for Content | "Request Routing Redirection Interface for Content | |||
| Delivery Network (CDN) Interconnection", RFC 7975, | Delivery Network (CDN) Interconnection", RFC 7975, | |||
| DOI 10.17487/RFC7975, October 2016, | DOI 10.17487/RFC7975, October 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc7975>. | <https://www.rfc-editor.org/info/rfc7975>. | |||
| Acknowledgments | Acknowledgments | |||
| The authors thank Matt Caulfield, Danny Alex Lachos Perez, Daryl | The authors thank Matt Caulfield, Danny Alex Lachos Perez, Daryl | |||
| Malas and Sanjay Mishra for their timely reviews and invaluable | Malas, and Sanjay Mishra for their timely reviews and invaluable | |||
| comments. Big thanks also to ALTO WG Chairs (Qin Wu and Vijay | comments. Big thanks also to the ALTO WG Chairs (Qin Wu and Vijay | |||
| Gurbani), and all the directorate reviewers and IESG reviewers | Gurbani), all the directorate reviewers, and the IESG reviewers | |||
| (Martin Duke, Erik Kline, Martin Vigoureux, Murray Kucherawy, Roman | (Martin Duke, Erik Kline, Martin Vigoureux, Murray Kucherawy, Roman | |||
| Danyliw, Zaheduzzaman Sarker, Eric Vyncke, and Francesca Palombini), | Danyliw, Zaheduzzaman Sarker, Éric Vyncke, and Francesca Palombini), | |||
| for their thorough reviews, discussions, guidance and shepherding, | for their thorough reviews, discussions, guidance, and shepherding, | |||
| that further improve this document. | which further improve this document. | |||
| Jan Seedorf has been partially supported by the GreenICN project | Jan Seedorf has been partially supported by the GreenICN project | |||
| (GreenICN: Architecture and Applications of Green Information Centric | (GreenICN: Architecture and Applications of Green Information Centric | |||
| Networking), a research project supported jointly by the European | Networking), a research project supported jointly by the European | |||
| Commission under its 7th Framework Program (contract no. 608518) and | Commission under its 7th Framework Program (contract no. 608518) and | |||
| the National Institute of Information and Communications Technology | the National Institute of Information and Communications Technology | |||
| (NICT) in Japan (contract no. 167). The views and conclusions | (NICT) in Japan (contract no. 167). The views and conclusions | |||
| contained herein are those of the authors and should not be | contained herein are those of the authors and should not be | |||
| interpreted as necessarily representing the official policies or | interpreted as necessarily representing the official policies or | |||
| endorsements, either expressed or implied, of the GreenICN project, | endorsements, either expressed or implied, of the GreenICN project, | |||
| the European Commission, or NICT. | the European Commission, or NICT. | |||
| This document has also been supported by the Coordination Support | This document has also been supported by the Coordination Support | |||
| Action entitled 'Supporting European Experts Presence in | Action entitled 'Supporting European Experts Presence in | |||
| lnternational Standardisation Activities in ICT' ("StandlCT.eu") | International Standardisation Activities in ICT' (StandICT.eu | |||
| funded by the European Commission under the Horizon 2020 Programme | <https://www.standict.eu/>) funded by the European Commission under | |||
| with Grant Agreement no. 780439. The views and conclusions contained | the Horizon 2020 Programme with Grant Agreement no. 780439. The | |||
| herein are those of the authors and should not be interpreted as | views and conclusions contained herein are those of the authors and | |||
| necessarily representing the official policies or endorsements, | should not be interpreted as necessarily representing the official | |||
| either expressed or implied, of the European Commission. | policies or endorsements, either expressed or implied, of the | |||
| European Commission. | ||||
| Contributors | Contributors | |||
| Xiao Shawn Lin | Xiao Shawn Lin | |||
| Huawei | Huawei | |||
| 2222 Newjinqiao Rd | 2222 Newjinqiao Rd | |||
| Shanghai | Shanghai | |||
| 200125 | 200125 | |||
| China | China | |||
| Phone: +86-15316812351 | Phone: +86-15316812351 | |||
| skipping to change at page 44, line 4 ¶ | skipping to change at line 2000 ¶ | |||
| Xiao Shawn Lin | Xiao Shawn Lin | |||
| Huawei | Huawei | |||
| 2222 Newjinqiao Rd | 2222 Newjinqiao Rd | |||
| Shanghai | Shanghai | |||
| 200125 | 200125 | |||
| China | China | |||
| Phone: +86-15316812351 | Phone: +86-15316812351 | |||
| Email: x.shawn.lin@gmail.com | Email: x.shawn.lin@gmail.com | |||
| Authors' Addresses | Authors' Addresses | |||
| Jan Seedorf | Jan Seedorf | |||
| HFT Stuttgart - Univ. of Applied Sciences | HFT Stuttgart - Univ. of Applied Sciences | |||
| Schellingstrasse 24 | Schellingstrasse 24 | |||
| 70174 Stuttgart | 70174 Stuttgart | |||
| Germany | Germany | |||
| Phone: +49-0711-8926-2801 | Phone: +49-0711-8926-2801 | |||
| Email: jan.seedorf@hft-stuttgart.de | Email: jan.seedorf@hft-stuttgart.de | |||
| Y. Richard Yang | Y. Richard Yang | |||
| Yale University | Yale University | |||
| 51 Prospect Street | 51 Prospect Street | |||
| New Haven, CT 06511 | New Haven, CT 06511 | |||
| United States of America | United States of America | |||
| Phone: +1-203-432-6400 | Phone: +1-203-432-6400 | |||
| Email: yry@cs.yale.edu | Email: yry@cs.yale.edu | |||
| URI: http://www.cs.yale.edu/~yry/ | URI: http://www.cs.yale.edu/~yry/ | |||
| Kevin J. Ma | Kevin J. Ma | |||
| Ericsson | Ericsson | |||
| 43 Nagog Park | 43 Nagog Park | |||
| Acton, MA 01720 | Acton, MA 01720 | |||
| United States of America | United States of America | |||
| Phone: +1-978-844-5100 | Phone: +1-978-844-5100 | |||
| Email: kevin.j.ma.ietf@gmail.com | Email: kevin.j.ma.ietf@gmail.com | |||
| Jon Peterson | Jon Peterson | |||
| NeuStar | NeuStar | |||
| 1800 Sutter St Suite 570 | 1800 Sutter St., Suite 570 | |||
| Concord, CA 94520 | Concord, CA 94520 | |||
| United States of America | United States of America | |||
| Email: jon.peterson@neustar.biz | Email: jon.peterson@neustar.biz | |||
| Jingxuan Jensen Zhang | Jingxuan Jensen Zhang | |||
| Tongji University | Tongji University | |||
| 4800 Cao'an Hwy | 4800 Cao'an Hwy | |||
| Shanghai | Shanghai | |||
| 201804 | 201804 | |||
| China | China | |||
| Email: jingxuan.zhang@tongji.edu.cn | Email: jingxuan.zhang@tongji.edu.cn | |||
| End of changes. 154 change blocks. | ||||
| 424 lines changed or deleted | 425 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||