| rfc8804xml2.original.xml | rfc8804.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?rfc toc="yes"?> | ||||
| <?rfc tocompact="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
| <?rfc tocdepth="4"?> | category="std" consensus="true" | |||
| <?rfc tocindent="yes"?> | docName="draft-ietf-cdni-request-routing-extensions-08" number="8804" | |||
| <?rfc symrefs="yes"?> | ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" | |||
| <?rfc sortrefs="yes"?> | tocDepth="4" symRefs="true" sortRefs="true" version="3"> | |||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <rfc category="std" docName="draft-ietf-cdni-request-routing-extensions-08" ipr= | ||||
| "trust200902"> | ||||
| <front> | <front> | |||
| <title abbrev="CDNI Request Routing Extensions">CDNI Request Routing Extensi | <title abbrev="CDNI Request Routing Extensions">Content Delivery | |||
| ons</title> | Network Interconnection (CDNI) Request Routing Extensions</title> | |||
| <seriesInfo name="RFC" value="8804"/> | ||||
| <author fullname="Ori Finkelman" initials="O." surname="Finkelman"> | <author fullname="Ori Finkelman" initials="O." surname="Finkelman"> | |||
| <organization>Qwilt</organization> | <organization>Qwilt</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>6, Ha'harash</street> | <street>6, Ha'harash</street> | |||
| <city>Hod HaSharon</city> | <city>Hod HaSharon</city> | |||
| <region/> | ||||
| <region></region> | ||||
| <code>4524079</code> | <code>4524079</code> | |||
| <country>Israel</country> | <country>Israel</country> | |||
| </postal> | </postal> | |||
| <phone/> | ||||
| <phone></phone> | ||||
| <email>ori.finkelman.ietf@gmail.com</email> | <email>ori.finkelman.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Sanjay Mishra" initials="S." surname="Mishra"> | <author fullname="Sanjay Mishra" initials="S." surname="Mishra"> | |||
| <organization>Verizon</organization> | <organization>Verizon</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>13100 Columbia Pike</street> | <street>13100 Columbia Pike</street> | |||
| <city>Silver Spring</city> | <city>Silver Spring</city> | |||
| <region>MD</region> | <region>MD</region> | |||
| <code>20904</code> | <code>20904</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone/> | ||||
| <phone></phone> | ||||
| <email>sanjay.mishra@verizon.com</email> | <email>sanjay.mishra@verizon.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2020" month="September"/> | ||||
| <date/> | ||||
| <abstract> | <abstract> | |||
| <t>Open Caching architecture is a use case of Content Delivery Networks In | <t>Open Caching architecture is a use case of Content Delivery Network | |||
| terconnection (CDNI) in which the | Interconnection (CDNI) in which the commercial Content Delivery Network | |||
| commercial Content Delivery Network (CDN) is the upstream CDN (uCDN) an | (CDN) is the upstream CDN (uCDN) and the ISP caching layer serves as the | |||
| d the ISP caching layer serves as the | downstream CDN (dCDN). This document defines extensions to the CDNI | |||
| downstream CDN (dCDN). The extensions specified in this document to the | Metadata Interface (MI) and the Footprint & Capabilities | |||
| CDNI Metadata Interface (MI) and | Advertisement interface (FCI). These extensions are derived from | |||
| the Footprint and Capabilities Interface (FCI) are derived from require | requirements raised by Open Caching but are also applicable to CDNI use | |||
| ments raised by Open Caching but | cases in general. | |||
| are also applicable to CDNI use cases in general.</t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <t>The <xref target="SVA">Streaming Video Alliance</xref> is a global asso | <name>Introduction</name> | |||
| ciation that works to solve | <t>The Streaming Video Alliance <xref target="SVA" format="default"/> is | |||
| streaming video challenges in an effort to improve end-user experience | a global association that works to solve | |||
| and adoption. | streaming video challenges in an effort to improve end-user experience | |||
| The <xref target="OCWG">Open Caching Working Group</xref> of the <xref | and adoption. The Open Caching Working Group <xref target="OCWG" | |||
| target="SVA">Streaming Video Alliance</xref> | format="default"/> of the Streaming Video Alliance <xref target="SVA" | |||
| is focused on the delegation of video delivery requests from commercial | format="default"/> is focused on the | |||
| CDNs to a caching layer at the Internet | delegation of video delivery requests from commercial CDNs to a caching | |||
| Service Provider's (ISP) network. Open Caching architecture is a specif | layer at the ISP's network. Open Caching | |||
| ic use case of CDNI where the commercial CDN | architecture is a specific use case of CDNI where the commercial CDN is | |||
| is the upstream CDN (uCDN) and the ISP caching layer is the downstream | the upstream CDN (uCDN) and the ISP caching layer is the downstream CDN | |||
| CDN (dCDN). | (dCDN). The Open Caching Request Routing Functional Specification <xref | |||
| The <xref target="OC-RR">Open Caching Request Routing Specification</xr | target="OC-RR" format="default"/> defines the Request Routing process | |||
| ef> defines the Request Routing process | and the | |||
| and the interfaces that are required for its provisioning. This documen | interfaces that are required for its provisioning. | |||
| t defines and registers CDNI metadata | ||||
| object <xref target="RFC8006"/> and CDNI Footprint and Capabilities obj | ||||
| ect <xref target="RFC8008"/> that are | ||||
| required for Open Caching Request Routing. For consistency with other C | ||||
| DNI documents this document follows the | ||||
| CDNI convention of uCDN (upstream CDN) and dCDN (downstream CDN) to rep | ||||
| resent the commercial CDN and ISP caching | ||||
| layer respectively.</t> | ||||
| <t>This document also registers CDNI Payload Types <xref target="RFC7736"/ | This document defines the CDNI metadata object <xref | |||
| > for the defined objects: | target="RFC8006" format="default"/> and the CDNI Footprint and Capabilities | |||
| <list style="symbols"> | object <xref target="RFC8008" format="default"/> that are required for Open | |||
| <t>Redirect Target Capability (for dCDN advertising redirect target | Caching Request Routing:</t> | |||
| address)</t> | ||||
| <t>Fallback Target Metadata (for uCDN configuring fallback target ad | <ul spacing="normal"> | |||
| dress)</t> | <li>Redirect Target Capability (for dCDN advertising redirect target | |||
| </list> | address)</li> | |||
| <li>Fallback Target Metadata (for uCDN configuring fallback target | ||||
| address)</li> | ||||
| </ul> | ||||
| <t>This document also registers CDNI Payload Types <xref | ||||
| target="RFC7736" format="default"/> for these defined objects. | ||||
| </t> | </t> | |||
| <section anchor="terminology" title="Terminology"> | <t>For consistency with other CDNI documents, this | |||
| <t>The following terms are used throughout this document: | document follows the CDNI convention of uCDN (upstream CDN) and dCDN | |||
| <list style="symbols"> | (downstream CDN) to represent the commercial CDN and ISP caching layer, | |||
| <t>FQDN - Fully Qualified Domain Name</t> | respectively.</t> | |||
| <t>CDN - Content Delivery Network</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>Additionally, this document reuses the terminology defined in <xref t | ||||
| arget="RFC6707"/>, | ||||
| <xref target="RFC7336"/>, <xref target="RFC8006"/>, <xref target="RFC | ||||
| 8007"/>, and <xref target="RFC8008"/>. | ||||
| Specifically, we use the following CDNI acronyms: | ||||
| <list style="symbols"> | ||||
| <t>FCI - Footprint and Capability Interface (see <xref target="RFC80 | ||||
| 08"/>)</t> | ||||
| <t>MI - Metadata Interface (see <xref target="RFC8006"/>)</t> | ||||
| <t>uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see <x | ||||
| ref target="RFC7336"/>)</t> | ||||
| <t>RT - Redirection Target. Endpoint for redirection from uCDN to dC | ||||
| DN.</t> | ||||
| <t>RR - Request Router. An element responsible for routing user requ | ||||
| ests, typically using HTTP redirect | ||||
| or DNS CNAME, depending on the use case.</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Requirements Language"> | <section anchor="terminology" numbered="true" toc="default"> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SH | <name>Terminology</name> | |||
| OULD", | <t>The following terms are used throughout this document:</t> | |||
| "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" i | <dl newline="false" spacing="normal" indent="8"> | |||
| n this | <dt>FQDN</dt> | |||
| document are to be interpreted as described in BCP 14 <xref target="RFC | <dd>Fully Qualified Domain Name</dd> | |||
| 2119"/> <xref target="RFC8174"/> | <dt>CDN</dt> | |||
| when, and only when, they appear in all capitals, as shown here.</t> | <dd>Content Delivery Network</dd> | |||
| </section> | </dl> | |||
| <t>Additionally, this document reuses the terminology defined in <xref | ||||
| target="RFC6707" format="default"/>, <xref target="RFC7336" | ||||
| format="default"/>, <xref target="RFC8006" format="default"/>, <xref | ||||
| target="RFC8007" format="default"/>, and <xref target="RFC8008" | ||||
| format="default"/>. Specifically, we use the following CDNI | ||||
| acronyms:</t> | ||||
| <dl newline="false" spacing="normal" indent="8"> | ||||
| <dt>FCI</dt> | ||||
| <dd>Footprint & Capabilities Advertisement interface (see <xref | ||||
| target="RFC8008" format="default"/>)</dd> | ||||
| <dt>MI</dt> | ||||
| <dd>Metadata Interface (see <xref target="RFC8006" | ||||
| format="default"/>)</dd> | ||||
| <dt>uCDN</dt> | ||||
| <dd>Upstream CDN (see | ||||
| <xref target="RFC7336" format="default"/>)</dd> | ||||
| <dt>dCDN</dt> | ||||
| <dd>Downstream CDN (see | ||||
| <xref target="RFC7336" format="default"/>)</dd> | ||||
| </section> | <dt>RT</dt> | |||
| <dd>Redirection Target. Endpoint for redirection from uCDN to | ||||
| dCDN.</dd> | ||||
| <dt>RR</dt> | ||||
| <dd>Request Router. An element responsible for routing user | ||||
| requests, typically using HTTP redirect or DNS CNAME, depending on | ||||
| the use case.</dd> | ||||
| </dl> | ||||
| <section anchor="redirect-target-capability" title="Redirect Target Capabili | </section> | |||
| ty"> | <section numbered="true" toc="default"> | |||
| <t>Iterative request redirection is defined in Section 1.1 of <xref target | <name>Requirements Language</name> | |||
| ="RFC7336"/> and elaborated | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| by examples in Sections 3.2 and 3.4 of <xref target="RFC7336"/>. A Red | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| irection Target (RT) is defined in | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| Section 2 of <xref target="RFC7975"/> for Recursive Request Redirection | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| as: | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
| </t> | are to be interpreted as described in BCP 14 <xref | |||
| <t><list style="empty"> | target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they | |||
| <t> | appear in all capitals, as shown here.</t> | |||
| "The endpoint to which the User Agent is redirected. In CDNI, a RT m | </section> | |||
| ay point to a number of different | </section> | |||
| components, some examples include a surrogate in the same CDN as the | <section anchor="redirect-target-capability" numbered="true" toc="default"> | |||
| request router, a request router in | <name>Redirect Target Capability</name> | |||
| a dCDN, or a surrogate in a dCDN". | <t>Iterative CDNI Request Redirection is defined in <xref | |||
| target="RFC7336" sectionFormat="of" section="1.1"/> and elaborated by exam | ||||
| ples in | ||||
| Sections <xref target="RFC7336" section="3.2" | ||||
| sectionFormat="bare"/> and <xref target="RFC7336" section="3.4" | ||||
| sectionFormat="bare"/> of <xref target="RFC7336" format="default"/>. A | ||||
| Redirection Target (RT) is defined in <xref | ||||
| target="RFC7975" sectionFormat="of" section ="2"/> for Recursive Request R | ||||
| edirection | ||||
| as:</t> | ||||
| <blockquote>The endpoint to which the User Agent is redirected. In | ||||
| CDNI, an RT may point to a number of different components, some examples | ||||
| include a surrogate in the same CDN as the request router, a request | ||||
| router in a dCDN, or a surrogate in a dCDN.</blockquote> | ||||
| <t>In this document, we adopt the same definition of the RT for 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 | ||||
| redirect to the dCDN. RT addresses can vary between different | ||||
| footprints (for example, between different regions), and they may also | ||||
| change over time (for example, as a result of network problems). Given | ||||
| this variable and dynamic nature of the redirect target address, it may | ||||
| not be suitable to advertise it during bootstrap. A more dynamic and | ||||
| footprint-oriented interface is required. <xref | ||||
| target="RFC7336" sectionFormat="of" section="4.3"/> suggests that it | ||||
| could be one of the | ||||
| roles of the FCI <xref target="RFC8008" format="default"/>. Following | ||||
| this suggestion, we have therefore chosen to use the CDNI Footprint & | ||||
| Capabilities Advertisement interface for redirect target address advertise | ||||
| ment.</t> | ||||
| <t>Use cases:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Footprint: The dCDN may want to have a different target per | ||||
| footprint. Note that a dCDN may spread across multiple | ||||
| geographies. This makes it easier to route client requests to a nearby | ||||
| request router. Though this can be achieved using a single canonical | ||||
| name and "Geo DNS", such that in different geographies the same | ||||
| hostname is resolved to different IP address, that approach has | ||||
| limitations; for example, a client may be using a third-party DNS | ||||
| resolver, making it impossible for the redirector to detect where the | ||||
| client is located, or Geo DNS granularity may be too rough for the | ||||
| requirement of the application.</li> | ||||
| <li>Scaling: The dCDN may choose to scale its Request Routing service | ||||
| by deploying more request routers in new locations and advertise them | ||||
| via an updatable interface like the FCI.</li> | ||||
| </ul> | ||||
| <t>The Redirect Target capability object is used to indicate the target | ||||
| address the uCDN should use in order to redirect a client to the dCDN. A | ||||
| target may be attached to a specific uCDN host, attached to a list of | ||||
| uCDN hosts, or used globally for all the hosts of the uCDN.</t> | ||||
| <t>When a dCDN is attaching the redirect target to a specific uCDN host | ||||
| or a list of uCDN hosts, the dCDN <bcp14>MUST</bcp14> advertise the | ||||
| hosts within the Redirect Target capability object as | ||||
| "redirecting-hosts". In this case, the uCDN can redirect to that dCDN | ||||
| address, only if the User Agent request was to one of these uCDN | ||||
| hosts.</t> | ||||
| <t>If the Redirect Target capability object does not contain a target or | ||||
| the target is empty, the uCDN <bcp14>MUST</bcp14> interpret it as "no | ||||
| target available for these uCDN hosts for the specified footprint". In | ||||
| case such a target was already advertised in a previous FCI object, the | ||||
| uCDN <bcp14>MUST</bcp14> interpret it as an update that deletes the | ||||
| previous redirect target.</t> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>DNS Redirect Target</name> | ||||
| <t>A redirect target for DNS redirection is an FQDN used as an alias in | ||||
| a CNAME record response (see <xref target="RFC1034" | ||||
| format="default"/>) of the uCDN DNS router. | ||||
| Note that DNS routers make | ||||
| routing decisions based on either the DNS resolver's IP address or the | ||||
| client IP subnet when EDNS0 client-subnet (ECS) is used (see <xref | ||||
| target="RFC7871" format="default"/>). The dCDN may choose to advertise | ||||
| redirect targets and footprints to cover both cases, such that the | ||||
| uCDN resolution would route the DNS query to different dCDN CNAMEs | ||||
| according to client subnet or dCDN resolver IP address. This method | ||||
| further allows the dCDN DNS to optimize the resolution by localizing | ||||
| the target CNAMEs. A uCDN implementation <bcp14>SHOULD</bcp14> prefer | ||||
| routing based on client IP subnet when the ECS option is present. A dCDN | ||||
| implementation using the ECS option <bcp14>MUST</bcp14> be aware of | ||||
| the privacy drawbacks listed in <xref target="RFC7871" | ||||
| sectionFormat="of" section="2"/> and <bcp14>SHOULD</bcp14> follow the | ||||
| guidelines provided in <xref target="RFC7871" sectionFormat="of" | ||||
| section="11.1"/>.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>HTTP Redirect Target</name> | ||||
| <t>A redirect target for HTTP redirection is the URI to be used as the | ||||
| value for the Location header of an HTTP redirect 3xx response, | ||||
| typically a 302 (Found) (see <xref target="RFC7231" | ||||
| sectionFormat="of" section="7.1.2"/> and <xref target="RFC7231" | ||||
| sectionFormat="of" section="6.4"/>). | ||||
| </t> | </t> | |||
| </list></t> | </section> | |||
| <t> | <section anchor="redirect-target-capability-properties" numbered="true" to | |||
| In this document we adopt the same definition of the RT for the Iterati | c="default"> | |||
| ve Request Redirect use case. | <name>Properties of Redirect Target Capability Object</name> | |||
| This use case requires the provisioning of the RT address to be used by | <t>The Redirect Target capability object consists of the following | |||
| the uCDN in order to redirect | properties:</t> | |||
| to the dCDN. RT addresses can vary between different footprints, for ex | ||||
| ample, between different regions, | ||||
| and they may also change over time, for example as a result of network | ||||
| problems. Given this variable | ||||
| and dynamic nature of the redirect target address, it may not be suitab | ||||
| le to advertise it during bootstrap. | ||||
| A more dynamic and footprint oriented interface is required. Section 4. | ||||
| 3 of <xref target="RFC7336"/> suggests | ||||
| that it could be one of the roles of the FCI <xref target="RFC8008"/>. | ||||
| Following this suggestion, we have | ||||
| therefore, chosen to use the CDNI Footprint and Capabilities interface | ||||
| for redirect target address advertisement. | ||||
| </t> | ||||
| <t>Use cases<list style="symbols"> | ||||
| <t>Footprint: The dCDN may want to have a different target per footprin | ||||
| t. | ||||
| Note that a dCDN may spread across multiple geographies. This makes | ||||
| it | ||||
| easier to route client requests to a nearby request router. Though t | ||||
| his can be achieved | ||||
| using a single canonical name and "Geo DNS", such that in different | ||||
| geographies the same | ||||
| hostname is resolved to different IP address, that approach has limi | ||||
| tations; | ||||
| for example a client may be using a third party DNS resolver, making | ||||
| it | ||||
| impossible for the redirector to detect where the client is located, | ||||
| or Geo DNS | ||||
| granularity may be too rough for the requirement of the application. | ||||
| </t> | ||||
| <t>Scaling: The dCDN may choose to scale its request routing service by | <dl newline="false" spacing="normal"> | |||
| deploying more request routers | ||||
| in new locations and advertise them via an updatable interface like | ||||
| the FCI.</t> | ||||
| </list></t> | <dt>Property:</dt><dd><t>redirecting-hosts</t> | |||
| <t>The Redirect Target capability object is used to indicate the target ad | ||||
| dress the uCDN should use in order | ||||
| to redirect a client to the dCDN. A target may be attached to a specifi | ||||
| c uCDN host, a list of uCDN hosts, | ||||
| or used globally for all the hosts of the uCDN. | ||||
| </t> | ||||
| <t> | ||||
| 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 Redirect Target capability object as "re | ||||
| directing-hosts". In this case, the | ||||
| uCDN can redirect to that dCDN address, only if the User Agent request | ||||
| was to one of these uCDN hosts. | ||||
| </t> | ||||
| <t> | <dl newline="false" spacing="normal"> | |||
| If the redirect target capability object does not contain a target or t | ||||
| he target is empty, the uCDN MUST interpret it as | ||||
| "no target available for these uCDN hosts for the specified footprint". | ||||
| In case such a target was already advertised in a | ||||
| previous FCI object, the uCDN MUST interpret it as an update that delet | ||||
| es the previous redirect target. | ||||
| </t> | ||||
| <section title="DNS Redirect Target"> | <dt>Description:</dt><dd>One or more uCDN hosts to which this | |||
| <t> | redirect target is attached. A redirecting host | |||
| A redirect target for DNS redirection is a FQDN used as an alias in | <bcp14>SHOULD</bcp14> be a host that was published in a | |||
| a CNAME record response (see <xref target="RFC1034"/>) | HostMatch object by the uCDN as defined in <xref | |||
| of the uCDN DNS router. Note that DNS routers make routing decisions | target="RFC8006" sectionFormat="of" section="4.1.2"/>.</dd> | |||
| based on either the DNS resolver's IP | ||||
| address or the client IP subnet when EDNS0 client-subnet (ECS) is us | ||||
| ed (see <xref target="RFC7871"/>). | ||||
| The dCDN may choose to advertise redirect targets and footprints to | ||||
| cover both cases, such that the uCDN resolution | ||||
| would route the DNS query to a different dCDN CNAMEs according clien | ||||
| t subnet or dCDN resolver IP address. | ||||
| This method further allows the dCDN DNS to optimize the resolution b | ||||
| y localizing the target CNAMEs. | ||||
| A uCDN implementation SHOULD prefer routing based on client IP subne | ||||
| t when ECS option is present. | ||||
| A dCDN implementation using the ECS option MUST be aware of the priv | ||||
| acy drawbacks listed in Section 2 of | ||||
| <xref target="RFC7871"/> and SHOULD follow the guidelines provided i | ||||
| n Section 11.1 of <xref target="RFC7871"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section title="HTTP Redirect Target"> | ||||
| <t> | ||||
| 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, typically a 302 (Found) (see Section 7.1.2 of <xref ta | ||||
| rget="RFC7231"/> and section 6.4 of | ||||
| <xref target="RFC7231"/>). | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="redirect-target-capability-properties" title="Properties | <dt>Type:</dt><dd>A list of Endpoint objects (see <xref | |||
| of Redirect Target Capability Object"> | target="RFC8006" sectionFormat="of" section="4.3.3"/>)</dd> | |||
| <t>The Redirect Target capability object consists of the following prop | ||||
| erties:</t> | ||||
| <t><list style="empty"> | ||||
| <t>Property: redirecting-hosts<list style="empty"> | ||||
| <t>Description: One or more uCDN hosts to which this redirect tar | <dt>Mandatory-to-Specify:</dt><dd>No. If absent or empty, the | |||
| get is attached. A redirecting host SHOULD be a | redirect target applies to all hosts of the redirecting | |||
| host that was published in a HostMatch object by the uCDN as d | uCDN.</dd> | |||
| efined in Section 4.1.2 of <xref target="RFC8006"/>.</t> | </dl></dd> | |||
| <t>Type: A list of Endpoint objects (see Section 4.3.3 of <xref t arget="RFC8006"/>)</t> | <dt>Property:</dt><dd><t>dns-target</t> | |||
| <t>Mandatory-to-Specify: No. If not present, or empty, the redire | <dl newline="true" spacing="normal"> | |||
| ct target applies to all hosts of the redirecting uCDN.</t> | ||||
| </list></t> | ||||
| <t>Property: dns-target<list style="empty"> | ||||
| <t>Description: Target CNAME record for DNS redirection.</t> | <dt>Description:</dt><dd>Target CNAME record for DNS | |||
| redirection.</dd> | ||||
| <t>Type: DnsTarget object (see <xref target="dns-target"/>)</t> | <dt>Type:</dt><dd>DnsTarget object (see <xref target="dns-target" | |||
| format="default"/>)</dd> | ||||
| <t>Mandatory-to-Specify: No. If the dns-target is not present or | <dt>Mandatory-to-Specify:</dt><dd>No. If the dns-target is | |||
| empty the uCDN MUST interpret it as "no dns-target available".</t> | absent or empty, the uCDN <bcp14>MUST</bcp14> interpret it as | |||
| </list></t> | "no dns-target available".</dd> | |||
| <t>Property: http-target<list style="empty"> | ||||
| <t>Description: Target URI for a HTTP redirect.</t> | </dl></dd> | |||
| <t>Type: HttpTarget object (see <xref target="http-target"/>)</t> | <dt>Property:</dt><dd><t>http-target</t> | |||
| <t>Mandatory-to-Specify: No. If the http-target is not present or | <dl newline="true" spacing="normal"> | |||
| empty the uCDN MUST interpret it as "no http-target available".</t> | ||||
| </list></t> | ||||
| </list></t> | <dt>Description:</dt><dd>Target URI for an HTTP redirect.</dd> | |||
| <dt>Type:</dt><dd>HttpTarget object (see <xref target="http-target | ||||
| " | ||||
| format="default"/>)</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>No. If the http-target is | ||||
| absent or empty, the uCDN <bcp14>MUST</bcp14> interpret it as | ||||
| "no http-target available".</dd> | ||||
| </dl></dd> | ||||
| <t>The following is an example of a Redirect Target capability object s | </dl> | |||
| erialization that advertises a dCDN target address | ||||
| that is attached to a specific list of uCDN "redirecting-hosts". A u | ||||
| CDN host that is included in that list can redirect | ||||
| to the advertised dCDN redirect target. The capabilities object is s | ||||
| erialized as a JSON object as defined in Section 5.1 | ||||
| of <xref target="RFC8008"/> | ||||
| </t> | ||||
| <figure> | <t>The following is an example of a Redirect Target capability object | |||
| <artwork><![CDATA[ | serialization that advertises a dCDN target address that is attached | |||
| to a specific list of uCDN "redirecting-hosts". A uCDN host that is | ||||
| included in that list can redirect to the advertised dCDN redirect | ||||
| target. The capabilities object is serialized as a JSON object as | ||||
| defined in <xref target="RFC8008" sectionFormat="of" | ||||
| section="5.1"/>.</t> | ||||
| <sourcecode name="" type="json"><![CDATA[ | ||||
| { | { | |||
| "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 line 261 ¶ | skipping to change at line 323 ¶ | |||
| "path-prefix": "/cache/1/", | "path-prefix": "/cache/1/", | |||
| "include-redirecting-host": true | "include-redirecting-host": true | |||
| } | } | |||
| }, | }, | |||
| "footprints": [ | "footprints": [ | |||
| <Footprint objects> | <Footprint objects> | |||
| ] | ] | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | ||||
| </section> | ||||
| <section anchor="dns-target" title="DnsTarget Object"> | ||||
| <t>The DnsTarget object gives the target address for the DNS response t | ||||
| o delegate from the uCDN to the dCDN.</t> | ||||
| <t><list style="empty"> | ||||
| <t>Property: host<list style="empty"> | ||||
| <t>Description: The host property is a hostname or an IP address, | ||||
| without a port number.</t> | ||||
| <t>Type: Endpoint object as defined in Section 4.3.3 of <xref tar | ||||
| get="RFC8006"/> | ||||
| with the limitation that it SHOULD NOT include a port number | ||||
| and, in case a port number is present, | ||||
| the uCDN MUST ignore it.</t> | ||||
| <t>Mandatory-to-Specify: Yes.</t> | ||||
| </list></t> | ||||
| </list></t> | ||||
| <section title="DNS Target Example"> | ||||
| <t>The following is an example of DnsTarget object:</t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| { | ||||
| "host": "service123.ucdn.dcdn.example.com" | ||||
| } | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <t>The following is an example of a DNS query for uCDN address "a.se | ||||
| rvice123.ucdn.example.com" and the corresponding | ||||
| CNAME redirection response:</t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| Query: | ||||
| a.service123.ucdn.example.com: | ||||
| type A, class IN | ||||
| Response: | ||||
| NAME: a.service123.ucdn.example.com, TYPE: CNAME, CLASS: IN, | ||||
| TTL: 120, RDATA: service123.ucdn.dcdn.example.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="dns-target" numbered="true" toc="default"> | ||||
| <name>DnsTarget Object</name> | ||||
| <t>The DnsTarget object gives the target address for the DNS response | ||||
| to delegate from the uCDN to the dCDN.</t> | ||||
| <section anchor="http-target" title="HttpTarget Object"> | <dl newline="false" spacing="normal"> | |||
| <t>The HttpTarget object gives the necessary information to construct t | ||||
| he target Location URI for HTTP redirection.</t> | ||||
| <t><list style="empty"> | ||||
| <t>Property: host<list style="empty"> | ||||
| <t>Description: Hostname or IP address and an optional port, i.e. | ||||
| , the host and port of the authority component | ||||
| of the URI as described in Section 3.2 of <xref target="RFC398 | ||||
| 6"/>.</t> | ||||
| <t>Type: Endpoint object as defined in Section 4.3.3 of <xref tar | ||||
| get="RFC8006"/>.</t> | ||||
| <t>Mandatory-to-Specify: Yes.</t> | ||||
| </list></t> | ||||
| <t>Property: scheme<list style="empty"> | ||||
| <t>Description: A URI scheme to be used in the redirect response | ||||
| location construction. | ||||
| When present, the uCDN MUST use the provided scheme in for HTT | ||||
| P redirection to the dCDN.</t> | ||||
| <t>Type: A URI scheme as defined in Section 3.1 of <xref target=" | <dt>Property:</dt><dd><t>host</t> | |||
| RFC3986"/> represented as a JSON string. The scheme MUST be | ||||
| either "http" or "https".</t> | ||||
| <t>Mandatory-to-Specify: No. If this property is absent or empty | <dl newline="false" spacing="normal"> | |||
| the uCDN request router MUST use the same scheme as was | <dt>Description:</dt><dd>The host property is a hostname or an IP | |||
| used in the original request before redirection.</t> | address, without a port number.</dd> | |||
| </list></t> | <dt>Type:</dt><dd>Endpoint object as defined in <xref | |||
| <t>Property: path-prefix<list style="empty"> | target="RFC8006" sectionFormat="of" section="4.3.3"/>, with the | |||
| limitation that it <bcp14>SHOULD NOT</bcp14> include a port | ||||
| number and, in case a port number is present, the uCDN | ||||
| <bcp14>MUST</bcp14> ignore it.</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>Yes.</dd> | ||||
| </dl></dd> | ||||
| </dl> | ||||
| <t>Description: A path prefix for the HTTP redirect Location head | <section numbered="true" toc="default"> | |||
| er. The original path is appended after this prefix.</t> | <name>DnsTarget Example</name> | |||
| <t>The following is an example of the DnsTarget object:</t> | ||||
| <sourcecode name="" type="json"><![CDATA[ | ||||
| { | ||||
| "host": "service123.ucdn.dcdn.example.com" | ||||
| } | ||||
| ]]></sourcecode> | ||||
| <t>The following is an example of a DNS query for uCDN address | ||||
| "a.service123.ucdn.example.com" and the corresponding CNAME | ||||
| redirection response:</t> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| Query: | ||||
| a.service123.ucdn.example.com: | ||||
| type A, class IN | ||||
| <t>Type: A prefix of a path-absolute as defined in Section 3.3 of | Response: | |||
| <xref target="RFC3986"/>. | NAME: a.service123.ucdn.example.com, TYPE: CNAME, CLASS: IN, | |||
| The prefix MUST end with a trailing slash, to indicate the end | TTL: 120, RDATA: service123.ucdn.dcdn.example.com | |||
| of the last path segment in the prefix.</t> | ]]></artwork> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="http-target" numbered="true" toc="default"> | ||||
| <name>HttpTarget Object</name> | ||||
| <t>The HttpTarget object gives the necessary information to construct | ||||
| the target Location URI for HTTP redirection.</t> | ||||
| <t>Mandatory-to-Specify: No. If this property is absent or empty, | <dl newline="false" spacing="normal"> | |||
| the uCDN MUST NOT prepend a path prefix to | ||||
| the original content path, i.e., the original path MUST appear | ||||
| in the location URI right after the authority component.</t> | ||||
| </list></t> | ||||
| <t>Property: include-redirecting-host<list style="empty"> | <dt>Property:</dt><dd><t>host</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Description:</dt><dd>Hostname or IP address and an optional | ||||
| port, i.e., the host and port of the authority component of the | ||||
| URI as described in <xref target="RFC3986" sectionFormat="of" | ||||
| section="3.2"/>.</dd> | ||||
| <dt>Type:</dt><dd>Endpoint object as defined in <xref | ||||
| target="RFC8006" sectionFormat="of" section="4.3.3"/>.</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>Yes.</dd> | ||||
| </dl></dd> | ||||
| <t>Description: A flag indicating whether or not to include the r | <dt>Property:</dt><dd><t>scheme</t> | |||
| edirecting host as the first path segment after the path-prefix. | <dl newline="false" spacing="normal"> | |||
| If set to true and a "path-prefix" is used, the uCDN redirecti | <dt>Description:</dt><dd>A URI scheme to be used in the redirect | |||
| ng host MUST be added as a separate path segment after | response location construction. When present, the uCDN | |||
| the path-prefix and before the original URL path. If set to tr | <bcp14>MUST</bcp14> use the provided scheme in for HTTP | |||
| ue and there is no path-prefix, the uCDN redirecting | redirection to the dCDN.</dd> | |||
| host MUST be prepended as the first path segment in the redire | <dt>Type:</dt><dd>A URI scheme as defined in <xref target="RFC3986 | |||
| ct URL.</t> | " | |||
| sectionFormat="of" section="3.1"/>, represented as a JSON | ||||
| string. The scheme <bcp14>MUST</bcp14> be either "http" or | ||||
| "https".</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>No. If this property is absent o | ||||
| r | ||||
| empty, the uCDN request router <bcp14>MUST</bcp14> use the same | ||||
| scheme as was used in the original request before | ||||
| redirection.</dd> | ||||
| </dl></dd> | ||||
| <t>Type: Boolean.</t> | <dt>Property:</dt><dd><t>path-prefix</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Description:</dt><dd>A path prefix for the HTTP redirect | ||||
| Location header. The original path is appended after this | ||||
| prefix.</dd> | ||||
| <dt>Type:</dt><dd>A prefix of a path-absolute as defined in | ||||
| <xref target="RFC3986" sectionFormat="of" section="3.3"/>. The | ||||
| prefix <bcp14>MUST</bcp14> end with a trailing slash to indicate | ||||
| the end of the last path segment in the prefix.</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>No. If this property is absent | ||||
| or empty, the uCDN <bcp14>MUST NOT</bcp14> prepend a path-prefix | ||||
| to the original content path, i.e., the original path | ||||
| <bcp14>MUST</bcp14> appear in the Location URI right after the | ||||
| authority component.</dd> | ||||
| </dl></dd> | ||||
| <t>Mandatory-to-Specify: No. Default value is False.</t> | <dt>Property:</dt><dd><t>include-redirecting-host</t> | |||
| </list></t> | <dl newline="false" spacing="normal"> | |||
| </list></t> | <dt>Description:</dt><dd>A flag indicating whether or not to | |||
| include the redirecting host as the first path segment after the | ||||
| path-prefix. If set to true and a "path-prefix" is used, the | ||||
| uCDN redirecting host <bcp14>MUST</bcp14> be added as a separate | ||||
| path segment after the path-prefix and before the original URL | ||||
| path. If set to true and there is no path-prefix, the uCDN | ||||
| redirecting host <bcp14>MUST</bcp14> be prepended as the first | ||||
| path segment in the redirect URL.</dd> | ||||
| <dt>Type:</dt><dd>Boolean.</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>No. Default value is False.</dd> | ||||
| </dl></dd> | ||||
| <section title="HTTP Target Example"> | </dl> | |||
| <t>Example of HttpTarget object with a "scheme", a "path-prefix", an | ||||
| d "include-redirecting-host" properties:</t> | ||||
| <figure> | <section numbered="true" toc="default"> | |||
| <artwork><![CDATA[ | <name>HttpTarget Example</name> | |||
| <t>The following is an example of the HttpTarget object with a "scheme | ||||
| ", a "path-prefix", | ||||
| and "include-redirecting-host" properties:</t> | ||||
| <sourcecode name="" type="json"><![CDATA[ | ||||
| { | { | |||
| "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 | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t>The following is an example of an HTTP request for content at uCDN | |||
| <t>Example of a HTTP request for content at uCDN host "a.service | host | |||
| 123.ucdn.example.com" and the corresponding HTTP response with | "a.service123.ucdn.example.com" and the corresponding HTTP response | |||
| a Location header, used for redirecting the client to the dCD | with a Location header, used for redirecting the client to the dCDN, | |||
| N, constructed according to the HttpTarget object from the above example:</t> | constructed according to the HttpTarget object from the above | |||
| <figure> | example:</t> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="redirect-target-usage-example" numbered="true" toc="defau | ||||
| lt"> | ||||
| <name>Usage Example</name> | ||||
| <t>Before requests can be routed from the uCDN to the dCDN, the CDNs | ||||
| must exchange service configurations between them. Using the MI, the | ||||
| uCDN advertises out-of-band its hosts to the dCDN; each host is | ||||
| designated by a hostname and has its own specific metadata (see <xref | ||||
| target="RFC8006" sectionFormat="of" section="4.1.2"/>). Using the FCI, | ||||
| the dCDN advertises (also out-of-band) the redirect target address | ||||
| defined in <xref target="redirect-target-capability-properties" | ||||
| format="default"/> for the relevant uCDN hosts. The following is a | ||||
| generalized example of the message flow between a uCDN and a dCDN. For | ||||
| simplicity, we focus on the sequence of messages between the uCDN and | ||||
| dCDN and not on how they are passed.</t> | ||||
| <section anchor="redirect-target-usage-example" title="Usage Example"> | <figure anchor="redirect"> | |||
| <t> | <name>Redirect Target Address Advertisement</name> | |||
| Before requests can be routed from the uCDN to the dCDN the CDNs must | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| exchange service configurations | ||||
| between them. Using the MI, the uCDN advertises out-of-band its hosts | ||||
| to the dCDN, each host is designated | ||||
| by a hostname and has its own specific metadata (see Section 4.1.2 of | ||||
| <xref target="RFC8006"/>. | ||||
| The dCDN, using the FCI, advertises, also out-of-band, the redirect t | ||||
| arget address object defined in | ||||
| <xref target="redirect-target-capability-properties"/> for the releva | ||||
| nt uCDN hosts. | ||||
| The following is a generalized example of the message flow between an | ||||
| upstream CDN and a downstream dCDN. | ||||
| For simplicity, we focus on the sequence of messages between the uCDN | ||||
| and dCDN and not on how they are passed. | ||||
| </t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-------------------------------------------------------> | +-------------------------------------------------------> | |||
| | | | | | | |||
| | | | | | | |||
| + + | + + | |||
| ]]></artwork> | ||||
| </figure> | ||||
| Figure 1: Redirect target address advertisement | <t>Explanation: | |||
| ]]></artwork> | </t> | |||
| </figure> | <ol spacing="normal" type="(%d)"> | |||
| <t><list style="numbers"> | <li>The uCDN advertises a host (s123.ucdn.example.com) with the host | |||
| <t> | metadata.</li> | |||
| The uCDN advertises a host (s123.ucdn.example.com) with the host me | <li>The dCDN advertises its FCI objects to the uCDN, including a | |||
| tadata. | Redirect Target capability object that contains the redirect target | |||
| </t> | address (us-east1.dcdn.example.com) specified for that uCDN | |||
| <t> | host.</li> | |||
| The dCDN advertises its FCI objects to the uCDN including a FCI.Red | </ol> | |||
| irectTarget object that contains | <t>Once the redirect target has been set, the uCDN can start | |||
| the redirect target address (us-east1.dcdn.example.com) specified f | redirecting user requests to the dCDN. The following is a generic | |||
| or that uCDN host. | sequence of redirection using the host and redirect target that were | |||
| </t> | advertised in <xref target="redirect"/>.</t> | |||
| </list></t> | <figure anchor="generic"> | |||
| <name>Generic Request Redirection Sequence</name> | ||||
| <t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Once the redirect target has been set, the uCDN can start redirecting | ||||
| user requests to the dCDN. The following is | ||||
| a generic sequence of redirection using the host and redirect target | ||||
| that were advertised in Figure 1 above. | ||||
| </t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | | |||
| <-----------------------+ | | <-----------------------+ | | |||
| | | | | | | | | |||
| + + + | + + + | |||
| ]]></artwork> | ||||
| </figure> | ||||
| Figure 2: Generic requests redirection sequence | <t>Explanation:</t> | |||
| ]]></artwork> | <ol spacing="normal" type="(%d)"> | |||
| </figure> | <li>The End User sends a request (DNS or HTTP) to the uCDN Request | |||
| <t><list style="numbers"> | Router (RR).</li> | |||
| <t> | <li>Using the previously advertised Redirect Target, the uCDN | |||
| The End User sends a request (DNS or HTTP) to the uCDN Request Rout | redirects the request to the dCDN.</li> | |||
| er (RR). | <li>The End User sends a request to the dCDN.</li> | |||
| </t> | <li>The dCDN either sends a response or reroutes it, for example, to | |||
| <t> | a dCDN surrogate.</li> | |||
| Using the previously advertised Redirect Target, the uCDN redirects | </ol> | |||
| the request to the | ||||
| dCDN. | ||||
| </t> | ||||
| <t> | ||||
| The End User sends a request to the dCDN. | ||||
| </t> | ||||
| <t> | ||||
| The dCDN either sends a response or reroutes it, for example, to a | ||||
| dCDN surrogate. | ||||
| </t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="fallback-target-metadata" numbered="true" toc="default"> | ||||
| <name>Fallback Target Server Address</name> | ||||
| <t>Open Caching requires that the uCDN provides a fallback target server | ||||
| to the dCDN to be used in cases where the dCDN cannot properly handle | ||||
| the request. To avoid redirect loops, the fallback target server's | ||||
| address at the uCDN <bcp14>MUST</bcp14> be different from the original | ||||
| uCDN address from which the client was redirected to the dCDN. The uCDN | ||||
| <bcp14>MUST</bcp14> avoid further redirection when receiving the client | ||||
| request at the fallback target. The Fallback Target is defined as a | ||||
| generic metadata object (see <xref target="RFC8006" | ||||
| sectionFormat="of" section="3.2"/>).</t> | ||||
| <t>Use cases:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Failover: A dCDN request router receives a request but has no | ||||
| caches to which it can route the request. This can happen in the case | ||||
| of failures or temporary network overload.</li> | ||||
| <li>No coverage: A dCDN request router receives a request from a | ||||
| client located in an area inside the footprint but not covered by the | ||||
| dCDN caches or outside the dCDN footprint coverage. In such cases, | ||||
| the router may choose to redirect the request back to the uCDN | ||||
| fallback address.</li> | ||||
| <li>Error: A cache may receive a request that it cannot properly | ||||
| serve, for example, some of the metadata objects for that service were | ||||
| not properly acquired. In this case, the cache's "default action" may | ||||
| be to "redirect back to uCDN".</li> | ||||
| </ul> | ||||
| <t>The Fallback Target metadata object is used to indicate the target | ||||
| address the dCDN should redirect a client to when falling back to the | ||||
| uCDN. The fallback target address is represented as an Endpoint object as | ||||
| defined in <xref target="RFC8006" sectionFormat="of" | ||||
| section="4.3.3"/>.</t> | ||||
| <t>In DNS redirection, a CNAME record is used as the fallback target | ||||
| address.</t> | ||||
| <t>In HTTP redirection, a hostname is used as the fallback target | ||||
| address.</t> | ||||
| <t>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 | ||||
| client would have used for the original uCDN request, stripping, if | ||||
| 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 dCDN.</t> | ||||
| <section anchor="fallback-target-metadata-properties" numbered="true" | ||||
| toc="default"> | ||||
| <name>Properties of Fallback Target Generic Metadata Object</name> | ||||
| <section anchor="fallback-target-metadata" title="Fallback Target Address Me | <t>The MI.FallbackTarget generic metadata object consists of the followi | |||
| tadata"> | ng | |||
| <t>Open Caching requires that the uCDN provides a fallback target server t | two properties:</t> | |||
| o the | ||||
| dCDN, to be used in cases where the dCDN cannot properly handle the req | ||||
| uest. | ||||
| To avoid redirect loops, the fallback target server's address at the uC | ||||
| DN MUST be | ||||
| different from the original uCDN address from which the client was redi | ||||
| rected | ||||
| to the dCDN. The uCDN MUST avoid further redirection when receiving the | ||||
| client request at | ||||
| the fallback target. The fallback target is defined as a generic metada | ||||
| ta object | ||||
| (see Section 3.2 of <xref target="RFC8006"/>)</t> | ||||
| <t>Use cases<list style="symbols"> | ||||
| <t>Failover: A dCDN request router receives a request but has no caches | ||||
| to which it can route the request. This can happen in the case of | ||||
| failures or temporary network overload.</t> | ||||
| <t>No coverage: A dCDN request router receives a request from a client | ||||
| located | ||||
| in an area inside the footprint but not covered by the dCDN caches o | ||||
| r outside the dCDN | ||||
| footprint coverage. In such cases, the router may choose to redirect | ||||
| the request back | ||||
| to the uCDN fallback address.</t> | ||||
| <t>Error: A cache may receive a request that it cannot properly serve, | ||||
| for | ||||
| example, some of the metadata objects for that service were not prop | ||||
| erly | ||||
| acquired. In this case, the cache's "default action" may be to "redi | ||||
| rect back to uCDN".</t> | ||||
| </list></t> | ||||
| <t>The Fallback target metadata object is used to indicate the target addr | ||||
| ess the dCDN should redirect | ||||
| a client to when falling back to the uCDN. Fallback target address is r | ||||
| epresented as an endpoint | ||||
| object as defined in Section 4.3.3 of <xref target="RFC8006"/>.</t> | ||||
| <t>In DNS redirection a CNAME record is used as the fallback target addres | ||||
| s.</t> | ||||
| <t>In HTTP redirection a hostname is used as the fallback target address.< | ||||
| /t> | ||||
| <t>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 client would have used for the orig | ||||
| inal uCDN request, stripping, | ||||
| if needed, the dCDN path-prefix and/or the uCDN hostname from the redir | ||||
| ect URL that may have been used to | ||||
| request the content from the dCDN.</t> | ||||
| <section anchor="fallback-target-metadata-properties" title="Properties of | ||||
| Fallback Target Address Metadata Object"> | ||||
| <t>The MI.FallbackTarget Metadata object consists of the following sing | ||||
| le property:</t> | ||||
| <t><list style="empty"> | ||||
| <t>Property: host<list style="empty"> | ||||
| <t>Description: Target address to which the dCDN can redirect the | ||||
| client.</t> | ||||
| <t>Type: Endpoint object as defined in Section 4.3.3 of <xref tar | ||||
| get="RFC8006"/> | ||||
| with the limitation that in case of DNS delegation it SHOULD N | ||||
| OT include a port number and, | ||||
| in case a port number is present, the dCDN MUST ignore it.</t> | ||||
| <t>Mandatory-to-Specify: Yes.</t> | <dl newline="false" spacing="normal"> | |||
| </list></t> | ||||
| <t>Property: scheme<list style="empty"> | ||||
| <t>Description: A URI scheme to be used in the redirect response | <dt>Property:</dt><dd><t>host</t> | |||
| location construction. | <dl newline="false" spacing="normal"> | |||
| When present, the dCDN MUST use this scheme in case of HTTP re | <dt>Description:</dt><dd>Target address to which the dCDN can | |||
| direction to the | redirect the client.</dd> | |||
| uCDN fallback address.</t> | <dt>Type:</dt><dd>Endpoint object as defined in <xref | |||
| target="RFC8006" sectionFormat="of" section="4.3.3"/>, with the | ||||
| limitation that in case of DNS delegation, it <bcp14>SHOULD | ||||
| NOT</bcp14> include a port number, and in case a port number is | ||||
| present, the dCDN <bcp14>MUST</bcp14> ignore it.</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>Yes.</dd> | ||||
| <t>Type: A URI scheme as defined in Section 3.1 of <xref target=" | </dl></dd> | |||
| RFC3986"/> represented as a JSON string. The scheme MUST be | ||||
| either "http" or "https".</t> | ||||
| <t>Mandatory-to-Specify: No. In case of HTTP redirection to fallb | <dt>Property:</dt><dd><t>scheme</t> | |||
| ack, if this property is absent or empty, | <dl newline="false" spacing="normal"> | |||
| the dCDN redirecting entity MUST use the same scheme as in the | <dt>Description:</dt><dd>A URI scheme to be used in the redirect | |||
| request received by the dCDN.</t> | response location construction. When present, the dCDN | |||
| </list></t> | <bcp14>MUST</bcp14> use this scheme in case of HTTP redirection | |||
| </list></t> | to the uCDN fallback address.</dd> | |||
| <dt>Type:</dt><dd>A URI scheme as defined in <xref target="RFC3986 | ||||
| " | ||||
| sectionFormat="of" section="3.1"/>, represented as a JSON | ||||
| string. The scheme <bcp14>MUST</bcp14> be either "http" or | ||||
| "https".</dd> | ||||
| <dt>Mandatory-to-Specify:</dt><dd>No. In case of HTTP redirection | ||||
| to | ||||
| fallback, if this property is absent or empty, the dCDN | ||||
| redirecting entity <bcp14>MUST</bcp14> use the same scheme as in | ||||
| the request received by the dCDN.</dd> | ||||
| </dl></dd> | ||||
| <t>Example of a MI.FallbackTarget Metadata object that designates the h | </dl> | |||
| ost address | ||||
| the dCDN should use as fallback address to redirect back to the uCDN | ||||
| .</t> | ||||
| <figure> | <t>The following is an example of an MI.FallbackTarget generic | |||
| <artwork><![CDATA[ | metadata object that designates the host address the dCDN should use | |||
| as fallback address to redirect back to the uCDN:</t> | ||||
| <sourcecode name="" type="json"><![CDATA[ | ||||
| { | { | |||
| "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" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="fallback-address-usage-example" numbered="true" toc="defa | ||||
| <section anchor="fallback-address-usage-example" title="Usage Example"> | ult"> | |||
| <t> | <name>Usage Example</name> | |||
| The uCDN advertises out-of-band the fallback target address to the dC | <t>The uCDN advertises out-of-band the fallback target address to the | |||
| DN, so that the dCDN | dCDN, so that the dCDN may redirect a request back to the uCDN in case | |||
| may redirect a request back to the uCDN in case the dCDN cannot serve | the dCDN cannot serve it. Using the MI, the uCDN advertises its hosts | |||
| it. | to the dCDN, along with their specific host metadata (see <xref | |||
| Using the MI the uCDN advertises its hosts to the dCDN, along with th | target="RFC8006" sectionFormat="of" section="4.1.2"/>). The Fallback | |||
| eir specific host metadata | Target generic metadata object is encapsulated within the | |||
| (see Section 4.1.2 of <xref target="RFC8006"/>. The Fallback Target g | "host-metadata" property of each host. The following is an example of | |||
| eneric metadata object is | a message flow between a uCDN and a dCDN. For | |||
| encapsulated within the "host-metadata" property of each host. The fo | simplicity, we focus on the sequence of messages between the uCDN and | |||
| llowing is an example of | dCDN, not on how they are passed.</t> | |||
| a message flow between an upstream CDN and a downstream dCDN. For si | <figure anchor="fallback"> | |||
| mplicity, we focus on the | <name>Advertisement of Host Metadata with Fallback Target</name> | |||
| sequence of messages between the uCDN and dCDN, not on how they are p | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| assed. | ||||
| </t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-------------------------------------------------------> | +-------------------------------------------------------> | |||
| | | | | | | |||
| | | | | | | |||
| + + | + + | |||
| ]]></artwork> | ||||
| Figure 3: Advertisement of host metadata with Fallback Target | </figure> | |||
| ]]></artwork> | <t>Explanation: | |||
| </figure> | </t> | |||
| <t><list style="numbers"> | <ol spacing="normal" type="(%d)"> | |||
| <t> | <li>The uCDN advertises a host (s123.ucdn.example.com) with the host | |||
| The uCDN advertises a host (s123.ucdn.example.com) with the host me | metadata. The host-metadata property contains an MI.FallbackTarget | |||
| tadata. The host-metadata property | generic metadata object.</li> | |||
| contains a MI.FallbackTarget object. | <li>The dCDN advertises its FCI objects to the uCDN, including a | |||
| </t> | Redirect Target capability object that contains the redirect target | |||
| <t> | address (us-east1.dcdn.example.com) specified for that uCDN | |||
| The dCDN advertises its FCI objects to the uCDN including a FCI.Red | host.</li> | |||
| irectTarget object that contains | </ol> | |||
| the redirect target address (us-east1.dcdn.example.com) specified f | <t>The following is a generic sequence of redirection using the | |||
| or that uCDN host. | configurations that were advertised in <xref target="fallback"/>. In this | |||
| </t> | case, | |||
| </list></t> | the dCDN redirects back to the uCDN fallback target address.</t> | |||
| <figure anchor="redirection"> | ||||
| <t> | <name>Redirection to Fallback Target</name> | |||
| The following is a generic sequence of redirection using the configur | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| ations that were advertised in | ||||
| Figure 3 above. In this case the dCDN redirects back to the uCDN fall | ||||
| back target address. | ||||
| </t> | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | | |||
| <-------------------+-------------------+-------------------+ | <-------------------+-------------------+-------------------+ | |||
| | | | | | | | | | | |||
| (3) | Request us-east1.dcdn.example.com | | | (3) | Request us-east1.dcdn.example.com | | | |||
| skipping to change at line 624 ¶ | skipping to change at line 714 ¶ | |||
| (4) | Redirect back to fallback-a.service123.ucdn.example | | (4) | Redirect back to fallback-a.service123.ucdn.example | | |||
| <-------------------+ | | | <-------------------+ | | | |||
| | | | | | | | | | | |||
| (5) | Request fallback-a.service123.ucdn.example | | (5) | Request fallback-a.service123.ucdn.example | | |||
| +---------------------------------------> | | +---------------------------------------> | | |||
| | | | | | | | | | | |||
| (6) | Response | | | | (6) | Response | | | | |||
| <-------------------+-------------------+ | | <-------------------+-------------------+ | | |||
| | | | | | | | | | | |||
| + + + + | + + + + | |||
| ]]></artwork> | ||||
| </figure> | ||||
| Figure 4: Redirection to Fallback Target | <t>Explanation: | |||
| ]]></artwork> | </t> | |||
| </figure> | <ol spacing="normal" type="(%d)"> | |||
| <t><list style="numbers"> | <li>The End User sends a request (DNS or HTTP) to the uCDN Request | |||
| <t> | Router (RR).</li> | |||
| The End User sends a request (DNS or HTTP) to the uCDN Request Rout | <li>Using the previously advertised Redirect Target, the uCDN | |||
| er (RR). | redirects the request to the dCDN.</li> | |||
| </t> | <li>The End User sends a request to the dCDN.</li> | |||
| <t> | <li>The dCDN cannot handle the request and therefore redirects it | |||
| Using the previously advertised Redirect Target, the uCDN redirects | back to the uCDN fallback target address.</li> | |||
| the request to the | <li>The End User sends the request to the uCDN fallback target | |||
| dCDN. | address.</li> | |||
| </t> | <li>The uCDN either sends a response or reroutes it, for example, to | |||
| <t> | a uCDN surrogate.</li> | |||
| The End User sends a request to the dCDN. | </ol> | |||
| </t> | ||||
| <t> | ||||
| The dCDN cannot handled the request and, therefore, redirects it ba | ||||
| ck to the uCDN fallback | ||||
| target address. | ||||
| </t> | ||||
| <t> | ||||
| The End User sends the request to the uCDN fallback target address. | ||||
| </t> | ||||
| <t> | ||||
| The uCDN either sends a response or reroutes it, for example, to a | ||||
| uCDN surrogate. | ||||
| </t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="uCDN addressing considerations"> | <name>uCDN Addressing Considerations</name> | |||
| <t>When advertising fallback addresses to the dCDN the uCDN SHOULD consi | <t>When advertising fallback addresses to the dCDN, the uCDN | |||
| der the failure use cases that may | <bcp14>SHOULD</bcp14> consider the failure use cases that may lead the | |||
| lead the dCDN to route requests to uCDN fallback. In extreme dCDN net | dCDN to route requests to uCDN fallback. In extreme dCDN network | |||
| work failures or under denial-of-service | failures or under denial-of-service (DoS) attacks, requests coming | |||
| (DoS) attacks, requests coming from a large segment or multiple segm | from a large segment or multiple segments of the dCDN may be routed | |||
| ents of the dCDN may be routed back to the uCDN. | back to the uCDN. The uCDN <bcp14>SHOULD</bcp14> therefore design its | |||
| The uCDN SHOULD therefore design its fallback addressing scheme and i | fallback addressing scheme and its available resources accordingly. A | |||
| ts available resources accordingly. | favorable approach would be for the uCDN to use a different fallback | |||
| A favorable approach would be for the uCDN to use different fallback | target address for each uCDN host, enabling it to load balance the | |||
| target address for each uCDN host, | requests using the same methods as it would for its original | |||
| enabling it to load balance the requests using the same methods as it | hosts. See Sections <xref target="RFC8006" section="4.1.2" | |||
| would for its original hosts. | sectionFormat="bare"/> and <xref target="RFC8006" section="4.1.3" | |||
| See Sections 4.1.2 and 4.1.3 of <xref target="RFC8006"/> for a detail | sectionFormat="bare"/> of <xref target="RFC8006" format="default"/> for | |||
| ed description of how to use | a detailed description of how to use GenericMetadata objects within | |||
| GenericMetadata objects within the HostMatch object advertised in the | the HostMatch object advertised in the HostIndex of the uCDN.</t> | |||
| HostIndex of the uCDN. | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="IANA" title="IANA Considerations"> | <section anchor="IANA" numbered="true" toc="default"> | |||
| <section anchor="IANA.payload" title="CDNI Payload Types"> | ||||
| <t>This document requests the registration of the following CDNI Payload | ||||
| Types | ||||
| under the IANA "CDNI Payload Types" registry defined in <xref target= | ||||
| "RFC7736"/>:</t> | ||||
| <texttable> | ||||
| <ttcol align="left">Payload Type</ttcol> | ||||
| <ttcol align="left">Specification</ttcol> | ||||
| <c>FCI.RedirectTarget</c> | ||||
| <c>RFCthis</c> | ||||
| <c>MI.FallbackTarget</c> | ||||
| <c>RFCthis</c> | ||||
| </texttable> | <name>IANA Considerations</name> | |||
| <section anchor="IANA.payload" numbered="true" toc="default"> | ||||
| <name>CDNI Payload Types</name> | ||||
| <t>IANA has registered the following CDNI | ||||
| Payload Types in the "CDNI Payload Types" registry defined in | ||||
| <xref target="RFC7736" format="default"/>:</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Payload Type</th> | ||||
| <th align="left">Specification</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">FCI.RedirectTarget</td> | ||||
| <td align="left">RFC 8804</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">MI.FallbackTarget</td> | ||||
| <td align="left">RFC 8804</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <section anchor="IANA.payload.RedirectTarget" numbered="true" toc="defau | ||||
| lt"> | ||||
| <name>CDNI FCI RedirectTarget Payload Type</name> | ||||
| <t>[RFC Editor: Please replace RFCthis with the published RFC | <dl newline="false" spacing="normal"> | |||
| number for this document.]</t> | <dt>Purpose:</dt><dd>The purpose of this payload type is to | |||
| distinguish FCI advertisement objects for redirect target.</dd> | ||||
| <dt>Interface:</dt><dd>FCI</dd> | ||||
| <dt>Encoding:</dt><dd>See <xref | ||||
| target="redirect-target-capability-properties" | ||||
| format="default"/>.</dd> | ||||
| </dl> | ||||
| <section anchor="IANA.payload.RedirectTarget" title="CDNI FCI RedirectTa | ||||
| rget Payload Type"> | ||||
| <t>Purpose: The purpose of this payload type is to | ||||
| distinguish RedirectTarget FCI objects</t> | ||||
| <t>Interface: FCI</t> | ||||
| <t>Encoding: see <xref target="redirect-target-capability-properties"/ | ||||
| ></t> | ||||
| </section> | ||||
| <section anchor="IANA.payload.FallbackTarget" title="CDNI MI FallbackTar | ||||
| get Payload Type"> | ||||
| <t>Purpose: The purpose of this payload type is to | ||||
| distinguish FallbackTarget MI objects (and any associated capabilit | ||||
| y advertisement)</t> | ||||
| <t>Interface: MI/FCI</t> | ||||
| <t>Encoding: see <xref target="fallback-target-metadata-properties"/>< | ||||
| /t> | ||||
| </section> | </section> | |||
| <section anchor="IANA.payload.FallbackTarget" numbered="true" toc="defau | ||||
| lt"> | ||||
| <name>CDNI MI FallbackTarget Payload Type</name> | ||||
| </section> | <dl newline="false" spacing="normal"> | |||
| </section> | <dt>Purpose:</dt><dd>The purpose of this payload type is to distinguis | |||
| h | ||||
| <section anchor="Security" title="Security Considerations"> | FallbackTarget MI objects (and any associated capability | |||
| <t>This specification is in accordance with the CDNI Metadata Interface an | advertisement).</dd> | |||
| d the CDNI Request Routing: | <dt>Interface:</dt><dd>MI/FCI</dd> | |||
| Footprint and Capabilities Semantics. As such, it is subject to the sec | <dt>Encoding:</dt><dd>See <xref target="fallback-target-metadata-prope | |||
| urity and privacy considerations as | rties" | |||
| defined in Section 8 of <xref target="RFC8006"/> and in Section 7 of <x | format="default"/>.</dd> | |||
| ref target="RFC8008"/> respectively. | </dl> | |||
| </t> | ||||
| <section anchor="Privacy" title="Confidentiality and Privacy"> | ||||
| <t>The Redirect Target FCI object potentially reveals information abou | ||||
| t the internal structure of the dCDN network. | ||||
| A third party could intercept the FCI transactions and use the info | ||||
| rmation to attack the dCDN. The same is also | ||||
| true for the Fallback Target Metadata object as it may reveal infor | ||||
| mation about the internal structure of the | ||||
| uCDN, exposing it to external exploits. Implementations of the FCI | ||||
| and MI MUST therefore use strong authentication | ||||
| and encryption and strictly follow the directions for securing the | ||||
| interface as defined for the Metadata Interface | ||||
| in Section 8.3 of <xref target="RFC8006"/>. | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | <t>This specification defines extensions to the CDNI Metadata Interface | |||
| <t>The authors thank Nir B. Sopher for reality checks against product | (MI) and the Footprint & Capabilities Advertisement interface (FCI). A | |||
| ion use cases, his contribution is significant to this document. | s such, | |||
| The authors also thank Ben Niven-Jenkins for his review and feedback an | it is subject to the security and privacy considerations defined in | |||
| d Kevin J. Ma for his guidance throughout the development | <xref target="RFC8006" sectionFormat="of" section="8"/> and in | |||
| of this document including his regular reviews.</t> | <xref target="RFC8008" sectionFormat="of" section="7"/>, | |||
| respectively.</t> | ||||
| <section anchor="Privacy" numbered="true" toc="default"> | ||||
| <name>Confidentiality and Privacy</name> | ||||
| <t>The Redirect Target capability object potentially reveals information | ||||
| about the internal structure of the dCDN network. A third party could | ||||
| intercept the FCI transactions and use the information to attack the | ||||
| dCDN. The same is also true for the Fallback Target generic metadata obje | ||||
| ct, as | ||||
| it may reveal information about the internal structure of the uCDN, | ||||
| exposing it to external exploits. Implementations of the FCI and MI | ||||
| <bcp14>MUST</bcp14> therefore use strong authentication and encryption | ||||
| and strictly follow the directions for securing the interface as | ||||
| defined for the Metadata Interface in <xref target="RFC8006" | ||||
| sectionFormat="of" section="8.3"/>.</t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references> | |||
| <name>References</name> | ||||
| <?rfc include="reference.RFC.1034" ?> | <references> | |||
| <name>Normative References</name> | ||||
| <?rfc include="reference.RFC.2119" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.1034.xml"/> | ||||
| <?rfc include="reference.RFC.3986" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.2119.xml"/> | ||||
| <?rfc include="reference.RFC.6707" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.3986.xml"/> | ||||
| <?rfc include="reference.RFC.7231" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.6707.xml"/> | ||||
| <?rfc include="reference.RFC.7336" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7231.xml"/> | ||||
| <?rfc include="reference.RFC.7975" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7336.xml"/> | ||||
| <?rfc include="reference.RFC.8006" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7975.xml"/> | ||||
| <?rfc include="reference.RFC.8007" ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8006.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8007.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8008.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7736.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7871.xml"/> | ||||
| <?rfc include="reference.RFC.8008" ?> | <reference anchor="SVA" target="https://www.streamingvideoalliance.org"> | |||
| <front> | ||||
| <title>Streaming Video Alliance</title> | ||||
| <author/> | ||||
| </front> | ||||
| </reference> | ||||
| <?rfc include="reference.RFC.8174" ?> | <reference anchor="OCWG" target="https://www.streamingvideoalliance.org/ | |||
| technical-groups/open-caching/"> | ||||
| <front> | ||||
| <title>Open Caching</title> | ||||
| <author><organization>Streaming Video Alliance</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OC-RR" target="https://www.streamingvideoalliance.org | ||||
| /books/open-cache-request-routing-functional-specification/"> | ||||
| <front> | ||||
| <title> | ||||
| Open Cache Request Routing Functional Specification | ||||
| </title> | ||||
| <seriesInfo name="Version" value="1.1"/> | ||||
| <author initials="O." surname="Finkelman" fullname="Ori Finkelman" r | ||||
| ole="editor"> | ||||
| <organization>Qwilt</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Hofmann" fullname="Jason Hofmann"> | ||||
| <organization>Limelight Networks</organization> | ||||
| </author> | ||||
| <author initials="E." surname="Klein" fullname="Eric Klein"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Mishra" fullname="Sanjay Mishra"> | ||||
| <organization>Verizon</organization> | ||||
| </author> | ||||
| <author initials="K." surname="Ma" fullname="Kevin J. Ma"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Sahar" fullname="Dan Sahar"> | ||||
| <organization>Qwilt</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Zurat" fullname="Bill Zurat"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <date month="November" year="2016"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>The authors thank <contact fullname="Nir B. Sopher"/> for reality check | ||||
| s against | ||||
| production use cases; his contribution is significant to this | ||||
| document. The authors also thank <contact fullname="Ben Niven-Jenkins"/> f | ||||
| or his review and | ||||
| feedback and <contact fullname="Kevin J. Ma"/> for his guidance throughout | ||||
| the | ||||
| development of this document, including his regular reviews.</t> | ||||
| </section> | ||||
| <references title="Informative References"> | ||||
| <?rfc include="reference.RFC.7736" ?> | ||||
| <?rfc include="reference.RFC.7871" ?> | ||||
| <reference anchor="SVA" target="https://www.streamingvideoalliance.org"> | ||||
| <front> | ||||
| <title>Streaming Video Alliance Home Page</title> | ||||
| <author/> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OCWG" target="https://www.streamingvideoalliance.org/t | ||||
| echnical-groups/open-caching/"> | ||||
| <front> | ||||
| <title>Open Caching Home Page</title> | ||||
| <author/> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OC-RR" target="https://www.streamingvideoalliance.org/b | ||||
| ooks/open-cache-request-routing-functional-specification/"> | ||||
| <front> | ||||
| <title> | ||||
| Open Caching - Request Routing Functional Specification | ||||
| </title> | ||||
| <author initials="O." surname="Finkelman" fullname="Ori Finkelman" rol | ||||
| e="editor"> | ||||
| <organization>Qwilt</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Hofmann" fullname="Jason Hofmann"> | ||||
| <organization>Limelight Networks</organization> | ||||
| </author> | ||||
| <author initials="E." surname="Klein" fullname="Eric Klein"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Mishra" fullname="Sanjay Mishra"> | ||||
| <organization>Verizon</organization> | ||||
| </author> | ||||
| <author initials="K." surname="Ma" fullname="Kevin J. Ma"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Sahar" fullname="Dan Sahar"> | ||||
| <organization>Qwilt</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Zurat" fullname="Bill Zurat"> | ||||
| <organization>Disney Streaming Services</organization> | ||||
| </author> | ||||
| <date day="4" month="October" year="2019"/> | ||||
| </front> | ||||
| <seriesInfo name="Version" value="1.1"/> | ||||
| </reference> | ||||
| </references> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 98 change blocks. | ||||
| 794 lines changed or deleted | 734 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/ | ||||