Re: persistent conncetion HOL blocking

Kaming Young writes:

    HOL blocking means Head Of Line blocking

    What i mean is consider Alice send out a request for a large latest
    hit MP3 file and then a request for a small text file which both
    resides on the same server.  so the response for MP3 file will
    block the second response and the response that follow in the
    persistent connection case.
    
The HTTP/1.1 Draft Standard (RFC2616) address the head-of-line
blocking issue with respect to proxies, in section 8.1.4, where
it says:
   			A proxy SHOULD use up to 2*N connections to
   another server or proxy, where N is the number of simultaneously
   active users.

I can't remember why we didn't say "to avoid head-of-line blocking"
in this sentence, since this is precisely the reason for saying
that proxies aren't expected to multiplex lots of clients on
one connection.

The same paragraph says:
   A single-user client SHOULD NOT maintain more than 2 connections
   with any server or proxy.

The reasoning behind that requirement is related to a kind of
head-of-line blocking.  Consider a client loading a long HTML
page with lots of images.  The client should probably start
the process of loading the images (on connection #2) while
continuing to load the HTML (on connection #1); we don't want
the images blocked until the entire HTML file is loaded.

I'm not sure it makes sense for a single browser window to
be simultaneously loading a text file and an MP3 file, but
I guess it would make sense for a single user to be loading
both in separate windows of a single browser application.
Even so, the spec still allows these two simultaneous connections.

Anyway, we never specifically defined "single-user", so I
think a client implementor should use good judgement in
deciding whether a browser with multiple active windows
counts as one "user" or several.

The point of these requirements was not to force people to
suffer from head-of-line blocking.  It was to allow the
implementation of clients and proxies that do not suffer
from head-of-line blocking, while discouraging them from
using more TCP connections than necessary.

-Jeff

Received on Thursday, 11 May 2000 10:23:41 UTC