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 - Univ. of Applied Sciences | |||
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 | May 2022 | |||
Content Delivery Network Interconnection (CDNI) Request Routing: CDNI | Content Delivery Network Interconnection (CDNI) Request Routing: CDNI | |||
Footprint and Capabilities Advertisement using ALTO | Footprint and Capabilities Advertisement Using ALTO | |||
draft-ietf-alto-cdni-request-routing-alto-22 | ||||
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 | |||
skipping to change at page 10, line 26 ¶ | skipping to change at line 452 ¶ | |||
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, capability- | |||
value, and footprints, where footprints are defined in | value, and footprints, where footprints are defined in | |||
Section 4.2.2.2 of [RFC8006]. | Section 4.2.2.2 of [RFC8006]. | |||
To be self-contained, below is an equivalent specification of | To be self-contained, below is an equivalent specification of | |||
BaseAdvertisementObject described in the ALTO-style notation (see | BaseAdvertisementObject described in the ALTO-style notation (see | |||
Section 8.2 of [RFC7285]). As mentioned above, the normative | Section 8.2 of [RFC7285]). As mentioned above, the normative | |||
skipping to change at page 11, line 7 ¶ | skipping to change at line 481 ¶ | |||
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 560 ¶ | |||
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 18, line 44 ¶ | skipping to change at line 856 ¶ | |||
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 23, line 14 ¶ | skipping to change at line 1029 ¶ | |||
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; | |||
skipping to change at page 24, line 42 ¶ | skipping to change at line 1100 ¶ | |||
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 | Same to the "uses" field of the CDNI Advertisement resource (see | |||
Section 3.5). | 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 superset | |||
of mandatory properties in capability value of X semantically. | 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. | |||
skipping to change at page 25, line 41 ¶ | skipping to change at line 1148 ¶ | |||
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 of | |||
https/1.1 delivery protocol. | 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 1259 ¶ | |||
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 footprint- | |||
value. A footprint-value is an array of footprint values conforming | value. A footprint-value is an array of footprint values conforming | |||
to the specification associated with the registered footprint type | to the specification associated with the registered footprint type | |||
("ipv4cidr", "ipv6cidr", "asn", "countrycode", and "altopid"). | ("ipv4cidr", "ipv6cidr", "asn", "countrycode", and "altopid"). | |||
Considering each ALTO entity defined in | Considering each ALTO entity defined in [RFC9240] also has two | |||
[I-D.ietf-alto-unified-props-new] also has two properties: entity | properties: entity domain type and domain-specific identifier, a | |||
domain type and domain-specific identifier, a straightforward | straightforward approach to represent a footprint as an ALTO entity | |||
approach to represent a footprint as an ALTO entity is to represent | is to represent its footprint-type as an entity domain type, and its | |||
its footprint-type as an entity domain type, and its footprint value | 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 1375 ¶ | |||
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 as format of CDNICapability (see Section 5.3). The value | |||
capabilities" property for an "ipv4", "ipv6", "asn", "countrycode" or | 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 36, line 14 ¶ | skipping to change at line 1628 ¶ | |||
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 1658 ¶ | |||
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 1687 ¶ | |||
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 1717 ¶ | |||
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 | man-in-the-middle attack) and provide false capabilities and | |||
capabilities and footprints to a uCDN using the CDNI Advertisement | footprints to a uCDN using the CDNI Advertisement Service. Such | |||
service. Such false information may lead a uCDN to (1) select an | false information may lead a uCDN to (1) select an incorrect dCDN | |||
incorrect dCDN to serve user requests, or (2) skip uCDNs in good | to serve user requests or (2) skip uCDNs in good conditions. To | |||
conditions. To address this risk, protection strategies in | address this risk, protection strategies in Section 15.1.2 of | |||
Section 15.1.2 of [RFC7285] can be applied. | [RFC7285] can be 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 and MAY also support TLS mutual | |||
authentication. The authentication method will need to be | authentication. The authentication method will need to be | |||
negotiated out of band and is out of scope for this document, as | negotiated out of band and is out of scope for this document, as | |||
is the approach for provisioning and managing these credentials. | 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, | signs agreements with multiple uCDNs without any isolation, this | |||
this dCDN may disclose extra information of one uCDN to another | dCDN may disclose extra information of one uCDN to another one. | |||
one. In that case, one uCDN may redirect requests which should | In that case, one uCDN may redirect requests which should not have | |||
not have to be served by this dCDN to it. | to be served by this dCDN to it. | |||
To reduce the risk, a dCDN SHOULD isolate full/filtered CDNI | To reduce the risk, a dCDN SHOULD isolate full/filtered CDNI | |||
Advertisement resources for different uCDNs. It could consider | Advertisement resources for different uCDNs. It could consider | |||
generating URIs of different full/filtered CDNI Advertisement | generating URIs of different full/filtered CDNI Advertisement | |||
resources by hashing its company ID, a uCDN's company ID as well | resources by hashing its company ID, a uCDN's company ID as well | |||
as their agreements. A dCDN SHOULD avoid exposing all full/ | as their agreements. A dCDN SHOULD avoid exposing all full/ | |||
filtered CDNI Advertisement resources in one of its IRDs. | 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>. | |||
[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>. | |||
[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, "ALTO Extension: Entity Property Maps", RFC 9240, | ||||
DOI 10.17487/RFC9240, May 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 1985 ¶ | |||
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. 131 change blocks. | ||||
368 lines changed or deleted | 355 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/ |