Re: HTTP Partial POST Replay

Amos Jeffries <squid3@treenet.co.nz> Sat, 29 June 2019 16:03 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@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 0350112004C for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sat, 29 Jun 2019 09:03:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.651
X-Spam-Level:
X-Spam-Status: No, score=-2.651 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aK09E7eGkIH1 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sat, 29 Jun 2019 09:03:54 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [IPv6:2603:400a:ffff:804:801e:34:0:38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CBB7A120033 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sat, 29 Jun 2019 09:03:54 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.89) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1hhFn0-0006T7-QL for ietf-http-wg-dist@listhub.w3.org; Sat, 29 Jun 2019 16:01:22 +0000
Resent-Date: Sat, 29 Jun 2019 16:01:22 +0000
Resent-Message-Id: <E1hhFn0-0006T7-QL@frink.w3.org>
Received: from mimas.w3.org ([2603:400a:ffff:804:801e:34:0:4f]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <squid3@treenet.co.nz>) id 1hhFmx-0006SL-1v for ietf-http-wg@listhub.w3.org; Sat, 29 Jun 2019 16:01:19 +0000
Received: from [116.251.193.116] (helo=treenet.co.nz) by mimas.w3.org with esmtp (Exim 4.89) (envelope-from <squid3@treenet.co.nz>) id 1hhFmv-0005vq-25 for ietf-http-wg@w3.org; Sat, 29 Jun 2019 16:01:18 +0000
Received: from [192.168.20.251] (unknown [121.98.62.26]) by treenet.co.nz (Postfix) with ESMTPA id 807073000FC for <ietf-http-wg@w3.org>; Sun, 30 Jun 2019 04:00:39 +1200 (NZST)
To: ietf-http-wg@w3.org
References: <BCDF2644-1D6A-40FF-9AF7-7FA26A57E3A9@fb.com>
From: Amos Jeffries <squid3@treenet.co.nz>
Openpgp: preference=signencrypt
Autocrypt: addr=squid3@treenet.co.nz; prefer-encrypt=mutual; keydata= mQINBFiOEzoBEADuuawHiMOqHBjL5Mk6IfPCgJmY3oqJDmykzve+vDh7jArtFnOG067ftaML ligGh3y6LOLh3r1kIZ254CPHuKFYssA1p9mXL9YJnZ1qHrQVhqZwDq7dH/UtBQ2IM1QukoTo 1VRTB3ppiPHKTSa2zZ/kgBs0d+1MOi8DY2SmIDYVhUJI55qSqpxlcs6MyG4KxlEPD35J3nL4 hIzLzuzIbZoUO6M+dLvnqiFu2+mm6o75nxYmq+JCPwN5biETkSvndqr56t/W0ajlU1MpFXfO YJ8PfutrIBUPsRJUqWQjGg6uXp4torC1q2XasfSKVIQ+8duw7MCrkAfRv5BtDtpesAAsScvY TwUaDYVioiNNK1uJQZlrpYY4I0EbHI4GHKq7Q4VmotcQ2BhigqRIdh7kD3corddhlLTvTs0G 5Pjk/T2ZoMFZI03g+ieuo1l8VhCGdlqSQd8d1Np9WWwS9899QSgucwEeG+OK2f1IxxD12HiC gNoSh9id9vTYLTZK+HM1FEu+iwTxfQ9F/kDN49IaPhfvjJTs86Ov4FBTtaNUN2pF0qXpQr3A RisxZt7t7MVls+570sNnaijYYkLZdZj+49QArJxallltX3sbc9AK5JxkT8XivRCeLTKOngZE zIZCBeZuyI8cCemhU0csl89ZcORbMsgFS28FyWH4+X6lA+R5HQARAQABtCJBbW9zIEplZmZy aWVzIDxhbW9zQHRyZWVuZXQuY28ubno+iQJOBBMBCAA4FiEEAimzwkzOwlQSfJUyANhjZ5Qg vdMFAliOEzoCGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQANhjZ5QgvdOKkhAAseag 7QTzRF20TDwc6QQpfYdUyuuMqyEV3AwATtJxF2Y+aF/hEHXU9XBCM8EMyiJR816haC+86Wci 0cXYj7pmR80psR9C6JoaNos89CrgsmMx9tZR5yJXrdTCnQajbZf3ozs7IDk41g4NvWg5GtHM 3MYriL0LUBXLT+YSZ9Qq2DmRZRatCjk6tiMYeHG/GtH6GZs3YExRO9Am16C1gTJRao9mJtCB DR+0NrRB2E7tKN8EZySAsZkDzbL+hL/LpdWkEZvlBsSxJebAN0x64w3FSztHGfZwLfLsxdva 6CfYs8kalHoTxRoRhpIKmTtGFJI4v9cR0+Ua5trMPgHG2QIOgXOKtOTgdYF5ksA98ZF+Odsu W7yCe9POqc4bnDbOXByxVuNMPwVSESk/GJwnxRB2vW4nywQKREJ2H6HeDO+KVhLE9nH5Alsp XpEgPpzYVeplhcKKi6H56bI0anIHvao7vEEXNP2pwRWSoMKEwGWGG7QvmemQ0YbsUqJSK563 SwNe5cVUg/Cqb08m7D9ybAm+hwgtvzU7OGsLyIHuyVxnGkB5A1GV1lizUmsFauBxyw8Yx6Gm wfmsiwEVYV/lidg+ubnsxqN7Kuvg9gYRvv+Yg1wl1QFRgeOFjbU8hj/AaNAP9SppHcA5joBe kakQx18Y6LIKKvdoepDg3mFXrOouo8i5Ag0EWI4TOgEQAMmEISQmHDde0q2YfyeA8MKejHlt 5vCldKYwtaN5ii077vJaNrQk9Q8Iym6ro0plAdtLDTzyQCATWUctF6B0VowB4/LqF40U4g+u NAj7fzC/mVvSIG42diN0pJYkcfd9ghVcF7H5CeYe2zL3TlqilqQA6Xmt6i7NmYUMO939jw7V ZszMHlqvDTUzcimKrTVB7oS3+r5v1GGT3q+utrxka3WoQ3IHnidsylbTfF+dlRsvtKWxtg8k mTgu/oj1CmUE0DQh67kXsiC3nhjdUh+eZfDGmLuOGgVAWU/WNCS3oaVxVXW3rX/nUc+URkiO CuxyPjBy+A8Z+I8OXpIaC6FQY9sCFVo7yK4UxsK+eM93mWGIc5cGBL99vr+7YgZ3TBjYrazL O5Z8wyw765G1U3dPZB+egRMEY5CO64eb78f7vbRl8/INZWdkJxcotR4weGnvOxxDHyncS3BT Su6iiqmXSz0ZDpaOdCMNDHE6Kmt1qw2NbuGUHohqg2K8+1mWnXwevS0afydoG7EX0AuE1YEf kODsek8ceFj4U2c1jlOQbuO01pHa6Z9VYn5NOwXETlIytjDyBt15R7Tt1BQQg7wU482a5SSl wXYyzOx42a2CLvZM2tXnbIY4VZDu+V1ywXNMGOs8Am1LJzi74eEv2NTbvdFMmsGAkWNWn6KS 77eR+pe5ABEBAAGJAjYEGAEIACAWIQQCKbPCTM7CVBJ8lTIA2GNnlCC90wUCWI4TOgIbDAAK CRAA2GNnlCC90zeSD/9qEpJAtuEAXyCCymUEpzN6XgSWdcYra+NolIGCRzWd3SnxtBi+zWwh LFxm8AEhfqSMRh95T4XWKHScIsZZuG9xiap5whJ5xLJC/NlZidQqiPSJLog2+Yqt+PBVPrMp aG7Cmq64Y4ttvFwLZ8Wn23irJzr9JiWvsjprImsCZbuG/I1JWHUIn70oknzsTgpTPWDCfnCi GhCK7vgXak9QgBKhrzgADK3o6uCjmNllUdci9gFzUSy4/x9x73xrbzXS8/pO23fnbBwPa7VV 9IRtOb8HJJk8Y79A1ZnkVANBo1KmE+Ycw92IMcz2ev4VFw+pbqZ/swHqa3y3L5cT7Keqgc67 wiahSZRc5zM0jJWxN//lpgcdnDRI1OSLCrMMI69yc2QMzUZu87BtEJzm0DBy2pIKEni9dSCw wMITUsU21Ny3RmaV7fmXYAyp9pcaQQWGOb2CIvU7k60eLWgfNTo5SGI56WYC+ndod7vPU+sw JVbKrQKqfwO5JbdY9YPbo++Z6kfrnbkmm3wkJ4W8dOcrkLYbmOk7sColcQhVbmGy74Ggzl75 R22Q7+Uhjj9iq0Kv3CGQ3rKVdXOfAo5OekdaMDx9t9HoirGiokcyCPTy7wAyvQ75lbrygxCm e05XBfLZHrMp+SdM8ONsdgIe7U0bI85zYegceSagzCtBdB8HQ10TFg==
Message-ID: <948e26e8-ce3d-894a-17f6-fb17194a37b8@treenet.co.nz>
Date: Sun, 30 Jun 2019 04:00:15 +1200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <BCDF2644-1D6A-40FF-9AF7-7FA26A57E3A9@fb.com>
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=116.251.193.116; envelope-from=squid3@treenet.co.nz; helo=treenet.co.nz
X-W3C-Hub-Spam-Status: No, score=-4.6
X-W3C-Hub-Spam-Report: AWL=-0.445, BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_IRA=-1, W3C_WL=-1
X-W3C-Scan-Sig: mimas.w3.org 1hhFmv-0005vq-25 203894e505cee5236dc24abbf049fe54
X-Original-To: ietf-http-wg@w3.org
Subject: Re: HTTP Partial POST Replay
Archived-At: <https://www.w3.org/mid/948e26e8-ce3d-894a-17f6-fb17194a37b8@treenet.co.nz>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/36735
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: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On 29/06/19 6:02 am, Alan Frindell wrote:
> Hi, I submitted an individual draft describing our work on HTTP Partial
> POST Replay.  I initially presented this work at the HTTP Workshop in
> April. 
> 
> https://datatracker.ietf.org/doc/draft-frindell-httpbis-partial-post-replay/
> 
> The TL;DR is that when a webserver behind a cooperating intermediary
> wants to shut down but has received only part of a POST request, it can
> return that request in the response, and the intermediary will pick a
> different server to handle it.  This process is transparent to the client.
> 
>  
> 
> Any comments, questions or other feedback welcome!
> 


