Re: [hybi] #1: HTTP Compliance
Willy Tarreau <w@1wt.eu> Thu, 22 July 2010 00:07 UTC
Return-Path: <w@1wt.eu>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 74E083A6892 for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 17:07:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.436
X-Spam-Level:
X-Spam-Status: No, score=-3.436 tagged_above=-999 required=5 tests=[AWL=-1.393, BAYES_00=-2.599, HELO_IS_SMALL6=0.556]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qL9O6FTzYPc9 for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 17:07:57 -0700 (PDT)
Received: from 1wt.eu (1wt.eu [62.212.114.60]) by core3.amsl.com (Postfix) with ESMTP id 177DA3A6840 for <hybi@ietf.org>; Wed, 21 Jul 2010 17:07:56 -0700 (PDT)
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id o6M0899v007498; Thu, 22 Jul 2010 02:08:09 +0200
Date: Thu, 22 Jul 2010 02:08:09 +0200
From: Willy Tarreau <w@1wt.eu>
To: Jamie Lokier <jamie@shareable.org>
Message-ID: <20100722000809.GB7174@1wt.eu>
References: <20100518121245.GR20356@shareable.org> <AANLkTiniCjBwm5T59as8jByM5xDhPMrea-GqZFpWPAVS@mail.gmail.com> <Pine.LNX.4.64.1005182105360.22838@ps20323.dreamhostps.com> <20100519013238.GB2318@shareable.org> <Pine.LNX.4.64.1007210108300.7242@ps20323.dreamhostps.com> <AANLkTik5NXkKhV+d9skXpYa_afSwthmdf=LrTbXkzwRQ@mail.gmail.com> <20100721151531.GA2990@1wt.eu> <AANLkTikjbPObJEObZWceYuC1g0bYTg+8-5eQJBWKjBr=@mail.gmail.com> <20100721154519.GA3243@1wt.eu> <20100721233834.GG14589@shareable.org>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <20100721233834.GG14589@shareable.org>
User-Agent: Mutt/1.4.2.3i
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] #1: HTTP Compliance
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 22 Jul 2010 00:07:58 -0000
Hi Jamie,
On Thu, Jul 22, 2010 at 12:38:34AM +0100, Jamie Lokier wrote:
> Willy Tarreau wrote:
> > On Wed, Jul 21, 2010 at 08:22:11AM -0700, Roberto Peon wrote:
> > > I believe Mike quoted numbers in an earlier thread.
> > >
> > > Just to be sure we're talking about the same thing, I'm talking about the
> > > UPGRADE feature of HTTP generically, and not as it applies to the current
> > > draft Websocket spec.
> >
> > I thought they were related to the current version since it also uses
> > Upgrade. Anyway, even if some don't support it yet, it will be easy
> > to detect bypass them based on simple rules.
>
> Um, will it? How would that work?
Basically at some (many?) ISPs, you can find such an architecture :
[ ISP's clients ]
\ | /
POP
|
|
routers
| / cache
L7 load balancer ---<- cache
| \ cache
|
routers
|
(internet)
The clients connect to somesite.com:80. At least they believe they do
so. The first layer of routers see "port 80" and decide to forward to
the load balancers, otherwise they forward everything to the internet.
Obviously there are variants, it is possible that everything is sent
to the LBs too, that's just an example. The LBs have to support 3 main
features :
- check if the URL has to be handled by the cache farm or not. If
not, let's simply route it to the internet.
- bypass the caches if too many are dead so that the remaining ones
can't handle the load.
- apply a load balancing algorithm on the request (eg: URL hash)
to select a working cache, and forward the request to that cache.
The request is sent unmodified and the cache receives the packets
with the original destination IP address (sometimes they just rely
on the Host header though).
The first point is crucial. If the LB sends everything to caches, it
costs a lot in terms of hardware, especially if the hardware is not
suited to the type of application (imagine streaming video over a
classical cache for instance, it would eat long-lived connections
and CPU for zero added value). Also, there are always some cases
where a bug or incompatibility will be discovered on the caches and
they will have to be bypassed for some sites or request types. Last,
they can degrade quality of service without bringing anything (eg:
when dealing with XMLHttpRequest or interactive applications).
This is the reason why the LBs in front of the cache are said to be
Layer7, they're HTTP-aware. Alteon was already doing a lot of business
with their products 10 years ago on this precise feature. Thus, the
ISP has the ability to add rules which check the HTTP requests and
decide whether or not it makes sense to send it to the cache farm
or if it's easier to forward it to the server.
The only prerequisite is that the L7 LB is HTTP-compliant, or at
least understands HTTP enough so that everything that it decides
to forward without passing through the caches will be unmodified.
The goal of the ISP is not to *control* what passes there, but to
*save bandwidth*. That means that rules can be very coarse. Some
will simply decide that any URL containing a question mark will
bypass the caches. Others will decide that youtube has too much
data to store locally and that it's better to bypass the cache
than thrashing it with youtube-only contents.
And others will simply say that any connection containing
"Upgrade: WebSocket" will bypass the caches. But for that to work,
the HTTP-like protocol has to be HTTP-compatible ;-)
Hoping this clarifies the things a bit,
Willy
- [hybi] #1: HTTP Compliance hybi issue tracker
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Maciej Stachowiak
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Vladimir Katardjiev
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Maciej Stachowiak
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Julian Reschke
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Salvatore Loreto
- Re: [hybi] #1: HTTP Compliance Dave Cridland
- Re: [hybi] #1: HTTP Compliance Scott Ferguson
- Re: [hybi] #1: HTTP Compliance Maciej Stachowiak
- Re: [hybi] #1: HTTP Compliance Maciej Stachowiak
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Daniel Stenberg
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Bjoern Hoehrmann
- Re: [hybi] #1: HTTP Compliance Bjoern Hoehrmann
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Pieter Hintjens
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Scott Ferguson
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance John Tamplin
- Re: [hybi] #1: HTTP Compliance John Tamplin
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance John Tamplin
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Jamie Lokier
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Ian Hickson
- Re: [hybi] #1: HTTP Compliance John Tamplin
- Re: [hybi] #1: HTTP Compliance Julian Reschke
- Re: [hybi] #1: HTTP Compliance Greg Wilkins
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Roberto Peon
- Re: [hybi] #1: HTTP Compliance Julian Reschke
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- [hybi] An input document (was: #1: HTTP Complianc… S Moonesamy
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance gustav trede
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance gustav trede
- Re: [hybi] #1: HTTP Compliance Daniel Stenberg
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Adam Barth
- Re: [hybi] #1: HTTP Compliance L.Wood
- Re: [hybi] #1: HTTP Compliance Adam Barth
- Re: [hybi] #1: HTTP Compliance Julian Reschke
- [hybi] Objections (was: #1: HTTP Compliance) S Moonesamy
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Willy Tarreau
- Re: [hybi] #1: HTTP Compliance Shelby Moore
- Re: [hybi] #1: HTTP Compliance Greg Wilkins