[dispatch] HTTP, QUIC, proxies, and HELIUM

Ben Schwartz <bemasc@google.com> Mon, 20 August 2018 19:27 UTC

Return-Path: <bemasc@google.com>
X-Original-To: dispatch@ietfa.amsl.com
Delivered-To: dispatch@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1F4C3129619 for <dispatch@ietfa.amsl.com>; Mon, 20 Aug 2018 12:27:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.5
X-Spam-Level:
X-Spam-Status: No, score=-17.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01, T_KAM_HTML_FONT_INVALID=0.01, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 8yQkmLqKGGlv for <dispatch@ietfa.amsl.com>; Mon, 20 Aug 2018 12:27:43 -0700 (PDT)
Received: from mail-it0-x22c.google.com (mail-it0-x22c.google.com [IPv6:2607:f8b0:4001:c0b::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 92DFA128CF3 for <dispatch@ietf.org>; Mon, 20 Aug 2018 12:27:43 -0700 (PDT)
Received: by mail-it0-x22c.google.com with SMTP id d9-v6so955312itf.2 for <dispatch@ietf.org>; Mon, 20 Aug 2018 12:27:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=01w1168HPSSyACTov6YNAneiiDZzq1MOohVYau3d2x4=; b=U4s5PhiY+Eewi3qh92fL14XCjipnBh7P9KOD0uwlVFDNIUAjELJXGunUP1Mhy6MHVi VfNOmpySuUUlKXbow+FIFGVcA8OtvWXsV8o4B25u0ALQUH4m00QBVlwjpqrH8Et4JAQF fTcES0tO5AiKgb8cTktP8X8NmIXnzlxjXXhPIXhNy4SC4hI+p/5nu1FrG0qKgJDpn3GA 0ZJzcVlCPqu6PSu8ywyUnhdJ15CwRrmfTFMH53RmF5DOHeMJHMGXmJYqxto7lqmaWrNk 3lnQ0DcjvhdsIt4rs4Fj4rLLAt7hLqFTbw10HjxQZgB1zauZNLdHjhG3Z31b6IDwCYYO VjDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=01w1168HPSSyACTov6YNAneiiDZzq1MOohVYau3d2x4=; b=H90Mqew/QjbP8/KSUHU1lr/vVsyTulxb8s9pbcdz75L9LbfY4rvO7DoAaev3iLjPu1 nw63OgGbOss7nSoSOrkkW1sD81oVWhjL+rpfqr1AvP1oeIgmIGZnagJ42dO+OJELSFzf 9GsXUT895qq71mYsVUXnmagswDxLv3Ny9P4C+uYjw94YKRWMYA5h3W0Ws2IpStR/jeMT xpeqYB4phJqF7R1a9GvmMU9zLLL5H4/nEMnrJizzuXvC0AvmpSJxf0QSjQj8GVDlDQbk Hf31O+wj4NC/XV1OOG6/1qCA0+qxrn9W/CN0KGJgd4EFQZvXyqr/Yqry75/H/AiZt1rE D2AA==
X-Gm-Message-State: AOUpUlEfzOmPfgPO8ifypMnkhD7zMvm581wap8NJgb9YIJxjbVhj9RS9 MLw6NVuGd+MTbLXiGKnRhJ1D/BKQrTZoMy+jKewCQ38mfI8=
X-Google-Smtp-Source: AA+uWPx4euEhNoBZx5wzrmV/iX+hbMmb0M5XQ/v2F0QbMGpvWckd7UDK2VhcOr2yJh2ojLjeYlHJDgWEZZwDN1emzx8=
X-Received: by 2002:a24:6c04:: with SMTP id w4-v6mr14329705itb.4.1534793261891; Mon, 20 Aug 2018 12:27:41 -0700 (PDT)
MIME-Version: 1.0
From: Ben Schwartz <bemasc@google.com>
Date: Mon, 20 Aug 2018 15:27:30 -0400
Message-ID: <CAHbrMsAMMMvAWuLYRgkC6P4p-DvTVvbe69HoMiz14Zp9Km17MQ@mail.gmail.com>
To: Dispatch WG <dispatch@ietf.org>
Cc: Katharine Daly <dalyk@google.com>, Lucas Pardue <Lucas.Pardue@bbc.co.uk>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000003a00840573e2e79f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dispatch/Wuy6pr41sVySrfIQVu3TrC6WN3I>
Subject: [dispatch] HTTP, QUIC, proxies, and HELIUM
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dispatch/>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Aug 2018 19:27:46 -0000

At the DISPATCH session in Montreal, the chairs suggested reaching out to
this list with a taxonomy of the problems that HELIUM is trying to solve.
Here’s a quick attempt at that. (For more information, see Lucas Pardue’s
“HiNT” draft and slides.)

The starting point is the observation that HTTP/QUIC can forward HTTPS
(with HTTP CONNECT), but cannot forward HTTP/QUIC (because CONNECT is
TCP-only).  The baseline requirement, then, is to enable an HTTP/QUIC
server to forward a QUIC connection.

Although this is the starting use case, it is not the only property that
one might desire.  Some additional goals that we’ve considered include

   -

   extending the supported contents to include WebRTC, DNS, or even
   arbitrary IP
   -

   extending the supported substrates to include HTTP/2 or even HTTP/1.1
   -

   extending the performance goals (beyond merely “functional”) to include
   minimizing setup latency, or even enhancing congestion control performance
   on difficult paths (e.g. high loss, high latency, or variable latency)


HELIUM attempts to cover all of these extended goals, at least to some
extent, which results in an unconventional, extremely flexible design.

Some participants asked for sketches of solutions with reduced scope that
enable a more familiar approach.  Here are a few:

   -

   If we require that the proxied contents are end-to-end congestion
   controlled (e.g. only QUIC is allowed), then the substrate could safely
   disable congestion control (and reliability and flow control) for those
   packets.  This would require some modifications to HTTP/QUIC (creating a
   DTLS-like mode) but would make congestion control stability much easier to
   achieve.
   -

   If we require that contents are plain UDP only (no IP options like DSCP
   or TTL) and exclude support for server-like behavior, then we can use a
   protocol that maps 1:1 with TURN, for familiar semantics.
   -

   If we require that the server has full “raw IP sockets” access, then we
   can remove all mention of UDP and simply define a VPN-type IP tunnel.


In my view, a protocol that solves one of these restricted problems would
still be a worthwhile advance.

Finally, I’ll note that the level of performance achievable with HELIUM’s
current design is not entirely clear, due to the worrying presence of
layered congestion control.  A more ambitious approach to performance
enhancement might allow the proxy to peek into the content’s congestion
control information. This could enable optimizations like retransmission
from the middle (in both directions) in the event of packet loss.


My question to DISPATCH participants is: what would it take for a solution
to be useful to you?


--Ben