Introduction

Hi there,

I'm the author of the Varnish HTTP accelerator and have just joined
the mailing list, so I thought it would be proper if I introduced
myself.

About me:
---------

Until I got roped into writing Varnish, I was one of the primary
FreeBSD kernel developers, and Varnish was sort of a detour for me,
which has so far lasted five years.

As you can see in my .signature, I've been around for a while, I've
written an OSI-TP4 stack on a 3B2 computer and 21 years ago I
replaced OSI protocols with TCP/IP in the European Parliament,
happily configuring 1200-some PC's with IP numbers, only to find
out when RFC-1166 came out, that Sue Romano had mistyped our
IP allocation in the letter, so they all had the wrong address.

Apart from my work in FreeBSD, I'm probably most unknown as the
author of the "md5crypt" that protects the majority of all passwords
on the net and the http://bikeshed.org rant, bourne out of frustration
with herding cats in the FreeBSD project.

All this is just to say that I have paid my dues with respects
to standards and have the scars to prove it.

About HTTP and Varnish:
-----------------------

Before I started Varnish, HTTP was not something I had cared about
particularly, but since I had to write an implementation from
scratch, I read RFC2616 and what else I could lay my hands on.

And then I did a lot of data-analysis on actual website traffic to
see what was actually going on, and finally started writing the
code, which now has become the new black a lot of places.

I know I am going to rub some of you the wrong way when I say this,
but I decided early on that it would never be a goal of mine to
make Varnish totally RFC2616 compliant.

RFC2616 contains a lot of stuff that is never used, some of it is
even patently useless, but a lot of it is just not used in practice,
at least not in the application space where Varnish resides.  Those
bits will not be implemented in Varnish as long as they see no use
on the internet.

I have yet to see a Content-MD5 for instance.

But for all parts of HTTP which Varnish implements, I strive to be
compliant with with the standards.


HTTPng and me:
--------------

I have finally decided to join the HTTPng mailing-list, not
something I do lightly, I get email enough as it is, but as
more and more content gets delivered through Varnish, I need
to be a bit more proactive with what HTTP becomes.

The history of HTTP is far from ideal, and we suffer from old
mistakes, but I would really appreciate if we could avoid making
more of them.

Today, in my corner of the world, HTTP is a high-performance delivery
protocol, sites are looking for response times south of milliseconds
and it is quite limited how much text-processing you can do under
those circumstances and anything that costs time or bandwidth will
not gain widespread use.

And that brings me to what triggered me to get on board:

draft-thomson-hybi-http-timeout-00

I don't see any obvious harm from these two proposals, but I think
at least one of them could be done better.

A) Can somebody explain to me, why we need an entirely new header
   called "Connection-Timeout", when we could just add "timeout=%d"
   to the already existing Connection: header, thus avoiding about
   31 bytes of overhead and some needless text-processing ?

B) Why is that header bidirectional ?   What would a server use a
   Connection-Timeout: header from a client for ?

C) Is it enough to send the timeout in the first response on a
   HTTP connection, or does it need to be included in all responses
   on that connection ?

Poul-Henning

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

Received on Friday, 11 March 2011 16:03:52 UTC