Re: HTTP router point-of-view concerns
Roberto Peon <grmocg@gmail.com> Fri, 12 July 2013 19:45 UTC
Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EE76A21F9F53 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 12 Jul 2013 12:45:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.548
X-Spam-Level:
X-Spam-Status: No, score=-10.548 tagged_above=-999 required=5 tests=[AWL=0.050, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q5XsQSooGRzp for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 12 Jul 2013 12:44:54 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 0BB6E21F9F4C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 12 Jul 2013 12:44:53 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UxjFe-0007FU-HU for ietf-http-wg-dist@listhub.w3.org; Fri, 12 Jul 2013 19:43:34 +0000
Resent-Date: Fri, 12 Jul 2013 19:43:34 +0000
Resent-Message-Id: <E1UxjFe-0007FU-HU@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <grmocg@gmail.com>) id 1UxjFV-0007EI-TY for ietf-http-wg@listhub.w3.org; Fri, 12 Jul 2013 19:43:25 +0000
Received: from mail-oa0-f43.google.com ([209.85.219.43]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <grmocg@gmail.com>) id 1UxjFU-0002BZ-JO for ietf-http-wg@w3.org; Fri, 12 Jul 2013 19:43:25 +0000
Received: by mail-oa0-f43.google.com with SMTP id i7so13258584oag.2 for <ietf-http-wg@w3.org>; Fri, 12 Jul 2013 12:42:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=oEN96h6YfuRWhqwj4yZZHhwGwRJS4VT3oUbpVxRTfds=; b=IbT+SFt4Tur29yPwM+P+kNE4A1EGXnY9vD0w97Tkpat6fHCVtcB+Xutqb1JSdZHs5W VZMajPiQ+CyJUhVl71H9pRh4Taz553zxEcFG/mhYukX1rfx668naZDI/owdcSg8HKwwF jasnOLDnwocabjubWF87S1vC4r3AOueTDcvpamCEiU8mnlxOJfwm+pWLI3v+s8qJIiGI Ke3USKvmxPYb7vVBr8fVZYCkXrfLZXb0nTyGDGvNVGVDfDSUk/Kjaw6SPerC5vx6S1D/ 7/5u4YLBwG67lbsRPoBvg8SQgfKTe6RKVS2CuNWgRPf7KCO4lJTk6R1FdIsd6a7YEU/c zVMg==
MIME-Version: 1.0
X-Received: by 10.60.155.169 with SMTP id vx9mr36637627oeb.93.1373658178567; Fri, 12 Jul 2013 12:42:58 -0700 (PDT)
Received: by 10.76.91.229 with HTTP; Fri, 12 Jul 2013 12:42:58 -0700 (PDT)
In-Reply-To: <51E044F7.6000107@treenet.co.nz>
References: <CA+qvzFPUpcm6kUtJx+rTw8Dpp4Gtx4Bmr3XPDhjNsjchUfN9_w@mail.gmail.com> <51DE1E32.9010801@treenet.co.nz> <CAP+FsNdcYhA=V5Z+zbt70b5e7WmcmXgjG5M9L3vfXeXfTwmRnw@mail.gmail.com> <51DE327C.7010901@treenet.co.nz> <CABkgnnXeqD6wh0dcJ1Dz=4PLAJNkDeGcCuzMr9ATd_7xS7nbGQ@mail.gmail.com> <CABP7RbcUkLf3CTAB4jwicnsiKWLGVY6=hX0k=0256SR_gcVt9A@mail.gmail.com> <CAP+FsNcOZnLa9GCr6XcZNFdq-mSXG6Q-_1Lb5u=a2YyXNCsVfQ@mail.gmail.com> <51DFBDAB.9010505@treenet.co.nz> <CAP+FsNeXkJ5rcnvuqXdahGQ=Bfqf3gxdV1XVisPaNy9HwRCXLQ@mail.gmail.com> <51E044F7.6000107@treenet.co.nz>
Date: Fri, 12 Jul 2013 12:42:58 -0700
Message-ID: <CAP+FsNe2kp-fwSccm+xDNeRWqFSyG8ToSxxh5V0VLRgb+38Kmw@mail.gmail.com>
From: Roberto Peon <grmocg@gmail.com>
To: Amos Jeffries <squid3@treenet.co.nz>
Cc: HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="047d7bd9158ec6c50e04e155b75a"
Received-SPF: pass client-ip=209.85.219.43; envelope-from=grmocg@gmail.com; helo=mail-oa0-f43.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.689, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UxjFU-0002BZ-JO 69bc493fed6a2df4d97df03a279818b4
X-Original-To: ietf-http-wg@w3.org
Subject: Re: HTTP router point-of-view concerns
Archived-At: <http://www.w3.org/mid/CAP+FsNe2kp-fwSccm+xDNeRWqFSyG8ToSxxh5V0VLRgb+38Kmw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18734
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
On stream ID exhaustion: Ok, so if you do 10k requests/second, you'll have to make a new connection every ~30 hours. Is this really problematic? On persistent settings/goaway-and-come-back: Correct. If your loadbalancing arrangement is flapping and almost never puts connections back in the location where they were from ~100ms before, then these solutions will not work reliably. If you're flapping, then I think you'd have bigger problems then, however :) On rejecting HTTP/2: HTTP/2 is thusfar trading a constant sized in-userspace buffer for latency reduction and kernel-space reduction in memory. If that isn't acceptable, then the only options are to hobble HTTP/2 by trading latency for memory, or to allow HTTP/2 to trade constant amounts of memory for latency and do an HTTP/1 to HTTP/2 gateway. On DNS reliability: If DNS is unreliable for some small portion of time.. .who cares? If it screws up much of the time, then I agree it is not an adequate mitigation. Thusfar, we have two kinds of deployments in mind for HTTP/2: on the internet, and within a private network. For the former, most people seem to be saying that they'll deploy clients that use ALPN to perform the negotiation. In such a case, any proxy must be explicit, and thus there is a chance to do the DNS resolution. Within a private network people seem to be saying that they'd negotiate unencrypted over port 80, in which case the server performs the upgrade and can have already stated that it wants the compression state to be zero sized before the client sends any information. Thus, the only place where there is any potential for problems are for explicitly configured proxies, or for actual endpoints where a DNS lookup for that entity is likely. In any case, we're talking about having a dynamic table size of 4k by default, nothing near the large amount you had to debug in the router (I feel your pain!) In the intercepting-home-router case, btw, the RTTs involved are so small that doing a RST for one RTT costs very little. Unlike HTTP/1, we do have a mechanism that causes the browser to try again! In such cases, thus, the tradeoff of latency for memory makes sense because the costs in latency is so tiny. -=R On Fri, Jul 12, 2013 at 11:03 AM, Amos Jeffries <squid3@treenet.co.nz>wrote: > On 13/07/2013 4:31 a.m., Roberto Peon wrote: > >> Correct, I mean to say that, if you can't deal with 4k of state in the >> first RT then you RST those requests, causing them to suffer one RT of >> latency. >> >> Personally, I think one should be able to deal with state for the first >> RT, especially you're going to have more than that in general in the IO >> buffers, kernel buffers, etc. >> But, anyway, assuming you're under DoS attack, there are multiple options: >> >> 1) send a new settings frame with the size you want, and RST everything >> 'till that becomes effective. >> > > -0. RST wastes Stream IDs. We only have a limited 31-bit resource there. > It will be exhausted easily enough on long running or high throughput > connections. Every RST is one step clsoer to exhaustion. They are not so > much the enemy as RTT pehapse, but still an enemy. > > 2) we implement James' proposal of a goaway-and-come-back after sending >> the settings, where the settings are effective on the next connection >> > > -1. We have absolutely zero confidence that the followup will be to the > same half of the planet as the first connection, let alone the same server. > > > 3) If we kept the persistent settings on the client, the first time the >> client spoke to the intermediary, it would learn and have appropriate >> settings in the future. >> > > -1. same reasons as for (2) above. > > > 4) reject HTTP/2 (which uses more state in exchange for lower latency) in >> preference for HTTP/1.0, which will put less data as persistent state for >> the first RT. >> > > -1. Counter to WG primary goals of rolling out HTTP/2. > > > 5) assuming we did the DNS thing, the client would already have the >> correct setting, and there'd be no additional latency. >> > > -1. For all the reasons discussed earlier about DNS failures. There is > zero confidence that the next-hop server is the one DNS was mentioning. In > fact from the router/middleware viewpoint this thread is about there is > nearly 100% confidence that the DNS is *not* about the next-hop. > > > I'm confused the complaining about extra latency of any of the solutions >> above, however. >> Do we care about latency or not? >> > > Latency? who mentioned latency? This is all about implicit security > vulnerabilities/considerations and potential frame routing problems in the > compression design. Latency is miles away from all that. > > > > Arguments that complain that we have to hold state for 1 RT, and that we >> want to eliminate all state make me think that latency is viewed as a >> distant-second consideration. >> Is latency a prime consideration, as indicated in the charter, or not? >> > > Lets put this the other way. Home router with 512KB baked into the drivers > for the HTTP stack responsible for routing traffic between ~9 devices (2 > family members with phone, tablet, and laptop each, and old house PC > system, a games console, and digital TV - maybe more but that is a fairly > accurate description of my non-tech friends household). > Someone is watching TV, with ~256KB of streaming state in the stack, both > have their phones on 24/7 logged into their favourite Social media site > with combined 184KB of state in the stack. Then someone opens a connection > to website X a log sin with 12x 7KB of Cookie data on the first request > headers. > --- this is a realworld HTTP/1 situation I only just got finished > debugging the device crash for yesterday. What happens in HTTP/2 if the > device is unable to specify a max-72KB dynamic table size to the client? or > even to advertise new lower dynamic table sizes to the existing clients > fast enough not to block the new client? > > Naturally I am worried. About the setup and whether it is negotiation or > mandatory initial state, etc. > > Amos > > >> (And you can call it session caching or whatever, it is still just state >> on the other side and is all the same idea). >> -=R >> >> >> On Fri, Jul 12, 2013 at 1:26 AM, Amos Jeffries <squid3@treenet.co.nz<mailto: >> squid3@treenet.co.nz>> wrote: >> >> On 12/07/2013 7:35 a.m., Roberto Peon wrote: >> >> I think it is perfectly reasonable for an intermediary to set >> the compression size to zero if it wishes. >> >> Market forces will (in the long-term) pick the correct >> strategy for this-- assuming the compression is effective at >> reducing latency, and that people care about latency >> reductions, then eventually intermediaries might evolve to use it. >> If it is ineffective at reducing latency, or if reduced >> latency is not actually desirable, then intermediaries would >> not use it. >> >> >> The DoS vector you're talking about is not a DoS vector if the >> intermediary resets all streams before the >> change-of-state-size comes into effect. >> >> >> If you means RST_STREAM on all the initial streams which use a >> larger compression size then what you are doing is adding an RTT >> penalty to all those requests over and beyond what HTTP/1 suffers >> from already on a normal transaction. This is not a useful way >> forward (wastes packets, RTT and stream IDs) and resolving it is >> to make decompression with the default state size mandatory for >> all recipients. Which brings us full circle on the problem of >> having a default >0 in the dynamic part of the state tables. >> >> >> >> When the state size is 0, one should be able to use some kinds >> of 'indexed' representations, so long as those representations >> refer only to items in the static tables. Why do you believe >> that this would use more or less CPU? (It should use less CPU >> and less memory...) >> >> >> I did not mention CPU. Only the bandwidth amplification effects >> that agents disabling compression would incur and need to consider >> carefully. >> >> Personally I would like to see a 127 entry mandatory static table >> in the spec itself and tied to the "2.0" version with a 127 entry >> optional dynamic table indicated by the high-end bit of the byte >> code. With a capacity byte size for dynamic table sent each way >> and senders forbidden to add new entries to the dynamic table >> until they hold the value from both ends of the connection. Agreed >> value being the minimum of both ends capacities. >> >> Amos >> >> >> > >
- HTTP router point-of-view concerns Christian Parpart
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Martin Thomson
- Re: HTTP router point-of-view concerns James M Snell
- Re: HTTP router point-of-view concerns Sam Pullara
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Sam Pullara
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Sam Pullara
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Martin Thomson
- Re: HTTP router point-of-view concerns Patrick McManus
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Mark Nottingham
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Michael Sweet
- Re: HTTP router point-of-view concerns Christian Parpart
- Re: HTTP router point-of-view concerns Patrick McManus
- Re: HTTP router point-of-view concerns Martin Nilsson
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Ludin, Stephen
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Nicolas Mailhot
- Re: HTTP router point-of-view concerns Yoav Nir
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Yoav Nir
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Yoav Nir
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Stephen Farrell
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Sam Pullara
- Re: HTTP router point-of-view concerns Nicolas Mailhot
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Sam Pullara
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Mark Delany
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Willy Tarreau
- Re: HTTP router point-of-view concerns Nicolas Mailhot
- Re: HTTP router point-of-view concerns Nico Williams
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Nico Williams
- Re: HTTP router point-of-view concerns Poul-Henning Kamp
- Re: HTTP router point-of-view concerns Nico Williams
- Re: HTTP router point-of-view concerns Nico Williams
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns James M Snell
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns James M Snell
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Mike Belshe
- Re: HTTP router point-of-view concerns Gábor Molnár
- Re: HTTP router point-of-view concerns Gábor Molnár
- Re: HTTP router point-of-view concerns Martin Thomson
- Re: HTTP router point-of-view concerns Jeff Pinner
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns James M Snell
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Roberto Peon
- Re: HTTP router point-of-view concerns Christian Parpart
- Re: HTTP router point-of-view concerns Amos Jeffries
- Re: HTTP router point-of-view concerns Michael Sweet