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://<host>/<url-path>, where the
  <host> specifies a destination, and the <url-path>  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, <draft-ietf-
           cdni-use-cases-00.txt>.

  [I-D.draft-cdni-problem-statement]
         "Content Distribution Network Interconnection (CDNI) Problem
           Statement", Ben Niven-Jenkins, Francois Faucheur, Nabil
           Bitar, 9-Sep-11, <draft-ietf-cdni-problem-statement-00.txt>.


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, <draft-ietf-
          cdni-requirements-00.txt>.

  [I-D.draft-peterson-cdni-strawman]
          "A Simple Approach to CDN Interconnection", Larry
          Peterson, John Hartman, 18-May-11,<draft-peterson-
          cdni-strawman-01.txt,.pdf>.

  [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]