idnits 2.17.1 draft-caulfield-cdni-rate-pacing-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 27, 2014) is 3470 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-20) exists of draft-ietf-cdni-footprint-capabilities-semantics-03 == Outdated reference: A later version (-27) exists of draft-ietf-cdni-logging-14 == Outdated reference: A later version (-21) exists of draft-ietf-cdni-metadata-07 ** Downref: Normative reference to an Informational RFC: RFC 1363 Summary: 1 error (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Caulfield 3 Internet-Draft Cisco Systems 4 Intended status: Standards Track October 27, 2014 5 Expires: April 30, 2015 7 CDNI Rate Pacing 8 draft-caulfield-cdni-rate-pacing-02 10 Abstract 12 Rate pacing is a class of network traffic shaping which limits the 13 transmission rate of data over a network. This document defines CDNI 14 extensions for downstream CDNs to support rate pacing on behalf of 15 upstream CDNs. 17 Requirements Language 19 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 20 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 21 document are to be interpreted as described in RFC 2119 [RFC2119]. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on April 30, 2015. 40 Copyright Notice 42 Copyright (c) 2014 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 2. CDNI Interfaces Impact . . . . . . . . . . . . . . . . . . . 3 59 2.1. Footprint & Capabilities Interface . . . . . . . . . . . 3 60 2.2. Metadata Interface . . . . . . . . . . . . . . . . . . . 3 61 2.2.1. RatePacing Metadata . . . . . . . . . . . . . . . . . 4 62 2.3. Request Routing Redirection Interface . . . . . . . . . . 4 63 2.4. Logging Interface . . . . . . . . . . . . . . . . . . . . 5 64 2.5. Control Interface . . . . . . . . . . . . . . . . . . . . 5 65 3. Token Bucket Rate Pacing Algorithm and Parameters . . . 5 66 3.1. TokenBucketParams Object . . . . . . . . . . . . . . . . 6 67 3.2. Token Bucket Metadata Example . . . . . . . . . . . . . . 6 68 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 69 4.1. CDNI Rate Pacing Algorithms Registry . . . . . . . . . . 7 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 71 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 72 7. Normative References . . . . . . . . . . . . . . . . . . . . 8 73 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 75 1. Introduction 77 Rate pacing is a class of network traffic shaping which limits the 78 transmission rate of data over a network. In the context of a 79 Content Delivery Network (CDN), rate pacing provides an important 80 business advantage to a Content Service Provider (CSP) by ensuring 81 that a CDN which is delivering content on behalf of that CSP does not 82 deliver significantly more data than necessary to an end client. 84 For example, suppose an end client is watching some Constant Bit Rate 85 (CBR) video encoded at 1500 kbps. In the absence of rate pacing, the 86 CDN delivering this content may send it to the client at 3000 kbps. 87 If the client chooses to terminate the session before watching the 88 entire video, up to half the transmitted data is wasted. This waste 89 leads to unnecessary cost for the CSP and diminished useful capacity 90 for the CDN. 92 Rate pacing requires configuration on a per-content basis. In order 93 to enable rate pacing in a CDNI environment, the CDNI interfaces need 94 to be extended to optionally support this feature. 96 This document describes: 98 1. CDNI interface extensions required for supporting rate pacing 100 2. a token bucket rate pacing algorithm for CDNs 102 2. CDNI Interfaces Impact 104 2.1. Footprint & Capabilities Interface 106 [I-D.ietf-cdni-footprint-capabilities-semantics] defines the CDNI 107 Footprint and Capabilities semantics. But at the time of writing, no 108 FCI syntax specification has been accepted as a working group 109 document. 111 [I-D.ietf-cdni-footprint-capabilities-semantics] states that: 113 "The CDNI FCI specification SHOULD define the registry (and the rules 114 for adding new entries to the registry) for the different capability 115 types. Each capability type MAY further have a list of valid values. 116 The individual CDNI interface specifications which define a given 117 capability SHOULD define any necessary registries (and the rules for 118 adding new entries to the registry) for the values advertised for a 119 given capability type." 121 This document defines a new capability type: "RatePacing" to be added 122 to the FCI capability types registry. The value of this capability 123 contains one or more rate pacing algorithm names from the Rate Pacing 124 algorithms registry (Section 4.1). For example, the value may be 125 "token-bucket/v1" to indicate that the advertising CDN supports the 126 token bucket algorithm described later in this document. 128 A CDN MAY advertise the "RatePacing" capability in the FCI if it 129 implements this specification. A CDN MUST advertise the "token- 130 bucket/v1" as a value in the list of algorithms if it advertises 131 "RatePacing" as a capability. 133 2.2. Metadata Interface 135 A new RatePacing metadata object is defined to represent the 136 configuration for rate pacing. The RatePacing object has MIME type 137 "application/cdni.RatePacing.v1". RatingPacing MAY appear within the 138 metadata list of either HostMetadata or PathMetadata (i.e. may have 139 either host-level scope or a path-level scope). The following 140 section defines the properties of the RatingPacing object. 142 2.2.1. RatePacing Metadata 144 The presence of the RatePacing Metadata indicates that a dCDN MUST 145 comply with this specification in order to deliver a piece of 146 content. The metadata indicates the rate pacing algorithm name 147 required for delivering the content and the relevant parameters for 148 that algorithm. 150 Property: algo 152 Description: Rate pacing algorithm name from the Rate Pacing 153 Algorithms registry. Dictates the structure of the "params" 154 value. For example, "token-bucket/v1". 156 Type: String 158 Mandatory-to-Specify: Yes. 160 Property: params 162 Description: An object containing algorithm-specific properties 163 and values which are relevant to the rate pacing algorithm 164 specified by the "algo" property. Each algorithm dictates its 165 own parameters. 167 Type: Object 169 Mandatory-to-Specify: Yes. 171 2.3. Request Routing Redirection Interface 173 The RRI is not impacted by rate pacing. However, if the metadata for 174 a piece of content indicates that rate pacing is required by the 175 uCDN, then a request router should only redirect requests for that 176 content to CDNs which advertise "RatePacing" as a capability. The 177 request router should also limit its choice of dCDNs to those which 178 advertise the same rate pacing algorithm as is specified by the rate 179 pacing metadata. Note that this behavior is not specific to rate 180 pacing and is true of any CDNI feature. 182 For example, if the metadata for a piece of content includes a 183 GenericMetadata object of type "application/cdni.RatePacing.v1" and 184 the "algo" property in the value of that GenericMetadata is "token- 185 bucket/v1", then the request router of the uCDN should only redirect 186 requests for that piece of content to dCDNs which advertise a 187 capability type of "RatePacing" and a capability value of "token- 188 bucket/v1". 190 2.4. Logging Interface 192 The rate at which a piece of content was delivered MAY be indicated 193 via the LI. The "sc-rate" field indicates the rate in bytes per 194 second as a decimal number. The bytes measured should correspond to 195 the sc-entity-bytes field. 197 sc-rate: 199 format: DEC 201 field value: the average rate in bytes per second at which a 202 response was delivered from Surrogate to client. 204 occurence: there MUST be zero or exactly one instances of this 205 field. 207 Note that existing fields defined by [I-D.ietf-cdni-logging] include 208 the bytes delivered and the time taken to service a request, which 209 could be used to estimate the delivery rate. However, the time taken 210 includes the acquisition latency which is not relevant to rate 211 pacing. 213 2.5. Control Interface 215 The CI is not impacted by rate pacing. 217 3. Token Bucket Rate Pacing Algorithm and Parameters 219 Token bucket is one example of a rate pacing algorithm. Token bucket 220 is described generically by [RFC1363]. 222 The token bucket algorithm is characterized by two parameters: 224 1. Rate - the number of tokens added to the bucket per second 226 2. Size - the maximum number of tokens in the bucket 228 This document specifies the CDNI Token Bucket Rate Pacing algorithm. 229 It is based on the generic token bucket algorithm described above, 230 but applied to a CDNI context. 232 For the purpose of this document, each token represents one byte 233 transmitted as part of the body of an HTTP response from a Surrogate 234 in a dCDN. Tokens do not represent bytes which are part of HTTP 235 headers, the HTTP status line, TCP signaling, or any lower layer 236 protocol. 238 The algorithm name "token-bucket/v1" is registered as a Rate Pacing 239 algorithm. This algorithm name MUST appear as the value of the 240 "RatePacing" capability. This name may also appear as the value of 241 the "algo" property in the "RatePacing" metadata object. 243 If a RatePacing metadata object's "algo" value is "token-bucket/v1" 244 then the metadata object's "params" MUST be an object of type 245 TokenBucketParams, described below. 247 3.1. TokenBucketParams Object 249 Property: rate 251 Description: Rate of tokens per second to be added to the 252 bucket as described by the token bucket algorithm. This value 253 MUST be a positive integer. Each token represents one byte. 255 Type: Integer 257 Mandatory-to-Specify: Yes. 259 Property: size 261 Description: Maximum number of tokens per bucket as described 262 by the token bucket algorithm. This value MUST be a positive 263 integer. 265 Type: Integer 267 Mandatory-to-Specify: Yes. 269 3.2. Token Bucket Metadata Example 271 { 272 "metadata": [ 273 { 274 "generic-metadata-type": "application/cdni.RatePacing.v1", 275 "generic-metadata-value": { 276 "algo": "token-bucket/v1", 277 "params": { 278 "rate": 100000, 279 "size": 25000 280 } 281 } 282 } 283 ] 284 } 286 4. IANA Considerations 288 This document requests the following of IANA: 290 Addition of RatePacing in the CDNI Capability Registry defined in 291 TBD. 293 Addition of "RatePacing" to the standard partition of the CDNI 294 GenericMetadata Type Registry defined in [I-D.ietf-cdni-metadata]: 296 +-----------------------------+-------------+---------+------+------+ 297 | Type name | Specificati | Version | MTE | STR | 298 | | on | | | | 299 +-----------------------------+-------------+---------+------+------+ 300 | application/cdni.RatePacing | RFCthis | 1 | true | true | 301 | .v1 | | | | | 302 +-----------------------------+-------------+---------+------+------+ 304 Addition of "sc-rate" in the CDNI Logging Field Names Registry 305 defined in [I-D.ietf-cdni-logging]. 307 4.1. CDNI Rate Pacing Algorithms Registry 309 IANA is requested to create a new registry, CDNI Rate Pacing 310 Algorithms. The following table defines the initial values of the 311 registry: 313 +-----------------+---------------+ 314 | Algorithm Name | Specification | 315 +-----------------+---------------+ 316 | token-bucket/v1 | RFCthis | 317 +-----------------+---------------+ 319 New rate pacing algorithm registrations MUST specify RatePacing 320 parameter objects as shown in Section 3.1 and MUST describe the 321 algorithm for rate pacing. 323 5. Security Considerations 325 A malicious CSP might attempt to use rate pacing to instruct a dCDN 326 to delivery some content at a very low rate thereby in order to 327 exhaust the resources of a dCDN by forcing connection state to be 328 maintained for longer than usual. The decision to enforce a rate is 329 left to the discretion of a dCDN. An implementation of rate pacing 330 should implement reasonable lower (and upper) bounds to avoid such 331 cases. 333 6. Acknowledgements 335 The author would like to thank Francois Le Faucheur for his 336 contributions and feedback. 338 7. Normative References 340 [I-D.ietf-cdni-footprint-capabilities-semantics] 341 Seedorf, J., Peterson, J., Previdi, S., Brandenburg, R., 342 and K. Ma, "CDNI Request Routing: Footprint and 343 Capabilities Semantics", draft-ietf-cdni-footprint- 344 capabilities-semantics-03 (work in progress), July 2014. 346 [I-D.ietf-cdni-logging] 347 Faucheur, F., Bertrand, G., Oprescu, I., and R. 348 Peterkofsky, "CDNI Logging Interface", draft-ietf-cdni- 349 logging-14 (work in progress), October 2014. 351 [I-D.ietf-cdni-metadata] 352 Niven-Jenkins, B., Murray, R., Caulfield, M., Leung, K., 353 and K. Ma, "CDN Interconnection Metadata", draft-ietf- 354 cdni-metadata-07 (work in progress), July 2014. 356 [RFC1363] Partridge, C., "A Proposed Flow Specification", RFC 1363, 357 September 1992. 359 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 360 Requirement Levels", BCP 14, RFC 2119, March 1997. 362 Author's Address 364 Matt Caulfield 365 Cisco Systems 366 1414 Massachusetts Ave 367 Boxborough, MA 01719 368 USA 370 Phone: +1 978 936 9307 371 Email: mcaulfie@cisco.com