Re: Review: http://www.ietf.org/id/draft-mbelshe-httpbis-spdy-00.txt

On Wed, Feb 29, 2012 at 5:40 PM, Amos Jeffries <squid3@treenet.co.nz> wrote:
> On 01.03.2012 13:39, Mike Belshe wrote:
>>
>> If the protocol is allowed to be slower than HTTP/1.1, then you could do
>> this.  But, a lot of server operators that care about performance aren't
>> going to want to take that hit.
>
>
> That is what bothers me about all the arguments against Upgrade: based on
> extra RTT and lag.
>
>  today: HTTP/1.1 request + HTTP/1.1 response   == 1 RTT
>
> versus
>
>  tomorrow: HTTP/1.1 request /w Upgrade header + XYZ response /w 200 status
> prefix   == 1 RTT

I use a different comparison:

HTTP/1.1 today:
    TCP handshake: 1 RTT
    HTTP/1.1 request for resource 1: 1 RTT
    Total == 2 RTT
...meanwhile, the same thing happens on m-1 other connections that the
browser is using in parallel

HTTP/1.1 with Upgrade to 2.0:
    TCP handshake: 1 RTT
    HTTP/1.1. request for resource 1: 1 RTT
    HTTP/2.0 requests for resources 2, ..., n-1, n: 1 RTT
    Total == 3 RTT

More generally, the minimum number of round trips to fetch n small
objects in current HTTP/1.1 usage is:
  1+ CEILING(n/m) RTT
where m is the number of concurrent connections the client uses
(typically 6 or 8 for current-generation browsers.)  If a client used
an initial HTTP/1.1 request to negotiate an upgrade to HTTP/2.0, the
minimum number of round trips would be:
  2 + n

For n<=2*m, the Upgrade-based approach would mean more round trips
than are required today.

The Upgrade approach also would require more round trips than current
SPDY usage:

SPDY today:
    TCP handshake: 1 RTT
    TLS handshake, including NPN: 2 RTT
    SPDY requests for resources 1, 2, ..., n-1, n: 1 RTT
    Total = n resources in 4 RTT

Initial HTTP/1.1 request + Upgrade:
    TCP handshake: 1 RTT
    TLS handshake: 2 RTT
    HTTP/1.1 request w/Upgrade + response x/ 200 status: 1 RTT
    SPDY requests for resources 2, ..., n-1, n  = 1 RTT
    Total = n resources in 5 RTT

In terms of sending an initial HTTP/1.1 request to upgrade to HTTP/2.0
looks like a step backwards compared to current deployments of both
HTTP/1.1 and SPDY.

-Brian

Received on Thursday, 1 March 2012 03:52:32 UTC