Overall impression is that this is a overly complex and resource
expensive replacement for the very simple 307 status mechanism. There is
no harm in telling a client it has to retry its reuqest.



* The stated case of "server wants to shutdown" does not correlate well
with the fact that to use this mechanism the server has to store and
re-deliver all the initial request bandwidth back to the intermediary.

* That re-sending is where the bandwidth issue is coming from. The
initial request uses N bytes to arrive from the client, if M of those
are a) delivered to each of D servers and b) received back from the
initial D-1 servers, and c) deliver to the second server. That makes a
total bandwidth consumption of (N + (D-1)*M).
  Whereas with 307 only consumes (N + M).


Also keep in mind that even a blind intermediary just pushing data to a
single server is handling twice the traffic that server does. That is
the minimum best-case situation. With multiple servers and/or clients
the difference increases rapidly to orders of magnitude more resource
consumption. That is the existing situation, before this feature even
starts to force more resource consumption.



* All this re-sending of data could delay the server shutdown an
unreasonable amount of time. Turning what would be a few seconds into
minutes or even hours. Depending on the intermediary load being
reasonable is not a good idea.

* Every millisecond of delay added by the re-receive and re-send of data
makes it more likely the client will terminate early. If that happens
all this time, bandwidth, memory, and CPU cycles spent are completely
wasted.


Consider the case of a system which is undergoing a DoS at the
public-facing interface of the intermediary. Enacting this feature is a
huge resource expenditure for an already highly loaded intermediary.



* Section 2.1 says "The server MUST have prior knowledge"

Yet no mechanism(s) are even hinted at how a server may acquire such
knowledge. Defining a specific negotiation signal would be far better
for this and avoid a huge headache with implementations choosing
different signals and mechanisms for negotiating that knowledge.


* The Echo- or Pseudo-Echo mechanism is very clunky. I believe it to be
unlikely that any intermediary implementing this feature is unable to
simply store the initial request headers for re-use as needed.



AYJ