Network Working Group T. Choi Internet-Draft ETRI Intended Status: Standard Track J. Shinn Expires: April 23, 2014 Solbox Inc. J. Sung KT J. Lee SKT J. Koo LGU+ Y. Bang KAIST October 20, 2013 CDNi Control - Initialization and Bootstrapping draft-choi-cdni-control-init-bootstrapping-02 Abstract This document proposes a mechanism for a CDN to initiate the interconnection across CDNs and bootstrap the other CDNi interfaces. Status of this Memo This Internet-Draft is submitted to IETF 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/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Copyright and License Notice T. Choi Expires April 23, 2014 [Page 1] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 Copyright (c) 2013 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 Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. CDNI Initialization and Bootstrapping Control Interface . . . . 6 4. Interface Information Elements . . . . . . . . . . . . . . . . 7 4.1. Information Element Data Type Descriptions . . . . . . . . 7 4.1.1. ActionType . . . . . . . . . . . . . . . . . . . . . . 7 4.1.2. General . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1.3. Contract . . . . . . . . . . . . . . . . . . . . . . . 8 4.1.4. EndPoints . . . . . . . . . . . . . . . . . . . . . . . 8 4.1.5. Protocols . . . . . . . . . . . . . . . . . . . . . . . 8 4.1.6. Fp_cap . . . . . . . . . . . . . . . . . . . . . . . . 8 4.1.7. Cdmd . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.1.8. AbsoluteTime . . . . . . . . . . . . . . . . . . . . . 8 4.1.9. ActionStatus . . . . . . . . . . . . . . . . . . . . . 8 4.2. JSON Encoding of Information Element Data Types . . . . . . 8 4.2.1. ActionType . . . . . . . . . . . . . . . . . . . . . . 8 4.2.2. General . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.3. Contracts . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.4. End-Points . . . . . . . . . . . . . . . . . . . . . . 9 4.2.5. Protocols . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.6. Fp_cap . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.7. Cdmd . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.8. AbsoluteTime . . . . . . . . . . . . . . . . . . . . . 10 4.2.9. ActionStatus . . . . . . . . . . . . . . . . . . . . . 10 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.1. Discover . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.2. Negotiate . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.3. Initialize . . . . . . . . . . . . . . . . . . . . . . . . 11 5.4. Add . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.5. Update . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.6. Remove . . . . . . . . . . . . . . . . . . . . . . . . . . 15 T. Choi Expires April 23, 2014 [Page 2] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 16 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 16 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 8.1. Normative References . . . . . . . . . . . . . . . . . . . 17 8.2. Informative References . . . . . . . . . . . . . . . . . . 17 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 18 T. Choi Expires April 23, 2014 [Page 3] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 1 Introduction [I-D.ietf-cdni-control-triggers-00] specifies mechanisms for CDN interconnction control for the "High" and "Medium" priority requirements for the CDNI Control Interface identified in section 4 of [I-D.ietf-cdni-requirements]. This draft concentrates on the remaining "Low" priority requirements for the CDNI Control Interface, reproduced here for convenience: CNTL-5 [LOW] The CDNI Control interface may allow a CDN to establish, update and terminate a CDN interconnection with another CDN whereby one CDN can act as a Downstream CDN for the other CDN (that acts as an Upstream CDN). CNTL-6 [LOW] The CDNI Control interface may allow control of the CDNI interconnection between any two CDNs independently for each direction (i.e. For the direction where CDN1 is the Upstream CDN and CDN2 is the Downstream CDN, and for the direction where CDN2 is the Upstream CDN and CDN1 is the Downstream CDN). CNTL-7 [LOW] The CDNI Control interface may allow bootstrapping of the Request-Routing interface. For example, this can potentially include: * negotiation of the Request-Routing method (e.g. DNS vs HTTP, if more than one method is specified) * discovery of the Request-Routing protocol endpoints * information necessary to establish secure communication between the Request-Routing protocol endpoints. CNTL-8 [LOW] The CDNI Control interface may allow bootstrapping of the CDNI Metadata interface. This information could, for example, include: * discovery of the CDNI Metadata signaling protocol endpoints * information necessary to establish secure communication between the CDNI Metadata signaling protocol endpoints. CNTL-9 [LOW] The CDNI Control interface may allow bootstrapping of the Content Acquisition interface. This could, for example, include exchange and negotiation of the Content Acquisition protocols to be used across the CDNs (e.g. HTTP, HTTPS, FTP, ATIS C2). T. Choi Expires April 23, 2014 [Page 4] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 CNTL-10 [LOW] The CDNI Control interface may allow exchange and negotiation of delivery authorization mechanisms to be supported across the CDNs (e.g. URI signature based validation). CNTL-11 [LOW] The CDNI Control interface may allow bootstrapping of the CDNI Logging interface. This information could, for example, include: * discovery of the Logging protocol endpoints * information necessary to establish secure communication between the Logging protocol endpoints * negotiation/definition of the log file format and set of fields to be exported through the Logging protocol, with some granularity (e.g. On a per content type basis). * negotiation/definition of parameters related to transaction Logs export (e.g., export protocol, file compression, export frequency, directory). T. Choi Expires April 23, 2014 [Page 5] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 This document consider those parts of the control interface that relate to configuration, bootstrapping or authentication of CDN Interconnect interfaces. o Section 2 terminology used in this document.. o Section 3 defines the RESTful web service interface used for CDNi initiation and bootstrapping. o Section 4 defines information elements encapsulated in the request and response messages of the interface and their JSON encoding o Section 5 contains example messages. 2. Terminology 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]. 3. CDNI Initialization and Bootstrapping Control Interface In order to meet the above requirements, the control interface should support the following actions. o discover - used to instruct a recipient CDN to return the requested information to the originator. The recipient CDN then fill in the requested information for the discovery. o negotiate - used to instruct a recipient CDN to negotiate the requested information (e.g., authentication & request-routing methods, content acquisition protocol, log file format, log export method). The recipient CDN checks with originator's preference and fill in its responding preference. o initialize - used to instruct a recipient CDN to initialize a CDN interconnection with all other CDNs at boot time. o add - used to instruct a recipient CDN to add newly created footprint & capabilities(fp_cap) or content and metadata(cdmd). o update - used to instruct a recipient CDN to update the existing fp_cap or cdmd when there are changes. o remove - used to instruct a recipient CDN to remove the existing fp_cap or cdmd. The CDNI initialization and bootstrapping control interface is a simple RESTful interface based on HTTP[RFC2616]. The attributes and actions are encapsulated in the messages. Figure 1 shows the generic message flow used between the originating CDN and the recipient CDN for initialization and bootstrapping operations. T. Choi Expires April 23, 2014 [Page 6] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 originating CDN (oCDN) recipient CDN (rCDN) | | | | | HTTP POST encapsulating initialization and | | bootstrapping request actions and attributes | |------------------------------------------------------>| (1) | | | | | HTTP Response containing initialization and | | bootstrapping response actions and attributes | |<----------------------------------------------------- | (2) | | | | Figure 1: Basic CDNI Message Flow for Triggers The steps in Figure 1 are: 1. originating CDN sends a HTTP POST to recipient CDN containing the action and attributes of initialization or bootstrapping. 2. recipient CDN authenticates and validates the request and if it accepts the request, performs actions requested, and responds to originating CDN with an HTTP "200" response with a message body containing the performed results and the associated resulting attributes. 4. Interface Information Elements Information exchanged between originating CDN and recipient CDN consists of the following. 4.1. Information Element Data Type Descriptions This section describes the data types that are used for properties of information elements. 4.1.1. ActionType This type defines the type of action being requested, permitted actions are discover, initialize, negotiate, add, update, and remove. 4.1.2. General This type describes a set of general information of a CDN, possible values are cdnname, cdnid, cdnhostname, cdnigw, and cdnserver. T. Choi Expires April 23, 2014 [Page 7] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 4.1.3. Contract This type describes a set of CDN information where interconnection contract is established. It consists of cdnname, cdnid, cdnhostname, cdnigw, ucdnflag, and dcdnflag. xcdnflag indicates whether it is capable of either uCDN or dCDN. 4.1.4. EndPoints This type describes a set of end points of CDNi interfaces. It consists of request routing protocol, metadata signaling protocol, and logging protocol end points. 4.1.5. Protocols This type describes protocols used by various CDNi interfaces. It consists of request routing redirection, logging, metadata signaling, and content acquisition. 4.1.6. Fp_cap This type describes a set of footprint and capabilities information needed for bootstrapping. It consists of cdnname, iprange, delay, load, and bandwidth. 4.1.7. Cdmd This type describes a set of contents and metadata information needed for bootstrapping. It consists of hostindex, hostmetadatas, pathmetadatas. 4.1.8. AbsoluteTime This type describes an absoluteTime. Times are expressed in seconds since the UNIX epoch. 4.1.9. ActionStatus This type describes resulting status of the requested action. It indicates either success or failure. 4.2. JSON Encoding of Information Element Data Types 4.2.1. ActionType Key: type Description: One of "discover", "negotiate", "initialize", "add", T. Choi Expires April 23, 2014 [Page 8] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 "update", or "remove". Type: String Mandatory: Yes 4.2.2. General Keys: general Description: A set of general information of a CDN. Type: String Mandatory: Yes 4.2.3. Contracts Key: contracts Description: A set of CDN information where the interconnection contract is established. Type: String Mandatory: Yes 4.2.4. End-Points Keys: ed_points Description: A set of CDNi interface protocols end-point information for bootstrapping. Type: String Mandatory: Yes 4.2.5. Protocols Keys: protocols Description: A set of CDNi protocols used for various interfaces. Type: String Mandatory: Yes 4.2.6. Fp_cap Keys: fp_cap Description: A set of footprint and capability information needed for bootstrapping. Type: String Mandatory: Yes 4.2.7. Cdmd Keys: cdmd Description: A set of content and metadata information needed for bootstrapping. Type: String T. Choi Expires April 23, 2014 [Page 9] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 Mandatory: Yes 4.2.8. AbsoluteTime Keys: AbsoluteTime Description: Type: String Mandatory: Yes 4.2.9. ActionStatus Keys: ActionStatus Description: Integer 1 or 0 to indicate the success or failure of requested actions. Type: Integer Mandatory: Yes 5. Examples The following sections provide examples of different CI/B objects encoded as JSON. No authentication is shown in the following illustrative examples, it is anticipated that authentication mechanisms will be aligned with other CDNI Interfaces as and when those mechanisms are defined. 5.1. Discover REQUEST: POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.boot.request+json Content-Length: xx { "ActionType": "discover", "cdmd.endpoints" : "http://metadata.ucdn.com/ep", "rr.endpoints" : "http://rr.ucdn.com/ep", "log.endpoints" : "http://log.ucdn.com/ep" } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 Oct 2013 14:20:08 GMT Content-Type: application/vnd.cdni.control.boot.response+json { "cdmd.ednpoints": "http://metadata.dcdn.com/ep", "rr.endpoints" : "http://rr.dcdn.com/ep", "log.endpoints" : "http://log.dcdn.com/ep", T. Choi Expires April 23, 2014 [Page 10] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 "actionStatus" : 1 } 5.2. Negotiate REQUEST: POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.boot.request+json Content-Length: xx { "ActiontType": "negotiate", "cdmd.protocol" : "HTTP", "rr.protocol" : "DNS", "log.protocol" : "FTP" } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 October 2013 14:20:06 GMT Content-Type: application/vnd.cdni.control.boot.response+json { "cdmd.protocol" : "HTTP", "rr.protocol" : "DNS", "log.protocol" : "FTP", "actionStatus" : 1 } 5.3. Initialize POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.boot.request+json Content-Length: xx { "ActionType": "initialize", "cdni.general" : [ { "cdnname": "UCDN1", "cdnid":100000, "cdnhostname": "ucdn.example.com" } ], "cdni.contract" : [ { "cdnname": "DCDN1", "cdnid":200000, T. Choi Expires April 23, 2014 [Page 11] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 "cdnhostname": "dcdn.example.com" "dcdnflag": 1 "ucdnflag": 0 } ], "cdni.fp_cap" : [ { "cdnname": "UCDN1", "iprange": 0.0.0.0/32, "delay": 10, "load": 30, "bandwidth: 20 }, { "cdnname": "UCDN1", "iprange": 211.224.204.0/24, "delay": 10, "load": 30, "bandwidth: 20 } ], "cdni.cdmd" : [ { "HostIndex": [ { "hosts": [ { "host": "video.example.com", "links": [ { "rel": "host-metadata", "type": "application/cdni.HostMetadata", "href": "http://metadata.example.ucdn.com/video" } ] }, { "host": "images.example.com", "links": [ { "rel": "host-metadata", "type": "application/cdni.HostMetadata", "href": "http://metadata.ucdn.example.com/images" } ] } ] } T. Choi Expires April 23, 2014 [Page 12] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 ] } ] } } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 October 2013 14:20:08 GMT Content-Type: application/vnd.cdni.control.boot.status+json Content-Length: xx { "cdni.general" [ .. ], "cdni.contract" [ .. ], "cdni.fp_cap" [ .. ], "cdni.cdmd" [ .. ], "ActionStatus": 1 } 5.4. Add POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.boot.request+json Content-Length: xx { "ActionType": "add", "cdni.fp_cap" : [ { "cdnname": "UCDN1", "iprange": 211.224.205.0/24, "delay": 30, "load": 10, "bandwidth: 70 } ], "cdni.cdmd" : [ { "HostIndex": [ { "hosts": [ { "host": "streaming.example.com", "links": [ { "rel": "host-metadata", "type": "application/cdni.HostMetadata", T. Choi Expires April 23, 2014 [Page 13] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 "href": "http://metadata.ucdn.example.com/streaming" } ] } ] } ] } ] } } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 October 2013 14:20:08 GMT Content-Type: application/vnd.cdni.control.boot.status+json Content-Length: xx { "cdni.fp_cap" [ .. ], "cdni.cdmd" [ .. ], "ActionStatus": 1 } 5.5. Update POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.boot.request+json Content-Length: xx { "ActionType": "update", "cdni.fp_cap" : [ { "cdnname": "UCDN1", "iprange": 211.224.205.0/24, "delay": 5, "load": 10, "bandwidth: 60 } ], "cdni.cdmd" : [ { "HostIndex": [ { "hosts": [ { "host": "streaming.example.com", T. Choi Expires April 23, 2014 [Page 14] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 "links": [ { "rel": "host-metadata", "type": "application/cdni.HostMetadata", "href": "http://metadata.ucdn.example.com/streaming1" } ] } ] } ] } ] } } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 October 2013 14:20:08 GMT Content-Type: application/vnd.cdni.control.trigger.status+json Content-Length: xx { "cdni.fp_cap" [ .. ], "cdni.cdmd" [ .. ], "ActionStatu": 1 } 5.6. Remove POST /bootstrap HTTP/1.1 Host: dcdn.example.com Accept: application/vnd.cdni.control.trigger.request+json Content-Length: xx { "ActionType": "remove", "cdni.fp_cap" : [ { "cdnname": "UCDN1", "iprange": 211.224.205.0/24, "delay": 5, "load": 10, "bandwidth: 60 } ], "cdni.cdmd" : [ { "HostIndex": [ T. Choi Expires April 23, 2014 [Page 15] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 { "hosts": [ { "host": "streaming.example.com", "links": [ { "rel": "host-metadata", "type": "application/cdni.HostMetadata", "href": "http://metadata.ucdn.example.com/streaming1" } ] } ] } ] } ] } } RESPONSE: HTTP/1.1 200 OK Date: Sat, 19 October 2013 14:20:08 GMT Content-Type: application/vnd.cdni.control.boot.status+json Content-Length: xx { "cdni.fp_cap" [ .. ], "cdni.cdmd" [ .. ], "ActionStatus": 1 } 6. Security Considerations The recipient CDN must ensure that each originating CDN only has access to its own Trigger Status Resources. It is anticipated that a common authentication mechanism will be used by this and other CDNI Interconnect interfaces, the mechanism must exist but is not identified in this document. The recipient CDN must ensure that activity triggered by originating CDN only affects metadata or content originating from that originating CDN. 7. IANA Considerations T. Choi Expires April 23, 2014 [Page 16] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 TBD. 8. References 8.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 Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. 8.2. Informative References [I-D.ietf-cdni-control-triggers-00] Murray, R., Niven-Jenkins, B, "CDN Interconnect Triggers", draft-murray-cdni-triggers-01 (work in progress), April, 2013. [I-D.cjlmw-cdni-metadata] Niven-Jenkins, B., Murray, R., Watson, G., Caulfield, M., and K. Leung, "CDN Interconnect Metadata", draft-ietf-cdni-metadata-01 (work in progress), February 2013. [I-D.ietf-cdni-framework] Peterson, L. and B. Davie, "Framework for CDN Interconnection", draft-ietf-cdni-framework-03 (work in progress), Februray 2013. [RFC6707] Niven-Jenkins, B., Faucheur, F., and N. Bitar, "Content Distribution Network Interconnection (CDNI) Problem Statement", September 2012. [I-D.ietf-cdni-requirements] Leung, K. and Y. Lee, "Content Distribution Network Interconnection (CDNI) Requirements", draft-ietf-cdni-requirements-09 (work in progress), July 2013. [RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom Syndication Format", RFC 4287, December 2005. T. Choi Expires April 23, 2014 [Page 17] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 [XML-BASE] Marsh, J., Ed. and R. Tobin, Ed., "XML Base (Second Edition) - http://www.w3.org/TR/xmlbase/", January 2009. Authors' Addresses Taesang Choi ETRI 161 Gajong-Dong Yusong-Gu, Daejeon Republic of Korea Phone: +82-42-860-5628 Email: choits@etri.re.kr John Dongho Shinn Solbox Inc. 7F, Haesung Bldg. 747-2 Yeoksam-Dong Kangnam-Gu, Seoul Republic of Korea Phone: +82-10-3005-4785 Email: eastsky@solbox.com Jonggyu Sung KT Infra Laboratory 463-1, Jeonmin-dong Yuseong-gu, Daejeon Republic of Korea Phone: 82-10-3096-8237 Email: jonggyu.sung@kt.com Jongmin Lee SK Telecom 11, Euljiro-2ga Jung-gu, Seoul Republic of Korea Phone: 82-10-9429-6260 Email: jminlee@sk.com Ja-Ryeong Koo LG U plus Corporation Namdaemunro 5-ga Jung-gu, Seoul Republic of Korea T. Choi Expires April 23, 2014 [Page 18] INTERNET DRAFT Control - Init & Bootstrap October 20, 2013 Phone: 82-10-8080-6115 Email: wjbkoo@lguplus.co.kr Yong Hwan Bang KAIST 8F, N29 Bldg. 373-1 Gusung-Dong Yousong-Gu, Daejeon Republic of Korea Phone: +82-42-350-7516 Email: yjhvyp@gmail.com T. Choi Expires April 23, 2014 [Page 19]