draft-ietf-cdni-request-routing-extensions-08.txt | rfc8804.txt | |||
---|---|---|---|---|
Network Working Group O. Finkelman | Internet Engineering Task Force (IETF) O. Finkelman | |||
Internet-Draft Qwilt | Request for Comments: 8804 Qwilt | |||
Intended status: Standards Track S. Mishra | Category: Standards Track S. Mishra | |||
Expires: May 23, 2020 Verizon | ISSN: 2070-1721 Verizon | |||
November 20, 2019 | September 2020 | |||
CDNI Request Routing Extensions | Content Delivery Network Interconnection (CDNI) Request Routing | |||
draft-ietf-cdni-request-routing-extensions-08 | Extensions | |||
Abstract | Abstract | |||
Open Caching architecture is a use case of Content Delivery Networks | Open Caching architecture is a use case of Content Delivery Network | |||
Interconnection (CDNI) in which the commercial Content Delivery | Interconnection (CDNI) in which the commercial Content Delivery | |||
Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer | Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer | |||
serves as the downstream CDN (dCDN). The extensions specified in | serves as the downstream CDN (dCDN). This document defines | |||
this document to the CDNI Metadata Interface (MI) and the Footprint | extensions to the CDNI Metadata Interface (MI) and the Footprint & | |||
and Capabilities Interface (FCI) are derived from requirements raised | Capabilities Advertisement interface (FCI). These extensions are | |||
by Open Caching but are also applicable to CDNI use cases in general. | derived from requirements raised by Open Caching but are also | |||
applicable to CDNI use cases in general. | ||||
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 May 23, 2020. | 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/rfc8804. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.2. Requirements Language | |||
2. Redirect Target Capability . . . . . . . . . . . . . . . . . 4 | 2. Redirect Target Capability | |||
2.1. DNS Redirect Target . . . . . . . . . . . . . . . . . . . 5 | 2.1. DNS Redirect Target | |||
2.2. HTTP Redirect Target . . . . . . . . . . . . . . . . . . 5 | 2.2. HTTP Redirect Target | |||
2.3. Properties of Redirect Target Capability Object . . . . . 5 | 2.3. Properties of Redirect Target Capability Object | |||
2.4. DnsTarget Object . . . . . . . . . . . . . . . . . . . . 7 | 2.4. DnsTarget Object | |||
2.4.1. DNS Target Example . . . . . . . . . . . . . . . . . 7 | 2.4.1. DnsTarget Example | |||
2.5. HttpTarget Object . . . . . . . . . . . . . . . . . . . . 8 | 2.5. HttpTarget Object | |||
2.5.1. HTTP Target Example . . . . . . . . . . . . . . . . . 9 | 2.5.1. HttpTarget Example | |||
2.6. Usage Example . . . . . . . . . . . . . . . . . . . . . . 10 | 2.6. Usage Example | |||
3. Fallback Target Address Metadata . . . . . . . . . . . . . . 11 | 3. Fallback Target Server Address | |||
3.1. Properties of Fallback Target Address Metadata Object . . 12 | 3.1. Properties of Fallback Target Generic Metadata Object | |||
3.2. Usage Example . . . . . . . . . . . . . . . . . . . . . . 13 | 3.2. Usage Example | |||
3.3. uCDN addressing considerations . . . . . . . . . . . . . 15 | 3.3. uCDN Addressing Considerations | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 4. IANA Considerations | |||
4.1. CDNI Payload Types . . . . . . . . . . . . . . . . . . . 16 | 4.1. CDNI Payload Types | |||
4.1.1. CDNI FCI RedirectTarget Payload Type . . . . . . . . 16 | 4.1.1. CDNI FCI RedirectTarget Payload Type | |||
4.1.2. CDNI MI FallbackTarget Payload Type . . . . . . . . . 16 | 4.1.2. CDNI MI FallbackTarget Payload Type | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 5. Security Considerations | |||
5.1. Confidentiality and Privacy . . . . . . . . . . . . . . . 17 | 5.1. Confidentiality and Privacy | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 | 6. References | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 6.1. Normative References | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 6.2. Informative References | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 18 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The Streaming Video Alliance [SVA] is a global association that works | The Streaming Video Alliance [SVA] is a global association that works | |||
to solve streaming video challenges in an effort to improve end-user | to solve streaming video challenges in an effort to improve end-user | |||
experience and adoption. The Open Caching Working Group [OCWG] of | experience and adoption. The Open Caching Working Group [OCWG] of | |||
the Streaming Video Alliance [SVA] is focused on the delegation of | the Streaming Video Alliance [SVA] is focused on the delegation of | |||
video delivery requests from commercial CDNs to a caching layer at | video delivery requests from commercial CDNs to a caching layer at | |||
the Internet Service Provider's (ISP) network. Open Caching | the ISP's network. Open Caching architecture is a specific use case | |||
architecture is a specific use case of CDNI where the commercial CDN | of CDNI where the commercial CDN is the upstream CDN (uCDN) and the | |||
is the upstream CDN (uCDN) and the ISP caching layer is the | ISP caching layer is the downstream CDN (dCDN). The Open Caching | |||
downstream CDN (dCDN). The Open Caching Request Routing | Request Routing Functional Specification [OC-RR] defines the Request | |||
Specification [OC-RR] defines the Request Routing process and the | Routing process and the interfaces that are required for its | |||
interfaces that are required for its provisioning. This document | provisioning. This document defines the CDNI metadata object | |||
defines and registers CDNI metadata object [RFC8006] and CDNI | [RFC8006] and the CDNI Footprint and Capabilities object [RFC8008] | |||
Footprint and Capabilities object [RFC8008] that are required for | that are required for Open Caching Request Routing: | |||
Open Caching Request Routing. For consistency with other CDNI | ||||
documents this document follows the CDNI convention of uCDN (upstream | ||||
CDN) and dCDN (downstream CDN) to represent the commercial CDN and | ||||
ISP caching layer respectively. | ||||
This document also registers CDNI Payload Types [RFC7736] for the | ||||
defined objects: | ||||
o Redirect Target Capability (for dCDN advertising redirect target | * Redirect Target Capability (for dCDN advertising redirect target | |||
address) | address) | |||
o Fallback Target Metadata (for uCDN configuring fallback target | * Fallback Target Metadata (for uCDN configuring fallback target | |||
address) | address) | |||
This document also registers CDNI Payload Types [RFC7736] for these | ||||
defined objects. | ||||
For consistency with other CDNI documents, this document follows the | ||||
CDNI convention of uCDN (upstream CDN) and dCDN (downstream CDN) to | ||||
represent the commercial CDN and ISP caching layer, respectively. | ||||
1.1. Terminology | 1.1. Terminology | |||
The following terms are used throughout this document: | The following terms are used throughout this document: | |||
o FQDN - Fully Qualified Domain Name | FQDN Fully Qualified Domain Name | |||
o CDN - Content Delivery Network | CDN Content Delivery Network | |||
Additionally, this document reuses the terminology defined in | Additionally, this document reuses the terminology defined in | |||
[RFC6707], [RFC7336], [RFC8006], [RFC8007], and [RFC8008]. | [RFC6707], [RFC7336], [RFC8006], [RFC8007], and [RFC8008]. | |||
Specifically, we use the following CDNI acronyms: | Specifically, we use the following CDNI acronyms: | |||
o FCI - Footprint and Capability Interface (see [RFC8008]) | FCI Footprint & Capabilities Advertisement interface (see | |||
[RFC8008]) | ||||
o MI - Metadata Interface (see [RFC8006]) | MI Metadata Interface (see [RFC8006]) | |||
o uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see | uCDN Upstream CDN (see [RFC7336]) | |||
[RFC7336]) | ||||
o RT - Redirection Target. Endpoint for redirection from uCDN to | dCDN Downstream CDN (see [RFC7336]) | |||
dCDN. | ||||
o RR - Request Router. An element responsible for routing user | RT Redirection Target. Endpoint for redirection from uCDN to | |||
requests, typically using HTTP redirect or DNS CNAME, depending on | dCDN. | |||
the use case. | ||||
RR Request Router. An element responsible for routing user | ||||
requests, typically using HTTP redirect or DNS CNAME, | ||||
depending on the use case. | ||||
1.2. Requirements Language | 1.2. Requirements Language | |||
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. | |||
2. Redirect Target Capability | 2. Redirect Target Capability | |||
Iterative request redirection is defined in Section 1.1 of [RFC7336] | Iterative CDNI Request Redirection is defined in Section 1.1 of | |||
and elaborated by examples in Sections 3.2 and 3.4 of [RFC7336]. A | [RFC7336] and elaborated by examples in Sections 3.2 and 3.4 of | |||
Redirection Target (RT) is defined in Section 2 of [RFC7975] for | [RFC7336]. A Redirection Target (RT) is defined in Section 2 of | |||
Recursive Request Redirection as: | [RFC7975] for Recursive Request Redirection as: | |||
"The endpoint to which the User Agent is redirected. In CDNI, a | | The endpoint to which the User Agent is redirected. In CDNI, an | |||
RT may point to a number of different components, some examples | | RT may point to a number of different components, some examples | |||
include a surrogate in the same CDN as the request router, a | | include a surrogate in the same CDN as the request router, a | |||
request router in a dCDN, or a surrogate in a dCDN". | | request router in a dCDN, or a surrogate in a dCDN. | |||
In this document we adopt the same definition of the RT for the | In this document, we adopt the same definition of the RT for the | |||
Iterative Request Redirect use case. This use case requires the | Iterative Request Redirect use case. This use case requires the | |||
provisioning of the RT address to be used by the uCDN in order to | provisioning of the RT address to be used by the uCDN in order to | |||
redirect to the dCDN. RT addresses can vary between different | redirect to the dCDN. RT addresses can vary between different | |||
footprints, for example, between different regions, and they may also | footprints (for example, between different regions), and they may | |||
change over time, for example as a result of network problems. Given | also change over time (for example, as a result of network problems). | |||
this variable and dynamic nature of the redirect target address, it | Given this variable and dynamic nature of the redirect target | |||
may not be suitable to advertise it during bootstrap. A more dynamic | address, it may not be suitable to advertise it during bootstrap. A | |||
and footprint oriented interface is required. Section 4.3 of | more dynamic and footprint-oriented interface is required. | |||
[RFC7336] suggests that it could be one of the roles of the FCI | Section 4.3 of [RFC7336] suggests that it could be one of the roles | |||
[RFC8008]. Following this suggestion, we have therefore, chosen to | of the FCI [RFC8008]. Following this suggestion, we have therefore | |||
use the CDNI Footprint and Capabilities interface for redirect target | chosen to use the CDNI Footprint & Capabilities Advertisement | |||
address advertisement. | interface for redirect target address advertisement. | |||
Use cases | Use cases: | |||
o Footprint: The dCDN may want to have a different target per | * Footprint: The dCDN may want to have a different target per | |||
footprint. Note that a dCDN may spread across multiple | footprint. Note that a dCDN may spread across multiple | |||
geographies. This makes it easier to route client requests to a | geographies. This makes it easier to route client requests to a | |||
nearby request router. Though this can be achieved using a single | nearby request router. Though this can be achieved using a single | |||
canonical name and "Geo DNS", such that in different geographies | canonical name and "Geo DNS", such that in different geographies | |||
the same hostname is resolved to different IP address, that | the same hostname is resolved to different IP address, that | |||
approach has limitations; for example a client may be using a | approach has limitations; for example, a client may be using a | |||
third party DNS resolver, making it impossible for the redirector | third-party DNS resolver, making it impossible for the redirector | |||
to detect where the client is located, or Geo DNS granularity may | to detect where the client is located, or Geo DNS granularity may | |||
be too rough for the requirement of the application. | be too rough for the requirement of the application. | |||
o Scaling: The dCDN may choose to scale its request routing service | * Scaling: The dCDN may choose to scale its Request Routing service | |||
by deploying more request routers in new locations and advertise | by deploying more request routers in new locations and advertise | |||
them via an updatable interface like the FCI. | them via an updatable interface like the FCI. | |||
The Redirect Target capability object is used to indicate the target | The Redirect Target capability object is used to indicate the target | |||
address the uCDN should use in order to redirect a client to the | address the uCDN should use in order to redirect a client to the | |||
dCDN. A target may be attached to a specific uCDN host, a list of | dCDN. A target may be attached to a specific uCDN host, attached to | |||
uCDN hosts, or used globally for all the hosts of the uCDN. | a list of uCDN hosts, or used globally for all the hosts of the uCDN. | |||
When a dCDN is attaching the redirect target to a specific uCDN host | When a dCDN is attaching the redirect target to a specific uCDN host | |||
or a list of uCDN hosts, the dCDN MUST advertise the hosts within the | or a list of uCDN hosts, the dCDN MUST advertise the hosts within the | |||
Redirect Target capability object as "redirecting-hosts". In this | Redirect Target capability object as "redirecting-hosts". In this | |||
case, the uCDN can redirect to that dCDN address, only if the User | case, the uCDN can redirect to that dCDN address, only if the User | |||
Agent request was to one of these uCDN hosts. | Agent request was to one of these uCDN hosts. | |||
If the redirect target capability object does not contain a target or | If the Redirect Target capability object does not contain a target or | |||
the target is empty, the uCDN MUST interpret it as "no target | the target is empty, the uCDN MUST interpret it as "no target | |||
available for these uCDN hosts for the specified footprint". In case | available for these uCDN hosts for the specified footprint". In case | |||
such a target was already advertised in a previous FCI object, the | such a target was already advertised in a previous FCI object, the | |||
uCDN MUST interpret it as an update that deletes the previous | uCDN MUST interpret it as an update that deletes the previous | |||
redirect target. | redirect target. | |||
2.1. DNS Redirect Target | 2.1. DNS Redirect Target | |||
A redirect target for DNS redirection is a FQDN used as an alias in a | A redirect target for DNS redirection is an FQDN used as an alias in | |||
CNAME record response (see [RFC1034]) of the uCDN DNS router. Note | a CNAME record response (see [RFC1034]) of the uCDN DNS router. Note | |||
that DNS routers make routing decisions based on either the DNS | that DNS routers make routing decisions based on either the DNS | |||
resolver's IP address or the client IP subnet when EDNS0 client- | resolver's IP address or the client IP subnet when EDNS0 client- | |||
subnet (ECS) is used (see [RFC7871]). The dCDN may choose to | subnet (ECS) is used (see [RFC7871]). The dCDN may choose to | |||
advertise redirect targets and footprints to cover both cases, such | advertise redirect targets and footprints to cover both cases, such | |||
that the uCDN resolution would route the DNS query to a different | that the uCDN resolution would route the DNS query to different dCDN | |||
dCDN CNAMEs according client subnet or dCDN resolver IP address. | CNAMEs according to client subnet or dCDN resolver IP address. This | |||
This method further allows the dCDN DNS to optimize the resolution by | method further allows the dCDN DNS to optimize the resolution by | |||
localizing the target CNAMEs. A uCDN implementation SHOULD prefer | localizing the target CNAMEs. A uCDN implementation SHOULD prefer | |||
routing based on client IP subnet when ECS option is present. A dCDN | routing based on client IP subnet when the ECS option is present. A | |||
implementation using the ECS option MUST be aware of the privacy | dCDN implementation using the ECS option MUST be aware of the privacy | |||
drawbacks listed in Section 2 of [RFC7871] and SHOULD follow the | drawbacks listed in Section 2 of [RFC7871] and SHOULD follow the | |||
guidelines provided in Section 11.1 of [RFC7871]. | guidelines provided in Section 11.1 of [RFC7871]. | |||
2.2. HTTP Redirect Target | 2.2. HTTP Redirect Target | |||
A redirect target for HTTP redirection is the URI to be used as the | A redirect target for HTTP redirection is the URI to be used as the | |||
value for the Location header of a HTTP redirect 3xx response, | value for the Location header of an HTTP redirect 3xx response, | |||
typically a 302 (Found) (see Section 7.1.2 of [RFC7231] and section | typically a 302 (Found) (see Section 7.1.2 of [RFC7231] and | |||
6.4 of [RFC7231]). | Section 6.4 of [RFC7231]). | |||
2.3. Properties of Redirect Target Capability Object | 2.3. Properties of Redirect Target Capability Object | |||
The Redirect Target capability object consists of the following | The Redirect Target capability object consists of the following | |||
properties: | properties: | |||
Property: redirecting-hosts | Property: redirecting-hosts | |||
Description: One or more uCDN hosts to which this redirect | Description: One or more uCDN hosts to which this redirect target | |||
target is attached. A redirecting host SHOULD be a host that | is attached. A redirecting host SHOULD be a host that was | |||
was published in a HostMatch object by the uCDN as defined in | published in a HostMatch object by the uCDN as defined in | |||
Section 4.1.2 of [RFC8006]. | Section 4.1.2 of [RFC8006]. | |||
Type: A list of Endpoint objects (see Section 4.3.3 of | Type: A list of Endpoint objects (see Section 4.3.3 of [RFC8006]) | |||
[RFC8006]) | ||||
Mandatory-to-Specify: No. If not present, or empty, the | Mandatory-to-Specify: No. If absent or empty, the redirect | |||
redirect target applies to all hosts of the redirecting uCDN. | target applies to all hosts of the redirecting uCDN. | |||
Property: dns-target | Property: dns-target | |||
Description: Target CNAME record for DNS redirection. | Description: | |||
Target CNAME record for DNS redirection. | ||||
Type: DnsTarget object (see Section 2.4) | Type: | |||
DnsTarget object (see Section 2.4) | ||||
Mandatory-to-Specify: No. If the dns-target is not present or | Mandatory-to-Specify: | |||
empty the uCDN MUST interpret it as "no dns-target available". | No. If the dns-target is absent or empty, the uCDN MUST | |||
interpret it as "no dns-target available". | ||||
Property: http-target | Property: http-target | |||
Description: Target URI for a HTTP redirect. | Description: | |||
Target URI for an HTTP redirect. | ||||
Type: HttpTarget object (see Section 2.5) | Type: | |||
HttpTarget object (see Section 2.5) | ||||
Mandatory-to-Specify: No. If the http-target is not present or | Mandatory-to-Specify: | |||
empty the uCDN MUST interpret it as "no http-target available". | No. If the http-target is absent or empty, the uCDN MUST | |||
interpret it as "no http-target available". | ||||
The following is an example of a Redirect Target capability object | The following is an example of a Redirect Target capability object | |||
serialization that advertises a dCDN target address that is attached | serialization that advertises a dCDN target address that is attached | |||
to a specific list of uCDN "redirecting-hosts". A uCDN host that is | to a specific list of uCDN "redirecting-hosts". A uCDN host that is | |||
included in that list can redirect to the advertised dCDN redirect | included in that list can redirect to the advertised dCDN redirect | |||
target. The capabilities object is serialized as a JSON object as | target. The capabilities object is serialized as a JSON object as | |||
defined in Section 5.1 of [RFC8008] | defined in Section 5.1 of [RFC8008]. | |||
{ | { | |||
"capabilities": [ | "capabilities": [ | |||
{ | { | |||
"capability-type": "FCI.RedirectTarget", | "capability-type": "FCI.RedirectTarget", | |||
"capability-value": { | "capability-value": { | |||
"redirecting-hosts": [ | "redirecting-hosts": [ | |||
"a.service123.ucdn.example.com", | "a.service123.ucdn.example.com", | |||
"b.service123.ucdn.example.com" | "b.service123.ucdn.example.com" | |||
], | ], | |||
"dns-target": { | "dns-target": { | |||
skipping to change at page 7, line 34 ¶ | skipping to change at line 309 ¶ | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
2.4. DnsTarget Object | 2.4. DnsTarget Object | |||
The DnsTarget object gives the target address for the DNS response to | The DnsTarget object gives the target address for the DNS response to | |||
delegate from the uCDN to the dCDN. | delegate from the uCDN to the dCDN. | |||
Property: host | Property: host | |||
Description: The host property is a hostname or an IP address, | Description: The host property is a hostname or an IP address, | |||
without a port number. | without a port number. | |||
Type: Endpoint object as defined in Section 4.3.3 of [RFC8006] | Type: Endpoint object as defined in Section 4.3.3 of [RFC8006], | |||
with the limitation that it SHOULD NOT include a port number | with the limitation that it SHOULD NOT include a port number | |||
and, in case a port number is present, the uCDN MUST ignore it. | and, in case a port number is present, the uCDN MUST ignore it. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
2.4.1. DNS Target Example | 2.4.1. DnsTarget Example | |||
The following is an example of DnsTarget object: | The following is an example of the DnsTarget object: | |||
{ | { | |||
"host": "service123.ucdn.dcdn.example.com" | "host": "service123.ucdn.dcdn.example.com" | |||
} | } | |||
The following is an example of a DNS query for uCDN address | The following is an example of a DNS query for uCDN address | |||
"a.service123.ucdn.example.com" and the corresponding CNAME | "a.service123.ucdn.example.com" and the corresponding CNAME | |||
redirection response: | redirection response: | |||
Query: | Query: | |||
a.service123.ucdn.example.com: | a.service123.ucdn.example.com: | |||
type A, class IN | type A, class IN | |||
Response: | Response: | |||
NAME: a.service123.ucdn.example.com, TYPE: CNAME, CLASS: IN, | NAME: a.service123.ucdn.example.com, TYPE: CNAME, CLASS: IN, | |||
TTL: 120, RDATA: service123.ucdn.dcdn.example.com | TTL: 120, RDATA: service123.ucdn.dcdn.example.com | |||
2.5. HttpTarget Object | 2.5. HttpTarget Object | |||
The HttpTarget object gives the necessary information to construct | The HttpTarget object gives the necessary information to construct | |||
the target Location URI for HTTP redirection. | the target Location URI for HTTP redirection. | |||
Property: host | Property: host | |||
Description: Hostname or IP address and an optional port, i.e., | Description: Hostname or IP address and an optional port, i.e., | |||
the host and port of the authority component of the URI as | the host and port of the authority component of the URI as | |||
described in Section 3.2 of [RFC3986]. | described in Section 3.2 of [RFC3986]. | |||
Type: Endpoint object as defined in Section 4.3.3 of [RFC8006]. | Type: Endpoint object as defined in Section 4.3.3 of [RFC8006]. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: scheme | Property: scheme | |||
Description: A URI scheme to be used in the redirect response | Description: A URI scheme to be used in the redirect response | |||
location construction. When present, the uCDN MUST use the | location construction. When present, the uCDN MUST use the | |||
provided scheme in for HTTP redirection to the dCDN. | provided scheme in for HTTP redirection to the dCDN. | |||
Type: A URI scheme as defined in Section 3.1 of [RFC3986] | Type: A URI scheme as defined in Section 3.1 of [RFC3986], | |||
represented as a JSON string. The scheme MUST be either "http" | represented as a JSON string. The scheme MUST be either "http" | |||
or "https". | or "https". | |||
Mandatory-to-Specify: No. If this property is absent or empty | Mandatory-to-Specify: No. If this property is absent or empty, | |||
the uCDN request router MUST use the same scheme as was used in | the uCDN request router MUST use the same scheme as was used in | |||
the original request before redirection. | the original request before redirection. | |||
Property: path-prefix | Property: path-prefix | |||
Description: A path prefix for the HTTP redirect Location | Description: A path prefix for the HTTP redirect Location header. | |||
header. The original path is appended after this prefix. | The original path is appended after this prefix. | |||
Type: A prefix of a path-absolute as defined in Section 3.3 of | Type: A prefix of a path-absolute as defined in Section 3.3 of | |||
[RFC3986]. The prefix MUST end with a trailing slash, to | [RFC3986]. The prefix MUST end with a trailing slash to | |||
indicate the end of the last path segment in the prefix. | indicate the end of the last path segment in the prefix. | |||
Mandatory-to-Specify: No. If this property is absent or empty, | Mandatory-to-Specify: No. If this property is absent or empty, | |||
the uCDN MUST NOT prepend a path prefix to the original content | the uCDN MUST NOT prepend a path-prefix to the original content | |||
path, i.e., the original path MUST appear in the location URI | path, i.e., the original path MUST appear in the Location URI | |||
right after the authority component. | right after the authority component. | |||
Property: include-redirecting-host | Property: include-redirecting-host | |||
Description: A flag indicating whether or not to include the | Description: A flag indicating whether or not to include the | |||
redirecting host as the first path segment after the path- | redirecting host as the first path segment after the path- | |||
prefix. If set to true and a "path-prefix" is used, the uCDN | prefix. If set to true and a "path-prefix" is used, the uCDN | |||
redirecting host MUST be added as a separate path segment after | redirecting host MUST be added as a separate path segment after | |||
the path-prefix and before the original URL path. If set to | the path-prefix and before the original URL path. If set to | |||
true and there is no path-prefix, the uCDN redirecting host | true and there is no path-prefix, the uCDN redirecting host | |||
MUST be prepended as the first path segment in the redirect | MUST be prepended as the first path segment in the redirect | |||
URL. | URL. | |||
Type: Boolean. | Type: Boolean. | |||
Mandatory-to-Specify: No. Default value is False. | Mandatory-to-Specify: No. Default value is False. | |||
2.5.1. HTTP Target Example | 2.5.1. HttpTarget Example | |||
Example of HttpTarget object with a "scheme", a "path-prefix", and | The following is an example of the HttpTarget object with a "scheme", | |||
"include-redirecting-host" properties: | a "path-prefix", and "include-redirecting-host" properties: | |||
{ | { | |||
"host": "us-east1.dcdn.example.com", | "host": "us-east1.dcdn.example.com", | |||
"scheme": "https", | "scheme": "https", | |||
"path-prefix": "/cache/1/", | "path-prefix": "/cache/1/", | |||
"include-redirecting-host": true | "include-redirecting-host": true | |||
} | } | |||
Example of a HTTP request for content at uCDN host | The following is an example of an HTTP request for content at uCDN | |||
"a.service123.ucdn.example.com" and the corresponding HTTP response | host "a.service123.ucdn.example.com" and the corresponding HTTP | |||
with a Location header, used for redirecting the client to the dCDN, | response with a Location header, used for redirecting the client to | |||
constructed according to the HttpTarget object from the above | the dCDN, constructed according to the HttpTarget object from the | |||
example: | above example: | |||
Request: | Request: | |||
GET /vod/1/movie.mp4 HTTP/1.1 | GET /vod/1/movie.mp4 HTTP/1.1 | |||
Host: a.service123.ucdn.example.com | Host: a.service123.ucdn.example.com | |||
Response: | Response: | |||
HTTP/1.1 302 Found | HTTP/1.1 302 Found | |||
Location: https://us-east1.dcdn.example.com/cache/1/ | Location: https://us-east1.dcdn.example.com/cache/1/ | |||
a.service123.ucdn.example.com/vod/1/movie.mp4 | a.service123.ucdn.example.com/vod/1/movie.mp4 | |||
2.6. Usage Example | 2.6. Usage Example | |||
Before requests can be routed from the uCDN to the dCDN the CDNs must | Before requests can be routed from the uCDN to the dCDN, the CDNs | |||
exchange service configurations between them. Using the MI, the uCDN | must exchange service configurations between them. Using the MI, the | |||
advertises out-of-band its hosts to the dCDN, each host is designated | uCDN advertises out-of-band its hosts to the dCDN; each host is | |||
by a hostname and has its own specific metadata (see Section 4.1.2 of | designated by a hostname and has its own specific metadata (see | |||
[RFC8006]. The dCDN, using the FCI, advertises, also out-of-band, | Section 4.1.2 of [RFC8006]). Using the FCI, the dCDN advertises | |||
the redirect target address object defined in Section 2.3 for the | (also out-of-band) the redirect target address defined in Section 2.3 | |||
relevant uCDN hosts. The following is a generalized example of the | for the relevant uCDN hosts. The following is a generalized example | |||
message flow between an upstream CDN and a downstream dCDN. For | of the message flow between a uCDN and a dCDN. For simplicity, we | |||
simplicity, we focus on the sequence of messages between the uCDN and | focus on the sequence of messages between the uCDN and dCDN and not | |||
dCDN and not on how they are passed. | on how they are passed. | |||
dCDN uCDN | dCDN uCDN | |||
+ + | + + | |||
| | | | | | |||
(1) | MI: host: s123.ucdn.example.com | | (1) | MI: host: s123.ucdn.example.com | | |||
| host-metadata: < metadata > | | | host-metadata: < metadata > | | |||
<-------------------------------------------------------+ | <-------------------------------------------------------+ | |||
| | | | | | |||
(2) | FCI: capability-type: FCI.RedirectTarget | | (2) | FCI: capability-type: FCI.RedirectTarget | | |||
| redirecting-hosts: s123.ucdn.example.com | | | redirecting-hosts: s123.ucdn.example.com | | |||
| target host: us-east1.dcdn.example.com | | | target host: us-east1.dcdn.example.com | | |||
+-------------------------------------------------------> | +-------------------------------------------------------> | |||
| | | | | | |||
| | | | | | |||
+ + | + + | |||
Figure 1: Redirect target address advertisement | Figure 1: Redirect Target Address Advertisement | |||
1. The uCDN advertises a host (s123.ucdn.example.com) with the host | Explanation: | |||
metadata. | ||||
2. The dCDN advertises its FCI objects to the uCDN including a | (1) The uCDN advertises a host (s123.ucdn.example.com) with the host | |||
FCI.RedirectTarget object that contains the redirect target | metadata. | |||
address (us-east1.dcdn.example.com) specified for that uCDN host. | ||||
(2) The dCDN advertises its FCI objects to the uCDN, including a | ||||
Redirect Target capability object that contains the redirect | ||||
target address (us-east1.dcdn.example.com) specified for that | ||||
uCDN host. | ||||
Once the redirect target has been set, the uCDN can start redirecting | Once the redirect target has been set, the uCDN can start redirecting | |||
user requests to the dCDN. The following is a generic sequence of | user requests to the dCDN. The following is a generic sequence of | |||
redirection using the host and redirect target that were advertised | redirection using the host and redirect target that were advertised | |||
in Figure 1 above. | in Figure 1. | |||
End User dCDN uCDN RR | End User dCDN uCDN RR | |||
+ + + | + + + | |||
| | | | | | | | |||
(1) | Request sent s123.ucdn.example.com | | (1) | Request sent s123.ucdn.example.com | | |||
+-----------------------+-----------------------> | +-----------------------+-----------------------> | |||
| | | | | | | | |||
(2) | Redirect to us-east1.dcdn.example.com | | (2) | Redirect to us-east1.dcdn.example.com | | |||
<-----------------------+-----------------------+ | <-----------------------+-----------------------+ | |||
| | | | | | | | |||
(3) | Request us-east1.dcdn.example.com | | (3) | Request us-east1.dcdn.example.com | | |||
+-----------------------> | | +-----------------------> | | |||
| | | | | | | | |||
(4) | Response | | | (4) | Response | | | |||
<-----------------------+ | | <-----------------------+ | | |||
| | | | | | | | |||
+ + + | + + + | |||
Figure 2: Generic requests redirection sequence | Figure 2: Generic Request Redirection Sequence | |||
1. The End User sends a request (DNS or HTTP) to the uCDN Request | Explanation: | |||
Router (RR). | ||||
2. Using the previously advertised Redirect Target, the uCDN | (1) The End User sends a request (DNS or HTTP) to the uCDN Request | |||
redirects the request to the dCDN. | Router (RR). | |||
3. The End User sends a request to the dCDN. | (2) Using the previously advertised Redirect Target, the uCDN | |||
redirects the request to the dCDN. | ||||
4. The dCDN either sends a response or reroutes it, for example, to | (3) The End User sends a request to the dCDN. | |||
a dCDN surrogate. | ||||
3. Fallback Target Address Metadata | (4) The dCDN either sends a response or reroutes it, for example, to | |||
a dCDN surrogate. | ||||
3. Fallback Target Server Address | ||||
Open Caching requires that the uCDN provides a fallback target server | Open Caching requires that the uCDN provides a fallback target server | |||
to the dCDN, to be used in cases where the dCDN cannot properly | to the dCDN to be used in cases where the dCDN cannot properly handle | |||
handle the request. To avoid redirect loops, the fallback target | the request. To avoid redirect loops, the fallback target server's | |||
server's address at the uCDN MUST be different from the original uCDN | address at the uCDN MUST be different from the original uCDN address | |||
address from which the client was redirected to the dCDN. The uCDN | from which the client was redirected to the dCDN. The uCDN MUST | |||
MUST avoid further redirection when receiving the client request at | avoid further redirection when receiving the client request at the | |||
the fallback target. The fallback target is defined as a generic | fallback target. The Fallback Target is defined as a generic | |||
metadata object (see Section 3.2 of [RFC8006]) | metadata object (see Section 3.2 of [RFC8006]). | |||
Use cases | Use cases: | |||
o Failover: A dCDN request router receives a request but has no | ||||
* Failover: A dCDN request router receives a request but has no | ||||
caches to which it can route the request. This can happen in the | caches to which it can route the request. This can happen in the | |||
case of failures or temporary network overload. | case of failures or temporary network overload. | |||
o No coverage: A dCDN request router receives a request from a | * No coverage: A dCDN request router receives a request from a | |||
client located in an area inside the footprint but not covered by | client located in an area inside the footprint but not covered by | |||
the dCDN caches or outside the dCDN footprint coverage. In such | the dCDN caches or outside the dCDN footprint coverage. In such | |||
cases, the router may choose to redirect the request back to the | cases, the router may choose to redirect the request back to the | |||
uCDN fallback address. | uCDN fallback address. | |||
o Error: A cache may receive a request that it cannot properly | * Error: A cache may receive a request that it cannot properly | |||
serve, for example, some of the metadata objects for that service | serve, for example, some of the metadata objects for that service | |||
were not properly acquired. In this case, the cache's "default | were not properly acquired. In this case, the cache's "default | |||
action" may be to "redirect back to uCDN". | action" may be to "redirect back to uCDN". | |||
The Fallback target metadata object is used to indicate the target | The Fallback Target metadata object is used to indicate the target | |||
address the dCDN should redirect a client to when falling back to the | address the dCDN should redirect a client to when falling back to the | |||
uCDN. Fallback target address is represented as an endpoint object | uCDN. The fallback target address is represented as an Endpoint | |||
as defined in Section 4.3.3 of [RFC8006]. | object as defined in Section 4.3.3 of [RFC8006]. | |||
In DNS redirection a CNAME record is used as the fallback target | In DNS redirection, a CNAME record is used as the fallback target | |||
address. | address. | |||
In HTTP redirection a hostname is used as the fallback target | In HTTP redirection, a hostname is used as the fallback target | |||
address. | address. | |||
When using HTTP redirect to route a client request back to the uCDN, | When using HTTP redirect to route a client request back to the uCDN, | |||
it is the dCDN's responsibility to use the original URL path as the | it is the dCDN's responsibility to use the original URL path as the | |||
client would have used for the original uCDN request, stripping, if | client would have used for the original uCDN request, stripping, if | |||
needed, the dCDN path-prefix and/or the uCDN hostname from the | needed, the dCDN path-prefix and/or the uCDN hostname from the | |||
redirect URL that may have been used to request the content from the | redirect URL that may have been used to request the content from the | |||
dCDN. | dCDN. | |||
3.1. Properties of Fallback Target Address Metadata Object | 3.1. Properties of Fallback Target Generic Metadata Object | |||
The MI.FallbackTarget Metadata object consists of the following | The MI.FallbackTarget generic metadata object consists of the | |||
single property: | following two properties: | |||
Property: host | Property: host | |||
Description: Target address to which the dCDN can redirect the | Description: Target address to which the dCDN can redirect the | |||
client. | client. | |||
Type: Endpoint object as defined in Section 4.3.3 of [RFC8006] | Type: Endpoint object as defined in Section 4.3.3 of [RFC8006], | |||
with the limitation that in case of DNS delegation it SHOULD | with the limitation that in case of DNS delegation, it SHOULD | |||
NOT include a port number and, in case a port number is | NOT include a port number, and in case a port number is | |||
present, the dCDN MUST ignore it. | present, the dCDN MUST ignore it. | |||
Mandatory-to-Specify: Yes. | Mandatory-to-Specify: Yes. | |||
Property: scheme | Property: scheme | |||
Description: A URI scheme to be used in the redirect response | Description: A URI scheme to be used in the redirect response | |||
location construction. When present, the dCDN MUST use this | location construction. When present, the dCDN MUST use this | |||
scheme in case of HTTP redirection to the uCDN fallback | scheme in case of HTTP redirection to the uCDN fallback | |||
address. | address. | |||
Type: A URI scheme as defined in Section 3.1 of [RFC3986] | Type: A URI scheme as defined in Section 3.1 of [RFC3986], | |||
represented as a JSON string. The scheme MUST be either "http" | represented as a JSON string. The scheme MUST be either "http" | |||
or "https". | or "https". | |||
Mandatory-to-Specify: No. In case of HTTP redirection to | Mandatory-to-Specify: No. In case of HTTP redirection to | |||
fallback, if this property is absent or empty, the dCDN | fallback, if this property is absent or empty, the dCDN | |||
redirecting entity MUST use the same scheme as in the request | redirecting entity MUST use the same scheme as in the request | |||
received by the dCDN. | received by the dCDN. | |||
Example of a MI.FallbackTarget Metadata object that designates the | The following is an example of an MI.FallbackTarget generic metadata | |||
host address the dCDN should use as fallback address to redirect back | object that designates the host address the dCDN should use as | |||
to the uCDN. | fallback address to redirect back to the uCDN: | |||
{ | { | |||
"generic-metadata-type": "MI.FallbackTarget", | "generic-metadata-type": "MI.FallbackTarget", | |||
"generic-metadata-value": | "generic-metadata-value": | |||
{ | { | |||
"host": "fallback-a.service123.ucdn.example", | "host": "fallback-a.service123.ucdn.example", | |||
"scheme": "https" | "scheme": "https" | |||
} | } | |||
} | } | |||
3.2. Usage Example | 3.2. Usage Example | |||
The uCDN advertises out-of-band the fallback target address to the | The uCDN advertises out-of-band the fallback target address to the | |||
dCDN, so that the dCDN may redirect a request back to the uCDN in | dCDN, so that the dCDN may redirect a request back to the uCDN in | |||
case the dCDN cannot serve it. Using the MI the uCDN advertises its | case the dCDN cannot serve it. Using the MI, the uCDN advertises its | |||
hosts to the dCDN, along with their specific host metadata (see | hosts to the dCDN, along with their specific host metadata (see | |||
Section 4.1.2 of [RFC8006]. The Fallback Target generic metadata | Section 4.1.2 of [RFC8006]). The Fallback Target generic metadata | |||
object is encapsulated within the "host-metadata" property of each | object is encapsulated within the "host-metadata" property of each | |||
host. The following is an example of a message flow between an | host. The following is an example of a message flow between a uCDN | |||
upstream CDN and a downstream dCDN. For simplicity, we focus on the | and a dCDN. For simplicity, we focus on the sequence of messages | |||
sequence of messages between the uCDN and dCDN, not on how they are | between the uCDN and dCDN, not on how they are passed. | |||
passed. | ||||
dCDN uCDN | dCDN uCDN | |||
+ + | + + | |||
| | | | | | |||
(1) | MI: host: s123.ucdn.example.com | | (1) | MI: host: s123.ucdn.example.com | | |||
| host-metadata: | | | host-metadata: | | |||
| < metadata objects > | | | < metadata objects > | | |||
| < MI.FallbackTarget | | | < MI.FallbackTarget | | |||
| host: fallback-a.service123.ucdn.example > | | | host: fallback-a.service123.ucdn.example > | | |||
| < metadata objects > | | | < metadata objects > | | |||
<-------------------------------------------------------+ | <-------------------------------------------------------+ | |||
| | | | | | |||
(2) | FCI: capability-type: FCI.RedirectTarget | | (2) | FCI: capability-type: FCI.RedirectTarget | | |||
| redirecting-hosts: s123.ucdn.example.com | | | redirecting-hosts: s123.ucdn.example.com | | |||
| target host: us-east1.dcdn.example.com | | | target host: us-east1.dcdn.example.com | | |||
+-------------------------------------------------------> | +-------------------------------------------------------> | |||
| | | | | | |||
| | | | | | |||
+ + | + + | |||
Figure 3: Advertisement of host metadata with Fallback Target | Figure 3: Advertisement of Host Metadata with Fallback Target | |||
1. The uCDN advertises a host (s123.ucdn.example.com) with the host | Explanation: | |||
metadata. The host-metadata property contains a | ||||
MI.FallbackTarget object. | ||||
2. The dCDN advertises its FCI objects to the uCDN including a | (1) The uCDN advertises a host (s123.ucdn.example.com) with the host | |||
FCI.RedirectTarget object that contains the redirect target | metadata. The host-metadata property contains an | |||
address (us-east1.dcdn.example.com) specified for that uCDN host. | MI.FallbackTarget generic metadata object. | |||
(2) The dCDN advertises its FCI objects to the uCDN, including a | ||||
Redirect Target capability object that contains the redirect | ||||
target address (us-east1.dcdn.example.com) specified for that | ||||
uCDN host. | ||||
The following is a generic sequence of redirection using the | The following is a generic sequence of redirection using the | |||
configurations that were advertised in Figure 3 above. In this case | configurations that were advertised in Figure 3. In this case, the | |||
the dCDN redirects back to the uCDN fallback target address. | dCDN redirects back to the uCDN fallback target address. | |||
End User dCDN uCDN fallback uCDN RR | End User dCDN uCDN fallback uCDN RR | |||
+ + + + | + + + + | |||
| | | | | | | | | | |||
(1) | Request sent s123.ucdn.example.com | | | (1) | Request sent s123.ucdn.example.com | | | |||
+-------------------+-------------------+-------------------> | +-------------------+-------------------+-------------------> | |||
| | | | | | | | | | |||
(2) | Redirect to us-east1.dcdn.example.com | | | (2) | Redirect to us-east1.dcdn.example.com | | | |||
<-------------------+-------------------+-------------------+ | <-------------------+-------------------+-------------------+ | |||
| | | | | | | | | | |||
skipping to change at page 15, line 28 ¶ | skipping to change at line 665 ¶ | |||
<-------------------+ | | | <-------------------+ | | | |||
| | | | | | | | | | |||
(5) | Request fallback-a.service123.ucdn.example | | (5) | Request fallback-a.service123.ucdn.example | | |||
+---------------------------------------> | | +---------------------------------------> | | |||
| | | | | | | | | | |||
(6) | Response | | | | (6) | Response | | | | |||
<-------------------+-------------------+ | | <-------------------+-------------------+ | | |||
| | | | | | | | | | |||
+ + + + | + + + + | |||
Figure 4: Redirection to Fallback Target | Figure 4: Redirection to Fallback Target | |||
1. The End User sends a request (DNS or HTTP) to the uCDN Request | Explanation: | |||
Router (RR). | ||||
2. Using the previously advertised Redirect Target, the uCDN | (1) The End User sends a request (DNS or HTTP) to the uCDN Request | |||
redirects the request to the dCDN. | Router (RR). | |||
3. The End User sends a request to the dCDN. | (2) Using the previously advertised Redirect Target, the uCDN | |||
redirects the request to the dCDN. | ||||
4. The dCDN cannot handled the request and, therefore, redirects it | (3) The End User sends a request to the dCDN. | |||
back to the uCDN fallback target address. | ||||
5. The End User sends the request to the uCDN fallback target | (4) The dCDN cannot handle the request and therefore redirects it | |||
address. | back to the uCDN fallback target address. | |||
6. The uCDN either sends a response or reroutes it, for example, to | (5) The End User sends the request to the uCDN fallback target | |||
a uCDN surrogate. | address. | |||
3.3. uCDN addressing considerations | (6) The uCDN either sends a response or reroutes it, for example, to | |||
a uCDN surrogate. | ||||
When advertising fallback addresses to the dCDN the uCDN SHOULD | 3.3. uCDN Addressing Considerations | |||
When advertising fallback addresses to the dCDN, the uCDN SHOULD | ||||
consider the failure use cases that may lead the dCDN to route | consider the failure use cases that may lead the dCDN to route | |||
requests to uCDN fallback. In extreme dCDN network failures or under | requests to uCDN fallback. In extreme dCDN network failures or under | |||
denial-of-service (DoS) attacks, requests coming from a large segment | denial-of-service (DoS) attacks, requests coming from a large segment | |||
or multiple segments of the dCDN may be routed back to the uCDN. The | or multiple segments of the dCDN may be routed back to the uCDN. The | |||
uCDN SHOULD therefore design its fallback addressing scheme and its | uCDN SHOULD therefore design its fallback addressing scheme and its | |||
available resources accordingly. A favorable approach would be for | available resources accordingly. A favorable approach would be for | |||
the uCDN to use different fallback target address for each uCDN host, | the uCDN to use a different fallback target address for each uCDN | |||
enabling it to load balance the requests using the same methods as it | host, enabling it to load balance the requests using the same methods | |||
would for its original hosts. See Sections 4.1.2 and 4.1.3 of | as it would for its original hosts. See Sections 4.1.2 and 4.1.3 of | |||
[RFC8006] for a detailed description of how to use GenericMetadata | [RFC8006] for a detailed description of how to use GenericMetadata | |||
objects within the HostMatch object advertised in the HostIndex of | objects within the HostMatch object advertised in the HostIndex of | |||
the uCDN. | the uCDN. | |||
4. IANA Considerations | 4. IANA Considerations | |||
4.1. CDNI Payload Types | 4.1. CDNI Payload Types | |||
This document requests the registration of the following CDNI Payload | IANA has registered the following CDNI Payload Types in the "CDNI | |||
Types under the IANA "CDNI Payload Types" registry defined in | Payload Types" registry defined in [RFC7736]: | |||
[RFC7736]: | ||||
+--------------------+---------------+ | +====================+===============+ | |||
| Payload Type | Specification | | | Payload Type | Specification | | |||
+====================+===============+ | ||||
| FCI.RedirectTarget | RFC 8804 | | ||||
+--------------------+---------------+ | +--------------------+---------------+ | |||
| FCI.RedirectTarget | RFCthis | | | MI.FallbackTarget | RFC 8804 | | |||
| MI.FallbackTarget | RFCthis | | ||||
+--------------------+---------------+ | +--------------------+---------------+ | |||
[RFC Editor: Please replace RFCthis with the published RFC number for | Table 1 | |||
this document.] | ||||
4.1.1. CDNI FCI RedirectTarget Payload Type | 4.1.1. CDNI FCI RedirectTarget Payload Type | |||
Purpose: The purpose of this payload type is to distinguish | Purpose: The purpose of this payload type is to distinguish FCI | |||
RedirectTarget FCI objects | advertisement objects for redirect target. | |||
Interface: FCI | Interface: FCI | |||
Encoding: see Section 2.3 | Encoding: See Section 2.3. | |||
4.1.2. CDNI MI FallbackTarget Payload Type | 4.1.2. CDNI MI FallbackTarget Payload Type | |||
Purpose: The purpose of this payload type is to distinguish | Purpose: The purpose of this payload type is to distinguish | |||
FallbackTarget MI objects (and any associated capability | FallbackTarget MI objects (and any associated capability | |||
advertisement) | advertisement). | |||
Interface: MI/FCI | Interface: MI/FCI | |||
Encoding: see Section 3.1 | Encoding: See Section 3.1. | |||
5. Security Considerations | 5. Security Considerations | |||
This specification is in accordance with the CDNI Metadata Interface | This specification defines extensions to the CDNI Metadata Interface | |||
and the CDNI Request Routing: Footprint and Capabilities Semantics. | (MI) and the Footprint & Capabilities Advertisement interface (FCI). | |||
As such, it is subject to the security and privacy considerations as | As such, it is subject to the security and privacy considerations | |||
defined in Section 8 of [RFC8006] and in Section 7 of [RFC8008] | defined in Section 8 of [RFC8006] and in Section 7 of [RFC8008], | |||
respectively. | respectively. | |||
5.1. Confidentiality and Privacy | 5.1. Confidentiality and Privacy | |||
The Redirect Target FCI object potentially reveals information about | The Redirect Target capability object potentially reveals information | |||
the internal structure of the dCDN network. A third party could | about the internal structure of the dCDN network. A third party | |||
intercept the FCI transactions and use the information to attack the | could intercept the FCI transactions and use the information to | |||
dCDN. The same is also true for the Fallback Target Metadata object | attack the dCDN. The same is also true for the Fallback Target | |||
as it may reveal information about the internal structure of the | generic metadata object, as it may reveal information about the | |||
uCDN, exposing it to external exploits. Implementations of the FCI | internal structure of the uCDN, exposing it to external exploits. | |||
and MI MUST therefore use strong authentication and encryption and | Implementations of the FCI and MI MUST therefore use strong | |||
strictly follow the directions for securing the interface as defined | authentication and encryption and strictly follow the directions for | |||
for the Metadata Interface in Section 8.3 of [RFC8006]. | securing the interface as defined for the Metadata Interface in | |||
Section 8.3 of [RFC8006]. | ||||
6. Acknowledgements | ||||
The authors thank Nir B. Sopher for reality checks against production | ||||
use cases, his contribution is significant to this document. The | ||||
authors also thank Ben Niven-Jenkins for his review and feedback and | ||||
Kevin J. Ma for his guidance throughout the development of this | ||||
document including his regular reviews. | ||||
7. References | 6. References | |||
7.1. Normative References | 6.1. Normative References | |||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
<https://www.rfc-editor.org/info/rfc1034>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
[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/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 18, line 46 ¶ | skipping to change at line 818 ¶ | |||
[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/info/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/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
7.2. Informative References | 6.2. Informative References | |||
[OC-RR] Finkelman, O., Ed., Hofmann, J., Klein, E., Mishra, S., | [OC-RR] Finkelman, O., Ed., Hofmann, J., Klein, E., Mishra, S., | |||
Ma, K., Sahar, D., and B. Zurat, "Open Caching - Request | Ma, K., Sahar, D., and B. Zurat, "Open Cache Request | |||
Routing Functional Specification", Version 1.1, October | Routing Functional Specification", Version 1.1, November | |||
2019, <https://www.streamingvideoalliance.org/books/open- | 2016, <https://www.streamingvideoalliance.org/books/open- | |||
cache-request-routing-functional-specification/>. | cache-request-routing-functional-specification/>. | |||
[OCWG] "Open Caching Home Page", | [OCWG] Streaming Video Alliance, "Open Caching", | |||
<https://www.streamingvideoalliance.org/technical-groups/ | <https://www.streamingvideoalliance.org/technical-groups/ | |||
open-caching/>. | open-caching/>. | |||
[RFC7736] Ma, K., "Content Delivery Network Interconnection (CDNI) | [RFC7736] Ma, K., "Content Delivery Network Interconnection (CDNI) | |||
Media Type Registration", RFC 7736, DOI 10.17487/RFC7736, | Media Type Registration", RFC 7736, DOI 10.17487/RFC7736, | |||
December 2015, <https://www.rfc-editor.org/info/rfc7736>. | December 2015, <https://www.rfc-editor.org/info/rfc7736>. | |||
[RFC7871] Contavalli, C., van der Gaast, W., Lawrence, D., and W. | [RFC7871] Contavalli, C., van der Gaast, W., Lawrence, D., and W. | |||
Kumari, "Client Subnet in DNS Queries", RFC 7871, | Kumari, "Client Subnet in DNS Queries", RFC 7871, | |||
DOI 10.17487/RFC7871, May 2016, | DOI 10.17487/RFC7871, May 2016, | |||
<https://www.rfc-editor.org/info/rfc7871>. | <https://www.rfc-editor.org/info/rfc7871>. | |||
[SVA] "Streaming Video Alliance Home Page", | [SVA] "Streaming Video Alliance", | |||
<https://www.streamingvideoalliance.org>. | <https://www.streamingvideoalliance.org>. | |||
Acknowledgements | ||||
The authors thank Nir B. Sopher for reality checks against production | ||||
use cases; his contribution is significant to this document. The | ||||
authors also thank Ben Niven-Jenkins for his review and feedback and | ||||
Kevin J. Ma for his guidance throughout the development of this | ||||
document, including his regular reviews. | ||||
Authors' Addresses | Authors' Addresses | |||
Ori Finkelman | Ori Finkelman | |||
Qwilt | Qwilt | |||
6, Ha'harash | 6, Ha'harash | |||
Hod HaSharon 4524079 | Hod HaSharon 4524079 | |||
Israel | Israel | |||
Email: ori.finkelman.ietf@gmail.com | Email: ori.finkelman.ietf@gmail.com | |||
Sanjay Mishra | Sanjay Mishra | |||
Verizon | Verizon | |||
13100 Columbia Pike | 13100 Columbia Pike | |||
Silver Spring, MD 20904 | Silver Spring, MD 20904 | |||
USA | United States of America | |||
Email: sanjay.mishra@verizon.com | Email: sanjay.mishra@verizon.com | |||
End of changes. 147 change blocks. | ||||
326 lines changed or deleted | 342 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/ |