Internet DRAFT - draft-white-httpbis-spdy-analysis

draft-white-httpbis-spdy-analysis






Network Working Group                                           G. White
Internet-Draft                                                 J-F. Mule
Intended status: Informational                                   D. Rice
Expires: January 7, 2013                                       CableLabs
                                                            July 6, 2012


                   Analysis of SPDY and TCP Initcwnd
                  draft-white-httpbis-spdy-analysis-00

Abstract

   Making the Internet faster is the goal of many product and service
   companies.  Many strategies exist, from data caching to packet
   switching, performance improvements in Internet browser clients and
   server software, without forgetting the transport network scaling
   from the fiber core to the access edges.

   This report investigates two proposed protocol enhancements aimed at
   making the web browsing user experience better by optimizing the
   transport of web objects and thereby reducing the page load time.
   The two enhancements are SPDY, a replacement of the HyperText
   Transfer Protocol (HTTP) requiring client and server changes, and a
   TCP tune-up, an increase in the TCP initial congestion window
   accomplished by a setting change on the web servers.  Both show
   promise, but there are some caveats, particularly with SPDY.  SPDY is
   a candidate for standardization as HTTP/2.0.

   In addition to a discussion of the two enhancements, this report
   provides the results of laboratory testing on SPDY version 2 and the
   proposed increase in the TCP initial congestion window in a variety
   of simulated conditions, comparing the page load time when using the
   proposed enhancement to the page load time for the default case of
   HTTPS and current initial congestion window settings.

   The proposed enhancements generate mixed results: web page load times
   were reduced in some scenarios but increased significantly in others.
   The performance improvement (or degradation) varied depending on the
   number of servers, configuration of the initial TCP congestion
   window, and especially any network packet loss.  The following
   results were obtained across all scenarios comparing SPDY and
   congestion window enhancements to standard HTTPS.

   o  Average reduction in page load time was 29%

   o  Best improvement was over 78% reduction in page load time





White, et al.            Expires January 7, 2013                [Page 1]

Internet-Draft                spdy-analysis                    July 2012


   o  Worst cases showed a negative impact, resulting in a 3.3x increase
      in page load time

   These results lead us to the following conclusions:

   o  The SPDY protocol is currently a moving target, and thus it would
      be challenging to realize a return on investment for general-
      purpose usage in web servers.

   o  Protocol improvements, standardization in the IETF and wider
      adoption by the client/server software may warrant a second look
      at SPDY.

   o  Some applications in controlled environments may gain by
      leveraging SPDY.  SPDY might be a valuable tool where the a single
      entity provides the servers, the client software, and the web
      content.

   o  If SPDY were adopted very widely it may have some secondary
      benefits for network operators through improved infrastructure
      scalability due to a significant reduction in concurrent TCP
      sessions, as well as a reduction in Packets Per Second.

   o  The proposed increase in the TCP initial congestion window is
      straightforward, requires no client modifications, and on its own
      provides consistent (albeit modest) performance gains.

   This report is available in a somewhat more detailed form in
   [SPDY-ANALYSIS].

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).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on January 7, 2013.

Copyright Notice



White, et al.            Expires January 7, 2013                [Page 2]

Internet-Draft                spdy-analysis                    July 2012


   Copyright (c) 2012 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.







































White, et al.            Expires January 7, 2013                [Page 3]

Internet-Draft                spdy-analysis                    July 2012


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5
   2.  SPDY . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  6
     2.1.  The SPDY Protocol  . . . . . . . . . . . . . . . . . . . .  7
     2.2.  SPDY Server Implementations  . . . . . . . . . . . . . . .  9
     2.3.  SPDY Client Implementations  . . . . . . . . . . . . . . .  9
     2.4.  SPDY in the Wild . . . . . . . . . . . . . . . . . . . . .  9
     2.5.  SPDY Protocol Development and IETF Standardization . . . .  9
   3.  TCP Initial Congestion Window  . . . . . . . . . . . . . . . . 10
     3.1.  Historical Settings for initcwnd . . . . . . . . . . . . . 10
   4.  The Current Web Environment  . . . . . . . . . . . . . . . . . 11
     4.1.  Content Environment  . . . . . . . . . . . . . . . . . . . 11
     4.2.  Network Environment  . . . . . . . . . . . . . . . . . . . 13
       4.2.1.  Round-Trip Time (RTT)  . . . . . . . . . . . . . . . . 13
       4.2.2.  Access Network Data Rate . . . . . . . . . . . . . . . 15
       4.2.3.  Packet Loss  . . . . . . . . . . . . . . . . . . . . . 15
   5.  Laboratory Testing and Results . . . . . . . . . . . . . . . . 16
     5.1.  Goals  . . . . . . . . . . . . . . . . . . . . . . . . . . 16
     5.2.  Laboratory Environment . . . . . . . . . . . . . . . . . . 16
       5.2.1.  Web Server Configuration . . . . . . . . . . . . . . . 16
       5.2.2.  Client Configurations  . . . . . . . . . . . . . . . . 17
     5.3.  Test Conditions  . . . . . . . . . . . . . . . . . . . . . 17
       5.3.1.  Protocol Options . . . . . . . . . . . . . . . . . . . 17
       5.3.2.  Web Sites  . . . . . . . . . . . . . . . . . . . . . . 18
     5.4.  Test Results . . . . . . . . . . . . . . . . . . . . . . . 20
       5.4.1.  CASE 1:  SPDY vs. HTTPS  . . . . . . . . . . . . . . . 21
       5.4.2.  CASE 2:  initcwnd=10 vs. initcwnd=3  . . . . . . . . . 24
       5.4.3.  CASE 3:  SPDY+initcwnd=10 vs. HTTPS+initcwnd=3 . . . . 27
       5.4.4.  Results Summary  . . . . . . . . . . . . . . . . . . . 29
   6.  Recommendations and Conclusions  . . . . . . . . . . . . . . . 30
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 31
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 31
   9.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 31
   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 33















White, et al.            Expires January 7, 2013                [Page 4]

Internet-Draft                spdy-analysis                    July 2012


