Re: squid and tcp splicing ?

From: J.Smith <>
Date: Wed, 10 Sep 2003 20:32:56 +0200

----- Original Message -----
From: "Henrik Nordstrom" <>

> Squid does application level splicing with multiple receivers (one or
> more clients + cache) per server connection. It does not use any
> kernel level splicing primitives.
Thanks for the information, I was unaware of that. Although im not so sure
that 'mapping' multiple client->proxy connections to a single
proxy->webserver connection is exactly what is meant here. If that is what
you are describing here.

> Lower level splicing would not make much sense in Squid as
> Squid needs access to the data itself for caching
Since the implementation in AIX 5.x is supposed to be a socket-level tcp
splice, couldn't the proxy just copy the data from the socket for caching
purposes ? Apart from that, aren't there people running Squid without
caching on disk in a configuration without cache or cache-in-memory-only
(not sure what Squid does when you tell it not to cache on disk) as well,
for whom it would still be beneficial ? Not everyone needs the cache, but
primairly use it for the authentication and usage statistics.

> and for a large portion of the traffic (headers) it needs to modify
> the content before it is forwarded.
Ok, point taken. But even so, once the proxy has determined :
1.) The content as being non-cacheable
2.) being an SSL connection
making the splice at that point would still gain performance.

> And when moving to HTTP/1.1 even less so due to the nature
> of the protocol (transfer-encoding etc).
The paper does indeed target HTTP/1.0 primarily, but does talk about future
work extending it to work (better) with HTTP/1.1 as well.

> If Squid was just a plain dumb proxy then splicing as described in
> these papers would make a better fit. Today only the CONNECT method
> is a good fit, but only of the splice primitive includes accounting
> allowing the session to be logged correctly
Apart from CONNECT, the paper mentions the GET method as well. Not sure what
you exactly mean by "allowing the session to be logged correctly".

> and works with non-blocking sockets.
The splice() implementation in AIX 5.x is supposed to be a kernel-based
socket-level tcp splice. Not sure about the "non-blocking" part, though.

(Note: all references here are made to the paper ""An Evaluation of TCP
Splice Benefits in Web Proxy Servers" unless otherwise stated)

Anyways, just my 2$


John Smith.
Received on Wed Sep 10 2003 - 14:24:52 MDT

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