CDNI Working Group Xiaoyan.He Internet Draft Jincheng.Li Intended status: Standards Track Spencer.Dawkins Expires: April 2012 Huawei Ge.Chen China Telecom October 13, 2011 Request Routing Protocol for CDN Interconnection draft-xiaoyan-cdni-request-routing-protocol-00.txt Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html This Internet-Draft will expire on April 13,2012. Copyright Notice Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust He Expires April 13, 2012 [Page 1] Internet-Draft cdni-request-routing-protocol October 2011 Legal Provisions and are provided without warranty as described in the Simplified BSD License. Abstract The Request Routing Protocol allows the Request Routing system in interconnected Content Delivery Network(CDNs) to communicate to ensure that an end user request can be (re)directed from an upstream CDN to a surrogate in the downstream CDN. This document describes the details of the protocol used to provide this mechanism. Table of Contents 1. Introduction ................................................ 3 1.1. Terminology ............................................ 3 1.2. Reference Model ........................................ 4 2. Conventions used in this document ............................ 5 3. Protocol Function and Operation Overview ..................... 5 3.1. Request Routing ........................................ 6 3.1.1. DNS based Request Routing Protocol ................. 8 3.1.1.1. HTTP Redirection utilized in a Downstream CDN .. 8 3.1.1.2. DNS Redirection utilized of Downstream CDN .... 10 3.1.2. HTTP based Request Routing Protocol ............... 12 3.2. Capability Information Advertising ..................... 13 4. Protocol Specification ..................................... 14 4.1.1. Recursive Request Routing ......................... 14 4.1.1.1. DNS based Request Routing Protocol ........... 14 4.1.1.1.1. Upstream CDN Behavior ................... 14 4.1.1.1.2. Downstream CDN Behavior ................. 15 4.1.1.2. HTTP based Request Routing Protocol .......... 15 4.1.1.2.1. Upstream CDN Behavior ................... 15 4.1.1.2.2. Downstream CDN Behavior ................. 15 4.1.2. Iterative Request Routing ......................... 16 4.2. Capability Information Advertising ..................... 16 4.2.1. Capability information description ................ 16 4.2.2. Message description ............................... 17 4.2.2.1. Report mode .................................. 17 4.2.2.2. Query mode................................... 17 4.2.3. Message examples .................................. 18 4.2.3.1. Report mode .................................. 18 4.2.3.2. Query mode................................... 19 5. Security Considerations .................................... 19 6. IANA Considerations ........................................ 20 7. References ................................................. 20 7.1. Normative References................................... 20 7.2. Informative References ................................. 20 8. Acknowledgments ............................................ 21 He Expires April 13, 2012 [Page 2] Internet-Draft cdni-request-routing-protocol October 2011 1. Introduction A Content Delivery Network(CDN) is a system of computers built on an existing IP network which is used for large scale content delivery, via prefetch or cache contents to its distributed computers close to the end users, a CDN can improve access to the data it caches, reduce access latency and improve end user's experience. In recent years the volume of video and multimedia content delivered over the internet is rapidly increasing. To accommodating this increase, existing CDN providers are scaling up their infrastructure and many Network Service Providers (NSPs) are deploying their own CDNs. Another emerging requirement is CDN Interconnection (CDNI). Several real world use cases are described in [I-D.draft-cdni-use- cases] to prove the necessity for CDN interconnection. The most frenquently mentioned use case is via leveraging the collective CDN footprint of interconnected standalone CDNs to achieve the goal of delivering content to additional distributed end users regardless of their location. As there is no existing standard to facilitate CDN interconnection, IETF has established a working group to produce specifications needed. This draft is written in response to the problem area described in [I-D.draft-cdni-problem-statement], when CDNs are interconnected as described in [I-D.draft-cdni-use-cases] based on the requirements described in [I-D.draft-cdni-requirements], and using the technology framework described in [I-D.davie-cdni-framework]. The purpose of this document is to define the request routing protocol for CDNI, which is one of the main building blocks of the CDN interconnection architecture described in [I-D.draft-cdni-requirements]. 1.1. Terminology This document reuses the terminology defined in [I-D.draft-cdni- problem-statement]. He Expires April 13, 2012 [Page 3] Internet-Draft cdni-request-routing-protocol October 2011 The term "Distinguished CDN Domain" defined in [I-D.davie-cdni- framework] also reused in this document. The following terms are also used by this document: DNS Redirection: The act of using DNS name resolution for the routing process of a CDN. In DNS Redirection, the DNS resolver of the CDN makes the routing decision based on a local policy and returns the result as the response of a DNS query request to redirect a user agent to a new target. In CDNI, the result may point to a surrogate of the CDN, another interconnected CDN etc. HTTP Redirection: The act of using an HTTP redirection response to redirect a user agent to a new target. The new target is the result of the routing decision of a CDN at the time it receives a content request via HTTP. In CDNI, the result may point to a surrogate of the CDN, another interconnected CDN. etc. 1.2. Reference Model Figure 1 from [I-D.draft-cdni-problem-statement] illustrating the CDNI model and the CDNI protocols is replicated below. This document describes the Request Routing Protocol shown in the figure. He Expires April 13, 2012 [Page 4] Internet-Draft cdni-request-routing-protocol October 2011 -------- / \ | CSP | \ / -------- * * * /\ * / \ ---------------------- |CDNI| ---------------------- / Upstream CDN \ | | / Downstream CDN \ | +-------------+ | Control Interface| +-------------+ | |******* Control |<======|====|========>| Control *******| |* +------*----*-+ | | | | +-*----*------+ *| |* * * | | | | * * *| |* +------*------+ | Logging Interface| +------*------+ *| |* ***** Logging |<======|====|========>| Logging ***** *| |* * +-*-----------+ | | | | +-----------*-+ * *| |* * * * | Request Routing | * * * *| .....*...+-*---------*-+ | Interface | +-*---------*-+...*.*... . |* * *** Req-Routing |<======|====|========>| Req-Routing *** * *| . . |* * * +-------------+.| | | | +-------------+ * * *| . . |* * * . CDNI Metadata | * * *| . . |* * * +-------------+ |. Interface | +-------------+ * * *| . . |* * * | Distribution|<==.===|====|========>| Distribution| * * *| . . |* * * | | | . \ / | | | * * *| . . |* * * |+---------+ | | . \/ | | +---------+| * * *| . . |* * ***| +---------+| | ....Request......+---------+ |*** * *| . . |* *****+-|Surrogate|************************|Surrogate|-+***** *| . . |******* +---------+| | Acquisition | |+----------+ *******| . . | +-------------+ | | +-------*-----+ | . . \ / \ * / . . ---------------------- ---------*------------ . . * . . * Delivery . . * . . +--*---+ . ...............Request.............................| User |..Request.. | Agent| +------+ <==> interfaces inside the scope of CDNI **** interfaces outside the scope of CDNI .... interfaces outside the scope of CDNI Figure 1: CDNI Model 2. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [RFC2119]. He Expires April 13, 2012 [Page 5] Internet-Draft cdni-request-routing-protocol October 2011 3. Protocol Function and Operation Overview The Request Routing Protocol is one of the main building blocks for CDNI. The main function of the Request Routing Protocol is to allow the Request-Routing systems (see Figure 1) in interconnected CDNs to communicate to facilitate redirection of the request across CDNs. In particular, its function can be summarized as follows: * allow the Upstream CDN (uCDN)to query the Downstream CDN (dCDN) at request-routing time before redirecting the request to the Downstream CDN. * allow the Downstream CDN to provide to the Upstream CDN (static or dynamic) information (e.g. resources, footprint, load) to facilitate selection of the Downstream CDN by the Upstream CDN request routing system when processing subsequent content requests from User Agents. The detailed requirements which the Request Routing Protocol need to meet and priorities of those requirements are described in section 5, [I-D.draft-cdni-requirements]. To enable the communications over the Request Routing Interface, the two interconnected CDNs need to know each other's contact address(es). For example, an Upstream CDN needs to know the contact address of a Downstream CDN to send a query request based on HTTP for redirection preference, or a Downstream CDN needs to know the contact address(es) of the upstream peer it should report its capability information to. The contact address may be statically pre-configured, dynamically discovered via control interface, or other means. However, they are not specified in this document, as this is considered not in the scope of the CDNI Request Routing Protocol. 3.1. Request Routing The CDNI solution must support two request routing mechanisms. As illustrated in section 3.2 and 3.4 of [I-D.davie-cdni-framework], the Iterative Request Routing method does not invoke any interaction over the request routing interface across interconnected CDNS. This document will not discuss Iterative Request Routing further. In the case of Recursive Request Routing, an Upstream CDN forwards a routing request from a user agent to a Downstream CDN for surrogate selection. The candidate protocols for these interactions are DNS and HTTP. Moreover, the routing mechanisms used between the CDN and the user agent (DNS and HTTP Redirection) of the two interconnected CDNs should also be taken into account as they may affect the type of query request the Upstream CDN send to a Downstream CDN and the information the Downstream CDN may send in its query response. The request routing procedure has several variants depending on the factors including: He Expires April 13, 2012 [Page 6] Internet-Draft cdni-request-routing-protocol October 2011 O Which routing mechanism is adopted by an Upstream CDN, DNS Redirection or HTTP Redirection. O Which protocol is adopted over the Request Routing Interface, DNS or HTTP. O Which routing mechanism is adopted by a Downstream CDN, DNS Redirection or HTTP Redirection. All possible combinations and their validity are shown in Table 1. +-------+---------+----------+------------ +-----------------------+ |CaseNO.| uCDN | RRI | dCDN | Note | | | Received| Interface| Response | | | | Request| | | | +-------+---------+----------+------------ +-----------------------+ | 1 | DNS | DNS based| DNS with IP | dCDN works in HTTP | | | | |address of RR| Redirection mode, | | | | | |illustrated in section | | | | | |3.1.1.1. | +-------+---------+----------+------------ +-----------------------+ | 2 | DNS | DNS based| DNS with | dCDN works in DNS | | | | | hostname of | Redirection mode, | | | | | RR | illustrated in section| | | | | |3.1.1.2. | +-------+---------+----------+------------ +-----------------------+ | 3 | DNS |HTTP based| Invalid case|Protocol conversion | | | | | |occurs in uCDN, | | | | | | invalid case. | +-------+---------+----------+------------ +-----------------------+ | 4 | HTTP |HTTP based| HTTP 302 | dCDN works in HTTP | | | | | Redirection | Redirection mode, | | | | | |illustrated in section | | | | | |3.1.2. | +-------+---------+----------+------------ +-----------------------+ | 5 | HTTP |HTTP based| DNS | dCDN works in DNS | | | | | Redirection | Redirection mode, | | | | | | invalid case. | +-------+---------+----------+------------ +-----------------------+ | 6 | HTTP |DNS based| Invalid case| Protocol conversion | | | | | | occurs, invalid case. | +-------+---------+----------+------------ +-----------------------+ Table 1: Recursive Routing Cases The rules to filter the cases and determine the validity of them are discussed below. The Upstream CDN must not perform protocol conversion (A DNS query to an HTTP request or vice versa). To assist the routing decision of a Downstream CDN, the Upstream CDN conveys as much information as possible to the Downstream CDN, e.g. URI of the requested content, the client's location information. In the case of HTTP to DNS conversion, a DNS request cannot convey all the information an HTTP request contains. In the case of DNS to HTTP conversion, a full HTTP URL cannot be constructed through a simple He Expires April 13, 2012 [Page 7] Internet-Draft cdni-request-routing-protocol October 2011 domain name contained by a DNS query request. Hence it is concluded that the protocol type used in the Request Routing Interface will be consistent with the one the Upstream CDN received from the user agent. Case3, Case6 are invalid according to this rule. The Downstream CDN can determine according to its local policy a DNS Redirection or an HTTP Redirection to be adopted. When receiving a DNS query request over the Request Routing Interface. If DNS Redirection is selected, as the location information has been changed to the Upstream CDN's when it proies the DNS query request, the Downstream CDN cannot get the user agent's location information from the query request. The Downstream CDN sends a response with a CNAME with the hostname of the Request Router, so that the user agent issues another DNS query request which will convey its location information as shown in case2. If HTTP Redirection is selected, the Downstream CDN sends a response with the IP address of its Request Router, so that it can receive a subsequent content request based on HTTP containing the client's location information, to allow selection of an appropriate surrogate as shown in case1. Based on filter rules above, Case 1, 2, and 4 are valid cases for CDNI. The following section describes these cases in detail. 3.1.1. DNS based Request Routing Protocol 3.1.1.1. HTTP Redirection utilized by Downstream CDN This example illustrates the CaseNo1 of Table 1. Based on local policy, the Upstream CDN adopts the DNS Redirection with the user agent while the Downstream CDN utilizes the HTTP Redirection. The Downstream CDN should return the IP address in an RR. In this example, the distinguished domain name of the Downstream CDN is "cdni.op- b.example". Note: To simplify the presentation, the full URL of the HTTP GET message is not shown in the example figures of this document. Only the FQDN at the beginning of each URL is explicitly presented, however the rest of the URL e.g. the path He Expires April 13, 2012 [Page 8] Internet-Draft cdni-request-routing-protocol October 2011 parameters contained in the URL should be considered to be present. End-User CDN B CDN A |DNS video.cp.example | |(1) |-------------------------------------------------->| | | DNS video.cp.example. | | | cdni.op-b.example | | |<------------------------|(2) | |IPaddr of B's Request Router | |------------------------>| | IPaddr of B's Request Router | |<--------------------------------------------------|(3) |HTTP GET video.cp.example| | |------------------------>| (4) | 302 node1.cdni.op-b.example/video.cp.example | |<------------------------| | DNS node1.cdni.op-b.example | | |------------------------>| | |IP address of B's node1 |(5) | |<----------------------- | | HTTP GET node1.cdni.op-b.example/video.cp.example | |------------------------>| | |Data |(6) | |<------------------------| | | | | Figure 2 DNS based CDNI Recursive Request Routing 1 1. A Request Routing System of CDN A processes the DNS request for its customer based on the domain video.cp.example and recognizes that the end-user is best served by another CDN, specifically CDN B. Based on the pre-configured distinguished domain name of CDN B and a negotiated rules for constructing a domain name contained in a DNS query request over RRI that have been negotiated with CDN B, the Request Routing System changes the domain name to CDN B's domain name, with the CP's domain information, and acts as a proxy server forwarding the DNS request to CDN B. He Expires April 13, 2012 [Page 9] Internet-Draft cdni-request-routing-protocol October 2011 Note: For simplicity, the local DNS invoked in the procedure is not shown. 2. Based on the local policy, CDN B determines that the routing mechanism utilized internally is HTTP Redirection. CDN B returns the IP address of a Request Router so that the RR get the subsequent HTTP content request from the user agent. 3. CDN A proxy the response back to the user agent. 4. The user agent sends the content requests to the Request Router of CDN B. Based on local routing decision policy, e.g. whether content hits take the highest priority or location proximity takes the highest priority, the Request Router selects a delivery node to serve the user agent and returns an HTTP 302 message to redirect the content request. 5. The user agent performs a DNS lookup for the hostname of the delivery node and gets the IP address of the node. 6. The user agent requests the content from CDN B's delivery node. The node contains the content, so it sends the content to the user agent. 3.1.1.2. DNS Redirection utilized by Downstream CDN This example illustrates the CaseNo2 of Table 1. Based on local policy, the Upstream CDN and the Downstream CDN both utilize the DNS Redirection with the user agent. As the Downstream CDN cannot get the user agent's location information through the DNS request forwarded by the Upstream CDN, in this case, the DNS resolver of the Downstream CDN is configured to return a CNAME of the RR to make it receive another DNS query request sent by the user agent/local DNS with information of the user's location. Again, the distinguished domain name of the Downstream CDN is "cdni.op-b.example". He Expires April 13, 2012 [Page 10] Internet-Draft cdni-request-routing-protocol October 2011 End-User CDN B CDN A |DNS video.cp.example | |(1) |-------------------------------------------------->| | | DNS video.cp.example. | | | cdni.op-b.example | | |<------------------------|(2) | |CNAME video.cp.example. | | | rr.cdni.op-b.example | | |------------------------>| CNAME video.cp.example.rr.cdni.op-b.example | |<--------------------------------------------------|(3) | DNS video.cp.example. | | | rr.cdni.op-b.example | | |------------------------>| | IP address of delivery node |(4) | |<------------------------| | |HTTP GET video.cp.example| | |------------------------>| | |Data |(5) | |<------------------------| | | | | Figure 3 DNS based CDNI Recursive Request Routing 2 1. A Request Routing System of CDN A processes the DNS request for its customer based on the domain video.cp.example and recognizes that the end-user is best served by another CDN, specifically CDN B. Based on the pre-configured distinguished domain name of CDN B and rules that have been negotiated with CDN B that describe how to construct a domain name contained in a DNS query request over RRI, the Request Routing System changes the domain name to CDN B's domain name accompanying with the CP's domain information and acts as a proxy server forwarding the DNS request to CDN B. Note: For simplicity, the local DNS invoked in the procedure is not shown. 2. CDN B recognizes that the request is from a peer CDN rather than a user agent by the distinguished domain name. Based on the local policy, CDN B determines that the routing mechanism utilized internally is DNS Redirection. CDN B returns the CNAME of a Request Router so that the user agent will send another DNS query request to get the user agent's location information. 3. CDN A proxy the response back to the user agent. He Expires April 13, 2012 [Page 11] Internet-Draft cdni-request-routing-protocol October 2011 4. The user agent sends the content requests to the Request Router of CDN B based on DNS with the CNAME of the RR. Based on local routing decision policy, the Request Router selects a delivery node to serve the user agent and returns IP address of the node. 5. The user agent requests the content from CDN B's delivery node, the node holds the content at the time and send the content to the user agent. 3.1.2. HTTP based Request Routing Protocol This example illustrates the CaseNo4 of Table 1. Based on local policy, the Upstream CDN and the Downstream CDN both utilize the HTTP Redirection with the user agent. The Upstream CDN shall provide as much information as possible to the Downstream to assist making the routing decision. For example, it includes the content URI and the user's location information etc. End-User CDN B CDN A |DNS video.cp.example | | |-------------------------------------------------->| | | | (1) |IPaddr of A's Request Router | |<--------------------------------------------------| |HTTP GET video.cp.example| | |-------------------------------------------------->|(2) | HTTP GET cdni.op-b.example/video.cp.example| | |<------------------------| (3) | 302 node1.cdni.op-b.example/video.cp.example | |------------------------>| | 302 node1.cdni.op-b.example/video.cp.example |<--------------------------------------------------|(4) DNS node1.cdni.op-b.example | | |------------------------>| | |IP address of B's node1 |(5) | |<----------------------- | | HTTP GET node1.cdni.op-b.example/video.cp.example | |-----------------------> | | |Data | (6) | |<------------------------| | | | | Figure 4 HTTP protocol based CDNI Recursive Request Routing He Expires April 13, 2012 [Page 12] Internet-Draft cdni-request-routing-protocol October 2011 1. A DNS resolver for CDN A processes the DNS request for its customer based on the domain video.cp.example. Based on local policy, HTTP Redirection is adopted for this request. Hence it returns the IP address of a Request Router in CDN A. 2. A Request Router of CDN A processes the user agent's content request and recognizes that the end-user is best served by another CDN, specifically CDN B. Based on pre-configuration or other means of discovery, the Request Router pushes the distinguished domain name of CDN B onto the original URL and acts as a proxy server forwarding the request to CDN B's Request Router. It also appends an X-Forwarded-For header into the request with the value set to the user's IP address extracted from the IP package header of the HTTP request it received. 3. Based on local routing decision policy, e.g. whether content hits take the highest priority or location proximity takes the highest priority, the Request Router of CDN B select a delivery node for the end user and returns an HTTP 302 message to redirect the content request to the node. 4. CDN A proxies the response back to the user agent. 5. The user agent performs a DNS lookup for the hostname of the delivery node and gets the IP address of the node. 6. The user agent requests the content from CDN B's delivery node. Since the node holds the content, it sends the content to the user agent. 3.2. Capability Information Advertising Besides forwarding a routing request from the Upstream CDN to the Downstream CDN at the request routing time, another important function of the Request Routing Protocol in Figure 1 is to advertis the capability information of the Downstream CDN to the Upstream CDN. He Expires April 13, 2012 [Page 13] Internet-Draft cdni-request-routing-protocol October 2011 The Downstream CDN may advertise its delivery capability to the Upstream CDN de-coupled with the routing request itself, during a periodic interval, e.g. every 5 minutes. This is called "report mode" in this document. Another one is called "query mode", means the Upstream CDN does not hold sufficient information to decide which Downstream CDN is most appropriate to deliver the content for the end user. In query mode,it then acquires the capability information from the Downstream CDN dynamically before make its routing decision. HTTP/1.1 [RFC2616] protocol is used for capability advertising. The detailed capability information description and message definition is described in section 5 of this document. Note: Although Iterative Request Routing is not discussed in this document, however, the capability information advertising procedures specified are also applicable to Iterative Request Routing. 4. Protocol Specification This section specifies how the Request Routing Protocol enables the Downstream CDN to advertise its capability to the Upstream CDN and to enable the Upstream CDN acting as a proxy server to forward the routing request from a user agent to the Downstream CDN. 4.1.1. Recursive Request Routing 4.1.1.1. DNS based Request Routing Protocol 4.1.1.1.1. Upstream CDN Behavior Upon receiving a DNS query request from a user agent, the Request Routing System of the Upstream CDN SHALL first determine a routing mechanism according to local policy. In case of DNS Redirection is leveraged, based on the local routing policy, if it is aware that the user is best served by another CDN, the Upstream CDN SHALL select a Downstream CDN and forward the DNS request to the Downstream CDN. When HTTP Redirection is adopted, the Upstream CDN SHALL respond with the address of a Request Router of the Upstream CDN. The QNAME contained in the DNS query request which is forwarded to the Downstream CDN SHALL be constructed by the rules negotiated by the two interconnected CDNs and based on the distinguished domain name of the Downstream CDN. He Expires April 13, 2012 [Page 14] Internet-Draft cdni-request-routing-protocol October 2011 Upon receiving a response from the Downstream CDN, the Request Routing System of the Upstream CDN shall forward it back to the user agent with the DNS payload unchanged. 4.1.1.1.2. Downstream CDN Behavior Upon receiving a DNS query request, the Downstream CDN SHALL first identify that this is a request for CDNI based on the distinguished domain name contained in the query request, and extracts the content provider's domain name. It then SHALL determine a routing mechanism according to local routing policy. Note: The local routing policy may take into account the CP's policy if existed identified by the CP's domain name. In case of DNS Redirection, it SHALL select a request router and return a response containing a CNAME with the hostname of the request router. In case of HTTP Redirection, it SHALL select a request router and return a response containing the IP address of the Request Router. 4.1.1.2. HTTP based Request Routing Protocol 4.1.1.2.1. Upstream CDN Behavior Upon receiving an HTTP GET request from a user agent for specific content, based on the local routing policy, if it is determined that the user is best served by another CDN, the Request Router of the Upstream CDN SHALL select a Downstream CDN for the end user, insert an X-Forwarded-For header into the request with the value set to the User Agent's IP address, augment the original URL with the distinguished domain name of the Downstream CDN in front of it, and then forward the request to the elected Downstream CDN. After receiving an HTTP "302" redirection response from the Downstream CDN, the Upstream CDN SHALL forward it back to the user agent. 4.1.1.2.2. Downstream CDN Behavior Upon receiving an HTTP GET request, the Downstream CDN SHALL select a delivery node for the user based on the local routing policy. If the user's location information is required to make the routing decision, it SHALL obtain that from an X-Forwarded-For header if this hearder exists. The Downstream CDN SHALL then return a response with a 302 Redirection message. The Location header's value is constructed by truncating the CDN B's domain name from the original URL in the request it received, and inserting He Expires April 13, 2012 [Page 15] Internet-Draft cdni-request-routing-protocol October 2011 the host name of the selected delivery node onto the front of the remaining URL. 4.1.2. Iterative Request Routing Note: Whether any content relative to Iterative Request Routing should be added here is to be determined by the CDNI working group. 4.2. Capability Information Advertising 4.2.1. Capability information description The Downstream CDN exposes capability information to an Upstream CDN on Request Routing Interface to facilitate CDN selection among other functions. The exposure should be of appropriate granularity to ensure the self-administrative nature of Downstream CDN. The following information in Table 2 is considered for capability exchange. +----------+-----------+-----------------+------------------------+ | Name | Type | Value | Description | +----------+-----------+-----------------+------------------------+ | IPVersion|ENUM,4 byte|1:IPV4;2:IPV6 | IP address version | +----------+-----------+-----------------+------------------------+ | Service- |ENUM,4 byte| 1:in-service; | CDNI service status | | Status | |2:out-of-service | | +----------+-----------+-----------------+------------------------+ |MaxAcquis-| UNIT32 | Integer starts |Concurrent maximal | |itionBW | | from zero. |availble bandwidth | | | | Unit:Mbps |for content acquisition | +----------+-----------+-----------------+------------------------+ |UsedAcqui-| | Integer starts | Concurrent used | |sitionBW | UNIT32 | from zero. | bandwidth for content | | | | Unit:Mbps | acquistion | +----------+-----------+-----------------+------------------------+ | | | Integer starts |Concurrent maximal | |MaxDelive-| UNIT32 | from zero. |availble bandwidth | |ryBW | | Unit:Mbps |for content delivery | +----------+-----------+-----------------+------------------------+ | | | Integer starts | Concurrent used | |UsedDeliv-| UNIT32 | from zero. | bandwidth for | |eryBW | | Unit:Mbps | content delivery | +----------+-----------+-----------------+------------------------+ |Delivery- | List |A list of protoc-| Supported delivery | |Protocol | |ols,e.g.HTTP,RTSP| protocols | +----------+-----------+-----------------+------------------------+ |Coverage | List |Coverage represe-| CDN coverage | | | |nted by Contry, | | | | |State and City | | | | |combination | | +----------+-----------+-----------------+------------------------+ Table 2 capability information description He Expires April 13, 2012 [Page 16] Internet-Draft cdni-request-routing-protocol October 2011 4.2.2. Message description The HTTP/1.1 protocol is used for capability advertising. The HTTP request is HTTP POST for Report mode and HTTP GET for Query mode respectively. The request URI in both modes conforms to [RFC3986]. The URI format in this document is as follows: HTTP:///, where the specifies a destination, and the conveys the message name. The message body representation specified in this document is JavaScript Object Notation(JSON). 4.2.2.1. Report mode The Downstream CDN issues an HTTP POST message to the Upstream CDN to report its capability information. The message name in the request URI is "CdniCapReport". The Content-Type header field is "application/json". The message body includes capability information. Upon successful receipt of the POST request, the Upstream CDN responds with a 200 OK message. 4.2.2.2. Query mode The Upstream CDN issues a HTTP GET message to a Downstream CDN to query its capability information. The message name in the request URI is "CdniCapQuery". He Expires April 13, 2012 [Page 17] Internet-Draft cdni-request-routing-protocol October 2011 Upon successful receipt of the GET request, the Downstream CDN responds a 200 OK message with its capability information. The Content-Type header field for the response is "application/json". 4.2.3. Message examples 4.2.3.1. Report mode The POST request and corresponding response are illustrated below. Request example (Downstream CDN to Upstream CDN): POST http://contact-address.ucdn.example/CdniCapReport HTTP/1.1 Content-Type: application/json Content-Length: 350 { "IPVersion":1, "ServiceStatus":1, "MaxAquisitionBW":10000, "UsedAquisitionBW":2000, "MaxDeliveryBW":20000, "UsedDeliveryBW":5000, "DeliveryProtocol":["HTTP","RSTP"], "Coverage": [ { "Country":"China", "State":[ { "Name":"Beijing", "City":["CityA","CityB"] }, { "Name":"Shanghai", "City":["CityX"] } ] }, He Expires April 13, 2012 [Page 18] Internet-Draft cdni-request-routing-protocol October 2011 { "Country":"US", "State":[ { "Name":"California", "City":["CityY"] } ] } ] } Response example: HTTP/1.1 200 OK 4.2.3.2. Query mode The GET request and corresponding response are illustrated below. Request example (Upstream CDN to Downstream CDN): GET http://contact-address.dcdn.example/CdniCapQuery HTTP/1.1 Response example: HTTP/1.1 200 OK Content-Type: application/json Content-Length: 350 The content of message body is the same as that of POST message illustrated in section 5.2.4.1. 5. Security Considerations In HTTP based Recursive Request Routing, the end user's web browsers will not send cookies if the content request is redirected to a URL in a different domain rather than the original CP's domain, e.g. the Downstream CDN's domain. If the browser is expected to send He Expires April 13, 2012 [Page 19] Internet-Draft cdni-request-routing-protocol October 2011 any cookies associated with the original CP's domain, this will cause problem that the CP's policy is not enforced by the CDN. The section 5.2 of draft [I-D.draft-peterson-cdni-strawman] has discussed a similar question and given a solution. 6. IANA Considerations If the approach described in this document is adopted, we would request that IANA allocate the message name "CdniCapReport" and "CdniCapQuery" in the HTTP Parameters registry. 7. References 7.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC3986] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax and Semantics", RFC 3986, January 2005. 7.2. Informative References [I-D.draft-cdni-use-cases] "Use Cases for Content Delivery Network Interconnection", Gilles Bertrand, Stephan Emile, Grant Watson, Trevor Burbridge, Philip Eardley, Kevin Ma, 22-Sep-11, . [I-D.draft-cdni-problem-statement] "Content Distribution Network Interconnection (CDNI) Problem Statement", Ben Niven-Jenkins, Francois Faucheur, Nabil Bitar, 9-Sep-11, . He Expires April 13, 2012 [Page 20] Internet-Draft cdni-request-routing-protocol October 2011 [I-D.draft-cdni-requirements] "Content Distribution Network Interconnection (CDNI) Requirements", Kent Leung, Yiu Lee, 9-Sep-11, . [I-D.draft-peterson-cdni-strawman] "A Simple Approach to CDN Interconnection", Larry Peterson, John Hartman, 18-May-11,. [I-D.davie-cdni-framework] Davie, B. and L. Peterson, "Framework for CDN Interconnection", draft-davie-cdni-framework-00 (work in progress), July 2011. 8. Acknowledgments This document was prepared using 2-Word-v2.0.template.dot. He Expires April 13, 2012 [Page 21] Internet-Draft cdni-request-routing-protocol October 2011 Authors' Addresses Xiaoyan He Huawei B2, Huawei Industrial Base, 518129 China Email: hexiaoyan@huawei.com Jincheng Li Huawei B2, Huawei Industrial Base, 518129 China Email: lijincheng@huawei.com Spencer Dawkins Huawei Email: spencer.dawkins@huawei.com Ge Chen China Telecom 109 West Zhongshan Ave,Tianhe District,Guangzhou,P.R.C Email: cheng@gsta.com He Expires April 13, 2012 [Page 22]