1.  Introduction

   The current method of transporting web objects from a server to a
   client utilizes Hypertext Transfer Protocol version 1.1 (HTTP/1.1),
   running atop the Transport Control Protocol (TCP) [RFC0793].
   HTTP/1.1 was published as [RFC2616] in 1999, and has since become the
   most widely used application-layer protocol on the Internet.  TCP
   pre-dates HTTP/1.1 by about 18 years, and even though TCP has evolved
   over time, it is fundamentally unchanged, and runs atop IPv4 and
   IPv6.

   Since the advent of the World Wide Web 15+ years ago, access network
   bandwidths as well as server and client CPU horsepower have increased
   by a factor of approximately 1.5x year-over-year, yet the apparent
   speed of the web (from the web browsing user's perspective) has grown
   much more slowly.  In part, this can be explained by a concomitant
   increase in web page complexity, as measured by any number of
   attributes including total page size, number of linked resources,
   amount of server-side code, and lines of JavaScript.  However, there
   is a view that the underlying protocols used to transport web
   resources are becoming increasingly out-of-date with the network and
   computing resources that are in use today, and that significant
   improvements in performance (generally page load time) can be
   achieved by revisiting these fundamental technologies.

   Bolstering this view is the fact that while network bandwidths have
   been improving rapidly, network latencies have not, and there is
   little hope of achieving significant reductions in network latency,
   as it is dominated by propagation delay.  The result is that a
   fundamental network parameter, the Bandwidth-Delay Product (BDP), is
   much larger today than in the early days of the Internet.  It is
   becoming clear that HTTP/1.1 and TCP are not particularly optimized
   for networks with high bandwidth-delay product.

   Furthermore, in order to maximize performance using the existing
   tools of HTTP/1.1 and TCP, web architects (browser, server and site
   developers) have employed work-arounds that have some negative
   implications.  The most significant implications result from the use
   of multiple simultaneous TCP connections.  Modern browsers will open
   up to six simultaneous TCP connections to each server from which they
   need to retrieve resources, and optimized websites will compound this
   by spreading content over multiple servers, a practice known as
   "domain sharding".  The result is that a single browser may have 20
   or more simultaneous TCP connections to the hosts of a particular
   site while it is downloading a single web page.  The parallel nature
   of this approach is intended to reduce the page download time
   (compared to the alternative of a single, non-pipelined TCP
   connection), and in many cases it succeeds.  However, a web browser



White, et al.            Expires January 7, 2013                [Page 5]

Internet-Draft                spdy-analysis                    July 2012


   with 20 or more simultaneous TCP sessions can drown out other
   applications that use a small number of TCP sessions (e.g., one).
   This is due to the fact that the TCP congestion avoidance algorithm
   provides approximately fair sharing of the bandwidth on the
   bottleneck link on a per-TCP-session basis.  Additionally, some
   browsers do not reuse TCP connections, so each web resource is
   retrieved using a separate TCP connection.  The result is that the
   vast majority of sessions never reach the congestion avoidance phase,
   and network resources can therefore either be underutilized or
   excessively congested.  The network overhead for establishing and
   tearing down all of the TCP connections can also be a concern.

   A number of efforts have sprung up to develop ways to improve page
   download time and consequently improve the web browsing user
   experience.  This paper discusses two proposed enhancements, both
   originally proposed by Google as part of their "Let's Make the Web
   Faster" project [Faster].  The first is a replacement for HTTP 1.1,
   called SPDY [SPDY], which aims to make more efficient use of the
   network in common web browsing scenarios.  The second is an
   incremental enhancement to the TCP protocol in the form of an
   increase in the server's initial congestion window (initcwnd).

   In addition to a discussion of the two proposed enhancements, this
   paper presents the results of laboratory testing conducted by
   CableLabs on both technologies independently, and on the combination
   of the two technologies.


2.  SPDY

   SPDY [SPDY] is an experimental protocol developed by Mike Belshe and
   Roberto Peon of Google in late 2009 to replace HTTP/1.1 communication
   for transporting web content between a client and a server.  It is
   deployed in production on many Google servers but requires a
   compatible browser such as Google Chrome.  The stated goals of SPDY
   are:

   o  50% reduction in page load time

   o  Minimize deployment complexity

   o  Avoid changes to content by web authors

   o  Solve this collaboratively via open-source software

   At the time of this study, the current implemented version of SPDY is
   version 2 (SPDY/2).  Version 3 is currently being developed.




White, et al.            Expires January 7, 2013                [Page 6]

Internet-Draft                spdy-analysis                    July 2012


2.1.  The SPDY Protocol

   SPDY/2 retains the HTTP/1.1 metadata, but replaces the transport
   aspects of HTTP with a more streamlined approach.  SPDY has three
   basic features that are used to accelerate the loading of a page:

   o  Multiplexed streams - The fundamental enhancement of SPDY is that
      multiple resources can be retrieved via a single TCP connection.
      The expectation (and current implementation in Chrome) is for the
      client to open a single TCP connection to each server, and to
      request all resources of the server over that single connection.
      The use of a single TCP connection in this way allows the
      congestion avoidance algorithm in TCP to more effectively manage
      data flow across the network.  Also, the client can include
      multiple requests in a single message, thereby reducing overhead
      and the number of round-trip times necessary to begin file
      transfer for requests beyond the first.  While this is similar to
      HTTP pipelining [HTTP_Pipelining], the difference introduced by
      SPDY is that the server can transfer all of the resources in
      parallel (multiplexed) without the "head-of-line blocking" problem
      that can occur with HTTP pipelining.

   o  Request prioritization - While SPDY may serve to decrease total
      page load time, one side-effect of stream multiplexing is that a
      critical page resource might be delivered more slowly due to the
      concurrent delivery of a less critical resource.  To prevent this,
      SPDY provides a way for the client to indicate relative priorities
      for the requested resources.  For example, if a JavaScript library
      is required in order to generate URLs for additional page
      resources, the client can request that the library be delivered
      with higher priority so that it isn't holding up those subsequent
      requests.

   o  HTTP header compression - SPDY mandates that HTTP headers be
      compressed to reduce the number of bytes transferred.  HTTP Header
      compression has been an Internet standard but it is not widely
      used.  Google SPDY makes it mandatory.  This might be a fairly
      small gain on the response headers, but it can provide a
      significant benefit on the requests (which in many cases are
      entirely headers).  For example, each request from a particular
      client to a particular server includes an identical user-agent
      string (which can be in excess of 100 bytes), and in some cases
      the same cookie is sent in each request.  Both Chromium and
      Firefox developers have reported approximately 90% header
      compression using the proposed zlib compression.  This could allow
      a lot more requests to be packed into each request packet.

   SPDY also has two advanced features that can be used in certain cases



White, et al.            Expires January 7, 2013                [Page 7]

Internet-Draft                spdy-analysis                    July 2012


   to further accelerate the web user experience:

   o  Server Push - SPDY allows the server to create a stream to the
      client, and via this stream send web resources that were not
      explicitly requested by the client.  The expectation is that the
      client will cache the pushed resource, and then upon needing it,
      will retrieve it from local cache.  This function could
      potentially be used by the server to push objects (of which the
      client isn't yet aware) that are necessary for rendering the
      current page.  Additionally, this function could be used to push
      resources for related pages that the user may be likely to
      request.  The heuristics used by the server to decide when/if to
      push objects and what those objects are is left to the server
      implementer.  This feature is somewhat controversial, but the
      authors defend it by pointing out that it is better than the
      practice of "in-lining" resources into the html page, since it
      allows the pushed resources to be cached for multiple future
      usages.

   o  Server Hint - SPDY defines a new header that the server can use to
      suggest additional resources that the client should request.  This
      is a less forceful approach than the Server Push, and allows the
      client to be involved in the decision whether or not a particular
      resource is delivered.  The client might, for example, examine its
      own cache and only request resources that are not resident in
      local cache.  On the other hand, Server Hint theoretically
      requires one additional round trip that would be eliminated by
      Server Push.

   While it isn't fundamentally required for the protocol to function,
   in practice SPDY/2 runs only over an encrypted (TLS) connection.  The
   rationale for this is three-fold:

   o  TLS involves a client-server handshake to negotiate cipher-suite.
      The authors of SPDY extend this handshake to negotiate whether
      SPDY can be used.  This Next Protocol Negotiation (NPN)
      [I-D.agl-tls-nextprotoneg] allows the use of the https:// URI,
      rather than a new spdy:// URI, and as a result a single html page
      can work for clients that support SPDY and clients that don't.

   o  TLS passes through firewalls and bypasses intermediaries.  Many
      HTTP requests today are processed (and modified) by transparent
      proxies without the knowledge of the end-user.  It would create a
      tremendous barrier to adoption of SPDY if it were necessary for
      intermediaries to be upgraded to handle the new protocol.

   o  Encryption is good.  The authors of SPDY state a philosophical
      belief that all HTTP traffic should be encrypted.  They cite the



White, et al.            Expires January 7, 2013                [Page 8]

Internet-Draft                spdy-analysis                    July 2012


      relative ease by which traffic (particularly Wi-Fi traffic) can be
      snooped.

2.2.  SPDY Server Implementations

   There are a number of SPDY server implementations that are in various
   stages of development as open source projects.  The Chromium project
   maintains a list of the implementations available [SPDY].  At the
   time this study was initiated, many of these implementations
   supported a subset of SPDY functionality and/or supported SPDY
   version 1.  At the time this study began, only two implementations
   appeared to support SPDY/2 in a reliable way.  The first is the
   Chromium "FLIP Server" (FLIP was an early internal code-name for SPDY
   within Google).  This server is built off of the immense Chromium
   source tree.  The second is a Javascript implementation called "node-
   spdy" which is built on the node.js server framework.  There is also
   an Apache module for SPDY, but at the time this study was initiated
   it was incomplete.

2.3.  SPDY Client Implementations

   On the client side, both the Chrome browser and the Mozilla Firefox
   browser support SPDY/2.  Chrome also includes a built-in diagnostics
   function that allows the user to examine the active SPDY sessions
   <chrome://net-internals/#spdy>.  Finally, the Silk browser in the
   Amazon Kindle Fire tablet computer purportedly utilizes SPDY/2 for
   its connection to the Amazon EC2 cloud when performing web
   acceleration.

2.4.  SPDY in the Wild

   In terms of live web content, the most significant, publicly
   available sites that serve content via SPDY are run by Google.  Many
   of the Google properties have SPDY/2 enabled, including Gmail, Google
   Docs, Picasa, Google+, and Google Encrypted Search.  All of these
   sites utilize only the basic SPDY features; there are no known live
   instances of Server Push or Server Hint.  In addition, the Twitter
   and Wordpress websites utilize SPDY, and the web acceleration
   companies Cotendo (acquired by Akamai in Dec. 2011) and Strangeloop
   indicate that they have deployed SPDY in some capacity.

2.5.  SPDY Protocol Development and IETF Standardization

   Google has actively solicited input on enhancements to the SPDY/2
   protocol.  Up until very recently, development and discussion of
   SPDY/3 has taken place on an open, Google-managed forum.  However,
   the SPDY/3 draft was submitted to the IETF HTTPbis working group on
   February 23, 2012, for comments [I-D.mbelshe-httpbis-spdy].



White, et al.            Expires January 7, 2013                [Page 9]

Internet-Draft                spdy-analysis                    July 2012


3.  TCP Initial Congestion Window

   The TCP initial congestion window (initcwnd) is used at the start of
   a TCP connection.  In the context of an HTTP session, the server's
   initcwnd setting controls how many data packets will be sent in the
   first burst of data from the server.  It is a standard protocol
   parameter that can be changed on Linux servers via a simple command
   line.

   Absent packet loss or receiver window limits, the TCP slow start
   operation looks like:

   Table 1.  TCP Slow Start Operation

  +--------------+---------------------------+-------------------------+
  | Round-Trip # | Client                    | Server                  |
  +--------------+---------------------------+-------------------------+
  |      1       | TCP SYN                   | TCP SYN/ACK             |
  +--------------+---------------------------+-------------------------+
  |      2       | TCP ACK and HTTP GET <url>| initcwnd data packets   |
  +--------------+---------------------------+-------------------------+
  |      3       | TCP ACKs                  | 2*initcwnd data packets |
  +--------------+---------------------------+-------------------------+
  |      4       | TCP ACKs                  | 4*initcwnd data packets |
  +--------------+---------------------------+-------------------------+
  |              |                           | and so on....           |
  +--------------+---------------------------+-------------------------+

3.1.  Historical Settings for initcwnd

   A larger value for initcwnd will clearly result in fewer Round-Trip
   Times (RTTs) to deliver a file.  However, the downside to an
   excessively large initcwnd is that there is an increased risk of
   overflowing a router buffer on an intermediate hop, resulting in an
   increase in latency from packet loss and retransmissions.  A value of
   initcwnd that is greater than the Bandwidth-Delay Product (BDP) of
   the network path between the server and client has an increased
   likelihood of causing packet loss that may lead to poor performance.
   As network bandwidths have increased over time, the BDP has
   increased, and as a result the defined value for initcwnd has been
   adjusted.  The early specifications for TCP ([RFC1122], [RFC2001])
   required that a TCP implementation set initcwnd to 1 packet.
   Starting in 2002 ([RFC2414], [RFC3390]), the initcwnd value was
   raised to 4000 bytes (effectively 3 packets in most networks).

   Google has submitted an IETF draft [I-D.ietf-tcpm-initcwnd] proposing
   that initcwnd now be increased to at least 10 packets, based on a
   series of tests performed using production Google servers



White, et al.            Expires January 7, 2013               [Page 10]

Internet-Draft                spdy-analysis                    July 2012


   [INITCWND-PAPER].  In Google's tests, a value of 10-16 packets
   resulted in the minimum average latency for delivery of web
   resources.

   In November 2011, CDN Planet [CDNPLANET] performed an assessment of
   CDNs to see what value is currently used for initcwnd.  Many CDNs
   have already increased their initcwnd beyond 3 packets, some as high
   as 10-16 packets.

   This increase from a value of 3 to a value of 10 will result in the
   elimination of up to 2 RTTs for each file transfer.  The maximum gain
   will be seen for files that take 9 packets to deliver (i.e., files
   around 11 kB in size).  Files of that size would take 4 RTTs to
   deliver using the default initcwnd, but can be delivered in 2 RTTs
   with the proposed increase, a 50% improvement.  Files smaller than
   about 3 kB will not experience any acceleration.


4.  The Current Web Environment

4.1.  Content Environment

   The construction of web page content plays a very important role in
   determining the page load time.  In order to validate the two
   proposed enhancements, we will create a test bed that consists of web
   servers, web clients and web content.  We performed a survey of some
   popular (and resource heavy) websites in order to understand the
   content environment.  The sites used in the survey were selected as
   examples of sites that would stand to benefit from an acceleration
   technology such as SPDY.  Many of these sites are composed of a
   fairly large number of resources, the content changes frequently
   (reducing local cache acceleration), and they would presumably be
   interested in page load performance.

   The results shown in Table 2 indicate, for each site's home page, the
   number of servers from which content was drawn, the number of
   resources requested, the total transferred size of all page
   resources, and the page load time.  The reported page load time is
   the total time to download all of the resources for the page.  It is
   possible, and even likely, that one or more of these pages are
   largely complete (perhaps only missing some non-critical resources)
   in significantly less time than is reported here.

   Additionally, for each webpage we evaluated the percentage of total
   resources that were requested from the top N servers for the page,
   for values of N between 1 and 5.  For example, Engadget receives 34%
   of the web objects from the most used server, 82% of the objects from
   3 most used servers and 87% of them come from the 5 servers with the



White, et al.            Expires January 7, 2013               [Page 11]

Internet-Draft                spdy-analysis                    July 2012


   highest count.  These servers may include the host servers for the
   website, CDN servers for images and media content, advertising
   servers for ad content, and analytics collection, among other types
   of resources.

   Table 2.  Website Survey

   +-------------+-------+-----+------+-------+------------------------+
   |             |       |     |total |       |     % of GETs from     |
   |             |       |     |page  | total |      top N servers     |
   |             |       |     |size  | time  +----+----+----+----+----+
   |Page         |servers|GETs |(KB)  | (s)   | N=1| N=2| N=3| N=4| N=5|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Engadget     |  26   | 278 | 1500 |  23.0 | 34%| 67%| 82%| 85%| 87%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |NY Times     |  27   | 148 | 1500 |  13.6 | 33%| 49%| 59%| 67%| 73%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Gizmodo      |  25   | 116 | 3900 |  13.2 | 34%| 60%| 69%| 76%| 78%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |CNN          |  22   | 158 | 1180 |  12.6 | 59%| 70%| 75%| 80%| 83%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |comcast.net  |  12   |  55 |  606 |  12.0 | 51%| 67%| 75%| 80%| 84%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |ESPN         |  26   | 144 | 5400 |  11.6 | 40%| 51%| 60%| 67%| 70%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Amazon       |  15   | 139 | 1100 |  11.0 | 34%| 58%| 81%| 86%| 90%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |RoadRunner   |  30   | 128 |   85 |  9.50 | 27%| 48%| 61%| 65%| 68%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Wired        |  32   | 130 | 1200 |  8.90 | 48%| 56%| 61%| 65%| 68%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |eBay         |  14   |  53 |  520 |  8.60 | 23%| 40%| 55%| 68%| 75%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |LinkedIn     |   9   |  75 |  457 |  7.17 | 48%| 80%| 88%| 92%| 95%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Hulu         |  12   | 193 | 2000 |  4.96 | 60%| 79%| 87%| 95%| 96%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Yahoo        |   6   |  51 |  423 |  4.60 | 88%| 92%| 94%| 96%| 98%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |YouTube      |   6   |  37 | 2400 |  4.16 | 41%| 68%| 81%| 92%| 97%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Google       |   3   |  20 |   73 |  2.45 | 45%| 90%|100%|100%|100%|
   | shopping    |       |     |      |       |    |    |    |    |    |
   +-------------+-------+-----+------+-------+----+----+----+----+----+
   |Average      |  18   | 115 | 1490 |  9.82 | 44%| 65%| 75%| 81%| 84%|
   +-------------+-------+-----+------+-------+----+----+----+----+----+





White, et al.            Expires January 7, 2013               [Page 12]

Internet-Draft                spdy-analysis                    July 2012


4.2.  Network Environment

   The network environment between the servers and the client plays an
   equally large role in determining page load time.  The most important
   parameters that drive performance are the round-trip time, the
   bottleneck link bandwidth, and the packet loss rate.

4.2.1.  Round-Trip Time (RTT)

   In the absence of congestion, typical Internet round-trip times can
   range from as low as 10 milliseconds when accessing content served in
   close proximity, to as high as 500 milliseconds or more when
   accessing servers across continents.  For wireline broadband
   customers in the U.S., the most popular websites can generally be
   reached with RTTs ranging from 15 ms to 150 ms.  For the websites
   included in the survey in Section 4.1, a sample TCP RTT to each of
   the top-five servers (in terms of number of resources requested) from
   CableLabs headquarters in Louisville, Colorado, is shown (in
   milliseconds) in Table 3 along with a summary of the minimum, mean,
   and max RTT of those top-five servers.  The RTT was calculated by
   doing a TCP "ACK RTT" analysis of a packet capture of each page load
   using the Wireshark tool.  The ISP connection used during this
   testing consisted of two load-balanced 100 Mbps duplex links with a
   mean RTT of less than 2 ms.



























White, et al.            Expires January 7, 2013               [Page 13]

Internet-Draft                spdy-analysis                    July 2012


   Table 3.  Round-Trip Times to Website Servers in Milliseconds

   +-----------+------+------+------+------+------+-----+-------+-----+
   |Page       |server|server|server|server|server|     |       |     |
   |           |  1   |  2   |  3   |  4   |  5   | min |average| max |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Engadget   | 63*  | 62*  | 64*  | 62*  |  38  |  38 |  57.8 |  64 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |NY Times   | 64*  | 64*  | 62*  | 64*  |  64* |  62 |  63.6 |  64 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Gizmodo    | 37*  | 39*  | 134  | 25   |  22  |  22 |  51.4 | 134 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |CNN        | 46*  | 53   | 69*  | 32   |  45  |  32 |  49.0 |  69 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Comcast.net| 65*  | 69*  | 94   | 28   |  71  |  28 |  65.4 |  94 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |ESPN       | 64*  | 33   | 65*  | 64*  |  64* |  33 |  58.0 |  65 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Amazon     | 35   | 72*  | 16*  | 98   |  33  |  16 |  50.8 |  98 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |RoadRunner | 56   | 58   | 29*  | 52*  |  61* |  29 |  51.2 |  61 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Wired      | 70*  | 114  | 66*  | 24*  |  85  |  24 |  71.8 | 114 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |eBay       | 62*  |  75  | 64*  | 62*  |  62  |  62 |  65.0 |  75 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |LinkedIn   | 50*  |  72* | 78   | 54   |  63* |  50 |  63.4 |  78 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Hulu       | 65*  |  67* | 66*  | 64*  |  22  |  22 |  56.8 |  67 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Yahoo      | 28   |  27  | 64   | 29   |  61  |  27 |  41.8 |  64 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |YouTube    | 23   |  25  | 23   | 22   |  22  |  22 |  23.0 |  25 |
   +-----------+------+------+------+------+------+-----+-------+-----+
   |Google     | 34   |  42  | 43   | 22   |   -  |  22 |  35.3 |  43 |
   | shopping  |      |      |      |      |      |     |       |     |
   +-----------+------+------+------+------+------+-----+-------+-----+

   * denotes a host run by a CDN provider.

   When network links are congested, a phenomenon referred to as
   "bufferbloat" can result in an increase in RTT on the order of
   hundreds of milliseconds.  Bufferbloat arises due to the fact that
   many network elements support much more buffering than is needed to
   maintain full link utilization.  These oversized buffers will be kept
   full by the TCP (particularly when there are multiple simultaneous
   sessions), thereby causing an increase in latency.  In recent updates
   to the DOCSIS 3.0 cable modem specification, a new feature has been



White, et al.            Expires January 7, 2013               [Page 14]

Internet-Draft                spdy-analysis                    July 2012


   added to mitigate this effect by proper sizing of the cable modem's
   upstream buffer.  At this time, 14 cable modem models from 10
   manufacturers have been certified as supporting this feature.  For
   more detail on bufferbloat and the DOCSIS Buffer Control feature,
   see: [BUFFERCONTROL].

4.2.2.  Access Network Data Rate

   Residential access network data rates have steadily risen over time,
   with a 10 Mbps downstream rate and 1 Mbps upstream rate being fairly
   common in North America, and 20 Mbps x 2 Mbps rates becoming
   increasingly available.

   As a result, for purposes of our investigation of the two proposed
   technologies, we will utilize the 10x1 and 20x2 data rate
   configurations.

   Some access networks, in particular cable modem access networks, are
   able to provide higher burst data rates that go well beyond the
   sustained traffic rate for the connection.  In this report we will
   not attempt to study the impact that these "Powerboost" type features
   have on the two proposed technologies.  In addition, many operators
   offer higher speed tiers than those mentioned above, with speeds in
   Europe up to 360 Mbps on the very high end, but they currently have
   fairly low take rates.  Finally, some access networks may have lower
   speed limitations placed on the services such as public and outdoor
   Wi-Fi networks.

4.2.3.  Packet Loss

   It is important to note that packet loss due to router (or switch)
   buffer overflow is expected behavior in networks, particularly when
   TCP is utilized.  In fact, packet loss due to buffer overflow is
   fundamental to the congestion avoidance algorithm in TCP; it is the
   only signal that the TCP has (absent the Explicit Congestion
   Notification field in IP packets) that it has saturated the link and
   needs to reduce its transmission rate.  As a result, it is not a
   concern in this testing.  The concern here is random packet loss due
   to noise, interference or network faults that will effectively send
   TCP an erroneous signal to reduce its transmission rate.

   In wired networks, packet loss due to noise is fairly uncommon, for
   example with packet loss rates of approximately 10^-5 being typical
   for DOCSIS cable modem networks.  In wireless networks, packet loss
   can vary dramatically as a result of interference and fluctuations in
   carrier-to-noise ratio.





White, et al.            Expires January 7, 2013               [Page 15]

Internet-Draft                spdy-analysis                    July 2012


5.  Laboratory Testing and Results

5.1.  Goals

   The goals of the testing are to investigate the page load performance
   impacts of the two proposed technologies.  In particular, we examine
   Google SPDY with an eye toward evaluating SPDY's ability to achieve
   the stated performance goal and to understand what aspects of SPDY
   provide acceleration and in which scenarios.  Testing is limited to
   the SPDY "basic" features; no testing of server-push or server-hint
   is included in this study, primarily due to the fact that the
   performance enhancement gained by using them would be heavily
   dependent on how they are configured and utilized by the website
   administrator.  Some benchmarks of server-push and server-hint have
   been published by external sources; see [GOOGLE-BENCHMARKS] .  The
   results have not shown a statistically significant gain.

   As stated previously, the TCP initcwnd increase is tested both
   independently (using HTTPS) and in conjunction with SPDY.

5.2.  Laboratory Environment

   The entire test network was virtualized on a dedicated VMWare ESX
   Virtual Server.  The test network consisted of 7 virtual hosts, each
   having two network interfaces.  A single network interface on each
   host was connected to a virtual LAN within the ESX environment.  The
   second network interface on each host was connected to the corporate
   network.  During the experiments, the CPU load on the virtualization
   server was checked to ensure that it was not impacting the results.

5.2.1.  Web Server Configuration

   Four of the hosts were configured identically as web servers, with
   the following software:

   o  OS: Ubuntu 11.04

   o  Web Server: "Express-SPDY" written in JavaScript for node.js

   The "Express-SPDY" server is the melding of a compact and efficient
   open-source HTTPS server (known as "Express") with an open-source
   SPDY/2 implementation called "node-spdy".  The implementation is
   written in JavaScript using the node.js server environment.  This
   implementation was chosen over the Chromium package published by
   Google due to the fact that it was lightweight and could be deployed
   relatively easily.  Unfortunately, the version of Express-SPDY
   available at the time of this testing was found to not be stable, and
   required some work to debug and fix prior to beginning any testing.



White, et al.            Expires January 7, 2013               [Page 16]

Internet-Draft                spdy-analysis                    July 2012


   Since our testing commenced, the author of node-spdy rewrote a large
   part of the package.

5.2.2.  Client Configurations

   The remaining three hosts were configured as client machines.  The
   primary client ran Windows 7, and the other two clients (used for
   spot testing) ran Windows XP and Ubuntu 11.04.  All clients used the
   Chrome 16 browser, with the SPDY Benchmarking plugin, and were
   installed with Wireshark to capture network traffic.  The Dummynet
   [DUMMYNET] network simulator was used to simulate the various network
   conditions.

   For each test condition, Dummynet was configured with the desired
   upstream and downstream rates, with the desired RTT split equally
   between the two links.  In cases where packet loss was being tested,
   the same packet loss rate was configured on both links.  Both links
   were left with the default buffering configuration of 50 packets.

   Note that two of the hosts (Win7 and Ubuntu) support the TCP Window
   Scaling Option by default, while the third (WinXP) does not.

5.3.  Test Conditions

5.3.1.  Protocol Options

   As previously stated, the testing is intended to compare the SPDY
   protocol to the HTTPS protocol, and to investigate the use of the
   increased TCP Initial Congestion Window (initcwnd) (both with HTTPS
   and in conjunction with SPDY).  As a result, we measured the time it
   took to load a web page using four different protocol options as
   shown in Table 4.  One option defines the baseline scenario or "Base
   Case": with HTTPS for transport and the default initcwnd setting of
   3.  The results for the three cases involving a proposed enhancement
   are then compared to the "Base Case".

   Table 4.  Matrix of Protocol Options

                      +-------------+---------+
                      |   HTTPS     |  SPDY   |
   +------------------+-------------+---------+
   | initcwnd = 3     |  Base Case  |  CASE 1 |
   +------------------+-------------+---------+
   | initcwnd = 10    |   CASE 2    |  CASE 3 |
   +------------------+-------------+---------+






White, et al.            Expires January 7, 2013               [Page 17]

Internet-Draft                spdy-analysis                    July 2012


5.3.2.  Web Sites

   Nine different "websites" were used to evaluate the impact that the
   content and server configuration would have on the test results.  The
   nine websites were formed by the 3x3 matrix of three different server
   configurations and three different web pages as follows.

5.3.2.1.  Server Configurations

   The server configuration parameter determined how all of the web
   resources for a page were served.

   o  Server Case 1, all resources were served by a single server.

   o  Server Case 2, the resources were divided equally across two
      servers.

   o  Server Case 3, the resources were divided equally across four
      servers.

5.3.2.1.1.  Web Pages

   Three web pages were used in testing.  These pages were chosen to
   span a range of possible page configurations.  In particular, Page B
   was modeled based on the data collected in the website survey
   (Section 4.1), while Pages A and C represent more extreme situations.
   Page A is the smallest of the three pages, and is populated by a
   number of small image files.  Page C is the largest, and is populated
   by a small number of very large image files.  It could be argued that
   a page like Page C would be fairly rare on the Internet compared to
   pages like Page A or Page B.

   Page A consisted of 102 total resources, with a total page size of
   369 KB.  It was composed of the following resources:

   o  1 HTML file: 12.8 KB

   o  1 JavaScript Library (jquery.js): 94.5 KB

   o  100 JPEG images: min/mean/max/stddev size = 1.3/2.6/5.5/1.2 KB

   Page B consisted of 101 total resources, with a total page size of
   1.4 MB.  It was composed of the following resources:

   o  1 HTML file: 8.2 KB

   o  100 JPEG/PNG/GIF images:




White, et al.            Expires January 7, 2013               [Page 18]

Internet-Draft                spdy-analysis                    July 2012


      *  min/mean/max/stddev size = 46B/14KB/103KB/24KB

      *  Approximately log-uniform size distribution

   Page C consisted of 11 total resources, with a total page size of 3.0
   MB.  It was composed of the following resources:

   o  1 HTML file: 0.8 KB

   o  10 JPEG images: min/mean/max/stddev size = 298/302/310/4 KB

5.3.2.2.  Channel Conditions

   Eight different channel conditions were used in the testing.  These
   eight cases were formed from the 2x2x2 matrix of the following
   parameters:

   Configured Data Rate:

      10 Mbps downstream, 1 Mbps upstream

      20 Mbps downstream, 2 Mbps upstream

   Round Trip Time:

      20 ms

      100 ms

   Packet Loss Rate:

      0%

      1%

   The two Configured Data Rates were chosen to match two commonly used
   residential high-speed data service configurations.  The Round Trip
   Times correspond to a fairly short RTT that models a user accessing a
   site that is located fairly close to them (or is accelerated by a
   CDN), as well as a longer RTT which models a U.S. coast-to-coast page
   load or a case where there is increased upstream latency due to
   bufferbloat.  Performance in higher RTT cases, such as an overseas
   connection, is not considered in this study.  The two packet loss
   rates correspond to an idealistic case that might be approached by an
   end-to-end wired network connection and a case with packet loss that
   might be more typical of a network connection that includes a Wi-Fi
   link.




White, et al.            Expires January 7, 2013               [Page 19]

Internet-Draft                spdy-analysis                    July 2012


5.3.2.3.  Test Execution

   The test execution will be performed in the following fashion:

   o  Run all 288 test conditions on Win 7

   o  Run spot tests on WinXP and Ubuntu

   o  For each test condition, perform 20 page loads (clearing cache and
      resetting connections before each load) and calculate median load
      time.

5.4.  Test Results

   The result of the spot tests on WinXP and Ubuntu were largely
   consistent with the results for the Win7 testing.  However, there was
   a subset of the test cases with WinXP where SPDY showed degraded
   performance compared to the other OSes.  This occurred with the cases
   that used a single server, 100 ms RTT, and 0% packet loss.  This is
   most likely a result of the lack of TCP Window Scaling in the WinXP
   client, which limits the data rate of each TCP connection to 5 Mbps
   in these conditions.  Since SPDY is using a single TCP connection
   (compared to six for HTTP), SPDY will see a performance hit due to
   its inability to use the entire 10 Mbps or 20 Mbps pipe.

   The raw data for all test cases (including the WinXP and Ubuntu test
   cases) are provided in [SPDY-ANALYSIS].  The remainder of this report
   will focus on the Win7 test results.

   As described in Section 5.3.1, the 2x2 matrix of protocol options
   will be presented as three different "cases", where each case
   represents the gain achieved by using one of the three proposed
   protocol enhancement options compared to the base case.  This section
   is broken into three subsections that correspond to the three cases.

   For each case, the results comprise a five-dimensional matrix of test
   conditions.  In order to present the results in a compact way, each
   subsection below will first examine the impact that website
   configuration has on the achieved gain, then second will examine the
   impact of the channel conditions.

   The results provide a comparison between the median web page download
   time achieved using the proposed protocol enhancement option and that
   which is achieved in the base case.







White, et al.            Expires January 7, 2013               [Page 20]

Internet-Draft                spdy-analysis                    July 2012


5.4.1.  CASE 1:  SPDY vs. HTTPS

   Case 1 compares the median web page download time achieved using
   SPDY/2 to the median time achieved using HTTPS.  The comparison is
   made for each website configuration and channel condition
   combination.  The comparison is reported as a "gain", which is
   calculated as the ratio of median page load time using HTTPS to the
   median page load time using SPDY.  As a result, gain values greater
   than 1 indicate that SPDY/2 provides an advantage over HTTPS.  As an
   additional point of reference, a gain of 2 corresponds to a 50%
   reduction in page load time, the goal to which SPDY aspires.

   As stated above, the impact that the website configuration has on the
   achieved gain will be examined first.  Table 5 shows the 3x3 matrix
   of website configurations.  For each website, the maximum, minimum
   and mean gain values (across all channel conditions) are provided, in
   the manner shown below.

    +-------------+
    |         max |
    |     mean    |
    | min         |
    +-------------+

   Additionally, row-wise, column-wise, and overall statistics are
   calculated and shown around the periphery of the 3x3 matrix.

   Table 5.  Website Impact on SPDY Gain

            |  1 server   |  2 servers  |  4 servers  |   average   |
   ---------+-------------+-------------+-------------+-------------+
            |         4.1 |         1.8 |         1.8 |         4.1 |
   Page A   |     2.4     |     1.3     |     1.3     |     1.7     |
            | 1.6         | 1.1         | 1.1         | 1.1         |
   ---------+-------------+-------------+-------------+-------------+
            |         3.3 |         1.4 |         1.4 |         3.3 |
   Page B   |     1.7     |     1.0     |     1.0     |     1.3     |
            | 0.8         | 0.6         | 0.7         | 0.6         |
   ---------+-------------+-------------+-------------+-------------+
            |         1.0 |         1.0 |         1.1 |         1.1 |
   Page C   |     0.5     |     0.7     |     0.9     |     0.7     |
            | 0.3         | 0.4         | 0.5         | 0.3         |
   ---------+-------------+-------------+-------------+-------------+
            |         4.1 |         1.8 |         1.8 |         4.1 |
   average  |     1.6     |     1.0     |     1.1     |     1.2     |
            | 0.3         | 0.4         | 0.5         | 0.3         |
   ---------+-------------+-------------+-------------+-------------+




White, et al.            Expires January 7, 2013               [Page 21]

Internet-Draft                spdy-analysis                    July 2012


   These results show that SPDY worked well for Page A (many smaller
   images), showing gains across all test conditions and an average gain
   of 1.7.  For Page B (many images more typical size), the results were
   a bit more hit-or-miss, with SPDY not always resulting in improved
   performance.  Nonetheless, on average a gain of 1.3 was achieved.
   Page C (small number of large images), on the other hand, resulted in
   almost universally worse performance with SPDY than with HTTPS.  In
   the worst case, SPDY resulted in a 3.3x increase in page load time
   (gain of 0.3).  On average SPDY took 1.4x longer (gain of 0.7) to
   download Page C than traditional HTTPS.

   In general, the SPDY impact (positive or negative) diminished as more
   servers were utilized.  This is the result of the increased
   parallelism and decreased number of objects requested per SPDY
   session, which if taken to the extreme would result in a pattern of
   requests that is similar to the HTTPS case.

   The results shown in Table 6 examine the impact that channel
   conditions have on SPDY performance (relative to HTTPS).  Since the
   channel conditions were formed from a 2x2x2 matrix of data-rate, RTT,
   and packet-loss rate (PLR), the results are depicted as two 2x2
   matrices of data-rate and RTT, one corresponding to the 0% PLR test
   cases, and the other corresponding to the 1% PLR test cases.  For
   each channel condition, the results for all nine websites are
   summarized via the maximum, mean, and minimum gain achieved.  Similar
   to the row and column statistics provided in the website impact
   analysis in Table 5, summary statistics for all three dimensions are
   provided around the periphery of the 2x2x2 cube (i.e., in the right-
   most column, the last row, and the third table).

   Table 6a.  Channel Impact on SPDY Gain (0% PLR)

   --------+-------------+-------------+-------------+
   0% PLR  |    20ms     |    100ms    |   average   |
   --------+-------------+-------------+-------------+
           |         2.1 |         4.1 |         4.1 |
   10/1    |     1.4     |     1.7     |     1.6     |
           | 0.7         | 0.8         | 0.7         |
   --------+-------------+-------------+-------------+
           |         1.6 |         3.4 |         3.4 |
   20/2    |     1.2     |     1.6     |     1.4     |
           | 0.5         | 0.7         | 0.5         |
   --------+-------------+-------------+-------------+
           |         2.1 |         4.1 |         4.1 |
   average |     1.3     |     1.6     |     1.5     |
           | 0.5         | 0.7         | 0.5         |
   --------+-------------+-------------+-------------+




White, et al.            Expires January 7, 2013               [Page 22]

Internet-Draft                spdy-analysis                    July 2012


   Table 6b.  Channel Impact on SPDY Gain (1% PLR)

   --------+-------------+-------------+-------------+
   1% PLR  |    20ms     |    100ms    |   average   |
   ---------------------------------------------------
           |         2.3 |         2.2 |         2.3 |
   10/1    |     1.1     |     0.9     |     1.0     |
           | 0.4         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+
           |         2.0 |         1.7 |         2.0 |
   20/2    |     1.0     |     0.8     |     0.9     |
           | 0.3         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+
           |         2.3 |         2.2 |         2.3 |
   average |     1.0     |     0.8     |     0.9     |
           | 0.3         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+

   Table 6c.  Channel Impact on SPDY Gain (all PLR)

   --------+-------------+-------------+-------------+
   all PLR |    20ms     |    100ms    |   average   |
   --------+-------------+-------------+-------------+
           |         2.3 |         4.1 |         4.1 |
   10/1    |     1.3     |     1.3     |     1.3     |
           | 0.4         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+
           |         2.0 |         3.4 |         3.4 |
   20/2    |     1.1     |     1.2     |     1.1     |
           | 0.3         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+
           |         2.3 |         4.1 |         4.1 |
   average |     1.2     |     1.2     |     1.2     |
           | 0.3         | 0.3         | 0.3         |
   --------+-------------+-------------+-------------+

   The most interesting observation here is the comparison between the
   two PLR tests.  SPDY provided significant gains when the PLR was 0%
   (average gain 1.5), but showed worse average performance than HTTPS
   when packet loss was 1% (average gain 0.9).  This effect was more
   pronounced in the large RTT cases as compared to the small RTT.  This
   result points to a weakness in the way that SPDY utilizes TCP.  With
   a typical HTTPS download of a web page, the browser will open a large
   number of simultaneous TCP connections.  In this case, a random
   packet loss will cause the one affected connection to temporarily
   reduce its congestion window (and hence the effective data rate), but
   the other connections will be unaffected, and in fact may be able to
   opportunistically make use of the bandwidth made available by the



White, et al.            Expires January 7, 2013               [Page 23]

Internet-Draft                spdy-analysis                    July 2012


   affected connection.  The result for HTTPS is that random packet loss
   has only a minor impact on page download time.  In the case of SPDY,
   the number of parallel TCP connections is dramatically reduced (by as
   much as a factor of six), so that random packet loss has a much
   bigger impact on the overall throughput.

   In the absence of packet loss, SPDY provides better gains as the RTT
   increases.  This is the result of reducing the number of round trips
   needed to fetch all of the page resources.  Nonetheless, there were
   test cases with 0 packet loss where SPDY performed worse than HTTPS.
   This only occurred with Page C; SPDY always provided a benefit for
   Pages A and B when there was no packet loss.  The root cause of the
   degradation is unknown, but it may be the result of the buffering
   configuration of the network simulator Dummynet.  As stated
   previously, testing was performed with the default configuration of
   50 packet buffers.  This configuration is not reflective of real
   networks (which in some cases may have more than double that amount
   of buffering), and could bias the results somewhat against
   applications (such as SPDY) that use a small number of TCP sessions.

   Additionally, SPDY generally shows more gain in the lower Data Rate
   cases.

   The overall average gain of 1.2 seen in our experiments aligns well
   with the performance gains that Google is seeing in their live
   deployments.  In results presented in a December 8, 2011, Google
   TechTalk [TECHTALK], they report a 15.4% improvement in page load
   time (equivalent to a gain of 1.18).

5.4.2.  CASE 2:  initcwnd=10 vs. initcwnd=3

   The initcwnd increase provides very modest gain across the majority
   of test cases.  In a few cases there was a marginal degradation of
   performance compared to the default initcwnd case.  Across all test
   conditions an average gain of 1.1 (or 9% reduction in page load time)
   was seen, as indicated in Table 7 and Table 8.















White, et al.            Expires January 7, 2013               [Page 24]

Internet-Draft                spdy-analysis                    July 2012


   Table 7.  Website Impact on Initcwnd Gain

            +-------------+-------------+-------------+-------------+
            |  1 server   |  2 servers  |  4 servers  |    average  |
   ---------+-------------+-------------+-------------+-------------+
            |         1.1 |         1.1 |         1.1 |         1.1 |
    Page A  |     1.0     |     1.0     |     1.0     |     1.0     |
            | 0.9         | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+-------------+
            |         1.1 |         1.3 |         1.2 |         1.3 |
    Page B  |     1.0     |     1.1     |     1.0     |     1.0     |
            | 1.0         | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+-------------+
            |         1.2 |         1.3 |         1.5 |         1.5 |
    Page C  |     1.1     |     1.1     |     1.2     |     1.1     |
            | 1.0         | 1.0         | 1.0         | 1.0         |
   ---------+-------------+-------------+-------------+-------------+
            |         1.2 |         1.3 |         1.5 |         1.5 |
    average |     1.1     |     1.1     |     1.1     |     1.1     |
            | 0.9         | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+-------------+

   Overall the Page C test cases showed a slightly higher gain over the
   other two pages.  Since Page C involves large files, it isn't
   surprising that the effect is slightly more pronounced than in Page
   A. In Page A, the majority of resources can be delivered in 3 packets
   or less anyway, so the increase in initcwnd doesn't reduce the number
   of round-trips.

   Table 8a.  Channel Impact on Initcwnd Gain (0% PLR)

   ---------+-------------+-------------+-------------+
    0% PLR  |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         1.1 |         1.2 |         1.2 |
     10/1   |     1.0     |     1.1     |     1.0     |
            | 1.0         | 1.0         | 1.0         |
   ---------+-------------+-------------+-------------+
            |         1.1 |         1.1 |         1.1 |
     20/2   |     1.0     |     1.0     |     1.0     |
            | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         1.1 |         1.2 |         1.2 |
    average |     1.0     |     1.0     |     1.0     |
            | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+





White, et al.            Expires January 7, 2013               [Page 25]

Internet-Draft                spdy-analysis                    July 2012


   Table 8b.  Channel Impact on Initcwnd Gain (1% PLR)

   ---------+-------------+-------------+-------------+
    1% PLR  |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         1.5 |         1.2 |         1.5 |
     10/1   |     1.1     |     1.1     |     1.1     |
            | 0.9         | 1.0         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         1.4 |         1.3 |         1.4 |
     20/2   |     1.1     |     1.1     |     1.1     |
            | 0.9         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         1.5 |         1.3 |         1.5 |
    average |     1.1     |     1.1     |     1.1     |
            | 0.9         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+

   Table 8c.  Channel Impact on Initcwnd Gain (all PLR)

   ---------+-------------+-------------+-------------+
    all PLR |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         1.5 |         1.2 |         1.5 |
     10/1   |     1.1     |     1.1     |     1.1     |
            | 0.9         | 1.0         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         1.4 |         1.3 |         1.4 |
     20/2   |     1.1     |     1.1     |     1.1     |
            | 0.9         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         1.5 |         1.3 |         1.5 |
    average |     1.1     |     1.1     |     1.1     |
            | 0.9         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+

   When viewing the results broken down by channel condition, we don't
   see a significant difference in gain from one channel condition to
   the next.  Notably, even in the high RTT cases we don't see much
   change in the gain.  This is likely due to the fact that the majority
   of resources had sizes that either fell below the 3 packet default
   initcwnd, or were much larger (e.g., over 210 packets each for the
   images in Page C) so that the initcwnd change might save a single RTT
   for a transfer that took 9 RTTs using the default initcwnd.







White, et al.            Expires January 7, 2013               [Page 26]

Internet-Draft                spdy-analysis                    July 2012


5.4.3.  CASE 3:  SPDY+initcwnd=10 vs. HTTPS+initcwnd=3

   The combination of SPDY and the initcwnd increase resulted in a
   benefit that was more than the product of the two individual gains.
   This is a result of the fact that, due to SPDY, all of the TCP
   sessions involved multiple round-trips, so the acceleration of
   initial data rate provided by the initcwnd increase resulted in
   tangible benefits.  In fact, one case (Page A, single server) saw an
   astounding gain of 4.7.  By examining the raw data in
   [SPDY-ANALYSIS], it can be seen that this combination reduced the
   median page load time of 8.7 seconds down to 1.9 seconds.
   Unfortunately, this result is not typical, and Page C again
   experienced worse performance when the new protocol options are used.
   The overall average gain seen was 1.4 across all test cases as shown
   in Table 9 and Table 10.

   Table 9.  Website Impact on SPDY+Initcwnd Gain

   --------+-------------+-------------+-------------+-------------+
           |  1 server   |  2 servers  |  4 servers  |    average  |
   --------+-------------+-------------+-------------+-------------+
           |         4.7 |         2.3 |         1.5 |         4.7 |
    Page A |     3.2     |     1.5     |     1.4     |     2.0     |
           | 2.2         | 1.2         | 1.2         | 1.2         |
   --------+-------------+-------------+-------------+-------------+
           |         3.3 |         1.6 |         1.5 |         3.3 |
    Page B |     1.9     |     1.1     |     1.1     |     1.4     |
           | 0.9         | 0.6         | 0.7         | 0.6         |
   --------+-------------+-------------+-------------+-------------+
           |         1.0 |         1.0 |         1.1 |         1.1 |
    Page C |     0.6     |     0.7     |     0.9     |     0.7     |
           | 0.3         | 0.4         | 0.6         | 0.3         |
   --------+-------------+-------------+-------------+-------------+
           |         4.7 |         2.3 |         1.5 |         4.7 |
   average |     1.9     |     1.1     |     1.1     |     1.4     |
           | 0.3         | 0.4         | 0.6         | 0.3         |
   --------+-------------+-------------+-------------+-------------+














White, et al.            Expires January 7, 2013               [Page 27]

Internet-Draft                spdy-analysis                    July 2012


   Table 10a.  Channel Impact on SPDY+Initcwnd Gain (0% PLR)

   ---------+-------------+-------------+-------------+
    0% PLR  |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         3.2 |         4.7 |         4.7 |
     10/1   |     1.7     |     1.8     |     1.8     |
            | 1.0         | 0.9         | 0.9         |
   ---------+-------------+-------------+-------------+
            |         3.1 |         3.9 |         3.9 |
     20/2   |     1.6     |     1.7     |     1.6     |
            | 0.7         | 0.7         | 0.7         |
   ---------+-------------+-------------+-------------+
            |         3.2 |         4.7 |         4.7 |
    average |     1.7     |     1.7     |     1.7     |
            | 0.7         | 0.7         | 0.7         |
   ---------+-------------+-------------+-------------+

   Table 10b.  Channel Impact on SPDY+Initcwnd Gain (1% PLR)

   ---------+-------------+-------------+-------------+
    1% PLR  |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         3.1 |         2.4 |         3.1 |
     10/1   |     1.2     |     0.9     |     1.1     |
            | 0.4         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+
            |         2.8 |         2.2 |         2.8 |
     20/2   |     1.2     |     1.0     |     1.1     |
            | 0.3         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+
            |         3.1 |         2.4 |         3.1 |
    average |     1.2     |     1.0     |     1.1     |
            | 0.3         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+
















White, et al.            Expires January 7, 2013               [Page 28]

Internet-Draft                spdy-analysis                    July 2012


   Table 10c.  Channel Impact on SPDY+Initcwnd Gain (all PLR)

   ---------+-------------+-------------+-------------+
    all PLR |    20ms     |    100ms    |   average   |
   ---------+-------------+-------------+-------------+
            |         3.2 |         4.7 |         4.7 |
     10/1   |     1.5     |     1.4     |     1.4     |
            | 0.4         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+
            |         3.1 |         3.9 |         3.9 |
     20/2   |     1.4     |     1.3     |     1.3     |
            | 0.3         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+
            |         3.2 |         4.7 |         4.7 |
    average |     1.4     |     1.3     |     1.4     |
            | 0.3         | 0.3         | 0.3         |
   ---------+-------------+-------------+-------------+

   In the packet loss test cases, there was a fairly significant
   performance loss with SPDY, as reported in earlier test cases.  This
   is particularly true in the high RTT cases.

5.4.4.  Results Summary

   The results are summarized further in Table 11.  A caveat on the
   average results presented here is worth noting: the 72 test cases
   were selected to test the protocol changes in a fairly wide range of
   conditions in order to understand the impact that individual factors
   have on the performance gains.  As a result, the 72 test cases likely
   do not comprise a statistically accurate sampling of real-world
   sites, and so the average results presented here may not accurately
   reflect the average performance gain that would be seen in the real
   world.  However, as noted previously, the average results do appear
   to align well with the average gains seen by Google via their live
   deployments with users utilizing the Chrome browser.  In addition, it
   is interesting to examine the average gain achieved in a particular
   subset of the test conditions.  For that we select the subset
   consisting of pages A and B operating on a wireline network (PLR=0%).
   For that subset, we see that the combination of SPDY/2 and the
   initcwnd increase achieves an average gain of 2.1 (52% reduction in
   page load time).










White, et al.            Expires January 7, 2013               [Page 29]

Internet-Draft                spdy-analysis                    July 2012


   Table 11.  Summary of Results

                          +--------------+--------------+--------------+
                          |    Case 1    |     Case 2   |    Case 3    |
                          |     SPDY     |    initcwnd  |SPDY+initcwnd |
   +----------------------+--------------+--------------+--------------+
   |Best Gain             |      4.1     |      1.5     |      4.7     |
   |(all test conditions) |(A,1,10,100,0)|(C,4,10,20,1) |(A,1,10,100,0)|
   +----------------------+--------------+--------------+--------------+
   |Average Gain          |              |              |              |
   |(all test conditions) |      1.2     |      1.1     |      1.4     |
   +----------------------+--------------+--------------+--------------+
   |Worst Gain            |      0.3     |      0.9     |      0.3     |
   |(all test conditions) | (C,1,x,x,1)  |(A,1,20,100,0)|(C,1,20,100,1)|
   +----------------------+--------------+--------------+--------------+
   |# test cases achieving|   40 of 72   |   58 of 72   |   44 of 72   |
   | gain >= 1            |     (56%)    |     (81%)    |     (61%)    |
   +----------------------+--------------+--------------+--------------+
   |# test cases achieving|    8 of 72   |    0 of 72   |   14 of 72   |
   | gain >= 2            |     (11%)    |     (0%)     |     (19%)    |
   +----------------------+--------------+--------------+--------------+
   |Average Gain          |              |              |              |
   |(Pages A and B        |      1.8     |     1.0      |      2.1     |
   | with PLR=0%)         |              |              |              |
   +----------------------+--------------+--------------+--------------+


6.  Recommendations and Conclusions

   The results presented here indicate that SPDY/2 in conjunction with
   the TCP Initial Congestion Window increase has the potential to
   improve or impair web page download performance depending on a number
   of factors.

   Deployment of SPDY/2 for general-purpose web servers should be
   considered in light of the following concerns:

   o  While the Chrome and Firefox browsers are important (approximately
      29% and 22% market share respectively as of June 2012), client
      support isn't ubiquitous.

   o  Some web page downloads were significantly impaired by SPDY.

   o  Work is underway on a revision to the protocol, and with
      standardization in the IETF a possibility in the near future,
      waiting may be worthwhile to see what develops in this space.

   On the other hand, for a controlled environment where a single entity



White, et al.            Expires January 7, 2013               [Page 30]

Internet-Draft                spdy-analysis                    July 2012


   provides the servers, the client software, and the web content, SPDY
   might be a valuable tool.  An example application might be a remote
   user interface (RUI) that is delivered via HTTP to a CPE device.

   In addition to potential uses for SPDY by network operators, another
   area of interest is the impact that SPDY would have on network
   traffic if it were to be widely adopted.  In general the story here
   is good, by reducing the number of simultaneous TCP sessions and
   extending the duration of many of the sessions, other applications
   could see improved performance as a result of TCP congestion
   avoidance being invoked far more often.  Secondly, the expectation
   would be to see a slight reduction in data usage, due to the greater
   efficiency that SPDY provides (fewer TCP control packets), as well as
   a slight increase in average packet size, due to the multiplexing of
   HTTP responses.  Both of these factors will serve to reduce the
   packets per second rate of the network, which improves scalability of
   CMTSs, routers, DPI boxes, etc.  Finally, equipment implementing
   Carrier Grade NAT (which will be a key element of the IPv6 transition
   in some networks) could see improved scalability as the number of
   simultaneous TCP connections is reduced.

   In regards to the increase in the TCP Initial Congestion Window,
   while we see only marginal gains resulting from this enhancement, the
   change can be made simply by changing a server operating system
   parameter.  It requires no client modifications.  As a result, we see
   no reason not to set the server initcwnd at the proposed value of 10.


7.  IANA Considerations

   This document makes no request of IANA.

   Note to RFC Editor: this section may be removed on publication as an
   RFC.


8.  Security Considerations

   See [I-D.mbelshe-httpbis-spdy] and [I-D.ietf-tcpm-initcwnd] for
   Security Considerations.


9.  Acknowledgements

   The authors would like to thank Marc Weaver, Darshak Thakore, Eric
   Winkelman, Robin Sam Ku, Scott Maize, and Rob Moon for their
   assistance in developing and configuring the test bed, and collecting
   the data presented in this report.  The authors would also like to



White, et al.            Expires January 7, 2013               [Page 31]

Internet-Draft                spdy-analysis                    July 2012


   gratefully express their appreciation to Chris Donley, Joan Strosin,
   Ken Barringer and Christie Poland for manuscript preparation
   assistance, and to Mike Belshe and Roberto Peon for their review and
   very insightful comments.


10.  References

   [BUFFERCONTROL]
              CableLabs, "Cable Modem Buffer Control", <http://
              www.cablelabs.com/specifications/
              CM-GL-Buffer-V01-110915.pdf>.

   [CDNPLANET]
              "www.cdnplanet.com", <http://www.cdnplanet.com>.

   [DUMMYNET]
              "Dummynet", <http://info.iet.unipi.it/~luigi/dummynet/>.

   [Faster]   Google, "Let's Make the Web Faster",
              <http://code.google.com/speed>.

   [GOOGLE-BENCHMARKS]
              Lloyd , M., "SPDY and Server Push: Analysis and
              Experiments", June 2010,
              <https://docs.google.com/View?id=d446246_0cc6c6dkr>.

   [HTTP_Pipelining]
              Wikipedia, "HTTP Pipelining",
              <http://en.wikipedia.org/wiki/HTTP_pipelining>.

   [I-D.agl-tls-nextprotoneg]
              Langley, A., "Transport Layer Security (TLS) Next Protocol
              Negotiation Extension", draft-agl-tls-nextprotoneg-03
              (work in progress), April 2012.

   [I-D.ietf-tcpm-initcwnd]
              Chu, J., Dukkipati, N., Cheng, Y., and M. Mathis,
              "Increasing TCP's Initial Window",
              draft-ietf-tcpm-initcwnd-03 (work in progress),
              February 2012.

   [I-D.mbelshe-httpbis-spdy]
              Belshe, M. and R. Peon, "SPDY Protocol",
              draft-mbelshe-httpbis-spdy-00 (work in progress),
              February 2012.

   [INITCWND-PAPER]



White, et al.            Expires January 7, 2013               [Page 32]

Internet-Draft                spdy-analysis                    July 2012


              Dukkipati , N., Refice, T., Cheng, Y., Chu, J., Sutin, N.,
              Agarwal, A., Herbert, T., and A. Jain, "An Argument for
              Increasing TCP's Initial Congestion Window", <http://
              code.google.com/speed/articles/tcp_initcwnd_paper.pdf>.

   [RFC0793]  Postel, J., "Transmission Control Protocol", STD 7,
              RFC 793, September 1981.

   [RFC1122]  Braden, R., "Requirements for Internet Hosts -
              Communication Layers", STD 3, RFC 1122, October 1989.

   [RFC2001]  Stevens, W., "TCP Slow Start, Congestion Avoidance, Fast
              Retransmit, and Fast Recovery Algorithms", RFC 2001,
              January 1997.

   [RFC2414]  Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's
              Initial Window", RFC 2414, September 1998.

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

   [RFC3390]  Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's
              Initial Window", RFC 3390, October 2002.

   [SPDY]     "SPDY - The Chromium Projects",
              <http://www.chromium.org/spdy>.

   [SPDY-ANALYSIS]
              White, G., "Analysis of Google Spdy and TCP initcwnd",
              May 2012, <http://www.cablelabs.com/downloads/pubs/
              Analysis_of_Google_SPDY_TCP.pdf>.

   [TECHTALK]
              "http://www.cnx-software.com/2012/01/27/
              spdy-aims-to-make-the-web-faster-and-replace-http/",
              <http://www.cnx-software.com/2012/01/page/2/ >.














White, et al.            Expires January 7, 2013               [Page 33]

Internet-Draft                spdy-analysis                    July 2012


Authors' Addresses

   Greg White
   CableLabs
   858 Coal Creek Circle
   Louisville, CO  80027-9750
   USA

   Email: g.white@cablelabs.com


   Jean-Francois Mule
   CableLabs
   180 Montgomery St
   Suite 2480
   San Francisco, CA  94104-4203
   USA

   Email: jf.mule@cablelabs.com


   Dan Rice
   CableLabs
   858 Coal Creek Circle
   Louisville, CO  80027-9750
   USA

   Email: d.rice@cablelabs.com























White, et al.            Expires January 7, 2013               [Page 34]