Re: Squid - can it do 'pipelining' (RFC 2068 Sect 8.1.2.2)?

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Thu, 27 Jan 2000 20:44:56 +0100

JAMES, Patrick wrote:

> pipelining. However, when we trace the behaviour of squid to the actual
> target server, we can see that only persistence is used. We can see no sign
> of pipelining.

Correct.

Squid does not at this time pipeline requests to servers. It does
however accept pipelined requests from the clients, transforming these
to parallell fetches (at most 2 per client connection).

Implementing pipelinig correctly is far from trivial. Especially so in a
multi-user situation (i.e. proxies).

* All pending request must be retried if the connection is closed prior
to receiving the answer
* There is request starvation issues if the prior request on the
pipeline is delayed.
* Great care must be taken to not send pipelined requests on a
non-persistent connection. Doing so could result in lost data if the
server doesn't do graceful connection shutdowns.

Basically a proxy can only pipeline to the extent that it can begin
sending the next request when it knows that the current request will
keep the connection persistent AND all remaining data will fit in the
in-transit buffer (to avoid starvation if the current client delays
delivery). For a high bandwidth hig latency connection the gain from
such pipelinig is probably quite limited.

A safer form of pipelinig would be to only pipeline requests from the
same client connection, but it would require redesign of much of Squids
connection management and request forwarding mechanisms. Currently the
client and server connections are almost fully decoupled from each
other.

> Resources on the web indicate squid uses HTTP 1.1, but all traces we have
> taken to date are HTTP 1.0. Is there some sort of configuration issue to
> make it use HTTP 1.1 requests?

Squid is NOT an HTTP/1.1 proxy. It uses / supports some features from
HTTP/1.1, but not all required.

--
Henrik Nordstrom
Squid hacker
Received on Thu Jan 27 2000 - 14:18:35 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:50:44 MST